diff --git a/.Renviron b/.Renviron
new file mode 100644
index 0000000..c1cf1df
--- /dev/null
+++ b/.Renviron
@@ -0,0 +1,2 @@
+USER="shiny"
+PASSWORD="beez"
diff --git a/.Rprofile b/.Rprofile
new file mode 100644
index 0000000..8cb1d5b
--- /dev/null
+++ b/.Rprofile
@@ -0,0 +1,12 @@
+if (file.exists("renv")) {
+ source("renv/activate.R")
+} else {
+ # The `renv` directory is automatically skipped when deploying with rsconnect.
+ message("No 'renv' directory found; renv won't be activated.")
+}
+
+# Allow absolute module imports (relative to the app root).
+options(box.path = getwd())
+
+# Enable auto reloading via Rhino 1.7
+options(shiny.autoreload = TRUE)
diff --git a/.github/workflows/rhino-test.yml b/.github/workflows/rhino-test.yml
new file mode 100644
index 0000000..678d22a
--- /dev/null
+++ b/.github/workflows/rhino-test.yml
@@ -0,0 +1,72 @@
+name: Rhino Test
+on: push
+permissions:
+ contents: read
+jobs:
+ main:
+ name: Run linters and tests
+ runs-on: ubuntu-22.04
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v4
+
+ - name: Setup system dependencies
+ run: |
+ packages=(
+ # List each package on a separate line.
+ )
+ sudo apt-get update
+ sudo apt-get install --yes "${packages[@]}"
+
+ - name: Setup R
+ uses: r-lib/actions/setup-r@v2
+ with:
+ r-version: renv
+
+ - name: Setup R dependencies
+ uses: r-lib/actions/setup-renv@v2
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+
+ - name: Lint R
+ if: always()
+ shell: Rscript {0}
+ run: rhino::lint_r()
+
+ - name: Lint JavaScript
+ if: always()
+ shell: Rscript {0}
+ run: rhino::lint_js()
+
+ - name: Lint Sass
+ if: always()
+ shell: Rscript {0}
+ run: rhino::lint_sass()
+
+ - name: Build JavaScript
+ if: always()
+ shell: Rscript {0}
+ run: rhino::build_js()
+
+ - name: Build Sass
+ if: always()
+ shell: Rscript {0}
+ run: rhino::build_sass()
+
+ - name: Run R unit tests
+ if: always()
+ shell: Rscript {0}
+ run: rhino::test_r()
+
+ - name: Run Cypress end-to-end tests
+ if: always()
+ uses: cypress-io/github-action@v6
+ with:
+ working-directory: .rhino # Created by earlier commands which use Node.js
+ start: npm run run-app
+ project: ../tests
+ wait-on: 'http://localhost:3333/'
+ wait-on-timeout: 60
diff --git a/.lintr b/.lintr
new file mode 100644
index 0000000..63fade9
--- /dev/null
+++ b/.lintr
@@ -0,0 +1,5 @@
+linters:
+ linters_with_defaults(
+ line_length_linter = line_length_linter(100),
+ object_usage_linter = NULL # Does not work with `box::use()`.
+ )
diff --git a/.renvignore b/.renvignore
new file mode 100644
index 0000000..4f16dc6
--- /dev/null
+++ b/.renvignore
@@ -0,0 +1,3 @@
+# Only use `dependencies.R` to infer project dependencies.
+*
+!dependencies.R
diff --git a/.rscignore b/.rscignore
new file mode 100644
index 0000000..fdd749b
--- /dev/null
+++ b/.rscignore
@@ -0,0 +1,7 @@
+.github
+.lintr
+.renvignore
+.Renviron
+.rhino
+.rscignore
+tests
diff --git a/app.R b/app.R
new file mode 100644
index 0000000..9328819
--- /dev/null
+++ b/app.R
@@ -0,0 +1,2 @@
+# Rhino / shinyApp entrypoint. Do not edit.
+rhino::app()
diff --git a/app/js/index.js b/app/js/index.js
new file mode 100644
index 0000000..e69de29
diff --git a/app/logic/__init__.R b/app/logic/__init__.R
new file mode 100644
index 0000000..51c4357
--- /dev/null
+++ b/app/logic/__init__.R
@@ -0,0 +1,2 @@
+# Logic: application code independent from Shiny.
+# https://go.appsilon.com/rhino-project-structure
diff --git a/app/logic/utils.R b/app/logic/utils.R
new file mode 100644
index 0000000..aa71e32
--- /dev/null
+++ b/app/logic/utils.R
@@ -0,0 +1,49 @@
+box::use(
+ ggplot2,
+ grid,
+ png,
+)
+
+#' @export
+get_png_br <- function(filename) {
+ grid$rasterGrob(png$readPNG(filename),
+ interpolate = TRUE,
+ x = grid$unit(1, "npc"),
+ y = grid$unit(0, "npc") + grid$unit(35, "pt"),
+ height = grid$unit(50, "pt"),
+ hjust = 1,
+ vjust = 1
+ )
+}
+
+#' @export
+get_png_tr <- function(filename) {
+ grid$rasterGrob(png$readPNG(filename),
+ interpolate = TRUE,
+ x = grid$unit(1, "npc") - grid$unit(10, "pt"),
+ y = grid$unit(1, "npc"),
+ height = grid$unit(50, "pt"),
+ hjust = 1,
+ vjust = 1
+ )
+}
+
+#' @export
+add_shiny_logo <- function(logo) {
+ list(
+ ggplot2$annotation_custom(logo),
+ ggplot2$coord_cartesian(clip = "off"),
+ ggplot2$theme(plot.margin = ggplot2$unit(c(1, 1, 3, 1), "lines"))
+ )
+}
+
+#' @export
+watermark_br <- get_png_br("../shinybeez/app/static/img/shinybeez-watermark-alpha.png")
+
+#' @export
+watermark_tr <- get_png_tr("../shinybeez/app/static/img/shinybeez-watermark-alpha.png")
+
+#' @export
+geomean <- function(x) {
+ return(round(exp(mean(log((x + 1)))) - 1, 2))
+}
diff --git a/app/logic/validate.R b/app/logic/validate.R
new file mode 100644
index 0000000..8b3480b
--- /dev/null
+++ b/app/logic/validate.R
@@ -0,0 +1,145 @@
+box::use(
+ assertthat,
+ beezdiscounting,
+ dplyr,
+ readr,
+ tidyr,
+)
+
+#' @export
+check_data <- function(dat, type = "demand") {
+ if (type == "demand") {
+ if (length(unique(dat$id)) == length(dat$id)) {
+ if ("group" %in% colnames(dat)) {
+ return_msg <- assertthat$validate_that(
+ all(colnames(dat)[1:2] == c("id", "group")),
+ msg = "The first two columns do not match `id`, `group`"
+ )
+ if (is.character(return_msg)) return(return_msg)
+ dat <- dplyr$relocate(dat, group, .after = id)
+ return_msg <- assertthat$validate_that(
+ all(sapply(readr$parse_number(colnames(dat)[3:length(colnames(dat))]), is.numeric)),
+ msg = "The column names are not numeric"
+ )
+ if (is.character(return_msg)) return(return_msg)
+ } else {
+ return_msg <- assertthat$validate_that(
+ colnames(dat)[1] == c("id"),
+ msg = "The first column is not `id`"
+ )
+ if (is.character(return_msg)) return(return_msg)
+ return_msg <- assertthat$validate_that(
+ all(sapply(readr$parse_number(colnames(dat)[2:length(colnames(dat))]), is.numeric)),
+ msg = "The column names are not numeric"
+ )
+ if (is.character(return_msg)) return(return_msg)
+ }
+ } else {
+ if ("group" %in% colnames(dat)){
+ return_msg <- assertthat$validate_that(
+ all(colnames(dat) == c("id", "group", "x", "y")),
+ msg = "Check colnames `id`, `group`, `x`, and `y` in data"
+ )
+ } else {
+ return_msg <- assertthat$validate_that(
+ all(colnames(dat) == c("id", "x", "y")),
+ msg = "Check colnames `id`, `x`, and `y` are ordered in data"
+ )
+ }
+ }
+ } else {
+ # check if file has correct id columns
+ return_msg <- assertthat$validate_that(
+ any(colnames(dat) %in% c("subjectid", "ResponseId")),
+ msg = "Check colnames for 'subjectid' or 'ResponseId' in data"
+ )
+ if ("subjectid" %in% colnames(dat)) {
+ # check if 28 or 3 columns wide
+ return_msg <- assertthat$validate_that(
+ ncol(dat) == 28 | ncol(dat) == 3,
+ msg = "Number of columns does not appear to match the template"
+ )
+ } else {
+ # check if columns match the qualtrics template output
+ return_msg <- assertthat$validate_that(
+ all(paste0("I", c(1:31)) %in% colnames(dat)),
+ msg = "Check to make sure you are using the correct Qualtrics template."
+ )
+ }
+ }
+ if (is.character(return_msg)) {
+ return(return_msg)
+ } else {
+ return(TRUE)
+ }
+}
+
+#' @export
+rename_cols <- function(dat) {
+ # check if dat is wider than it is long
+ if (length(unique(dat$id)) == length(dat$id)) {
+ lcols <- length(colnames(dat))
+ if ("group" %in% colnames(dat)) {
+ dat <- dplyr$relocate(dat, group, .after = id)
+ colnames(dat)[3:lcols] <- readr$parse_number(colnames(dat)[3:lcols])
+ } else {
+ colnames(dat)[2:lcols] <- readr$parse_number(colnames(dat)[2:lcols])
+ }
+ }
+ dat
+}
+
+#' @export
+reshape_data <- function(dat, type = "demand") {
+ if (type == "demand") {
+ # check if dat is wider than it is long
+ if (length(unique(dat$id)) == length(dat$id)) {
+ if ("group" %in% colnames(dat)) {
+ dat |>
+ tidyr$pivot_longer(
+ cols = 3:ncol(dat),
+ names_to = "x",
+ values_to = "y")
+ } else {
+ dat |>
+ tidyr$pivot_longer(
+ cols = 2:ncol(dat),
+ names_to = "x",
+ values_to = "y")
+ }
+ } else {
+ dat
+ }
+ } else if (type == "discounting") {
+ if (ncol(dat) == 28) {
+ dat |>
+ beezdiscounting$wide_to_long_mcq(dat = _)
+ } else {
+ dat
+ }
+ }
+}
+
+#' @export
+retype_data <- function(dat) {
+ dat$x <- readr$parse_number(dat$x)
+ if ("group" %in% colnames(dat)) {
+ dat |>
+ dplyr$mutate(
+ id = as.factor(id),
+ group = as.factor(group),
+ x = as.numeric(x),
+ y = as.numeric(y)
+ )
+ } else {
+ dat |>
+ dplyr$mutate(
+ id = as.factor(id),
+ x = as.numeric(x),
+ y = as.numeric(y)
+ )
+ }
+}
+
+#' @export
+k_values <- c(1.5, 2, 2.5, 3, 3.5, 4)
diff --git a/app/main.R b/app/main.R
new file mode 100644
index 0000000..c445196
--- /dev/null
+++ b/app/main.R
@@ -0,0 +1,85 @@
+box::use(
+ bslib,
+ rhino,
+ shiny,
+)
+
+box::use(
+ app/view/demand,
+ app/view/discounting,
+ app/view/info,
+ app/view/welcome,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+ rhino$log$info("Starting")
+ bslib$page_navbar(
+ title = shiny$tags$span(
+ style = "font-size: 200%;",
+ shiny$tags$img(
+ src = "static/img/hex-shinybeez.png",
+ width = "95px",
+ height = "auto",
+ class = "me-3",
+ alt = "Shiny Beez"
+ ),
+ "Shinybeez"
+ ),
+ id = "nav",
+ sidebar = bslib$sidebar(
+ id = "sidebar",
+ open = TRUE,
+ width = 350,
+ shiny$conditionalPanel(
+ "input.nav === 'Welcome'",
+ welcome$sidebar_ui(ns("welcomeui"))
+ ),
+ shiny$conditionalPanel(
+ "input.nav === 'Demand'",
+ demand$sidebar_ui(ns("demand")),
+ ),
+ shiny$conditionalPanel(
+ "input.nav === 'Discounting'",
+ discounting$sidebar_ui(ns("discounting"))
+ )
+ ),
+ bslib$nav_panel(
+ title = "Welcome",
+ welcome$body_ui(ns("welcomebody"))
+ ),
+ bslib$nav_panel(
+ value = "Demand",
+ title = "Demand",
+ demand$navpanel_ui(ns("demand"))
+ ),
+ bslib$nav_panel(
+ value = "Discounting",
+ title = "Discounting",
+ discounting$navpanel_ui(ns("discounting"))
+ ),
+ bslib$nav_spacer(),
+ bslib$nav_item(
+ bslib$input_dark_mode(id = "dark_mode", mode = "light")
+ ),
+ info$ui(ns("info"))
+ )
+}
+
+#' @export
+server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+ welcome$body_server("welcomebody")
+ session$userData$data <- shiny$reactiveValues()
+ demand$sidebar_server("demand")
+ demand$navpanel_server("demand")
+ discounting$sidebar_server("discounting")
+ discounting$navpanel_server("discounting")
+ info$server("info")
+ session$onSessionEnded(function() {
+ rhino$log$info("Stopping")
+ })
+ })
+}
diff --git a/app/static/css/app.min.css b/app/static/css/app.min.css
new file mode 100644
index 0000000..7934278
--- /dev/null
+++ b/app/static/css/app.min.css
@@ -0,0 +1,11 @@
+/*!
+ * Bootswatch v5.3.2 (https://bootswatch.com)
+ * Theme: spacelab
+ * Copyright 2012-2023 Thomas Park
+ * Licensed under MIT
+ * Based on Bootstrap
+*//*!
+ * Bootstrap v5.3.2 (https://getbootstrap.com/)
+ * Copyright 2011-2023 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */@import"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root,[data-bs-theme=light]{--bs-blue: #446e9b;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #cd0200;--bs-orange: #fd7e14;--bs-yellow: #d47500;--bs-green: #3cb521;--bs-teal: #20c997;--bs-cyan: #3399f3;--bs-black: #000;--bs-white: #fff;--bs-gray: #777;--bs-gray-dark: #333;--bs-gray-100: #f8f9fa;--bs-gray-200: #eee;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #999;--bs-gray-600: #777;--bs-gray-700: #495057;--bs-gray-800: #333;--bs-gray-900: #2d2d2d;--bs-primary: #446e9b;--bs-secondary: #999;--bs-success: #3cb521;--bs-info: #3399f3;--bs-warning: #d47500;--bs-danger: #cd0200;--bs-light: #eee;--bs-dark: #333;--bs-primary-rgb: 68, 110, 155;--bs-secondary-rgb: 153, 153, 153;--bs-success-rgb: 60, 181, 33;--bs-info-rgb: 51, 153, 243;--bs-warning-rgb: 212, 117, 0;--bs-danger-rgb: 205, 2, 0;--bs-light-rgb: 238, 238, 238;--bs-dark-rgb: 51, 51, 51;--bs-primary-text-emphasis: #1b2c3e;--bs-secondary-text-emphasis: #3d3d3d;--bs-success-text-emphasis: #18480d;--bs-info-text-emphasis: #143d61;--bs-warning-text-emphasis: #552f00;--bs-danger-text-emphasis: #520100;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #dae2eb;--bs-secondary-bg-subtle: #ebebeb;--bs-success-bg-subtle: #d8f0d3;--bs-info-bg-subtle: #d6ebfd;--bs-warning-bg-subtle: #f6e3cc;--bs-danger-bg-subtle: #f5cccc;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #b4c5d7;--bs-secondary-border-subtle: #d6d6d6;--bs-success-border-subtle: #b1e1a6;--bs-info-border-subtle: #add6fa;--bs-warning-border-subtle: #eec899;--bs-danger-border-subtle: #eb9a99;--bs-light-border-subtle: #eee;--bs-dark-border-subtle: #999;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #777;--bs-body-color-rgb: 119, 119, 119;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(119, 119, 119, 0.75);--bs-secondary-color-rgb: 119, 119, 119;--bs-secondary-bg: #eee;--bs-secondary-bg-rgb: 238, 238, 238;--bs-tertiary-color: rgba(119, 119, 119, 0.5);--bs-tertiary-color-rgb: 119, 119, 119;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: #2d2d2d;--bs-link-color: #3399f3;--bs-link-color-rgb: 51, 153, 243;--bs-link-decoration: underline;--bs-link-hover-color: #297ac2;--bs-link-hover-color-rgb: 41, 122, 194;--bs-code-color: #e83e8c;--bs-highlight-color: #777;--bs-highlight-bg: #f6e3cc;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.375rem;--bs-border-radius-sm: 0.25rem;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(68, 110, 155, 0.25);--bs-form-valid-color: #3cb521;--bs-form-valid-border-color: #3cb521;--bs-form-invalid-color: #cd0200;--bs-form-invalid-border-color: #cd0200}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #2d2d2d;--bs-body-bg-rgb: 45, 45, 45;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #333;--bs-secondary-bg-rgb: 51, 51, 51;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #303030;--bs-tertiary-bg-rgb: 48, 48, 48;--bs-primary-text-emphasis: #8fa8c3;--bs-secondary-text-emphasis: #c2c2c2;--bs-success-text-emphasis: #8ad37a;--bs-info-text-emphasis: #85c2f8;--bs-warning-text-emphasis: #e5ac66;--bs-danger-text-emphasis: #e16766;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #0e161f;--bs-secondary-bg-subtle: #1f1f1f;--bs-success-bg-subtle: #0c2407;--bs-info-bg-subtle: #0a1f31;--bs-warning-bg-subtle: #2a1700;--bs-danger-bg-subtle: #290000;--bs-light-bg-subtle: #333;--bs-dark-bg-subtle: #1a1a1a;--bs-primary-border-subtle: #29425d;--bs-secondary-border-subtle: #5c5c5c;--bs-success-border-subtle: #246d14;--bs-info-border-subtle: #1f5c92;--bs-warning-border-subtle: #7f4600;--bs-danger-border-subtle: #7b0100;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #333;--bs-heading-color: inherit;--bs-link-color: #8fa8c3;--bs-link-hover-color: #a5b9cf;--bs-link-color-rgb: 143, 168, 195;--bs-link-hover-color-rgb: 165, 185, 207;--bs-code-color: #f18bba;--bs-highlight-color: #dee2e6;--bs-highlight-bg: #552f00;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #8ad37a;--bs-form-valid-border-color: #8ad37a;--bs-form-invalid-color: #e16766;--bs-form-invalid-border-color: #e16766}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media(min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media(min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media(min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}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:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#777}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-emphasis-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-emphasis-color);--bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color: var(--bs-emphasis-color);--bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color: var(--bs-emphasis-color);--bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #dae2eb;--bs-table-border-color: #aeb5bc;--bs-table-striped-bg: #cfd7df;--bs-table-striped-color: #000;--bs-table-active-bg: #c4cbd4;--bs-table-active-color: #000;--bs-table-hover-bg: #cad1d9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #ebebeb;--bs-table-border-color: #bcbcbc;--bs-table-striped-bg: #dfdfdf;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d4d4;--bs-table-active-color: #000;--bs-table-hover-bg: #d9d9d9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d8f0d3;--bs-table-border-color: #adc0a9;--bs-table-striped-bg: #cde4c8;--bs-table-striped-color: #000;--bs-table-active-bg: #c2d8be;--bs-table-active-color: #000;--bs-table-hover-bg: #c8dec3;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #d6ebfd;--bs-table-border-color: #abbcca;--bs-table-striped-bg: #cbdff0;--bs-table-striped-color: #000;--bs-table-active-bg: #c1d4e4;--bs-table-active-color: #000;--bs-table-hover-bg: #c6d9ea;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #f6e3cc;--bs-table-border-color: #c5b6a3;--bs-table-striped-bg: #ead8c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddccb8;--bs-table-active-color: #000;--bs-table-hover-bg: #e4d2bd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f5cccc;--bs-table-border-color: #c4a3a3;--bs-table-striped-bg: #e9c2c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddb8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #e3bdbd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #eee;--bs-table-border-color: #bebebe;--bs-table-striped-bg: #e2e2e2;--bs-table-striped-color: #000;--bs-table-active-bg: #d6d6d6;--bs-table-active-color: #000;--bs-table-hover-bg: gainsboro;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #333;--bs-table-border-color: #5c5c5c;--bs-table-striped-bg: #3d3d3d;--bs-table-striped-color: #fff;--bs-table-active-bg: #474747;--bs-table-active-color: #fff;--bs-table-hover-bg: #424242;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + var(--bs-border-width)*2);padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + var(--bs-border-width)*2);padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + var(--bs-border-width)*2)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + var(--bs-border-width)*2)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + var(--bs-border-width)*2)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + var(--bs-border-width)*2);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + var(--bs-border-width)*2)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + var(--bs-border-width)*2)}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-check-input:checked{background-color:#446e9b;border-color:#446e9b}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#446e9b;border-color:#446e9b;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a2b7cd'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;-webkit-appearance:none;appearance:none;background-color:#446e9b;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c7d4e1}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-secondary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#446e9b;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#c7d4e1}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-secondary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + var(--bs-border-width)*2);min-height:calc(3.5rem + var(--bs-border-width)*2);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder,.form-floating>.form-control-plaintext::-moz-placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:not(:-moz-placeholder-shown),.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#777}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width)*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + 1.5em + .75rem)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + 1.5em + .75rem)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #446e9b;--bs-btn-border-color: #446e9b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3a5e84;--bs-btn-hover-border-color: #36587c;--bs-btn-focus-shadow-rgb: 96, 132, 170;--bs-btn-active-color: #fff;--bs-btn-active-bg: #36587c;--bs-btn-active-border-color: #335374;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #446e9b;--bs-btn-disabled-border-color: #446e9b}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #999;--bs-btn-border-color: #999;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #828282;--bs-btn-hover-border-color: #7a7a7a;--bs-btn-focus-shadow-rgb: 168, 168, 168;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a7a7a;--bs-btn-active-border-color: #737373;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #999;--bs-btn-disabled-border-color: #999}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3cb521;--bs-btn-border-color: #3cb521;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #339a1c;--bs-btn-hover-border-color: #30911a;--bs-btn-focus-shadow-rgb: 89, 192, 66;--bs-btn-active-color: #fff;--bs-btn-active-bg: #30911a;--bs-btn-active-border-color: #2d8819;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3cb521;--bs-btn-disabled-border-color: #3cb521}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3399f3;--bs-btn-border-color: #3399f3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2b82cf;--bs-btn-hover-border-color: #297ac2;--bs-btn-focus-shadow-rgb: 82, 168, 245;--bs-btn-active-color: #fff;--bs-btn-active-bg: #297ac2;--bs-btn-active-border-color: #2673b6;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3399f3;--bs-btn-disabled-border-color: #3399f3}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #d47500;--bs-btn-border-color: #d47500;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #b46300;--bs-btn-hover-border-color: #aa5e00;--bs-btn-focus-shadow-rgb: 218, 138, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa5e00;--bs-btn-active-border-color: #9f5800;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d47500;--bs-btn-disabled-border-color: #d47500}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #cd0200;--bs-btn-border-color: #cd0200;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ae0200;--bs-btn-hover-border-color: #a40200;--bs-btn-focus-shadow-rgb: 213, 40, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #a40200;--bs-btn-active-border-color: #9a0200;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #cd0200;--bs-btn-disabled-border-color: #cd0200}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #eee;--bs-btn-border-color: #eee;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #cacaca;--bs-btn-hover-border-color: #bebebe;--bs-btn-focus-shadow-rgb: 202, 202, 202;--bs-btn-active-color: #000;--bs-btn-active-bg: #bebebe;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #eee;--bs-btn-disabled-border-color: #eee}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #333;--bs-btn-border-color: #333;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #525252;--bs-btn-hover-border-color: #474747;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5c5c5c;--bs-btn-active-border-color: #474747;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #333;--bs-btn-disabled-border-color: #333}.btn-outline-primary{--bs-btn-color: #446e9b;--bs-btn-border-color: #446e9b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #446e9b;--bs-btn-hover-border-color: #446e9b;--bs-btn-focus-shadow-rgb: 68, 110, 155;--bs-btn-active-color: #fff;--bs-btn-active-bg: #446e9b;--bs-btn-active-border-color: #446e9b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #446e9b;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #446e9b;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #999;--bs-btn-border-color: #999;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #999;--bs-btn-hover-border-color: #999;--bs-btn-focus-shadow-rgb: 153, 153, 153;--bs-btn-active-color: #fff;--bs-btn-active-bg: #999;--bs-btn-active-border-color: #999;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #999;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #999;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3cb521;--bs-btn-border-color: #3cb521;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3cb521;--bs-btn-hover-border-color: #3cb521;--bs-btn-focus-shadow-rgb: 60, 181, 33;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3cb521;--bs-btn-active-border-color: #3cb521;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3cb521;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3cb521;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3399f3;--bs-btn-border-color: #3399f3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3399f3;--bs-btn-hover-border-color: #3399f3;--bs-btn-focus-shadow-rgb: 51, 153, 243;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3399f3;--bs-btn-active-border-color: #3399f3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3399f3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3399f3;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #d47500;--bs-btn-border-color: #d47500;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d47500;--bs-btn-hover-border-color: #d47500;--bs-btn-focus-shadow-rgb: 212, 117, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d47500;--bs-btn-active-border-color: #d47500;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #d47500;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d47500;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #cd0200;--bs-btn-border-color: #cd0200;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #cd0200;--bs-btn-hover-border-color: #cd0200;--bs-btn-focus-shadow-rgb: 205, 2, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cd0200;--bs-btn-active-border-color: #cd0200;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #cd0200;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #cd0200;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #eee;--bs-btn-border-color: #eee;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #eee;--bs-btn-hover-border-color: #eee;--bs-btn-focus-shadow-rgb: 238, 238, 238;--bs-btn-active-color: #000;--bs-btn-active-bg: #eee;--bs-btn-active-border-color: #eee;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #eee;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #eee;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #333;--bs-btn-border-color: #333;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #333;--bs-btn-hover-border-color: #333;--bs-btn-focus-shadow-rgb: 51, 51, 51;--bs-btn-active-color: #fff;--bs-btn-active-bg: #333;--bs-btn-active-border-color: #333;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #333;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #333;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #777;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 82, 168, 245;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size: 0.875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: var(--bs-box-shadow);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #446e9b;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #777;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #333;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #446e9b;--bs-dropdown-link-disabled-color: #999;--bs-dropdown-header-color: #999}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width)*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width)*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #446e9b}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0.5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color: #3399f3;--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color: #3399f3;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #3399f3;--bs-navbar-brand-hover-color: #3399f3;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25rem;--bs-navbar-toggler-padding-x: 0.75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28119, 119, 119, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, 0.55);--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23777'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231b2c3e'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #a2b7cd;--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238fa8c3'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238fa8c3'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #446e9b;--bs-pagination-active-border-color: #446e9b;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width)*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size: 0.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size: 0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: 0.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #446e9b;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #446e9b;--bs-list-group-active-border-color: #446e9b;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: 0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: var(--bs-box-shadow-sm);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: 0.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: 0.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: var(--bs-box-shadow);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: #2d2d2d;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(54, 88, 124, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(54, 88, 124, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(54, 88, 124, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(122, 122, 122, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(122, 122, 122, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(122, 122, 122, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(48, 145, 26, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(48, 145, 26, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(48, 145, 26, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(41, 122, 194, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(41, 122, 194, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(41, 122, 194, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(170, 94, 0, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(170, 94, 0, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(170, 94, 0, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(164, 2, 0, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(164, 2, 0, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(164, 2, 0, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(241, 241, 241, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(241, 241, 241, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(241, 241, 241, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(41, 41, 41, var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(41, 41, 41, var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(41, 41, 41, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{-o-object-fit:contain !important;object-fit:contain !important}.object-fit-cover{-o-object-fit:cover !important;object-fit:cover !important}.object-fit-fill{-o-object-fit:fill !important;object-fit:fill !important}.object-fit-scale{-o-object-fit:scale-down !important;object-fit:scale-down !important}.object-fit-none{-o-object-fit:none !important;object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:var(--bs-box-shadow) !important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm) !important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg) !important}.shadow-none{box-shadow:none !important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{-moz-column-gap:0 !important;column-gap:0 !important}.column-gap-1{-moz-column-gap:.25rem !important;column-gap:.25rem !important}.column-gap-2{-moz-column-gap:.5rem !important;column-gap:.5rem !important}.column-gap-3{-moz-column-gap:1rem !important;column-gap:1rem !important}.column-gap-4{-moz-column-gap:1.5rem !important;column-gap:1.5rem !important}.column-gap-5{-moz-column-gap:3rem !important;column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.375rem + 1.5vw) !important}.fs-2{font-size:calc(1.325rem + .9vw) !important}.fs-3{font-size:calc(1.3rem + .6vw) !important}.fs-4{font-size:calc(1.275rem + .3vw) !important}.fs-5{font-size:1.25rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-primary{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{-webkit-user-select:all !important;-moz-user-select:all !important;user-select:all !important}.user-select-auto{-webkit-user-select:auto !important;-moz-user-select:auto !important;user-select:auto !important}.user-select-none{-webkit-user-select:none !important;-moz-user-select:none !important;user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{-o-object-fit:contain !important;object-fit:contain !important}.object-fit-sm-cover{-o-object-fit:cover !important;object-fit:cover !important}.object-fit-sm-fill{-o-object-fit:fill !important;object-fit:fill !important}.object-fit-sm-scale{-o-object-fit:scale-down !important;object-fit:scale-down !important}.object-fit-sm-none{-o-object-fit:none !important;object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{-moz-column-gap:0 !important;column-gap:0 !important}.column-gap-sm-1{-moz-column-gap:.25rem !important;column-gap:.25rem !important}.column-gap-sm-2{-moz-column-gap:.5rem !important;column-gap:.5rem !important}.column-gap-sm-3{-moz-column-gap:1rem !important;column-gap:1rem !important}.column-gap-sm-4{-moz-column-gap:1.5rem !important;column-gap:1.5rem !important}.column-gap-sm-5{-moz-column-gap:3rem !important;column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{-o-object-fit:contain !important;object-fit:contain !important}.object-fit-md-cover{-o-object-fit:cover !important;object-fit:cover !important}.object-fit-md-fill{-o-object-fit:fill !important;object-fit:fill !important}.object-fit-md-scale{-o-object-fit:scale-down !important;object-fit:scale-down !important}.object-fit-md-none{-o-object-fit:none !important;object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{-moz-column-gap:0 !important;column-gap:0 !important}.column-gap-md-1{-moz-column-gap:.25rem !important;column-gap:.25rem !important}.column-gap-md-2{-moz-column-gap:.5rem !important;column-gap:.5rem !important}.column-gap-md-3{-moz-column-gap:1rem !important;column-gap:1rem !important}.column-gap-md-4{-moz-column-gap:1.5rem !important;column-gap:1.5rem !important}.column-gap-md-5{-moz-column-gap:3rem !important;column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{-o-object-fit:contain !important;object-fit:contain !important}.object-fit-lg-cover{-o-object-fit:cover !important;object-fit:cover !important}.object-fit-lg-fill{-o-object-fit:fill !important;object-fit:fill !important}.object-fit-lg-scale{-o-object-fit:scale-down !important;object-fit:scale-down !important}.object-fit-lg-none{-o-object-fit:none !important;object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{-moz-column-gap:0 !important;column-gap:0 !important}.column-gap-lg-1{-moz-column-gap:.25rem !important;column-gap:.25rem !important}.column-gap-lg-2{-moz-column-gap:.5rem !important;column-gap:.5rem !important}.column-gap-lg-3{-moz-column-gap:1rem !important;column-gap:1rem !important}.column-gap-lg-4{-moz-column-gap:1.5rem !important;column-gap:1.5rem !important}.column-gap-lg-5{-moz-column-gap:3rem !important;column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{-o-object-fit:contain !important;object-fit:contain !important}.object-fit-xl-cover{-o-object-fit:cover !important;object-fit:cover !important}.object-fit-xl-fill{-o-object-fit:fill !important;object-fit:fill !important}.object-fit-xl-scale{-o-object-fit:scale-down !important;object-fit:scale-down !important}.object-fit-xl-none{-o-object-fit:none !important;object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{-moz-column-gap:0 !important;column-gap:0 !important}.column-gap-xl-1{-moz-column-gap:.25rem !important;column-gap:.25rem !important}.column-gap-xl-2{-moz-column-gap:.5rem !important;column-gap:.5rem !important}.column-gap-xl-3{-moz-column-gap:1rem !important;column-gap:1rem !important}.column-gap-xl-4{-moz-column-gap:1.5rem !important;column-gap:1.5rem !important}.column-gap-xl-5{-moz-column-gap:3rem !important;column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{-o-object-fit:contain !important;object-fit:contain !important}.object-fit-xxl-cover{-o-object-fit:cover !important;object-fit:cover !important}.object-fit-xxl-fill{-o-object-fit:fill !important;object-fit:fill !important}.object-fit-xxl-scale{-o-object-fit:scale-down !important;object-fit:scale-down !important}.object-fit-xxl-none{-o-object-fit:none !important;object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{-moz-column-gap:0 !important;column-gap:0 !important}.column-gap-xxl-1{-moz-column-gap:.25rem !important;column-gap:.25rem !important}.column-gap-xxl-2{-moz-column-gap:.5rem !important;column-gap:.5rem !important}.column-gap-xxl-3{-moz-column-gap:1rem !important;column-gap:1rem !important}.column-gap-xxl-4{-moz-column-gap:1.5rem !important;column-gap:1.5rem !important}.column-gap-xxl-5{-moz-column-gap:3rem !important;column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}@media(min-width: 1200px){.fs-1{font-size:2.5rem !important}.fs-2{font-size:2rem !important}.fs-3{font-size:1.75rem !important}.fs-4{font-size:1.5rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.navbar .nav-link,.navbar .navbar-brand{text-shadow:-1px -1px 0 rgba(0,0,0,.05);transition:color ease-in-out .2s}.navbar.bg-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.navbar.bg-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.navbar.bg-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.navbar.bg-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.navbar.bg-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.navbar.bg-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.navbar.bg-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.navbar.bg-light .nav-link,.navbar.bg-light .navbar-brand{text-shadow:1px 1px 0 rgba(255,255,255,.1)}.navbar.bg-light .navbar-brand{color:rgba(var(--bs-emphasis-color-rgb), 0.65)}.navbar.bg-light .navbar-brand:hover{color:#3399f3}.btn{text-shadow:-1px -1px 0 rgba(0,0,0,.1)}.btn-link{text-shadow:none}.btn-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.btn-primary:not(.disabled):hover{background-image:linear-gradient(#6d8aaa, #3f658f 50%, #3a5d84);filter:none;border:1px solid #325172}.btn-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-secondary:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.btn-success:not(.disabled):hover{background-image:linear-gradient(#67bc54, #37a71e 50%, #339a1c);filter:none;border:1px solid #2c8618}.btn-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.btn-info:not(.disabled):hover{background-image:linear-gradient(#61a8e7, #2f8de0 50%, #2b82ce);filter:none;border:1px solid #2671b3}.btn-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.btn-warning:not(.disabled):hover{background-image:linear-gradient(#d18f3d, #c36c00 50%, #b36300);filter:none;border:1px solid #9c5600}.btn-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.btn-danger:not(.disabled):hover{background-image:linear-gradient(#cd3f3d, #bd0200 50%, #ae0200);filter:none;border:1px solid #970200}.btn-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.btn-light:not(.disabled):hover{background-image:linear-gradient(#e4e4e4, #dbdbdb 50%, #c9c9c9);filter:none;border:1px solid #afafaf}.btn-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.btn-dark:not(.disabled):hover{background-image:linear-gradient(#616161, #2f2f2f 50%, #2b2b2b);filter:none;border:1px solid #262626}[class*=btn-outline-]{text-shadow:none}.badge.bg-light{color:#333}.card h1,.card .h1,.card h2,.card .h2,.card h3,.card .h3,.card h4,.card .h4,.card h5,.card .h5,.card h6,.card .h6,.list-group-item h1,.list-group-item .h1,.list-group-item h2,.list-group-item .h2,.list-group-item h3,.list-group-item .h3,.list-group-item h4,.list-group-item .h4,.list-group-item h5,.list-group-item .h5,.list-group-item h6,.list-group-item .h6{color:inherit}
diff --git a/app/static/data/examples/shinybeez-ex-apt-100.csv b/app/static/data/examples/shinybeez-ex-apt-100.csv
new file mode 100644
index 0000000..98807de
--- /dev/null
+++ b/app/static/data/examples/shinybeez-ex-apt-100.csv
@@ -0,0 +1,101 @@
+id,group,0,0.25,0.5,1,1.5,2,2.5,3,4,5,6,7,8,9,10,15,20
+1,B,10,10,10,10,10,10,10,10,8,7,6,6,5,4,3,2,1
+2,C,5,5,5,5,5,5,5,4,3,2,1,1,0,0,0,0,0
+3,B,10,10,10,10,10,10,9,8,7,6,5,3,2,1,1,1,0
+4,B,6,6,6,6,6,5,5,3,3,2,2,2,1,1,1,1,0
+5,C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+6,B,8,8,8,8,8,8,8,6,6,4,3,3,2,2,0,0,0
+7,C,5,5,5,5,5,3,3,3,2,2,2,1,1,1,1,0,0
+8,B,6,6,6,6,6,6,5,5,4,3,2,2,2,1,1,0,0
+9,C,2,4,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0
+10,B,8,8,8,8,8,8,8,6,5,3,2,2,1,0,0,0,0
+11,C,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0
+12,C,5,5,5,5,5,4,4,4,3,3,2,1,1,0,0,0,0
+13,C,5,5,5,5,5,5,4,4,3,2,1,1,0,0,0,0,0
+14,A,12,8,6,5,4,3,3,2,1,1,0,0,0,0,0,0,0
+15,B,8,6,6,6,6,6,6,6,4,4,0,0,0,0,0,0,0
+16,C,2,2,2,2,2,2,2,2,2,1,1,1,1,1,0,0,0
+17,A,12,12,10,8,6,5,4,3,2,1,0,0,0,0,0,0,0
+18,A,12,12,10,10,10,8,8,7,6,5,4,3,3,2,2,1,0
+19,B,6,6,6,6,6,6,6,6,2,2,2,1,1,1,0,0,0
+20,A,12,11,10,9,8,8,8,8,8,7,7,6,5,4,1,0,0
+21,C,5,5,5,4,3,3,3,3,2,2,1,1,0,0,0,0,0
+22,A,50,10,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0
+23,A,12,11,10,9,8,7,7,6,6,5,5,4,4,3,2,1,0
+24,B,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+25,B,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0
+26,B,6,6,6,6,6,6,6,6,4,3,2,1,0,0,0,0,0
+27,C,4,4,4,4,4,3,3,2,2,2,1,1,1,1,0,0,0
+28,A,15,15,15,15,15,15,15,10,10,10,8,7,6,5,5,3,2
+29,C,5,5,5,5,4,4,3,3,2,2,1,1,1,0,0,0,0
+30,B,8,8,8,8,6,5,4,3,2,0,0,0,0,0,0,0,0
+31,A,12,12,12,12,10,10,8,6,6,5,4,4,3,3,2,1,0
+32,C,5,4,4,3,3,3,2,2,1,1,1,0,0,0,0,0,0
+33,B,8,8,8,8,8,8,6,6,5,4,6,2,2,1,0,0,0
+34,C,3,3,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0
+35,C,5,5,5,3,3,2,2,2,1,1,0,0,0,0,0,0,0
+36,B,10,10,10,10,10,10,10,8,6,5,5,4,4,3,3,2,1
+37,C,2,2,2,2,2,2,1,1,1,1,1,0,0,0,0,0,0
+38,C,5,5,5,5,4,4,4,3,2,2,1,1,1,1,1,1,1
+39,B,10,10,10,10,10,8,8,6,5,4,3,3,2,2,2,1,1
+40,B,6,5,5,5,4,4,3,3,2,1,0,0,0,0,0,0,0
+41,C,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+42,B,10,10,10,10,9,9,8,7,7,6,5,5,4,4,3,2,1
+43,B,8,8,8,8,7,7,7,6,5,4,3,3,2,2,2,1,1
+44,B,7,7,7,7,7,7,5,3,2,2,1,0,0,0,0,0,0
+45,B,6,6,6,6,6,6,5,5,5,5,4,4,4,3,3,2,1
+46,C,5,5,5,5,4,3,2,2,1,1,0,0,0,0,0,0,0
+47,B,10,10,10,10,10,10,8,8,6,4,4,4,3,2,1,1,1
+48,A,15,12,11,10,7,6,5,5,4,3,2,2,1,1,0,0,0
+49,C,4,4,4,4,3,2,2,2,2,2,0,0,0,0,0,0,0
+50,A,20,10,10,10,5,5,5,5,5,2,2,2,1,1,1,1,1
+51,C,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0
+52,B,6,5,4,3,2,2,1,1,1,1,0,0,0,0,0,0,0
+53,C,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0
+54,B,7,7,7,7,7,7,7,7,5,5,4,4,4,4,4,0,0
+55,B,8,8,8,8,8,8,8,6,5,5,5,4,3,3,2,1,1
+56,C,4,4,4,4,4,4,4,4,4,4,3,3,3,2,2,2,1
+57,B,6,6,6,6,6,5,5,5,4,4,4,3,3,2,2,1,1
+58,C,4,4,4,4,4,4,4,4,4,3,3,2,2,2,1,1,1
+59,B,10,10,10,10,8,7,7,8,7,7,5,2,0,0,0,0,0
+60,C,5,5,5,5,5,5,5,5,5,5,5,5,3,2,2,1,1
+61,C,2,2,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+62,B,6,6,6,6,6,6,6,6,5,5,4,4,4,3,3,2,2
+63,C,4,4,4,4,4,4,4,4,4,4,3,3,2,2,1,0,0
+64,B,8,8,8,8,8,7,7,6,5,5,5,5,5,4,4,4,3
+65,A,12,12,12,12,12,12,12,10,6,5,3,2,2,2,2,1,1
+66,C,0,0,0,0,0,0,5,2,0,0,0,0,0,0,1,0,0
+67,C,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0
+68,B,10,9,8,7,6,5,5,5,5,3,2,1,0,0,0,0,0
+69,A,20,20,20,20,20,10,10,9,8,7,7,6,5,3,2,2,1
+70,A,12,12,12,12,10,8,8,6,5,4,3,3,2,1,1,0,0
+71,C,3,2,2,2,2,2,2,2,1,1,1,1,1,0,0,0,0
+72,B,10,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
+73,C,5,5,5,5,5,5,5,5,5,4,4,3,3,2,2,1,1
+74,C,2,3,5,2,2,4,5,5,0,0,0,0,0,0,0,0,1
+75,C,3,5,2,7,4,2,9,7,2,6,9,2,6,2,5,2,7
+76,C,4,4,4,4,4,4,3,3,2,1,0,0,0,0,0,0,0
+77,C,5,5,3,3,3,2,2,2,2,2,1,2,2,0,0,0,0
+78,C,5,5,5,5,5,5,5,5,5,5,4,4,3,2,2,1,0
+79,C,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,2,2
+80,C,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+81,B,10,10,10,10,10,10,10,10,7,6,5,4,0,0,0,0,0
+82,A,20,18,17,14,12,10,8,7,6,5,4,4,3,3,2,1,1
+83,C,5,5,5,5,5,5,5,4,4,0,0,0,0,0,0,0,0
+84,B,10,10,10,10,10,5,5,5,5,3,3,2,2,2,1,1,1
+85,B,6,6,6,6,6,6,6,6,6,5,5,3,2,2,1,0,0
+86,C,5,5,5,5,5,5,4,4,3,3,2,2,2,1,1,0,0
+87,B,10,10,10,10,10,10,10,10,8,7,6,5,4,1,1,0,0
+88,B,10,10,10,10,10,10,10,8,7,6,4,2,1,1,1,1,1
+89,C,3,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0
+90,C,2,2,2,2,2,2,2,2,2,1,1,1,1,0,0,0,0
+91,C,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0
+92,A,15,15,12,10,8,6,6,6,6,4,4,4,4,3,3,2,0
+93,C,5,5,4,3,3,3,3,2,2,2,2,1,1,1,0,0,0
+94,B,6,6,6,5,5,5,4,4,3,2,2,1,1,1,0,0,0
+95,A,25,15,15,12,10,10,8,8,8,8,8,5,5,4,4,0,0
+96,C,4,5,4,3,2,2,2,0,0,0,0,0,0,0,0,0,0
+97,B,10,10,10,10,8,6,5,5,5,2,2,2,1,1,0,0,0
+98,B,6,6,6,6,5,5,5,4,4,3,3,2,2,0,0,0,0
+99,B,6,6,6,6,6,5,5,4,4,4,0,0,0,0,0,0,0
+100,C,5,0,0,0,4,1,1,1,1,0,0,0,0,0,0,0,0
\ No newline at end of file
diff --git a/app/static/data/examples/shinybeez-ex-apt-50.csv b/app/static/data/examples/shinybeez-ex-apt-50.csv
new file mode 100644
index 0000000..006d771
--- /dev/null
+++ b/app/static/data/examples/shinybeez-ex-apt-50.csv
@@ -0,0 +1,51 @@
+id,group,0,0.25,0.5,1,1.5,2,2.5,3,4,5,6,7,8,9,10,15,20
+1,B,10,10,10,10,10,10,10,10,8,7,6,6,5,4,3,2,1
+2,C,5,5,5,5,5,5,5,4,3,2,1,1,0,0,0,0,0
+3,B,10,10,10,10,10,10,9,8,7,6,5,3,2,1,1,1,0
+4,B,6,6,6,6,6,5,5,3,3,2,2,2,1,1,1,1,0
+5,C,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+6,B,8,8,8,8,8,8,8,6,6,4,3,3,2,2,0,0,0
+7,C,5,5,5,5,5,3,3,3,2,2,2,1,1,1,1,0,0
+8,B,6,6,6,6,6,6,5,5,4,3,2,2,2,1,1,0,0
+9,C,2,4,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0
+10,B,8,8,8,8,8,8,8,6,5,3,2,2,1,0,0,0,0
+11,C,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0
+12,C,5,5,5,5,5,4,4,4,3,3,2,1,1,0,0,0,0
+13,C,5,5,5,5,5,5,4,4,3,2,1,1,0,0,0,0,0
+14,A,12,8,6,5,4,3,3,2,1,1,0,0,0,0,0,0,0
+15,B,8,6,6,6,6,6,6,6,4,4,0,0,0,0,0,0,0
+16,C,2,2,2,2,2,2,2,2,2,1,1,1,1,1,0,0,0
+17,A,12,12,10,8,6,5,4,3,2,1,0,0,0,0,0,0,0
+18,A,12,12,10,10,10,8,8,7,6,5,4,3,3,2,2,1,0
+19,B,6,6,6,6,6,6,6,6,2,2,2,1,1,1,0,0,0
+20,A,12,11,10,9,8,8,8,8,8,7,7,6,5,4,1,0,0
+21,C,5,5,5,4,3,3,3,3,2,2,1,1,0,0,0,0,0
+22,A,50,10,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0
+23,A,12,11,10,9,8,7,7,6,6,5,5,4,4,3,2,1,0
+24,B,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+25,B,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0
+26,B,6,6,6,6,6,6,6,6,4,3,2,1,0,0,0,0,0
+27,C,4,4,4,4,4,3,3,2,2,2,1,1,1,1,0,0,0
+28,A,15,15,15,15,15,15,15,10,10,10,8,7,6,5,5,3,2
+29,C,5,5,5,5,4,4,3,3,2,2,1,1,1,0,0,0,0
+30,B,8,8,8,8,6,5,4,3,2,0,0,0,0,0,0,0,0
+31,A,12,12,12,12,10,10,8,6,6,5,4,4,3,3,2,1,0
+32,C,5,4,4,3,3,3,2,2,1,1,1,0,0,0,0,0,0
+33,B,8,8,8,8,8,8,6,6,5,4,6,2,2,1,0,0,0
+34,C,3,3,3,3,3,2,2,1,0,0,0,0,0,0,0,0,0
+35,C,5,5,5,3,3,2,2,2,1,1,0,0,0,0,0,0,0
+36,B,10,10,10,10,10,10,10,8,6,5,5,4,4,3,3,2,1
+37,C,2,2,2,2,2,2,1,1,1,1,1,0,0,0,0,0,0
+38,C,5,5,5,5,4,4,4,3,2,2,1,1,1,1,1,1,1
+39,B,10,10,10,10,10,8,8,6,5,4,3,3,2,2,2,1,1
+40,B,6,5,5,5,4,4,3,3,2,1,0,0,0,0,0,0,0
+41,C,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+42,B,10,10,10,10,9,9,8,7,7,6,5,5,4,4,3,2,1
+43,B,8,8,8,8,7,7,7,6,5,4,3,3,2,2,2,1,1
+44,B,7,7,7,7,7,7,5,3,2,2,1,0,0,0,0,0,0
+45,B,6,6,6,6,6,6,5,5,5,5,4,4,4,3,3,2,1
+46,C,5,5,5,5,4,3,2,2,1,1,0,0,0,0,0,0,0
+47,B,10,10,10,10,10,10,8,8,6,4,4,4,3,2,1,1,1
+48,A,15,12,11,10,7,6,5,5,4,3,2,2,1,1,0,0,0
+49,C,4,4,4,4,3,2,2,2,2,2,0,0,0,0,0,0,0
+50,A,20,10,10,10,5,5,5,5,5,2,2,2,1,1,1,1,1
\ No newline at end of file
diff --git a/app/static/data/examples/shinybeez-ex-five.fivetrial_dd.csv b/app/static/data/examples/shinybeez-ex-five.fivetrial_dd.csv
new file mode 100644
index 0000000..105fead
--- /dev/null
+++ b/app/static/data/examples/shinybeez-ex-five.fivetrial_dd.csv
@@ -0,0 +1,5 @@
+ResponseId,I16,I16-Timing_First Click,I16-Timing_Last Click,I16-Timing_Page Submit,I16-Timing_Click Count,I8,I8-Timing_First Click,I8-Timing_Last Click,I8-Timing_Page Submit,I8-Timing_Click Count,I24,I24-Timing_First Click,I24-Timing_Last Click,I24-Timing_Page Submit,I24-Timing_Click Count,I4,I4-Timing_First Click,I4-Timing_Last Click,I4-Timing_Page Submit,I4-Timing_Click Count,I20,I20-Timing_First Click,I20-Timing_Last Click,I20-Timing_Page Submit,I20-Timing_Click Count,I28,I28-Timing_First Click,I28-Timing_Last Click,I28-Timing_Page Submit,I28-Timing_Click Count,I12,I12-Timing_First Click,I12-Timing_Last Click,I12-Timing_Page Submit,I12-Timing_Click Count,I2,I2-Timing_First Click,I2-Timing_Last Click,I2-Timing_Page Submit,I2-Timing_Click Count,I10,I10-Timing_First Click,I10-Timing_Last Click,I10-Timing_Page Submit,I10-Timing_Click Count,I22,I22-Timing_First Click,I22-Timing_Last Click,I22-Timing_Page Submit,I22-Timing_Click Count,I18,I18-Timing_First Click,I18-Timing_Last Click,I18-Timing_Page Submit,I18-Timing_Click Count,I26,I26-Timing_First Click,I26-Timing_Last Click,I26-Timing_Page Submit,I26-Timing_Click Count,I30,I30-Timing_First Click,I30-Timing_Last Click,I30-Timing_Page Submit,I30-Timing_Click Count,I14,I14-Timing_First Click,I14-Timing_Last Click,I14-Timing_Page Submit,I14-Timing_Click Count,I6,I6-Timing_First Click,I6-Timing_Last Click,I6-Timing_Page Submit,I6-Timing_Click Count,I1,I1-Timing_First Click,I1-Timing_Last Click,I1-Timing_Page Submit,I1-Timing_Click Count,I5,I5-Timing_First Click,I5-Timing_Last Click,I5-Timing_Page Submit,I5-Timing_Click Count,I9,I9-Timing_First Click,I9-Timing_Last Click,I9-Timing_Page Submit,I9-Timing_Click Count,I13,I13-Timing_First Click,I13-Timing_Last Click,I13-Timing_Page Submit,I13-Timing_Click Count,I17,I17-Timing_First Click,I17-Timing_Last Click,I17-Timing_Page Submit,I17-Timing_Click Count,I19,I19-Timing_First Click,I19-Timing_Last Click,I19-Timing_Page Submit,I19-Timing_Click Count,I21,I21-Timing_First Click,I21-Timing_Last Click,I21-Timing_Page Submit,I21-Timing_Click Count,I23,I23-Timing_First Click,I23-Timing_Last Click,I23-Timing_Page Submit,I23-Timing_Click Count,I25,I25-Timing_First Click,I25-Timing_Last Click,I25-Timing_Page Submit,I25-Timing_Click Count,I29,I29-Timing_First Click,I29-Timing_Last Click,I29-Timing_Page Submit,I29-Timing_Click Count,I31,I31-Timing_First Click,I31-Timing_Last Click,I31-Timing_Page Submit,I31-Timing_Click Count,I27,I27-Timing_First Click,I27-Timing_Last Click,I27-Timing_Page Submit,I27-Timing_Click Count,I15,I15-Timing_First Click,I15-Timing_Last Click,I15-Timing_Page Submit,I15-Timing_Click Count,I11,I11-Timing_First Click,I11-Timing_Last Click,I11-Timing_Page Submit,I11-Timing_Click Count,I7,I7-Timing_First Click,I7-Timing_Last Click,I7-Timing_Page Submit,I7-Timing_Click Count,I3,I3-Timing_First Click,I3-Timing_Last Click,I3-Timing_Page Submit,I3-Timing_Click Count,Attend-SS,Attend-SS-Timing_First Click,Attend-SS-Timing_Last Click,Attend-SS-Timing_Page Submit,Attend-SS-Timing_Click Count,Attend-LL,Attend-LL-Timing_First Click,Attend-LL-Timing_Last Click,Attend-LL-Timing_Page Submit,Attend-LL-Timing_Click Count,Amount,Currency,Commodity
+1,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 3 weeks,1.761,1.761,3.337,1,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,7.729,7.729,8.457,1,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 4 months,1.558,1.558,3.377,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,2.333,3.949,4.501,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,3.161,3.161,3.728,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1000,$,NA
+2,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,3.779,3.779,4.351,1,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,1.454,1.454,3.19,1,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 4 hours,1.179,1.179,3.144,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,0.873,0.873,3.256,1,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,2.621,2.621,3.258,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1000,$,NA
+3,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,1.115,1.115,3.272,1,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,0.679,0.679,3.074,1,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,0.606,0.606,3.044,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,0.745,0.745,3.302,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} now,0.924,0.924,4.181,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount * 0} ${e://Field/Commodity} now,1.45,1.45,4.181,1,NA,NA,NA,NA,NA,1000,$,NA
+4,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 3 weeks,1.011,1.011,3.19,1,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 2 years,1.041,1.041,3.109,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 8 years,0.806,0.806,3.113,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 18 years,0.822,0.822,3.487,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} in 25 years,0.914,0.914,3.17,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount} ${e://Field/Commodity} in 25 years,2.158,2.158,3.573,1,1000,$,NA
diff --git a/app/static/data/examples/shinybeez-ex-five.fivetrial_pd.csv b/app/static/data/examples/shinybeez-ex-five.fivetrial_pd.csv
new file mode 100644
index 0000000..a76a386
--- /dev/null
+++ b/app/static/data/examples/shinybeez-ex-five.fivetrial_pd.csv
@@ -0,0 +1,6 @@
+ResponseId,I16,I16-Timing_First Click,I16-Timing_Last Click,I16-Timing_Page Submit,I16-Timing_Click Count,I8,I8-Timing_First Click,I8-Timing_Last Click,I8-Timing_Page Submit,I8-Timing_Click Count,I24,I24-Timing_First Click,I24-Timing_Last Click,I24-Timing_Page Submit,I24-Timing_Click Count,I4,I4-Timing_First Click,I4-Timing_Last Click,I4-Timing_Page Submit,I4-Timing_Click Count,I20,I20-Timing_First Click,I20-Timing_Last Click,I20-Timing_Page Submit,I20-Timing_Click Count,I28,I28-Timing_First Click,I28-Timing_Last Click,I28-Timing_Page Submit,I28-Timing_Click Count,I12,I12-Timing_First Click,I12-Timing_Last Click,I12-Timing_Page Submit,I12-Timing_Click Count,I2,I2-Timing_First Click,I2-Timing_Last Click,I2-Timing_Page Submit,I2-Timing_Click Count,I10,I10-Timing_First Click,I10-Timing_Last Click,I10-Timing_Page Submit,I10-Timing_Click Count,I22,I22-Timing_First Click,I22-Timing_Last Click,I22-Timing_Page Submit,I22-Timing_Click Count,I18,I18-Timing_First Click,I18-Timing_Last Click,I18-Timing_Page Submit,I18-Timing_Click Count,I26,I26-Timing_First Click,I26-Timing_Last Click,I26-Timing_Page Submit,I26-Timing_Click Count,I30,I30-Timing_First Click,I30-Timing_Last Click,I30-Timing_Page Submit,I30-Timing_Click Count,I14,I14-Timing_First Click,I14-Timing_Last Click,I14-Timing_Page Submit,I14-Timing_Click Count,I6,I6-Timing_First Click,I6-Timing_Last Click,I6-Timing_Page Submit,I6-Timing_Click Count,I1,I1-Timing_First Click,I1-Timing_Last Click,I1-Timing_Page Submit,I1-Timing_Click Count,I5,I5-Timing_First Click,I5-Timing_Last Click,I5-Timing_Page Submit,I5-Timing_Click Count,I9,I9-Timing_First Click,I9-Timing_Last Click,I9-Timing_Page Submit,I9-Timing_Click Count,I13,I13-Timing_First Click,I13-Timing_Last Click,I13-Timing_Page Submit,I13-Timing_Click Count,I17,I17-Timing_First Click,I17-Timing_Last Click,I17-Timing_Page Submit,I17-Timing_Click Count,I19,I19-Timing_First Click,I19-Timing_Last Click,I19-Timing_Page Submit,I19-Timing_Click Count,I21,I21-Timing_First Click,I21-Timing_Last Click,I21-Timing_Page Submit,I21-Timing_Click Count,I23,I23-Timing_First Click,I23-Timing_Last Click,I23-Timing_Page Submit,I23-Timing_Click Count,I25,I25-Timing_First Click,I25-Timing_Last Click,I25-Timing_Page Submit,I25-Timing_Click Count,I29,I29-Timing_First Click,I29-Timing_Last Click,I29-Timing_Page Submit,I29-Timing_Click Count,I31,I31-Timing_First Click,I31-Timing_Last Click,I31-Timing_Page Submit,I31-Timing_Click Count,I27,I27-Timing_First Click,I27-Timing_Last Click,I27-Timing_Page Submit,I27-Timing_Click Count,I15,I15-Timing_First Click,I15-Timing_Last Click,I15-Timing_Page Submit,I15-Timing_Click Count,I11,I11-Timing_First Click,I11-Timing_Last Click,I11-Timing_Page Submit,I11-Timing_Click Count,I7,I7-Timing_First Click,I7-Timing_Last Click,I7-Timing_Page Submit,I7-Timing_Click Count,I3,I3-Timing_First Click,I3-Timing_Last Click,I3-Timing_Page Submit,I3-Timing_Click Count,Attend-SS,Attend-SS-Timing_First Click,Attend-SS-Timing_Last Click,Attend-SS-Timing_Page Submit,Attend-SS-Timing_Click Count,Attend-LL,Attend-LL-Timing_First Click,Attend-LL-Timing_Last Click,Attend-LL-Timing_Page Submit,Attend-LL-Timing_Click Count
+1,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,3.98,3.98,5.184,1,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with an 92% chance,4.01,4.01,4.763,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,2.061,2.061,3.252,1,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,1.525,1.525,3.019,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with a 90% chance,2.253,2.954,3.738,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
+2,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,2.873,2.873,3.883,1,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,3.745,3.745,4.864,1,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,1.159,1.159,6.356,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,3.064,3.064,5.408,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,2.049,2.049,5.097,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity}
+with a 99% chance",2.295,2.295,4.641,1,NA,NA,NA,NA,NA
+3,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,8.933,8.933,9.769,1,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with an 92% chance,2.163,2.163,2.981,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with a 77% chance,3.129,3.129,3.895,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with a 65% chance,2.655,2.655,4.855,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,4.021,4.021,4.705,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
+4,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,4.415,4.415,5.382,1,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with an 92% chance,6.123,6.123,6.974,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,1.673,1.673,3.191,1,NA,NA,NA,NA,NA,${e://Field/Currency}$e{ e://Field/Amount / 2 } ${e://Field/Commodity} for sure,1.757,1.757,3.259,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,${e://Field/Currency}${e://Field/Amount} ${e://Field/Commodity} with a 90% chance,1.207,1.207,4.592,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
diff --git a/app/static/data/examples/shinybeez-ex-mcq-100-missings.csv b/app/static/data/examples/shinybeez-ex-mcq-100-missings.csv
new file mode 100644
index 0000000..e669cd3
--- /dev/null
+++ b/app/static/data/examples/shinybeez-ex-mcq-100-missings.csv
@@ -0,0 +1,2701 @@
+subjectid,questionid,response
+1,1,1
+1,2,1
+1,3,1
+1,4,1
+1,5,0
+1,6,1
+1,7,NA
+1,8,0
+1,9,0
+1,10,NA
+1,11,1
+1,12,1
+1,13,1
+1,14,0
+1,15,1
+1,16,1
+1,17,1
+1,18,0
+1,19,1
+1,20,1
+1,21,1
+1,22,1
+1,23,1
+1,24,NA
+1,25,NA
+1,26,1
+1,27,0
+2,1,1
+2,2,1
+2,3,1
+2,4,0
+2,5,1
+2,6,0
+2,7,0
+2,8,0
+2,9,1
+2,10,0
+2,11,1
+2,12,1
+2,13,0
+2,14,1
+2,15,0
+2,16,1
+2,17,1
+2,18,1
+2,19,0
+2,20,0
+2,21,0
+2,22,0
+2,23,1
+2,24,1
+2,25,1
+2,26,1
+2,27,1
+3,1,0
+3,2,1
+3,3,NA
+3,4,0
+3,5,1
+3,6,0
+3,7,1
+3,8,NA
+3,9,0
+3,10,1
+3,11,0
+3,12,0
+3,13,1
+3,14,0
+3,15,0
+3,16,1
+3,17,1
+3,18,0
+3,19,0
+3,20,0
+3,21,1
+3,22,1
+3,23,1
+3,24,0
+3,25,1
+3,26,0
+3,27,0
+4,1,1
+4,2,0
+4,3,1
+4,4,0
+4,5,NA
+4,6,0
+4,7,1
+4,8,1
+4,9,0
+4,10,0
+4,11,0
+4,12,NA
+4,13,1
+4,14,NA
+4,15,NA
+4,16,1
+4,17,0
+4,18,1
+4,19,1
+4,20,1
+4,21,0
+4,22,0
+4,23,0
+4,24,0
+4,25,1
+4,26,0
+4,27,1
+5,1,0
+5,2,NA
+5,3,0
+5,4,1
+5,5,1
+5,6,1
+5,7,1
+5,8,0
+5,9,1
+5,10,0
+5,11,1
+5,12,0
+5,13,NA
+5,14,1
+5,15,1
+5,16,0
+5,17,1
+5,18,0
+5,19,1
+5,20,NA
+5,21,1
+5,22,1
+5,23,0
+5,24,NA
+5,25,1
+5,26,0
+5,27,0
+6,1,NA
+6,2,NA
+6,3,1
+6,4,NA
+6,5,1
+6,6,0
+6,7,1
+6,8,0
+6,9,1
+6,10,1
+6,11,0
+6,12,1
+6,13,1
+6,14,0
+6,15,1
+6,16,1
+6,17,1
+6,18,0
+6,19,0
+6,20,0
+6,21,NA
+6,22,1
+6,23,NA
+6,24,1
+6,25,0
+6,26,0
+6,27,0
+7,1,0
+7,2,1
+7,3,1
+7,4,1
+7,5,1
+7,6,1
+7,7,0
+7,8,1
+7,9,1
+7,10,0
+7,11,NA
+7,12,0
+7,13,0
+7,14,1
+7,15,1
+7,16,0
+7,17,NA
+7,18,0
+7,19,0
+7,20,0
+7,21,0
+7,22,0
+7,23,1
+7,24,1
+7,25,0
+7,26,1
+7,27,0
+8,1,1
+8,2,1
+8,3,1
+8,4,0
+8,5,1
+8,6,1
+8,7,0
+8,8,1
+8,9,0
+8,10,0
+8,11,0
+8,12,1
+8,13,0
+8,14,1
+8,15,NA
+8,16,0
+8,17,0
+8,18,1
+8,19,1
+8,20,1
+8,21,0
+8,22,1
+8,23,0
+8,24,NA
+8,25,NA
+8,26,0
+8,27,0
+9,1,1
+9,2,0
+9,3,0
+9,4,0
+9,5,1
+9,6,1
+9,7,1
+9,8,0
+9,9,0
+9,10,0
+9,11,0
+9,12,1
+9,13,0
+9,14,1
+9,15,1
+9,16,0
+9,17,0
+9,18,0
+9,19,0
+9,20,1
+9,21,0
+9,22,1
+9,23,NA
+9,24,1
+9,25,0
+9,26,1
+9,27,0
+10,1,0
+10,2,1
+10,3,0
+10,4,1
+10,5,0
+10,6,1
+10,7,NA
+10,8,NA
+10,9,0
+10,10,0
+10,11,0
+10,12,0
+10,13,0
+10,14,1
+10,15,1
+10,16,0
+10,17,0
+10,18,1
+10,19,NA
+10,20,0
+10,21,1
+10,22,0
+10,23,NA
+10,24,1
+10,25,1
+10,26,1
+10,27,0
+11,1,1
+11,2,1
+11,3,0
+11,4,1
+11,5,1
+11,6,0
+11,7,0
+11,8,1
+11,9,1
+11,10,0
+11,11,0
+11,12,1
+11,13,1
+11,14,0
+11,15,0
+11,16,0
+11,17,0
+11,18,0
+11,19,0
+11,20,1
+11,21,0
+11,22,1
+11,23,1
+11,24,0
+11,25,0
+11,26,1
+11,27,NA
+12,1,NA
+12,2,1
+12,3,0
+12,4,0
+12,5,NA
+12,6,0
+12,7,0
+12,8,NA
+12,9,1
+12,10,0
+12,11,0
+12,12,1
+12,13,1
+12,14,0
+12,15,0
+12,16,1
+12,17,NA
+12,18,1
+12,19,NA
+12,20,0
+12,21,1
+12,22,1
+12,23,0
+12,24,0
+12,25,1
+12,26,1
+12,27,1
+13,1,1
+13,2,1
+13,3,0
+13,4,NA
+13,5,1
+13,6,0
+13,7,0
+13,8,1
+13,9,NA
+13,10,1
+13,11,1
+13,12,0
+13,13,1
+13,14,NA
+13,15,0
+13,16,0
+13,17,1
+13,18,1
+13,19,0
+13,20,0
+13,21,0
+13,22,0
+13,23,1
+13,24,1
+13,25,1
+13,26,0
+13,27,1
+14,1,0
+14,2,NA
+14,3,1
+14,4,1
+14,5,0
+14,6,NA
+14,7,0
+14,8,0
+14,9,1
+14,10,NA
+14,11,1
+14,12,1
+14,13,0
+14,14,1
+14,15,0
+14,16,1
+14,17,1
+14,18,1
+14,19,0
+14,20,0
+14,21,0
+14,22,0
+14,23,0
+14,24,1
+14,25,1
+14,26,0
+14,27,NA
+15,1,0
+15,2,1
+15,3,0
+15,4,NA
+15,5,0
+15,6,1
+15,7,1
+15,8,0
+15,9,1
+15,10,0
+15,11,1
+15,12,1
+15,13,1
+15,14,1
+15,15,1
+15,16,0
+15,17,1
+15,18,1
+15,19,NA
+15,20,1
+15,21,0
+15,22,0
+15,23,1
+15,24,0
+15,25,0
+15,26,0
+15,27,0
+16,1,0
+16,2,1
+16,3,0
+16,4,0
+16,5,1
+16,6,1
+16,7,NA
+16,8,0
+16,9,1
+16,10,NA
+16,11,1
+16,12,1
+16,13,0
+16,14,NA
+16,15,0
+16,16,1
+16,17,0
+16,18,0
+16,19,1
+16,20,0
+16,21,0
+16,22,0
+16,23,NA
+16,24,1
+16,25,1
+16,26,0
+16,27,1
+17,1,0
+17,2,1
+17,3,1
+17,4,0
+17,5,0
+17,6,1
+17,7,1
+17,8,NA
+17,9,1
+17,10,1
+17,11,1
+17,12,1
+17,13,0
+17,14,0
+17,15,0
+17,16,0
+17,17,1
+17,18,0
+17,19,0
+17,20,1
+17,21,0
+17,22,0
+17,23,0
+17,24,1
+17,25,1
+17,26,1
+17,27,1
+18,1,0
+18,2,NA
+18,3,1
+18,4,1
+18,5,0
+18,6,1
+18,7,0
+18,8,1
+18,9,1
+18,10,0
+18,11,0
+18,12,1
+18,13,1
+18,14,0
+18,15,0
+18,16,1
+18,17,0
+18,18,1
+18,19,1
+18,20,1
+18,21,0
+18,22,1
+18,23,1
+18,24,0
+18,25,0
+18,26,0
+18,27,1
+19,1,0
+19,2,0
+19,3,0
+19,4,0
+19,5,0
+19,6,0
+19,7,1
+19,8,0
+19,9,1
+19,10,0
+19,11,0
+19,12,0
+19,13,1
+19,14,1
+19,15,0
+19,16,1
+19,17,1
+19,18,1
+19,19,1
+19,20,0
+19,21,1
+19,22,0
+19,23,NA
+19,24,0
+19,25,0
+19,26,1
+19,27,0
+20,1,0
+20,2,1
+20,3,1
+20,4,1
+20,5,1
+20,6,0
+20,7,1
+20,8,NA
+20,9,0
+20,10,0
+20,11,1
+20,12,1
+20,13,0
+20,14,1
+20,15,1
+20,16,0
+20,17,NA
+20,18,1
+20,19,1
+20,20,1
+20,21,0
+20,22,0
+20,23,1
+20,24,1
+20,25,0
+20,26,0
+20,27,1
+21,1,1
+21,2,0
+21,3,1
+21,4,0
+21,5,0
+21,6,0
+21,7,0
+21,8,0
+21,9,1
+21,10,1
+21,11,0
+21,12,1
+21,13,0
+21,14,1
+21,15,0
+21,16,1
+21,17,0
+21,18,0
+21,19,0
+21,20,0
+21,21,1
+21,22,1
+21,23,0
+21,24,0
+21,25,1
+21,26,1
+21,27,0
+22,1,1
+22,2,0
+22,3,1
+22,4,0
+22,5,0
+22,6,1
+22,7,0
+22,8,0
+22,9,1
+22,10,1
+22,11,1
+22,12,0
+22,13,0
+22,14,1
+22,15,NA
+22,16,0
+22,17,0
+22,18,0
+22,19,NA
+22,20,1
+22,21,1
+22,22,0
+22,23,0
+22,24,1
+22,25,0
+22,26,1
+22,27,NA
+23,1,1
+23,2,1
+23,3,0
+23,4,1
+23,5,0
+23,6,1
+23,7,1
+23,8,1
+23,9,1
+23,10,1
+23,11,1
+23,12,1
+23,13,1
+23,14,1
+23,15,1
+23,16,0
+23,17,0
+23,18,0
+23,19,1
+23,20,0
+23,21,0
+23,22,0
+23,23,1
+23,24,0
+23,25,0
+23,26,1
+23,27,0
+24,1,1
+24,2,0
+24,3,0
+24,4,0
+24,5,0
+24,6,NA
+24,7,0
+24,8,0
+24,9,1
+24,10,1
+24,11,0
+24,12,0
+24,13,NA
+24,14,0
+24,15,0
+24,16,1
+24,17,1
+24,18,1
+24,19,0
+24,20,1
+24,21,0
+24,22,0
+24,23,0
+24,24,1
+24,25,1
+24,26,0
+24,27,1
+25,1,1
+25,2,1
+25,3,0
+25,4,NA
+25,5,0
+25,6,1
+25,7,1
+25,8,1
+25,9,1
+25,10,0
+25,11,0
+25,12,0
+25,13,1
+25,14,1
+25,15,0
+25,16,1
+25,17,1
+25,18,1
+25,19,NA
+25,20,1
+25,21,0
+25,22,1
+25,23,1
+25,24,1
+25,25,1
+25,26,0
+25,27,0
+26,1,0
+26,2,NA
+26,3,0
+26,4,0
+26,5,0
+26,6,0
+26,7,NA
+26,8,1
+26,9,0
+26,10,0
+26,11,1
+26,12,1
+26,13,0
+26,14,1
+26,15,1
+26,16,NA
+26,17,0
+26,18,0
+26,19,NA
+26,20,0
+26,21,NA
+26,22,0
+26,23,1
+26,24,NA
+26,25,1
+26,26,1
+26,27,0
+27,1,1
+27,2,NA
+27,3,0
+27,4,0
+27,5,1
+27,6,1
+27,7,0
+27,8,1
+27,9,0
+27,10,1
+27,11,1
+27,12,0
+27,13,0
+27,14,0
+27,15,1
+27,16,0
+27,17,NA
+27,18,0
+27,19,0
+27,20,0
+27,21,1
+27,22,1
+27,23,1
+27,24,0
+27,25,0
+27,26,1
+27,27,NA
+28,1,1
+28,2,0
+28,3,0
+28,4,0
+28,5,0
+28,6,0
+28,7,0
+28,8,1
+28,9,0
+28,10,0
+28,11,1
+28,12,0
+28,13,0
+28,14,1
+28,15,0
+28,16,1
+28,17,0
+28,18,1
+28,19,0
+28,20,1
+28,21,NA
+28,22,0
+28,23,NA
+28,24,0
+28,25,1
+28,26,1
+28,27,0
+29,1,0
+29,2,0
+29,3,1
+29,4,1
+29,5,1
+29,6,0
+29,7,0
+29,8,0
+29,9,1
+29,10,1
+29,11,1
+29,12,0
+29,13,0
+29,14,1
+29,15,0
+29,16,0
+29,17,0
+29,18,1
+29,19,0
+29,20,1
+29,21,0
+29,22,1
+29,23,1
+29,24,0
+29,25,0
+29,26,0
+29,27,0
+30,1,0
+30,2,0
+30,3,0
+30,4,0
+30,5,1
+30,6,NA
+30,7,1
+30,8,1
+30,9,0
+30,10,1
+30,11,NA
+30,12,0
+30,13,0
+30,14,NA
+30,15,NA
+30,16,1
+30,17,1
+30,18,1
+30,19,0
+30,20,1
+30,21,1
+30,22,0
+30,23,0
+30,24,1
+30,25,0
+30,26,1
+30,27,1
+31,1,0
+31,2,0
+31,3,1
+31,4,1
+31,5,1
+31,6,1
+31,7,1
+31,8,NA
+31,9,0
+31,10,0
+31,11,0
+31,12,0
+31,13,1
+31,14,0
+31,15,0
+31,16,0
+31,17,NA
+31,18,1
+31,19,1
+31,20,1
+31,21,NA
+31,22,0
+31,23,NA
+31,24,1
+31,25,0
+31,26,1
+31,27,1
+32,1,1
+32,2,0
+32,3,0
+32,4,0
+32,5,0
+32,6,0
+32,7,0
+32,8,1
+32,9,0
+32,10,1
+32,11,NA
+32,12,1
+32,13,0
+32,14,1
+32,15,1
+32,16,1
+32,17,0
+32,18,0
+32,19,NA
+32,20,0
+32,21,1
+32,22,NA
+32,23,NA
+32,24,NA
+32,25,1
+32,26,0
+32,27,1
+33,1,0
+33,2,1
+33,3,1
+33,4,1
+33,5,1
+33,6,0
+33,7,1
+33,8,0
+33,9,0
+33,10,1
+33,11,1
+33,12,1
+33,13,0
+33,14,1
+33,15,1
+33,16,0
+33,17,1
+33,18,0
+33,19,0
+33,20,0
+33,21,0
+33,22,0
+33,23,1
+33,24,0
+33,25,0
+33,26,0
+33,27,1
+34,1,1
+34,2,0
+34,3,0
+34,4,1
+34,5,1
+34,6,0
+34,7,0
+34,8,0
+34,9,0
+34,10,0
+34,11,0
+34,12,0
+34,13,0
+34,14,1
+34,15,1
+34,16,1
+34,17,0
+34,18,0
+34,19,0
+34,20,0
+34,21,1
+34,22,0
+34,23,0
+34,24,0
+34,25,1
+34,26,1
+34,27,0
+35,1,0
+35,2,1
+35,3,1
+35,4,1
+35,5,0
+35,6,1
+35,7,0
+35,8,1
+35,9,1
+35,10,0
+35,11,1
+35,12,1
+35,13,0
+35,14,1
+35,15,1
+35,16,0
+35,17,0
+35,18,1
+35,19,0
+35,20,1
+35,21,0
+35,22,NA
+35,23,1
+35,24,0
+35,25,0
+35,26,1
+35,27,1
+36,1,1
+36,2,1
+36,3,0
+36,4,1
+36,5,1
+36,6,NA
+36,7,NA
+36,8,1
+36,9,1
+36,10,1
+36,11,0
+36,12,0
+36,13,0
+36,14,0
+36,15,0
+36,16,1
+36,17,1
+36,18,0
+36,19,1
+36,20,0
+36,21,0
+36,22,1
+36,23,1
+36,24,1
+36,25,0
+36,26,NA
+36,27,1
+37,1,1
+37,2,1
+37,3,0
+37,4,1
+37,5,0
+37,6,1
+37,7,NA
+37,8,0
+37,9,1
+37,10,0
+37,11,1
+37,12,1
+37,13,0
+37,14,0
+37,15,0
+37,16,1
+37,17,NA
+37,18,NA
+37,19,0
+37,20,0
+37,21,0
+37,22,1
+37,23,1
+37,24,1
+37,25,0
+37,26,0
+37,27,0
+38,1,NA
+38,2,1
+38,3,NA
+38,4,1
+38,5,0
+38,6,1
+38,7,1
+38,8,0
+38,9,NA
+38,10,NA
+38,11,1
+38,12,1
+38,13,1
+38,14,0
+38,15,0
+38,16,0
+38,17,NA
+38,18,1
+38,19,0
+38,20,1
+38,21,0
+38,22,0
+38,23,NA
+38,24,0
+38,25,1
+38,26,1
+38,27,1
+39,1,1
+39,2,0
+39,3,0
+39,4,0
+39,5,0
+39,6,1
+39,7,NA
+39,8,1
+39,9,NA
+39,10,0
+39,11,NA
+39,12,0
+39,13,0
+39,14,1
+39,15,0
+39,16,1
+39,17,0
+39,18,0
+39,19,1
+39,20,0
+39,21,0
+39,22,1
+39,23,0
+39,24,1
+39,25,NA
+39,26,1
+39,27,1
+40,1,1
+40,2,0
+40,3,0
+40,4,1
+40,5,0
+40,6,0
+40,7,1
+40,8,1
+40,9,0
+40,10,1
+40,11,0
+40,12,1
+40,13,1
+40,14,NA
+40,15,0
+40,16,0
+40,17,1
+40,18,1
+40,19,0
+40,20,0
+40,21,NA
+40,22,0
+40,23,1
+40,24,0
+40,25,1
+40,26,0
+40,27,0
+41,1,0
+41,2,1
+41,3,1
+41,4,1
+41,5,0
+41,6,0
+41,7,0
+41,8,0
+41,9,1
+41,10,1
+41,11,1
+41,12,0
+41,13,0
+41,14,1
+41,15,1
+41,16,0
+41,17,0
+41,18,0
+41,19,1
+41,20,0
+41,21,1
+41,22,NA
+41,23,0
+41,24,1
+41,25,0
+41,26,0
+41,27,0
+42,1,0
+42,2,0
+42,3,0
+42,4,1
+42,5,0
+42,6,NA
+42,7,0
+42,8,0
+42,9,1
+42,10,1
+42,11,NA
+42,12,0
+42,13,0
+42,14,1
+42,15,0
+42,16,0
+42,17,1
+42,18,0
+42,19,1
+42,20,0
+42,21,0
+42,22,1
+42,23,0
+42,24,1
+42,25,1
+42,26,0
+42,27,0
+43,1,1
+43,2,1
+43,3,1
+43,4,1
+43,5,1
+43,6,1
+43,7,1
+43,8,0
+43,9,NA
+43,10,0
+43,11,0
+43,12,0
+43,13,1
+43,14,1
+43,15,0
+43,16,1
+43,17,1
+43,18,0
+43,19,1
+43,20,NA
+43,21,0
+43,22,0
+43,23,1
+43,24,1
+43,25,1
+43,26,1
+43,27,1
+44,1,1
+44,2,0
+44,3,0
+44,4,NA
+44,5,0
+44,6,1
+44,7,0
+44,8,1
+44,9,0
+44,10,1
+44,11,1
+44,12,0
+44,13,1
+44,14,0
+44,15,1
+44,16,1
+44,17,1
+44,18,0
+44,19,1
+44,20,1
+44,21,0
+44,22,0
+44,23,0
+44,24,1
+44,25,0
+44,26,1
+44,27,1
+45,1,1
+45,2,1
+45,3,1
+45,4,0
+45,5,1
+45,6,0
+45,7,0
+45,8,1
+45,9,1
+45,10,1
+45,11,0
+45,12,0
+45,13,NA
+45,14,1
+45,15,1
+45,16,1
+45,17,0
+45,18,0
+45,19,1
+45,20,1
+45,21,1
+45,22,0
+45,23,0
+45,24,NA
+45,25,1
+45,26,1
+45,27,0
+46,1,1
+46,2,1
+46,3,0
+46,4,NA
+46,5,1
+46,6,1
+46,7,0
+46,8,0
+46,9,0
+46,10,1
+46,11,0
+46,12,1
+46,13,0
+46,14,0
+46,15,1
+46,16,0
+46,17,NA
+46,18,0
+46,19,1
+46,20,1
+46,21,0
+46,22,1
+46,23,1
+46,24,NA
+46,25,1
+46,26,0
+46,27,0
+47,1,0
+47,2,1
+47,3,1
+47,4,1
+47,5,1
+47,6,1
+47,7,1
+47,8,0
+47,9,1
+47,10,0
+47,11,1
+47,12,1
+47,13,0
+47,14,0
+47,15,0
+47,16,0
+47,17,0
+47,18,1
+47,19,NA
+47,20,1
+47,21,NA
+47,22,1
+47,23,0
+47,24,0
+47,25,1
+47,26,1
+47,27,0
+48,1,1
+48,2,1
+48,3,0
+48,4,1
+48,5,0
+48,6,1
+48,7,0
+48,8,0
+48,9,1
+48,10,1
+48,11,1
+48,12,0
+48,13,1
+48,14,1
+48,15,1
+48,16,1
+48,17,1
+48,18,1
+48,19,0
+48,20,0
+48,21,1
+48,22,1
+48,23,1
+48,24,1
+48,25,0
+48,26,0
+48,27,0
+49,1,1
+49,2,1
+49,3,1
+49,4,0
+49,5,0
+49,6,0
+49,7,NA
+49,8,NA
+49,9,1
+49,10,1
+49,11,1
+49,12,0
+49,13,0
+49,14,1
+49,15,1
+49,16,1
+49,17,1
+49,18,0
+49,19,1
+49,20,0
+49,21,1
+49,22,1
+49,23,0
+49,24,1
+49,25,0
+49,26,1
+49,27,NA
+50,1,0
+50,2,0
+50,3,1
+50,4,1
+50,5,0
+50,6,NA
+50,7,NA
+50,8,0
+50,9,1
+50,10,1
+50,11,1
+50,12,1
+50,13,1
+50,14,0
+50,15,1
+50,16,1
+50,17,0
+50,18,NA
+50,19,1
+50,20,1
+50,21,1
+50,22,NA
+50,23,0
+50,24,1
+50,25,0
+50,26,0
+50,27,1
+51,1,NA
+51,2,1
+51,3,1
+51,4,1
+51,5,0
+51,6,1
+51,7,1
+51,8,0
+51,9,0
+51,10,1
+51,11,0
+51,12,1
+51,13,0
+51,14,1
+51,15,1
+51,16,1
+51,17,1
+51,18,1
+51,19,1
+51,20,NA
+51,21,1
+51,22,0
+51,23,0
+51,24,0
+51,25,1
+51,26,0
+51,27,NA
+52,1,0
+52,2,1
+52,3,1
+52,4,1
+52,5,0
+52,6,0
+52,7,NA
+52,8,1
+52,9,0
+52,10,0
+52,11,NA
+52,12,1
+52,13,0
+52,14,1
+52,15,0
+52,16,1
+52,17,1
+52,18,1
+52,19,1
+52,20,1
+52,21,NA
+52,22,0
+52,23,NA
+52,24,1
+52,25,0
+52,26,0
+52,27,1
+53,1,1
+53,2,0
+53,3,NA
+53,4,0
+53,5,0
+53,6,0
+53,7,NA
+53,8,1
+53,9,0
+53,10,0
+53,11,0
+53,12,0
+53,13,1
+53,14,0
+53,15,NA
+53,16,0
+53,17,1
+53,18,1
+53,19,1
+53,20,0
+53,21,0
+53,22,0
+53,23,NA
+53,24,0
+53,25,1
+53,26,1
+53,27,1
+54,1,NA
+54,2,1
+54,3,1
+54,4,1
+54,5,1
+54,6,1
+54,7,NA
+54,8,0
+54,9,0
+54,10,1
+54,11,NA
+54,12,1
+54,13,NA
+54,14,0
+54,15,NA
+54,16,1
+54,17,0
+54,18,1
+54,19,1
+54,20,NA
+54,21,0
+54,22,NA
+54,23,0
+54,24,0
+54,25,1
+54,26,NA
+54,27,NA
+55,1,NA
+55,2,1
+55,3,0
+55,4,0
+55,5,0
+55,6,0
+55,7,NA
+55,8,NA
+55,9,NA
+55,10,1
+55,11,NA
+55,12,1
+55,13,1
+55,14,0
+55,15,1
+55,16,0
+55,17,1
+55,18,1
+55,19,NA
+55,20,1
+55,21,0
+55,22,1
+55,23,1
+55,24,0
+55,25,NA
+55,26,0
+55,27,NA
+56,1,0
+56,2,1
+56,3,0
+56,4,0
+56,5,1
+56,6,1
+56,7,0
+56,8,1
+56,9,NA
+56,10,0
+56,11,0
+56,12,1
+56,13,1
+56,14,1
+56,15,0
+56,16,0
+56,17,1
+56,18,0
+56,19,1
+56,20,0
+56,21,0
+56,22,1
+56,23,1
+56,24,0
+56,25,0
+56,26,1
+56,27,0
+57,1,NA
+57,2,1
+57,3,1
+57,4,0
+57,5,1
+57,6,1
+57,7,1
+57,8,NA
+57,9,1
+57,10,0
+57,11,1
+57,12,1
+57,13,1
+57,14,1
+57,15,0
+57,16,0
+57,17,1
+57,18,0
+57,19,1
+57,20,0
+57,21,0
+57,22,1
+57,23,1
+57,24,0
+57,25,1
+57,26,0
+57,27,1
+58,1,1
+58,2,0
+58,3,0
+58,4,1
+58,5,1
+58,6,0
+58,7,0
+58,8,1
+58,9,0
+58,10,0
+58,11,1
+58,12,0
+58,13,NA
+58,14,1
+58,15,NA
+58,16,1
+58,17,0
+58,18,0
+58,19,0
+58,20,0
+58,21,0
+58,22,0
+58,23,1
+58,24,0
+58,25,0
+58,26,0
+58,27,0
+59,1,1
+59,2,NA
+59,3,1
+59,4,1
+59,5,0
+59,6,0
+59,7,0
+59,8,0
+59,9,1
+59,10,NA
+59,11,1
+59,12,1
+59,13,1
+59,14,0
+59,15,1
+59,16,0
+59,17,0
+59,18,1
+59,19,0
+59,20,1
+59,21,0
+59,22,NA
+59,23,0
+59,24,1
+59,25,1
+59,26,0
+59,27,1
+60,1,1
+60,2,0
+60,3,1
+60,4,1
+60,5,0
+60,6,1
+60,7,1
+60,8,NA
+60,9,1
+60,10,0
+60,11,1
+60,12,NA
+60,13,0
+60,14,1
+60,15,NA
+60,16,0
+60,17,0
+60,18,1
+60,19,1
+60,20,1
+60,21,1
+60,22,0
+60,23,1
+60,24,NA
+60,25,1
+60,26,0
+60,27,0
+61,1,0
+61,2,0
+61,3,0
+61,4,0
+61,5,1
+61,6,0
+61,7,0
+61,8,0
+61,9,1
+61,10,1
+61,11,0
+61,12,1
+61,13,1
+61,14,1
+61,15,0
+61,16,1
+61,17,0
+61,18,0
+61,19,1
+61,20,0
+61,21,0
+61,22,1
+61,23,NA
+61,24,1
+61,25,0
+61,26,1
+61,27,1
+62,1,1
+62,2,1
+62,3,1
+62,4,1
+62,5,1
+62,6,NA
+62,7,0
+62,8,0
+62,9,1
+62,10,1
+62,11,1
+62,12,0
+62,13,0
+62,14,0
+62,15,0
+62,16,1
+62,17,0
+62,18,1
+62,19,1
+62,20,1
+62,21,NA
+62,22,1
+62,23,0
+62,24,0
+62,25,1
+62,26,0
+62,27,1
+63,1,0
+63,2,0
+63,3,1
+63,4,0
+63,5,0
+63,6,1
+63,7,0
+63,8,0
+63,9,1
+63,10,1
+63,11,1
+63,12,0
+63,13,NA
+63,14,0
+63,15,1
+63,16,0
+63,17,1
+63,18,0
+63,19,0
+63,20,1
+63,21,0
+63,22,0
+63,23,1
+63,24,NA
+63,25,0
+63,26,1
+63,27,NA
+64,1,1
+64,2,NA
+64,3,NA
+64,4,0
+64,5,0
+64,6,0
+64,7,1
+64,8,1
+64,9,0
+64,10,NA
+64,11,1
+64,12,NA
+64,13,0
+64,14,1
+64,15,1
+64,16,1
+64,17,1
+64,18,0
+64,19,0
+64,20,0
+64,21,0
+64,22,1
+64,23,0
+64,24,1
+64,25,0
+64,26,NA
+64,27,0
+65,1,1
+65,2,0
+65,3,1
+65,4,1
+65,5,0
+65,6,0
+65,7,0
+65,8,1
+65,9,1
+65,10,0
+65,11,0
+65,12,1
+65,13,0
+65,14,0
+65,15,0
+65,16,1
+65,17,NA
+65,18,0
+65,19,1
+65,20,1
+65,21,0
+65,22,0
+65,23,NA
+65,24,1
+65,25,0
+65,26,1
+65,27,1
+66,1,1
+66,2,NA
+66,3,0
+66,4,1
+66,5,0
+66,6,1
+66,7,1
+66,8,0
+66,9,1
+66,10,1
+66,11,1
+66,12,NA
+66,13,1
+66,14,NA
+66,15,0
+66,16,0
+66,17,NA
+66,18,1
+66,19,1
+66,20,1
+66,21,1
+66,22,1
+66,23,1
+66,24,0
+66,25,0
+66,26,0
+66,27,0
+67,1,0
+67,2,0
+67,3,1
+67,4,0
+67,5,0
+67,6,1
+67,7,0
+67,8,0
+67,9,1
+67,10,0
+67,11,NA
+67,12,1
+67,13,1
+67,14,0
+67,15,NA
+67,16,1
+67,17,1
+67,18,0
+67,19,0
+67,20,0
+67,21,1
+67,22,0
+67,23,NA
+67,24,0
+67,25,0
+67,26,1
+67,27,1
+68,1,0
+68,2,0
+68,3,1
+68,4,1
+68,5,1
+68,6,0
+68,7,1
+68,8,1
+68,9,0
+68,10,0
+68,11,0
+68,12,1
+68,13,1
+68,14,1
+68,15,NA
+68,16,0
+68,17,0
+68,18,0
+68,19,1
+68,20,NA
+68,21,0
+68,22,0
+68,23,0
+68,24,0
+68,25,NA
+68,26,0
+68,27,1
+69,1,0
+69,2,1
+69,3,1
+69,4,0
+69,5,1
+69,6,1
+69,7,0
+69,8,1
+69,9,NA
+69,10,1
+69,11,1
+69,12,0
+69,13,NA
+69,14,1
+69,15,0
+69,16,0
+69,17,1
+69,18,1
+69,19,1
+69,20,0
+69,21,1
+69,22,1
+69,23,1
+69,24,1
+69,25,0
+69,26,0
+69,27,1
+70,1,1
+70,2,1
+70,3,0
+70,4,NA
+70,5,1
+70,6,1
+70,7,NA
+70,8,1
+70,9,1
+70,10,1
+70,11,NA
+70,12,0
+70,13,1
+70,14,NA
+70,15,1
+70,16,1
+70,17,0
+70,18,0
+70,19,0
+70,20,1
+70,21,1
+70,22,NA
+70,23,1
+70,24,1
+70,25,NA
+70,26,1
+70,27,0
+71,1,0
+71,2,1
+71,3,1
+71,4,1
+71,5,NA
+71,6,1
+71,7,NA
+71,8,1
+71,9,0
+71,10,0
+71,11,1
+71,12,NA
+71,13,0
+71,14,1
+71,15,NA
+71,16,0
+71,17,0
+71,18,0
+71,19,0
+71,20,1
+71,21,0
+71,22,1
+71,23,0
+71,24,1
+71,25,1
+71,26,0
+71,27,0
+72,1,0
+72,2,0
+72,3,NA
+72,4,0
+72,5,0
+72,6,1
+72,7,1
+72,8,0
+72,9,0
+72,10,0
+72,11,1
+72,12,0
+72,13,1
+72,14,0
+72,15,0
+72,16,1
+72,17,1
+72,18,1
+72,19,0
+72,20,1
+72,21,0
+72,22,1
+72,23,0
+72,24,1
+72,25,0
+72,26,0
+72,27,0
+73,1,0
+73,2,1
+73,3,0
+73,4,1
+73,5,0
+73,6,1
+73,7,1
+73,8,0
+73,9,NA
+73,10,1
+73,11,0
+73,12,0
+73,13,1
+73,14,1
+73,15,0
+73,16,1
+73,17,NA
+73,18,0
+73,19,1
+73,20,1
+73,21,0
+73,22,1
+73,23,1
+73,24,1
+73,25,0
+73,26,1
+73,27,1
+74,1,0
+74,2,1
+74,3,1
+74,4,1
+74,5,1
+74,6,NA
+74,7,NA
+74,8,1
+74,9,1
+74,10,1
+74,11,1
+74,12,0
+74,13,1
+74,14,NA
+74,15,0
+74,16,0
+74,17,0
+74,18,NA
+74,19,0
+74,20,0
+74,21,1
+74,22,NA
+74,23,0
+74,24,NA
+74,25,NA
+74,26,0
+74,27,0
+75,1,0
+75,2,0
+75,3,1
+75,4,0
+75,5,0
+75,6,1
+75,7,1
+75,8,0
+75,9,0
+75,10,0
+75,11,1
+75,12,1
+75,13,0
+75,14,1
+75,15,0
+75,16,NA
+75,17,1
+75,18,0
+75,19,0
+75,20,0
+75,21,0
+75,22,0
+75,23,NA
+75,24,0
+75,25,0
+75,26,1
+75,27,0
+76,1,0
+76,2,1
+76,3,0
+76,4,1
+76,5,1
+76,6,0
+76,7,0
+76,8,1
+76,9,1
+76,10,0
+76,11,1
+76,12,0
+76,13,1
+76,14,1
+76,15,0
+76,16,1
+76,17,0
+76,18,0
+76,19,NA
+76,20,0
+76,21,0
+76,22,0
+76,23,1
+76,24,1
+76,25,1
+76,26,1
+76,27,1
+77,1,0
+77,2,NA
+77,3,1
+77,4,1
+77,5,0
+77,6,0
+77,7,0
+77,8,0
+77,9,0
+77,10,0
+77,11,NA
+77,12,1
+77,13,0
+77,14,0
+77,15,0
+77,16,1
+77,17,0
+77,18,1
+77,19,0
+77,20,1
+77,21,1
+77,22,0
+77,23,0
+77,24,0
+77,25,0
+77,26,NA
+77,27,0
+78,1,1
+78,2,1
+78,3,0
+78,4,0
+78,5,NA
+78,6,1
+78,7,0
+78,8,1
+78,9,1
+78,10,0
+78,11,0
+78,12,1
+78,13,0
+78,14,0
+78,15,1
+78,16,0
+78,17,0
+78,18,1
+78,19,1
+78,20,0
+78,21,1
+78,22,1
+78,23,1
+78,24,NA
+78,25,1
+78,26,1
+78,27,1
+79,1,1
+79,2,1
+79,3,1
+79,4,1
+79,5,0
+79,6,1
+79,7,0
+79,8,0
+79,9,0
+79,10,0
+79,11,0
+79,12,NA
+79,13,0
+79,14,0
+79,15,0
+79,16,NA
+79,17,0
+79,18,0
+79,19,NA
+79,20,1
+79,21,NA
+79,22,1
+79,23,1
+79,24,1
+79,25,NA
+79,26,1
+79,27,NA
+80,1,0
+80,2,1
+80,3,1
+80,4,1
+80,5,1
+80,6,0
+80,7,0
+80,8,1
+80,9,1
+80,10,0
+80,11,0
+80,12,1
+80,13,0
+80,14,1
+80,15,0
+80,16,1
+80,17,1
+80,18,0
+80,19,1
+80,20,1
+80,21,0
+80,22,1
+80,23,1
+80,24,0
+80,25,1
+80,26,0
+80,27,0
+81,1,0
+81,2,0
+81,3,0
+81,4,1
+81,5,1
+81,6,0
+81,7,0
+81,8,0
+81,9,1
+81,10,0
+81,11,1
+81,12,0
+81,13,1
+81,14,1
+81,15,1
+81,16,0
+81,17,1
+81,18,1
+81,19,1
+81,20,1
+81,21,0
+81,22,1
+81,23,1
+81,24,0
+81,25,0
+81,26,1
+81,27,0
+82,1,0
+82,2,1
+82,3,1
+82,4,0
+82,5,0
+82,6,0
+82,7,1
+82,8,0
+82,9,NA
+82,10,1
+82,11,0
+82,12,1
+82,13,0
+82,14,0
+82,15,0
+82,16,1
+82,17,1
+82,18,1
+82,19,0
+82,20,1
+82,21,0
+82,22,1
+82,23,1
+82,24,1
+82,25,1
+82,26,0
+82,27,0
+83,1,NA
+83,2,0
+83,3,1
+83,4,1
+83,5,0
+83,6,0
+83,7,1
+83,8,0
+83,9,1
+83,10,1
+83,11,1
+83,12,1
+83,13,1
+83,14,0
+83,15,1
+83,16,NA
+83,17,1
+83,18,NA
+83,19,0
+83,20,0
+83,21,1
+83,22,1
+83,23,1
+83,24,0
+83,25,1
+83,26,1
+83,27,0
+84,1,1
+84,2,1
+84,3,0
+84,4,0
+84,5,1
+84,6,1
+84,7,0
+84,8,1
+84,9,0
+84,10,0
+84,11,1
+84,12,1
+84,13,NA
+84,14,1
+84,15,0
+84,16,1
+84,17,1
+84,18,1
+84,19,0
+84,20,1
+84,21,0
+84,22,0
+84,23,1
+84,24,1
+84,25,0
+84,26,NA
+84,27,0
+85,1,0
+85,2,0
+85,3,1
+85,4,0
+85,5,0
+85,6,1
+85,7,1
+85,8,0
+85,9,0
+85,10,1
+85,11,0
+85,12,1
+85,13,1
+85,14,1
+85,15,1
+85,16,0
+85,17,0
+85,18,0
+85,19,NA
+85,20,0
+85,21,1
+85,22,0
+85,23,0
+85,24,0
+85,25,0
+85,26,0
+85,27,1
+86,1,1
+86,2,1
+86,3,0
+86,4,NA
+86,5,1
+86,6,1
+86,7,1
+86,8,0
+86,9,0
+86,10,1
+86,11,0
+86,12,0
+86,13,NA
+86,14,0
+86,15,0
+86,16,1
+86,17,1
+86,18,1
+86,19,0
+86,20,1
+86,21,0
+86,22,0
+86,23,0
+86,24,NA
+86,25,1
+86,26,0
+86,27,1
+87,1,1
+87,2,1
+87,3,0
+87,4,1
+87,5,0
+87,6,0
+87,7,1
+87,8,1
+87,9,1
+87,10,NA
+87,11,0
+87,12,1
+87,13,1
+87,14,1
+87,15,1
+87,16,1
+87,17,NA
+87,18,1
+87,19,1
+87,20,0
+87,21,1
+87,22,0
+87,23,0
+87,24,1
+87,25,0
+87,26,0
+87,27,1
+88,1,1
+88,2,1
+88,3,1
+88,4,0
+88,5,0
+88,6,0
+88,7,0
+88,8,1
+88,9,1
+88,10,1
+88,11,1
+88,12,1
+88,13,0
+88,14,0
+88,15,0
+88,16,0
+88,17,0
+88,18,0
+88,19,0
+88,20,0
+88,21,0
+88,22,0
+88,23,1
+88,24,1
+88,25,0
+88,26,1
+88,27,0
+89,1,1
+89,2,0
+89,3,1
+89,4,NA
+89,5,1
+89,6,1
+89,7,1
+89,8,1
+89,9,NA
+89,10,0
+89,11,NA
+89,12,0
+89,13,NA
+89,14,1
+89,15,0
+89,16,NA
+89,17,1
+89,18,0
+89,19,1
+89,20,1
+89,21,1
+89,22,1
+89,23,1
+89,24,0
+89,25,1
+89,26,0
+89,27,0
+90,1,NA
+90,2,1
+90,3,NA
+90,4,1
+90,5,1
+90,6,1
+90,7,0
+90,8,1
+90,9,0
+90,10,1
+90,11,1
+90,12,0
+90,13,0
+90,14,0
+90,15,0
+90,16,NA
+90,17,0
+90,18,0
+90,19,0
+90,20,1
+90,21,0
+90,22,1
+90,23,0
+90,24,NA
+90,25,NA
+90,26,0
+90,27,0
+91,1,1
+91,2,1
+91,3,1
+91,4,1
+91,5,1
+91,6,0
+91,7,1
+91,8,1
+91,9,1
+91,10,1
+91,11,0
+91,12,1
+91,13,0
+91,14,1
+91,15,1
+91,16,1
+91,17,0
+91,18,0
+91,19,0
+91,20,0
+91,21,1
+91,22,0
+91,23,1
+91,24,0
+91,25,1
+91,26,1
+91,27,1
+92,1,0
+92,2,1
+92,3,0
+92,4,0
+92,5,1
+92,6,0
+92,7,0
+92,8,1
+92,9,1
+92,10,1
+92,11,NA
+92,12,NA
+92,13,NA
+92,14,0
+92,15,NA
+92,16,NA
+92,17,0
+92,18,1
+92,19,0
+92,20,0
+92,21,1
+92,22,NA
+92,23,1
+92,24,1
+92,25,0
+92,26,0
+92,27,0
+93,1,1
+93,2,0
+93,3,0
+93,4,0
+93,5,1
+93,6,1
+93,7,1
+93,8,1
+93,9,1
+93,10,0
+93,11,1
+93,12,0
+93,13,0
+93,14,1
+93,15,1
+93,16,0
+93,17,1
+93,18,1
+93,19,0
+93,20,0
+93,21,NA
+93,22,0
+93,23,0
+93,24,0
+93,25,0
+93,26,1
+93,27,0
+94,1,1
+94,2,1
+94,3,1
+94,4,0
+94,5,1
+94,6,1
+94,7,1
+94,8,0
+94,9,0
+94,10,1
+94,11,NA
+94,12,0
+94,13,1
+94,14,0
+94,15,1
+94,16,1
+94,17,0
+94,18,0
+94,19,1
+94,20,0
+94,21,1
+94,22,1
+94,23,NA
+94,24,1
+94,25,1
+94,26,0
+94,27,0
+95,1,1
+95,2,NA
+95,3,1
+95,4,0
+95,5,0
+95,6,0
+95,7,0
+95,8,1
+95,9,1
+95,10,1
+95,11,0
+95,12,NA
+95,13,1
+95,14,0
+95,15,1
+95,16,1
+95,17,0
+95,18,1
+95,19,0
+95,20,1
+95,21,1
+95,22,0
+95,23,0
+95,24,0
+95,25,NA
+95,26,NA
+95,27,1
+96,1,0
+96,2,0
+96,3,1
+96,4,1
+96,5,0
+96,6,1
+96,7,0
+96,8,1
+96,9,1
+96,10,1
+96,11,0
+96,12,0
+96,13,0
+96,14,1
+96,15,1
+96,16,1
+96,17,0
+96,18,NA
+96,19,NA
+96,20,0
+96,21,1
+96,22,1
+96,23,0
+96,24,1
+96,25,1
+96,26,0
+96,27,0
+97,1,0
+97,2,0
+97,3,0
+97,4,0
+97,5,0
+97,6,0
+97,7,0
+97,8,1
+97,9,0
+97,10,1
+97,11,1
+97,12,0
+97,13,1
+97,14,0
+97,15,0
+97,16,1
+97,17,0
+97,18,1
+97,19,1
+97,20,1
+97,21,NA
+97,22,0
+97,23,1
+97,24,0
+97,25,1
+97,26,1
+97,27,NA
+98,1,0
+98,2,NA
+98,3,1
+98,4,0
+98,5,NA
+98,6,0
+98,7,1
+98,8,0
+98,9,0
+98,10,1
+98,11,1
+98,12,1
+98,13,1
+98,14,0
+98,15,NA
+98,16,0
+98,17,NA
+98,18,1
+98,19,0
+98,20,1
+98,21,1
+98,22,0
+98,23,0
+98,24,0
+98,25,1
+98,26,0
+98,27,1
+99,1,1
+99,2,1
+99,3,NA
+99,4,0
+99,5,0
+99,6,0
+99,7,1
+99,8,1
+99,9,0
+99,10,1
+99,11,1
+99,12,1
+99,13,0
+99,14,1
+99,15,0
+99,16,NA
+99,17,0
+99,18,0
+99,19,1
+99,20,0
+99,21,1
+99,22,1
+99,23,0
+99,24,1
+99,25,1
+99,26,1
+99,27,0
+100,1,0
+100,2,0
+100,3,1
+100,4,0
+100,5,1
+100,6,1
+100,7,1
+100,8,1
+100,9,1
+100,10,0
+100,11,1
+100,12,0
+100,13,0
+100,14,0
+100,15,NA
+100,16,0
+100,17,1
+100,18,0
+100,19,1
+100,20,1
+100,21,0
+100,22,0
+100,23,1
+100,24,NA
+100,25,1
+100,26,NA
+100,27,0
diff --git a/app/static/data/templates/template_demand_long.csv b/app/static/data/templates/template_demand_long.csv
new file mode 100644
index 0000000..ac71d75
--- /dev/null
+++ b/app/static/data/templates/template_demand_long.csv
@@ -0,0 +1,22 @@
+id,x,y
+1,$0,6
+1,$0.50,4
+1,$1,4
+1,$5,4
+1,$10,4
+1,$50,3
+1,$100,1
+2,$0,10
+2,$0.50,8
+2,$1,5
+2,$5,5
+2,$10,3
+2,$50,2
+2,$100,0
+3,$0,8
+3,$0.50,8
+3,$1,8
+3,$5,3
+3,$10,2
+3,$50,1
+3,$100,1
diff --git a/app/static/data/templates/template_demand_long_onegroup.csv b/app/static/data/templates/template_demand_long_onegroup.csv
new file mode 100644
index 0000000..2f13653
--- /dev/null
+++ b/app/static/data/templates/template_demand_long_onegroup.csv
@@ -0,0 +1,22 @@
+id,group,x,y
+1,a,$0 ,6
+1,a,$0.50 ,4
+1,a,$1 ,4
+1,a,$5 ,4
+1,a,$10 ,4
+1,a,$50 ,3
+1,a,$100 ,1
+2,a,$0 ,10
+2,a,$0.50 ,8
+2,a,$1 ,5
+2,a,$5 ,5
+2,a,$10 ,3
+2,a,$50 ,2
+2,a,$100 ,0
+3,b,$0 ,8
+3,b,$0.50 ,8
+3,b,$1 ,8
+3,b,$5 ,3
+3,b,$10 ,2
+3,b,$50 ,1
+3,b,$100 ,1
\ No newline at end of file
diff --git a/app/static/data/templates/template_demand_wide.csv b/app/static/data/templates/template_demand_wide.csv
new file mode 100644
index 0000000..e2f87ae
--- /dev/null
+++ b/app/static/data/templates/template_demand_wide.csv
@@ -0,0 +1,4 @@
+id,$0 ,$0.50 ,$1 ,$5 ,$10 ,$50 ,$100
+1,6,4,4,4,4,3,1
+2,10,8,5,5,3,2,0
+3,8,8,8,3,2,1,1
\ No newline at end of file
diff --git a/app/static/data/templates/template_demand_wide_onegroup.csv b/app/static/data/templates/template_demand_wide_onegroup.csv
new file mode 100644
index 0000000..c24bacf
--- /dev/null
+++ b/app/static/data/templates/template_demand_wide_onegroup.csv
@@ -0,0 +1,4 @@
+id,group,$0 ,$0.50 ,$1 ,$5 ,$10 ,$50 ,$100
+1,a,6,4,4,4,4,3,1
+2,a,10,8,5,5,3,2,0
+3,b,8,8,8,3,2,1,1
\ No newline at end of file
diff --git a/app/static/data/templates/template_mcq27_long.csv b/app/static/data/templates/template_mcq27_long.csv
new file mode 100644
index 0000000..6baa884
--- /dev/null
+++ b/app/static/data/templates/template_mcq27_long.csv
@@ -0,0 +1,55 @@
+subjectid,questionid,response
+1,1,0
+1,2,0
+1,3,0
+1,4,1
+1,5,1
+1,6,0
+1,7,1
+1,8,1
+1,9,0
+1,10,0
+1,11,1
+1,12,0
+1,13,0
+1,14,0
+1,15,0
+1,16,0
+1,17,0
+1,18,0
+1,19,1
+1,20,0
+1,21,0
+1,22,0
+1,23,0
+1,24,0
+1,25,0
+1,26,0
+1,27,1
+2,1,0
+2,2,1
+2,3,1
+2,4,1
+2,5,1
+2,6,0
+2,7,1
+2,8,1
+2,9,0
+2,10,1
+2,11,1
+2,12,1
+2,13,0
+2,14,1
+2,15,1
+2,16,1
+2,17,1
+2,18,1
+2,19,1
+2,20,0
+2,21,1
+2,22,1
+2,23,1
+2,24,0
+2,25,1
+2,26,1
+2,27,1
diff --git a/app/static/data/templates/template_mcq27_wide.csv b/app/static/data/templates/template_mcq27_wide.csv
new file mode 100644
index 0000000..1caa230
--- /dev/null
+++ b/app/static/data/templates/template_mcq27_wide.csv
@@ -0,0 +1,3 @@
+subjectid,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
+1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1
+2,0,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,1,1
diff --git a/app/static/favicon.ico b/app/static/favicon.ico
new file mode 100644
index 0000000..e41e5fc
Binary files /dev/null and b/app/static/favicon.ico differ
diff --git a/app/static/html/welcome_sidebar.html b/app/static/html/welcome_sidebar.html
new file mode 100644
index 0000000..1e2e02c
--- /dev/null
+++ b/app/static/html/welcome_sidebar.html
@@ -0,0 +1,90 @@
+
+
+
+ User Guide
+
+
+
+
+
+
+
+
+ Discounting
+
+
+
+
+
+
+
diff --git a/app/static/img/demand-template-long-example.png b/app/static/img/demand-template-long-example.png
new file mode 100644
index 0000000..ee37b19
Binary files /dev/null and b/app/static/img/demand-template-long-example.png differ
diff --git a/app/static/img/demand-template-long-onegroup-example.png b/app/static/img/demand-template-long-onegroup-example.png
new file mode 100644
index 0000000..7e8873c
Binary files /dev/null and b/app/static/img/demand-template-long-onegroup-example.png differ
diff --git a/app/static/img/demand-template-wide-example.png b/app/static/img/demand-template-wide-example.png
new file mode 100644
index 0000000..6b6d879
Binary files /dev/null and b/app/static/img/demand-template-wide-example.png differ
diff --git a/app/static/img/demand-template-wide-onegroup-example.png b/app/static/img/demand-template-wide-onegroup-example.png
new file mode 100644
index 0000000..f6d09a4
Binary files /dev/null and b/app/static/img/demand-template-wide-onegroup-example.png differ
diff --git a/app/static/img/hex-shinybeez.png b/app/static/img/hex-shinybeez.png
new file mode 100644
index 0000000..49736e7
Binary files /dev/null and b/app/static/img/hex-shinybeez.png differ
diff --git a/app/static/img/shinybeez-watermark-alpha.png b/app/static/img/shinybeez-watermark-alpha.png
new file mode 100644
index 0000000..fa97ec3
Binary files /dev/null and b/app/static/img/shinybeez-watermark-alpha.png differ
diff --git a/app/styles/main.scss b/app/styles/main.scss
new file mode 100644
index 0000000..c67305a
--- /dev/null
+++ b/app/styles/main.scss
@@ -0,0 +1,12266 @@
+@charset "UTF-8";
+/*!
+ * Bootswatch v5.3.2 (https://bootswatch.com)
+ * Theme: spacelab
+ * Copyright 2012-2023 Thomas Park
+ * Licensed under MIT
+ * Based on Bootstrap
+*/
+/*!
+ * Bootstrap v5.3.2 (https://getbootstrap.com/)
+ * Copyright 2011-2023 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+@import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap");
+:root,
+[data-bs-theme=light] {
+ --bs-blue: #446e9b;
+ --bs-indigo: #6610f2;
+ --bs-purple: #6f42c1;
+ --bs-pink: #e83e8c;
+ --bs-red: #cd0200;
+ --bs-orange: #fd7e14;
+ --bs-yellow: #d47500;
+ --bs-green: #3cb521;
+ --bs-teal: #20c997;
+ --bs-cyan: #3399f3;
+ --bs-black: #000;
+ --bs-white: #fff;
+ --bs-gray: #777;
+ --bs-gray-dark: #333;
+ --bs-gray-100: #f8f9fa;
+ --bs-gray-200: #eee;
+ --bs-gray-300: #dee2e6;
+ --bs-gray-400: #ced4da;
+ --bs-gray-500: #999;
+ --bs-gray-600: #777;
+ --bs-gray-700: #495057;
+ --bs-gray-800: #333;
+ --bs-gray-900: #2d2d2d;
+ --bs-primary: #446e9b;
+ --bs-secondary: #999;
+ --bs-success: #3cb521;
+ --bs-info: #3399f3;
+ --bs-warning: #d47500;
+ --bs-danger: #cd0200;
+ --bs-light: #eee;
+ --bs-dark: #333;
+ --bs-primary-rgb: 68, 110, 155;
+ --bs-secondary-rgb: 153, 153, 153;
+ --bs-success-rgb: 60, 181, 33;
+ --bs-info-rgb: 51, 153, 243;
+ --bs-warning-rgb: 212, 117, 0;
+ --bs-danger-rgb: 205, 2, 0;
+ --bs-light-rgb: 238, 238, 238;
+ --bs-dark-rgb: 51, 51, 51;
+ --bs-primary-text-emphasis: #1b2c3e;
+ --bs-secondary-text-emphasis: #3d3d3d;
+ --bs-success-text-emphasis: #18480d;
+ --bs-info-text-emphasis: #143d61;
+ --bs-warning-text-emphasis: #552f00;
+ --bs-danger-text-emphasis: #520100;
+ --bs-light-text-emphasis: #495057;
+ --bs-dark-text-emphasis: #495057;
+ --bs-primary-bg-subtle: #dae2eb;
+ --bs-secondary-bg-subtle: #ebebeb;
+ --bs-success-bg-subtle: #d8f0d3;
+ --bs-info-bg-subtle: #d6ebfd;
+ --bs-warning-bg-subtle: #f6e3cc;
+ --bs-danger-bg-subtle: #f5cccc;
+ --bs-light-bg-subtle: #fcfcfd;
+ --bs-dark-bg-subtle: #ced4da;
+ --bs-primary-border-subtle: #b4c5d7;
+ --bs-secondary-border-subtle: #d6d6d6;
+ --bs-success-border-subtle: #b1e1a6;
+ --bs-info-border-subtle: #add6fa;
+ --bs-warning-border-subtle: #eec899;
+ --bs-danger-border-subtle: #eb9a99;
+ --bs-light-border-subtle: #eee;
+ --bs-dark-border-subtle: #999;
+ --bs-white-rgb: 255, 255, 255;
+ --bs-black-rgb: 0, 0, 0;
+ --bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
+ --bs-body-font-family: var(--bs-font-sans-serif);
+ --bs-body-font-size: 1rem;
+ --bs-body-font-weight: 400;
+ --bs-body-line-height: 1.5;
+ --bs-body-color: #777;
+ --bs-body-color-rgb: 119, 119, 119;
+ --bs-body-bg: #fff;
+ --bs-body-bg-rgb: 255, 255, 255;
+ --bs-emphasis-color: #000;
+ --bs-emphasis-color-rgb: 0, 0, 0;
+ --bs-secondary-color: rgba(119, 119, 119, 0.75);
+ --bs-secondary-color-rgb: 119, 119, 119;
+ --bs-secondary-bg: #eee;
+ --bs-secondary-bg-rgb: 238, 238, 238;
+ --bs-tertiary-color: rgba(119, 119, 119, 0.5);
+ --bs-tertiary-color-rgb: 119, 119, 119;
+ --bs-tertiary-bg: #f8f9fa;
+ --bs-tertiary-bg-rgb: 248, 249, 250;
+ --bs-heading-color: #2d2d2d;
+ --bs-link-color: #3399f3;
+ --bs-link-color-rgb: 51, 153, 243;
+ --bs-link-decoration: underline;
+ --bs-link-hover-color: #297ac2;
+ --bs-link-hover-color-rgb: 41, 122, 194;
+ --bs-code-color: #e83e8c;
+ --bs-highlight-color: #777;
+ --bs-highlight-bg: #f6e3cc;
+ --bs-border-width: 1px;
+ --bs-border-style: solid;
+ --bs-border-color: #dee2e6;
+ --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
+ --bs-border-radius: 0.375rem;
+ --bs-border-radius-sm: 0.25rem;
+ --bs-border-radius-lg: 0.5rem;
+ --bs-border-radius-xl: 1rem;
+ --bs-border-radius-xxl: 2rem;
+ --bs-border-radius-2xl: var(--bs-border-radius-xxl);
+ --bs-border-radius-pill: 50rem;
+ --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+ --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+ --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
+ --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
+ --bs-focus-ring-width: 0.25rem;
+ --bs-focus-ring-opacity: 0.25;
+ --bs-focus-ring-color: rgba(68, 110, 155, 0.25);
+ --bs-form-valid-color: #3cb521;
+ --bs-form-valid-border-color: #3cb521;
+ --bs-form-invalid-color: #cd0200;
+ --bs-form-invalid-border-color: #cd0200;
+}
+
+[data-bs-theme=dark] {
+ color-scheme: dark;
+ --bs-body-color: #dee2e6;
+ --bs-body-color-rgb: 222, 226, 230;
+ --bs-body-bg: #2d2d2d;
+ --bs-body-bg-rgb: 45, 45, 45;
+ --bs-emphasis-color: #fff;
+ --bs-emphasis-color-rgb: 255, 255, 255;
+ --bs-secondary-color: rgba(222, 226, 230, 0.75);
+ --bs-secondary-color-rgb: 222, 226, 230;
+ --bs-secondary-bg: #333;
+ --bs-secondary-bg-rgb: 51, 51, 51;
+ --bs-tertiary-color: rgba(222, 226, 230, 0.5);
+ --bs-tertiary-color-rgb: 222, 226, 230;
+ --bs-tertiary-bg: #303030;
+ --bs-tertiary-bg-rgb: 48, 48, 48;
+ --bs-primary-text-emphasis: #8fa8c3;
+ --bs-secondary-text-emphasis: #c2c2c2;
+ --bs-success-text-emphasis: #8ad37a;
+ --bs-info-text-emphasis: #85c2f8;
+ --bs-warning-text-emphasis: #e5ac66;
+ --bs-danger-text-emphasis: #e16766;
+ --bs-light-text-emphasis: #f8f9fa;
+ --bs-dark-text-emphasis: #dee2e6;
+ --bs-primary-bg-subtle: #0e161f;
+ --bs-secondary-bg-subtle: #1f1f1f;
+ --bs-success-bg-subtle: #0c2407;
+ --bs-info-bg-subtle: #0a1f31;
+ --bs-warning-bg-subtle: #2a1700;
+ --bs-danger-bg-subtle: #290000;
+ --bs-light-bg-subtle: #333;
+ --bs-dark-bg-subtle: #1a1a1a;
+ --bs-primary-border-subtle: #29425d;
+ --bs-secondary-border-subtle: #5c5c5c;
+ --bs-success-border-subtle: #246d14;
+ --bs-info-border-subtle: #1f5c92;
+ --bs-warning-border-subtle: #7f4600;
+ --bs-danger-border-subtle: #7b0100;
+ --bs-light-border-subtle: #495057;
+ --bs-dark-border-subtle: #333;
+ --bs-heading-color: inherit;
+ --bs-link-color: #8fa8c3;
+ --bs-link-hover-color: #a5b9cf;
+ --bs-link-color-rgb: 143, 168, 195;
+ --bs-link-hover-color-rgb: 165, 185, 207;
+ --bs-code-color: #f18bba;
+ --bs-highlight-color: #dee2e6;
+ --bs-highlight-bg: #552f00;
+ --bs-border-color: #495057;
+ --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
+ --bs-form-valid-color: #8ad37a;
+ --bs-form-valid-border-color: #8ad37a;
+ --bs-form-invalid-color: #e16766;
+ --bs-form-invalid-border-color: #e16766;
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ :root {
+ scroll-behavior: smooth;
+ }
+}
+
+body {
+ margin: 0;
+ font-family: var(--bs-body-font-family);
+ font-size: var(--bs-body-font-size);
+ font-weight: var(--bs-body-font-weight);
+ line-height: var(--bs-body-line-height);
+ color: var(--bs-body-color);
+ text-align: var(--bs-body-text-align);
+ background-color: var(--bs-body-bg);
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+hr {
+ margin: 1rem 0;
+ color: inherit;
+ border: 0;
+ border-top: var(--bs-border-width) solid;
+ opacity: 0.25;
+}
+
+h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ font-weight: 500;
+ line-height: 1.2;
+ color: var(--bs-heading-color);
+}
+
+h1, .h1 {
+ font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+ h1, .h1 {
+ font-size: 2.5rem;
+ }
+}
+
+h2, .h2 {
+ font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+ h2, .h2 {
+ font-size: 2rem;
+ }
+}
+
+h3, .h3 {
+ font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+ h3, .h3 {
+ font-size: 1.75rem;
+ }
+}
+
+h4, .h4 {
+ font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+ h4, .h4 {
+ font-size: 1.5rem;
+ }
+}
+
+h5, .h5 {
+ font-size: 1.25rem;
+}
+
+h6, .h6 {
+ font-size: 1rem;
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+abbr[title] {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ cursor: help;
+ -webkit-text-decoration-skip-ink: none;
+ text-decoration-skip-ink: none;
+}
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+
+ol,
+ul {
+ padding-left: 2rem;
+}
+
+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, .small {
+ font-size: 0.875em;
+}
+
+mark, .mark {
+ padding: 0.1875em;
+ color: var(--bs-highlight-color);
+ background-color: var(--bs-highlight-bg);
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 0.75em;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+a {
+ color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
+ text-decoration: underline;
+}
+a:hover {
+ --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+ color: inherit;
+ text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+ font-family: var(--bs-font-monospace);
+ font-size: 1em;
+}
+
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ font-size: 0.875em;
+}
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal;
+}
+
+code {
+ font-size: 0.875em;
+ color: var(--bs-code-color);
+ word-wrap: break-word;
+}
+a > code {
+ color: inherit;
+}
+
+kbd {
+ padding: 0.1875rem 0.375rem;
+ font-size: 0.875em;
+ color: var(--bs-body-bg);
+ background-color: var(--bs-body-color);
+ border-radius: 0.25rem;
+}
+kbd kbd {
+ padding: 0;
+ font-size: 1em;
+}
+
+figure {
+ margin: 0 0 1rem;
+}
+
+img,
+svg {
+ vertical-align: middle;
+}
+
+table {
+ caption-side: bottom;
+ border-collapse: collapse;
+}
+
+caption {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ color: var(--bs-secondary-color);
+ text-align: left;
+}
+
+th {
+ text-align: inherit;
+ text-align: -webkit-match-parent;
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+}
+
+label {
+ display: inline-block;
+}
+
+button {
+ border-radius: 0;
+}
+
+button:focus:not(:focus-visible) {
+ outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+[role=button] {
+ cursor: pointer;
+}
+
+select {
+ word-wrap: normal;
+}
+select:disabled {
+ opacity: 1;
+}
+
+[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
+ display: none !important;
+}
+
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+ -webkit-appearance: button;
+}
+button:not(:disabled),
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled) {
+ cursor: pointer;
+}
+
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+
+textarea {
+ resize: vertical;
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ float: left;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 0.5rem;
+ font-size: 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] {
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+
+/* rtl:raw:
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+ direction: ltr;
+}
+*/
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+::-webkit-color-swatch-wrapper {
+ padding: 0;
+}
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+
+::file-selector-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+
+output {
+ display: inline-block;
+}
+
+iframe {
+ border: 0;
+}
+
+summary {
+ display: list-item;
+ cursor: pointer;
+}
+
+progress {
+ vertical-align: baseline;
+}
+
+[hidden] {
+ display: none !important;
+}
+
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300;
+}
+
+.display-1 {
+ font-size: calc(1.625rem + 4.5vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-1 {
+ font-size: 5rem;
+ }
+}
+
+.display-2 {
+ font-size: calc(1.575rem + 3.9vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-2 {
+ font-size: 4.5rem;
+ }
+}
+
+.display-3 {
+ font-size: calc(1.525rem + 3.3vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-3 {
+ font-size: 4rem;
+ }
+}
+
+.display-4 {
+ font-size: calc(1.475rem + 2.7vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-4 {
+ font-size: 3.5rem;
+ }
+}
+
+.display-5 {
+ font-size: calc(1.425rem + 2.1vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-5 {
+ font-size: 3rem;
+ }
+}
+
+.display-6 {
+ font-size: calc(1.375rem + 1.5vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-6 {
+ font-size: 2.5rem;
+ }
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline-item {
+ display: inline-block;
+}
+.list-inline-item:not(:last-child) {
+ margin-right: 0.5rem;
+}
+
+.initialism {
+ font-size: 0.875em;
+ text-transform: uppercase;
+}
+
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+}
+.blockquote > :last-child {
+ margin-bottom: 0;
+}
+
+.blockquote-footer {
+ margin-top: -1rem;
+ margin-bottom: 1rem;
+ font-size: 0.875em;
+ color: #777;
+}
+.blockquote-footer::before {
+ content: "— ";
+}
+
+.img-fluid {
+ max-width: 100%;
+ height: auto;
+}
+
+.img-thumbnail {
+ padding: 0.25rem;
+ background-color: var(--bs-body-bg);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ max-width: 100%;
+ height: auto;
+}
+
+.figure {
+ display: inline-block;
+}
+
+.figure-img {
+ margin-bottom: 0.5rem;
+ line-height: 1;
+}
+
+.figure-caption {
+ font-size: 0.875em;
+ color: var(--bs-secondary-color);
+}
+
+.container,
+.container-fluid,
+.container-xxl,
+.container-xl,
+.container-lg,
+.container-md,
+.container-sm {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-right: auto;
+ margin-left: auto;
+}
+
+@media (min-width: 576px) {
+ .container-sm, .container {
+ max-width: 540px;
+ }
+}
+@media (min-width: 768px) {
+ .container-md, .container-sm, .container {
+ max-width: 720px;
+ }
+}
+@media (min-width: 992px) {
+ .container-lg, .container-md, .container-sm, .container {
+ max-width: 960px;
+ }
+}
+@media (min-width: 1200px) {
+ .container-xl, .container-lg, .container-md, .container-sm, .container {
+ max-width: 1140px;
+ }
+}
+@media (min-width: 1400px) {
+ .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
+ max-width: 1320px;
+ }
+}
+:root {
+ --bs-breakpoint-xs: 0;
+ --bs-breakpoint-sm: 576px;
+ --bs-breakpoint-md: 768px;
+ --bs-breakpoint-lg: 992px;
+ --bs-breakpoint-xl: 1200px;
+ --bs-breakpoint-xxl: 1400px;
+}
+
+.row {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(-1 * var(--bs-gutter-y));
+ margin-right: calc(-0.5 * var(--bs-gutter-x));
+ margin-left: calc(-0.5 * var(--bs-gutter-x));
+}
+.row > * {
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-top: var(--bs-gutter-y);
+}
+
+.col {
+ flex: 1 0 0%;
+}
+
+.row-cols-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+}
+
+.row-cols-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+}
+
+.row-cols-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+}
+
+.row-cols-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+}
+
+.row-cols-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+}
+
+.row-cols-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+}
+
+.row-cols-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+}
+
+.col-auto {
+ flex: 0 0 auto;
+ width: auto;
+}
+
+.col-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+}
+
+.col-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+}
+
+.col-3 {
+ flex: 0 0 auto;
+ width: 25%;
+}
+
+.col-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+}
+
+.col-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+}
+
+.col-6 {
+ flex: 0 0 auto;
+ width: 50%;
+}
+
+.col-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+}
+
+.col-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+}
+
+.col-9 {
+ flex: 0 0 auto;
+ width: 75%;
+}
+
+.col-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+}
+
+.col-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+}
+
+.col-12 {
+ flex: 0 0 auto;
+ width: 100%;
+}
+
+.offset-1 {
+ margin-left: 8.33333333%;
+}
+
+.offset-2 {
+ margin-left: 16.66666667%;
+}
+
+.offset-3 {
+ margin-left: 25%;
+}
+
+.offset-4 {
+ margin-left: 33.33333333%;
+}
+
+.offset-5 {
+ margin-left: 41.66666667%;
+}
+
+.offset-6 {
+ margin-left: 50%;
+}
+
+.offset-7 {
+ margin-left: 58.33333333%;
+}
+
+.offset-8 {
+ margin-left: 66.66666667%;
+}
+
+.offset-9 {
+ margin-left: 75%;
+}
+
+.offset-10 {
+ margin-left: 83.33333333%;
+}
+
+.offset-11 {
+ margin-left: 91.66666667%;
+}
+
+.g-0,
+.gx-0 {
+ --bs-gutter-x: 0;
+}
+
+.g-0,
+.gy-0 {
+ --bs-gutter-y: 0;
+}
+
+.g-1,
+.gx-1 {
+ --bs-gutter-x: 0.25rem;
+}
+
+.g-1,
+.gy-1 {
+ --bs-gutter-y: 0.25rem;
+}
+
+.g-2,
+.gx-2 {
+ --bs-gutter-x: 0.5rem;
+}
+
+.g-2,
+.gy-2 {
+ --bs-gutter-y: 0.5rem;
+}
+
+.g-3,
+.gx-3 {
+ --bs-gutter-x: 1rem;
+}
+
+.g-3,
+.gy-3 {
+ --bs-gutter-y: 1rem;
+}
+
+.g-4,
+.gx-4 {
+ --bs-gutter-x: 1.5rem;
+}
+
+.g-4,
+.gy-4 {
+ --bs-gutter-y: 1.5rem;
+}
+
+.g-5,
+.gx-5 {
+ --bs-gutter-x: 3rem;
+}
+
+.g-5,
+.gy-5 {
+ --bs-gutter-y: 3rem;
+}
+
+@media (min-width: 576px) {
+ .col-sm {
+ flex: 1 0 0%;
+ }
+ .row-cols-sm-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-sm-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-sm-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-sm-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-sm-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-sm-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-sm-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-sm-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-sm-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-sm-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-sm-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-sm-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-sm-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-sm-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-sm-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-sm-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-sm-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-sm-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-sm-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-sm-0 {
+ margin-left: 0;
+ }
+ .offset-sm-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-sm-0,
+ .gx-sm-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-sm-0,
+ .gy-sm-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-sm-1,
+ .gx-sm-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-sm-1,
+ .gy-sm-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-sm-2,
+ .gx-sm-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-sm-2,
+ .gy-sm-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-sm-3,
+ .gx-sm-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-sm-3,
+ .gy-sm-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-sm-4,
+ .gx-sm-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-sm-4,
+ .gy-sm-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-sm-5,
+ .gx-sm-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-sm-5,
+ .gy-sm-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 768px) {
+ .col-md {
+ flex: 1 0 0%;
+ }
+ .row-cols-md-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-md-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-md-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-md-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-md-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-md-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-md-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-md-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-md-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-md-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-md-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-md-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-md-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-md-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-md-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-md-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-md-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-md-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-md-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-md-0 {
+ margin-left: 0;
+ }
+ .offset-md-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-md-0,
+ .gx-md-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-md-0,
+ .gy-md-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-md-1,
+ .gx-md-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-md-1,
+ .gy-md-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-md-2,
+ .gx-md-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-md-2,
+ .gy-md-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-md-3,
+ .gx-md-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-md-3,
+ .gy-md-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-md-4,
+ .gx-md-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-md-4,
+ .gy-md-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-md-5,
+ .gx-md-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-md-5,
+ .gy-md-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 992px) {
+ .col-lg {
+ flex: 1 0 0%;
+ }
+ .row-cols-lg-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-lg-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-lg-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-lg-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-lg-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-lg-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-lg-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-lg-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-lg-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-lg-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-lg-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-lg-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-lg-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-lg-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-lg-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-lg-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-lg-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-lg-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-lg-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-lg-0 {
+ margin-left: 0;
+ }
+ .offset-lg-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-lg-0,
+ .gx-lg-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-lg-0,
+ .gy-lg-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-lg-1,
+ .gx-lg-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-lg-1,
+ .gy-lg-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-lg-2,
+ .gx-lg-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-lg-2,
+ .gy-lg-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-lg-3,
+ .gx-lg-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-lg-3,
+ .gy-lg-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-lg-4,
+ .gx-lg-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-lg-4,
+ .gy-lg-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-lg-5,
+ .gx-lg-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-lg-5,
+ .gy-lg-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 1200px) {
+ .col-xl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xl-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-xl-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-xl-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-xl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-xl-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-xl-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-xl-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-xl-0 {
+ margin-left: 0;
+ }
+ .offset-xl-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-xl-0,
+ .gx-xl-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-xl-0,
+ .gy-xl-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-xl-1,
+ .gx-xl-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-xl-1,
+ .gy-xl-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-xl-2,
+ .gx-xl-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-xl-2,
+ .gy-xl-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-xl-3,
+ .gx-xl-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-xl-3,
+ .gy-xl-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-xl-4,
+ .gx-xl-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-xl-4,
+ .gy-xl-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-xl-5,
+ .gx-xl-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-xl-5,
+ .gy-xl-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 1400px) {
+ .col-xxl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xxl-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-xxl-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-xxl-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-xxl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-xxl-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-xxl-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-xxl-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xxl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xxl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xxl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xxl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xxl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xxl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xxl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xxl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xxl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xxl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xxl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xxl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-xxl-0 {
+ margin-left: 0;
+ }
+ .offset-xxl-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-xxl-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-xxl-3 {
+ margin-left: 25%;
+ }
+ .offset-xxl-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-xxl-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-xxl-6 {
+ margin-left: 50%;
+ }
+ .offset-xxl-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-xxl-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-xxl-9 {
+ margin-left: 75%;
+ }
+ .offset-xxl-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-xxl-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-xxl-0,
+ .gx-xxl-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-xxl-0,
+ .gy-xxl-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-xxl-1,
+ .gx-xxl-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-xxl-1,
+ .gy-xxl-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-xxl-2,
+ .gx-xxl-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-xxl-2,
+ .gy-xxl-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-xxl-3,
+ .gx-xxl-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-xxl-3,
+ .gy-xxl-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-xxl-4,
+ .gx-xxl-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-xxl-4,
+ .gy-xxl-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-xxl-5,
+ .gx-xxl-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-xxl-5,
+ .gy-xxl-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+.table {
+ --bs-table-color-type: initial;
+ --bs-table-bg-type: initial;
+ --bs-table-color-state: initial;
+ --bs-table-bg-state: initial;
+ --bs-table-color: var(--bs-emphasis-color);
+ --bs-table-bg: var(--bs-body-bg);
+ --bs-table-border-color: var(--bs-border-color);
+ --bs-table-accent-bg: transparent;
+ --bs-table-striped-color: var(--bs-emphasis-color);
+ --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);
+ --bs-table-active-color: var(--bs-emphasis-color);
+ --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);
+ --bs-table-hover-color: var(--bs-emphasis-color);
+ --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);
+ width: 100%;
+ margin-bottom: 1rem;
+ vertical-align: top;
+ border-color: var(--bs-table-border-color);
+}
+.table > :not(caption) > * > * {
+ padding: 0.5rem 0.5rem;
+ color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));
+ background-color: var(--bs-table-bg);
+ border-bottom-width: var(--bs-border-width);
+ box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
+}
+.table > tbody {
+ vertical-align: inherit;
+}
+.table > thead {
+ vertical-align: bottom;
+}
+
+.table-group-divider {
+ border-top: calc(var(--bs-border-width) * 2) solid currentcolor;
+}
+
+.caption-top {
+ caption-side: top;
+}
+
+.table-sm > :not(caption) > * > * {
+ padding: 0.25rem 0.25rem;
+}
+
+.table-bordered > :not(caption) > * {
+ border-width: var(--bs-border-width) 0;
+}
+.table-bordered > :not(caption) > * > * {
+ border-width: 0 var(--bs-border-width);
+}
+
+.table-borderless > :not(caption) > * > * {
+ border-bottom-width: 0;
+}
+.table-borderless > :not(:first-child) {
+ border-top-width: 0;
+}
+
+.table-striped > tbody > tr:nth-of-type(odd) > * {
+ --bs-table-color-type: var(--bs-table-striped-color);
+ --bs-table-bg-type: var(--bs-table-striped-bg);
+}
+
+.table-striped-columns > :not(caption) > tr > :nth-child(even) {
+ --bs-table-color-type: var(--bs-table-striped-color);
+ --bs-table-bg-type: var(--bs-table-striped-bg);
+}
+
+.table-active {
+ --bs-table-color-state: var(--bs-table-active-color);
+ --bs-table-bg-state: var(--bs-table-active-bg);
+}
+
+.table-hover > tbody > tr:hover > * {
+ --bs-table-color-state: var(--bs-table-hover-color);
+ --bs-table-bg-state: var(--bs-table-hover-bg);
+}
+
+.table-primary {
+ --bs-table-color: #000;
+ --bs-table-bg: #dae2eb;
+ --bs-table-border-color: #aeb5bc;
+ --bs-table-striped-bg: #cfd7df;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #c4cbd4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #cad1d9;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-secondary {
+ --bs-table-color: #000;
+ --bs-table-bg: #ebebeb;
+ --bs-table-border-color: #bcbcbc;
+ --bs-table-striped-bg: #dfdfdf;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #d4d4d4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #d9d9d9;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-success {
+ --bs-table-color: #000;
+ --bs-table-bg: #d8f0d3;
+ --bs-table-border-color: #adc0a9;
+ --bs-table-striped-bg: #cde4c8;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #c2d8be;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #c8dec3;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-info {
+ --bs-table-color: #000;
+ --bs-table-bg: #d6ebfd;
+ --bs-table-border-color: #abbcca;
+ --bs-table-striped-bg: #cbdff0;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #c1d4e4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #c6d9ea;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-warning {
+ --bs-table-color: #000;
+ --bs-table-bg: #f6e3cc;
+ --bs-table-border-color: #c5b6a3;
+ --bs-table-striped-bg: #ead8c2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #ddccb8;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e4d2bd;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-danger {
+ --bs-table-color: #000;
+ --bs-table-bg: #f5cccc;
+ --bs-table-border-color: #c4a3a3;
+ --bs-table-striped-bg: #e9c2c2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #ddb8b8;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e3bdbd;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-light {
+ --bs-table-color: #000;
+ --bs-table-bg: #eee;
+ --bs-table-border-color: #bebebe;
+ --bs-table-striped-bg: #e2e2e2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #d6d6d6;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: gainsboro;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-dark {
+ --bs-table-color: #fff;
+ --bs-table-bg: #333;
+ --bs-table-border-color: #5c5c5c;
+ --bs-table-striped-bg: #3d3d3d;
+ --bs-table-striped-color: #fff;
+ --bs-table-active-bg: #474747;
+ --bs-table-active-color: #fff;
+ --bs-table-hover-bg: #424242;
+ --bs-table-hover-color: #fff;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-responsive {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+@media (max-width: 575.98px) {
+ .table-responsive-sm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 767.98px) {
+ .table-responsive-md {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 991.98px) {
+ .table-responsive-lg {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 1399.98px) {
+ .table-responsive-xxl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+.form-label {
+ margin-bottom: 0.5rem;
+}
+
+.col-form-label {
+ padding-top: calc(0.375rem + var(--bs-border-width));
+ padding-bottom: calc(0.375rem + var(--bs-border-width));
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5;
+}
+
+.col-form-label-lg {
+ padding-top: calc(0.5rem + var(--bs-border-width));
+ padding-bottom: calc(0.5rem + var(--bs-border-width));
+ font-size: 1.25rem;
+}
+
+.col-form-label-sm {
+ padding-top: calc(0.25rem + var(--bs-border-width));
+ padding-bottom: calc(0.25rem + var(--bs-border-width));
+ font-size: 0.875rem;
+}
+
+.form-text {
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-secondary-color);
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-body-bg);
+ background-clip: padding-box;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control {
+ transition: none;
+ }
+}
+.form-control[type=file] {
+ overflow: hidden;
+}
+.form-control[type=file]:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control:focus {
+ color: var(--bs-body-color);
+ background-color: var(--bs-body-bg);
+ border-color: #a2b7cd;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+}
+.form-control::-webkit-date-and-time-value {
+ min-width: 85px;
+ height: 1.5em;
+ margin: 0;
+}
+.form-control::-webkit-datetime-edit {
+ display: block;
+ padding: 0;
+}
+.form-control::-moz-placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control::placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control:disabled {
+ background-color: var(--bs-secondary-bg);
+ opacity: 1;
+}
+.form-control::-webkit-file-upload-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+.form-control::file-selector-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control::-webkit-file-upload-button {
+ -webkit-transition: none;
+ transition: none;
+ }
+ .form-control::file-selector-button {
+ transition: none;
+ }
+}
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: var(--bs-secondary-bg);
+}
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: var(--bs-secondary-bg);
+}
+
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0;
+ margin-bottom: 0;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ background-color: transparent;
+ border: solid transparent;
+ border-width: var(--bs-border-width) 0;
+}
+.form-control-plaintext:focus {
+ outline: 0;
+}
+.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.form-control-sm {
+ min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+.form-control-sm::-webkit-file-upload-button {
+ padding: 0.25rem 0.5rem;
+ margin: -0.25rem -0.5rem;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+.form-control-sm::file-selector-button {
+ padding: 0.25rem 0.5rem;
+ margin: -0.25rem -0.5rem;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.form-control-lg {
+ min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+.form-control-lg::-webkit-file-upload-button {
+ padding: 0.5rem 1rem;
+ margin: -0.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem;
+}
+.form-control-lg::file-selector-button {
+ padding: 0.5rem 1rem;
+ margin: -0.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem;
+}
+
+textarea.form-control {
+ min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
+}
+textarea.form-control-sm {
+ min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+}
+textarea.form-control-lg {
+ min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+}
+
+.form-control-color {
+ width: 3rem;
+ height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
+ padding: 0.375rem;
+}
+.form-control-color:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control-color::-moz-color-swatch {
+ border: 0 !important;
+ border-radius: var(--bs-border-radius);
+}
+.form-control-color::-webkit-color-swatch {
+ border: 0 !important;
+ border-radius: var(--bs-border-radius);
+}
+.form-control-color.form-control-sm {
+ height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+}
+.form-control-color.form-control-lg {
+ height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+}
+
+.form-select {
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
+ display: block;
+ width: 100%;
+ padding: 0.375rem 2.25rem 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-body-bg);
+ background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
+ background-repeat: no-repeat;
+ background-position: right 0.75rem center;
+ background-size: 16px 12px;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-select {
+ transition: none;
+ }
+}
+.form-select:focus {
+ border-color: #a2b7cd;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+}
+.form-select[multiple], .form-select[size]:not([size="1"]) {
+ padding-right: 0.75rem;
+ background-image: none;
+}
+.form-select:disabled {
+ background-color: var(--bs-secondary-bg);
+}
+.form-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 var(--bs-body-color);
+}
+
+.form-select-sm {
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ padding-left: 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+
+.form-select-lg {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+
+[data-bs-theme=dark] .form-select {
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
+}
+
+.form-check {
+ display: block;
+ min-height: 1.5rem;
+ padding-left: 1.5em;
+ margin-bottom: 0.125rem;
+}
+.form-check .form-check-input {
+ float: left;
+ margin-left: -1.5em;
+}
+
+.form-check-reverse {
+ padding-right: 1.5em;
+ padding-left: 0;
+ text-align: right;
+}
+.form-check-reverse .form-check-input {
+ float: right;
+ margin-right: -1.5em;
+ margin-left: 0;
+}
+
+.form-check-input {
+ --bs-form-check-bg: var(--bs-body-bg);
+ flex-shrink: 0;
+ width: 1em;
+ height: 1em;
+ margin-top: 0.25em;
+ vertical-align: top;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-form-check-bg);
+ background-image: var(--bs-form-check-bg-image);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
+ print-color-adjust: exact;
+}
+.form-check-input[type=checkbox] {
+ border-radius: 0.25em;
+}
+.form-check-input[type=radio] {
+ border-radius: 50%;
+}
+.form-check-input:active {
+ filter: brightness(90%);
+}
+.form-check-input:focus {
+ border-color: #a2b7cd;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+}
+.form-check-input:checked {
+ background-color: #446e9b;
+ border-color: #446e9b;
+}
+.form-check-input:checked[type=checkbox] {
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
+}
+.form-check-input:checked[type=radio] {
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-check-input[type=checkbox]:indeterminate {
+ background-color: #446e9b;
+ border-color: #446e9b;
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
+}
+.form-check-input:disabled {
+ pointer-events: none;
+ filter: none;
+ opacity: 0.5;
+}
+.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
+ cursor: default;
+ opacity: 0.5;
+}
+
+.form-switch {
+ padding-left: 2.5em;
+}
+.form-switch .form-check-input {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
+ width: 2em;
+ margin-left: -2.5em;
+ background-image: var(--bs-form-switch-bg);
+ background-position: left center;
+ border-radius: 2em;
+ transition: background-position 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-switch .form-check-input {
+ transition: none;
+ }
+}
+.form-switch .form-check-input:focus {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a2b7cd'/%3e%3c/svg%3e");
+}
+.form-switch .form-check-input:checked {
+ background-position: right center;
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-switch.form-check-reverse {
+ padding-right: 2.5em;
+ padding-left: 0;
+}
+.form-switch.form-check-reverse .form-check-input {
+ margin-right: -2.5em;
+ margin-left: 0;
+}
+
+.form-check-inline {
+ display: inline-block;
+ margin-right: 1rem;
+}
+
+.btn-check {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.btn-check[disabled] + .btn, .btn-check:disabled + .btn {
+ pointer-events: none;
+ filter: none;
+ opacity: 0.65;
+}
+
+[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
+}
+
+.form-range {
+ width: 100%;
+ height: 1.5rem;
+ padding: 0;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: transparent;
+}
+.form-range:focus {
+ outline: 0;
+}
+.form-range:focus::-webkit-slider-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+}
+.form-range:focus::-moz-range-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+}
+.form-range::-moz-focus-outer {
+ border: 0;
+}
+.form-range::-webkit-slider-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: -0.25rem;
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: #446e9b;
+ border: 0;
+ border-radius: 1rem;
+ -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-webkit-slider-thumb {
+ -webkit-transition: none;
+ transition: none;
+ }
+}
+.form-range::-webkit-slider-thumb:active {
+ background-color: #c7d4e1;
+}
+.form-range::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: var(--bs-secondary-bg);
+ border-color: transparent;
+ border-radius: 1rem;
+}
+.form-range::-moz-range-thumb {
+ width: 1rem;
+ height: 1rem;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #446e9b;
+ border: 0;
+ border-radius: 1rem;
+ -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-moz-range-thumb {
+ -moz-transition: none;
+ transition: none;
+ }
+}
+.form-range::-moz-range-thumb:active {
+ background-color: #c7d4e1;
+}
+.form-range::-moz-range-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: var(--bs-secondary-bg);
+ border-color: transparent;
+ border-radius: 1rem;
+}
+.form-range:disabled {
+ pointer-events: none;
+}
+.form-range:disabled::-webkit-slider-thumb {
+ background-color: var(--bs-secondary-color);
+}
+.form-range:disabled::-moz-range-thumb {
+ background-color: var(--bs-secondary-color);
+}
+
+.form-floating {
+ position: relative;
+}
+.form-floating > .form-control,
+.form-floating > .form-control-plaintext,
+.form-floating > .form-select {
+ height: calc(3.5rem + calc(var(--bs-border-width) * 2));
+ min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));
+ line-height: 1.25;
+}
+.form-floating > label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 2;
+ height: 100%;
+ padding: 1rem 0.75rem;
+ overflow: hidden;
+ text-align: start;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ pointer-events: none;
+ border: var(--bs-border-width) solid transparent;
+ transform-origin: 0 0;
+ transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-floating > label {
+ transition: none;
+ }
+}
+.form-floating > .form-control,
+.form-floating > .form-control-plaintext {
+ padding: 1rem 0.75rem;
+}
+.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
+ color: transparent;
+}
+.form-floating > .form-control::placeholder,
+.form-floating > .form-control-plaintext::placeholder {
+ color: transparent;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
+.form-floating > .form-control-plaintext:focus,
+.form-floating > .form-control-plaintext:not(:placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:-webkit-autofill,
+.form-floating > .form-control-plaintext:-webkit-autofill {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-select {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:focus ~ label,
+.form-floating > .form-control:not(:placeholder-shown) ~ label,
+.form-floating > .form-control-plaintext ~ label,
+.form-floating > .form-select ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {
+ position: absolute;
+ inset: 1rem 0.375rem;
+ z-index: -1;
+ height: 1.5em;
+ content: "";
+ background-color: var(--bs-body-bg);
+ border-radius: var(--bs-border-radius);
+}
+.form-floating > .form-control:focus ~ label::after,
+.form-floating > .form-control:not(:placeholder-shown) ~ label::after,
+.form-floating > .form-control-plaintext ~ label::after,
+.form-floating > .form-select ~ label::after {
+ position: absolute;
+ inset: 1rem 0.375rem;
+ z-index: -1;
+ height: 1.5em;
+ content: "";
+ background-color: var(--bs-body-bg);
+ border-radius: var(--bs-border-radius);
+}
+.form-floating > .form-control:-webkit-autofill ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control-plaintext ~ label {
+ border-width: var(--bs-border-width) 0;
+}
+.form-floating > :disabled ~ label,
+.form-floating > .form-control:disabled ~ label {
+ color: #777;
+}
+.form-floating > :disabled ~ label::after,
+.form-floating > .form-control:disabled ~ label::after {
+ background-color: var(--bs-secondary-bg);
+}
+
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+ width: 100%;
+}
+.input-group > .form-control,
+.input-group > .form-select,
+.input-group > .form-floating {
+ position: relative;
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0;
+}
+.input-group > .form-control:focus,
+.input-group > .form-select:focus,
+.input-group > .form-floating:focus-within {
+ z-index: 5;
+}
+.input-group .btn {
+ position: relative;
+ z-index: 2;
+}
+.input-group .btn:focus {
+ z-index: 5;
+}
+
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--bs-tertiary-bg);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+ padding-right: 3rem;
+}
+
+.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),
+.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,
+.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),
+.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,
+.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
+ margin-left: calc(var(--bs-border-width) * -1);
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.input-group > .form-floating:not(:first-child) > .form-control,
+.input-group > .form-floating:not(:first-child) > .form-select {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.valid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-form-valid-color);
+}
+
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-success);
+ border-radius: var(--bs-border-radius);
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
+.was-validated .form-control:valid, .form-control.is-valid {
+ border-color: var(--bs-form-valid-border-color);
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
+ border-color: var(--bs-form-valid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+
+.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:valid, .form-select.is-valid {
+ border-color: var(--bs-form-valid-border-color);
+}
+.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ padding-right: 4.125rem;
+ background-position: right 0.75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:valid:focus, .form-select.is-valid:focus {
+ border-color: var(--bs-form-valid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+
+.was-validated .form-control-color:valid, .form-control-color.is-valid {
+ width: calc(3rem + calc(1.5em + 0.75rem));
+}
+
+.was-validated .form-check-input:valid, .form-check-input.is-valid {
+ border-color: var(--bs-form-valid-border-color);
+}
+.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
+ background-color: var(--bs-form-valid-color);
+}
+.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
+ color: var(--bs-form-valid-color);
+}
+
+.form-check-inline .form-check-input ~ .valid-feedback {
+ margin-left: 0.5em;
+}
+
+.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,
+.was-validated .input-group > .form-select:not(:focus):valid,
+.input-group > .form-select:not(:focus).is-valid,
+.was-validated .input-group > .form-floating:not(:focus-within):valid,
+.input-group > .form-floating:not(:focus-within).is-valid {
+ z-index: 3;
+}
+
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-form-invalid-color);
+}
+
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-danger);
+ border-radius: var(--bs-border-radius);
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
+.was-validated .form-control:invalid, .form-control.is-invalid {
+ border-color: var(--bs-form-invalid-border-color);
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
+ border-color: var(--bs-form-invalid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+
+.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:invalid, .form-select.is-invalid {
+ border-color: var(--bs-form-invalid-border-color);
+}
+.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");
+ padding-right: 4.125rem;
+ background-position: right 0.75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
+ border-color: var(--bs-form-invalid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+
+.was-validated .form-control-color:invalid, .form-control-color.is-invalid {
+ width: calc(3rem + calc(1.5em + 0.75rem));
+}
+
+.was-validated .form-check-input:invalid, .form-check-input.is-invalid {
+ border-color: var(--bs-form-invalid-border-color);
+}
+.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
+ background-color: var(--bs-form-invalid-color);
+}
+.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
+ color: var(--bs-form-invalid-color);
+}
+
+.form-check-inline .form-check-input ~ .invalid-feedback {
+ margin-left: 0.5em;
+}
+
+.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,
+.was-validated .input-group > .form-select:not(:focus):invalid,
+.input-group > .form-select:not(:focus).is-invalid,
+.was-validated .input-group > .form-floating:not(:focus-within):invalid,
+.input-group > .form-floating:not(:focus-within).is-invalid {
+ z-index: 4;
+}
+
+.btn {
+ --bs-btn-padding-x: 0.75rem;
+ --bs-btn-padding-y: 0.375rem;
+ --bs-btn-font-family: ;
+ --bs-btn-font-size: 1rem;
+ --bs-btn-font-weight: 400;
+ --bs-btn-line-height: 1.5;
+ --bs-btn-color: var(--bs-body-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-width: var(--bs-border-width);
+ --bs-btn-border-color: transparent;
+ --bs-btn-border-radius: var(--bs-border-radius);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
+ --bs-btn-disabled-opacity: 0.65;
+ --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);
+ display: inline-block;
+ padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
+ font-family: var(--bs-btn-font-family);
+ font-size: var(--bs-btn-font-size);
+ font-weight: var(--bs-btn-font-weight);
+ line-height: var(--bs-btn-line-height);
+ color: var(--bs-btn-color);
+ text-align: center;
+ text-decoration: none;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
+ border-radius: var(--bs-btn-border-radius);
+ background-color: var(--bs-btn-bg);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .btn {
+ transition: none;
+ }
+}
+.btn:hover {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+}
+.btn-check + .btn:hover {
+ color: var(--bs-btn-color);
+ background-color: var(--bs-btn-bg);
+ border-color: var(--bs-btn-border-color);
+}
+.btn:focus-visible {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:focus-visible + .btn {
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {
+ color: var(--bs-btn-active-color);
+ background-color: var(--bs-btn-active-bg);
+ border-color: var(--bs-btn-active-border-color);
+}
+.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn:disabled, .btn.disabled, fieldset:disabled .btn {
+ color: var(--bs-btn-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-btn-disabled-bg);
+ border-color: var(--bs-btn-disabled-border-color);
+ opacity: var(--bs-btn-disabled-opacity);
+}
+
+.btn-primary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #446e9b;
+ --bs-btn-border-color: #446e9b;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #3a5e84;
+ --bs-btn-hover-border-color: #36587c;
+ --bs-btn-focus-shadow-rgb: 96, 132, 170;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #36587c;
+ --bs-btn-active-border-color: #335374;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #446e9b;
+ --bs-btn-disabled-border-color: #446e9b;
+}
+
+.btn-secondary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #999;
+ --bs-btn-border-color: #999;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #828282;
+ --bs-btn-hover-border-color: #7a7a7a;
+ --bs-btn-focus-shadow-rgb: 168, 168, 168;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #7a7a7a;
+ --bs-btn-active-border-color: #737373;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #999;
+ --bs-btn-disabled-border-color: #999;
+}
+
+.btn-success {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #3cb521;
+ --bs-btn-border-color: #3cb521;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #339a1c;
+ --bs-btn-hover-border-color: #30911a;
+ --bs-btn-focus-shadow-rgb: 89, 192, 66;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #30911a;
+ --bs-btn-active-border-color: #2d8819;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #3cb521;
+ --bs-btn-disabled-border-color: #3cb521;
+}
+
+.btn-info {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #3399f3;
+ --bs-btn-border-color: #3399f3;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #2b82cf;
+ --bs-btn-hover-border-color: #297ac2;
+ --bs-btn-focus-shadow-rgb: 82, 168, 245;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #297ac2;
+ --bs-btn-active-border-color: #2673b6;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #3399f3;
+ --bs-btn-disabled-border-color: #3399f3;
+}
+
+.btn-warning {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #d47500;
+ --bs-btn-border-color: #d47500;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #b46300;
+ --bs-btn-hover-border-color: #aa5e00;
+ --bs-btn-focus-shadow-rgb: 218, 138, 38;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #aa5e00;
+ --bs-btn-active-border-color: #9f5800;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #d47500;
+ --bs-btn-disabled-border-color: #d47500;
+}
+
+.btn-danger {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #cd0200;
+ --bs-btn-border-color: #cd0200;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #ae0200;
+ --bs-btn-hover-border-color: #a40200;
+ --bs-btn-focus-shadow-rgb: 213, 40, 38;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #a40200;
+ --bs-btn-active-border-color: #9a0200;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #cd0200;
+ --bs-btn-disabled-border-color: #cd0200;
+}
+
+.btn-light {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #eee;
+ --bs-btn-border-color: #eee;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #cacaca;
+ --bs-btn-hover-border-color: #bebebe;
+ --bs-btn-focus-shadow-rgb: 202, 202, 202;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #bebebe;
+ --bs-btn-active-border-color: #b3b3b3;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #eee;
+ --bs-btn-disabled-border-color: #eee;
+}
+
+.btn-dark {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #333;
+ --bs-btn-border-color: #333;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #525252;
+ --bs-btn-hover-border-color: #474747;
+ --bs-btn-focus-shadow-rgb: 82, 82, 82;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #5c5c5c;
+ --bs-btn-active-border-color: #474747;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #333;
+ --bs-btn-disabled-border-color: #333;
+}
+
+.btn-outline-primary {
+ --bs-btn-color: #446e9b;
+ --bs-btn-border-color: #446e9b;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #446e9b;
+ --bs-btn-hover-border-color: #446e9b;
+ --bs-btn-focus-shadow-rgb: 68, 110, 155;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #446e9b;
+ --bs-btn-active-border-color: #446e9b;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #446e9b;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #446e9b;
+ --bs-gradient: none;
+}
+
+.btn-outline-secondary {
+ --bs-btn-color: #999;
+ --bs-btn-border-color: #999;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #999;
+ --bs-btn-hover-border-color: #999;
+ --bs-btn-focus-shadow-rgb: 153, 153, 153;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #999;
+ --bs-btn-active-border-color: #999;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #999;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #999;
+ --bs-gradient: none;
+}
+
+.btn-outline-success {
+ --bs-btn-color: #3cb521;
+ --bs-btn-border-color: #3cb521;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #3cb521;
+ --bs-btn-hover-border-color: #3cb521;
+ --bs-btn-focus-shadow-rgb: 60, 181, 33;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #3cb521;
+ --bs-btn-active-border-color: #3cb521;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #3cb521;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #3cb521;
+ --bs-gradient: none;
+}
+
+.btn-outline-info {
+ --bs-btn-color: #3399f3;
+ --bs-btn-border-color: #3399f3;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #3399f3;
+ --bs-btn-hover-border-color: #3399f3;
+ --bs-btn-focus-shadow-rgb: 51, 153, 243;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #3399f3;
+ --bs-btn-active-border-color: #3399f3;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #3399f3;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #3399f3;
+ --bs-gradient: none;
+}
+
+.btn-outline-warning {
+ --bs-btn-color: #d47500;
+ --bs-btn-border-color: #d47500;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #d47500;
+ --bs-btn-hover-border-color: #d47500;
+ --bs-btn-focus-shadow-rgb: 212, 117, 0;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #d47500;
+ --bs-btn-active-border-color: #d47500;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #d47500;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #d47500;
+ --bs-gradient: none;
+}
+
+.btn-outline-danger {
+ --bs-btn-color: #cd0200;
+ --bs-btn-border-color: #cd0200;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #cd0200;
+ --bs-btn-hover-border-color: #cd0200;
+ --bs-btn-focus-shadow-rgb: 205, 2, 0;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #cd0200;
+ --bs-btn-active-border-color: #cd0200;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #cd0200;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #cd0200;
+ --bs-gradient: none;
+}
+
+.btn-outline-light {
+ --bs-btn-color: #eee;
+ --bs-btn-border-color: #eee;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #eee;
+ --bs-btn-hover-border-color: #eee;
+ --bs-btn-focus-shadow-rgb: 238, 238, 238;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #eee;
+ --bs-btn-active-border-color: #eee;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #eee;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #eee;
+ --bs-gradient: none;
+}
+
+.btn-outline-dark {
+ --bs-btn-color: #333;
+ --bs-btn-border-color: #333;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #333;
+ --bs-btn-hover-border-color: #333;
+ --bs-btn-focus-shadow-rgb: 51, 51, 51;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #333;
+ --bs-btn-active-border-color: #333;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #333;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #333;
+ --bs-gradient: none;
+}
+
+.btn-link {
+ --bs-btn-font-weight: 400;
+ --bs-btn-color: var(--bs-link-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-color: transparent;
+ --bs-btn-hover-color: var(--bs-link-hover-color);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-active-color: var(--bs-link-hover-color);
+ --bs-btn-active-border-color: transparent;
+ --bs-btn-disabled-color: #777;
+ --bs-btn-disabled-border-color: transparent;
+ --bs-btn-box-shadow: 0 0 0 #000;
+ --bs-btn-focus-shadow-rgb: 82, 168, 245;
+ text-decoration: underline;
+}
+.btn-link:focus-visible {
+ color: var(--bs-btn-color);
+}
+.btn-link:hover {
+ color: var(--bs-btn-hover-color);
+}
+
+.btn-lg, .btn-group-lg > .btn {
+ --bs-btn-padding-y: 0.5rem;
+ --bs-btn-padding-x: 1rem;
+ --bs-btn-font-size: 1.25rem;
+ --bs-btn-border-radius: var(--bs-border-radius-lg);
+}
+
+.btn-sm, .btn-group-sm > .btn {
+ --bs-btn-padding-y: 0.25rem;
+ --bs-btn-padding-x: 0.5rem;
+ --bs-btn-font-size: 0.875rem;
+ --bs-btn-border-radius: var(--bs-border-radius-sm);
+}
+
+.fade {
+ transition: opacity 0.15s linear;
+}
+@media (prefers-reduced-motion: reduce) {
+ .fade {
+ transition: none;
+ }
+}
+.fade:not(.show) {
+ opacity: 0;
+}
+
+.collapse:not(.show) {
+ display: none;
+}
+
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ transition: height 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing {
+ transition: none;
+ }
+}
+.collapsing.collapse-horizontal {
+ width: 0;
+ height: auto;
+ transition: width 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing.collapse-horizontal {
+ transition: none;
+ }
+}
+
+.dropup,
+.dropend,
+.dropdown,
+.dropstart,
+.dropup-center,
+.dropdown-center {
+ position: relative;
+}
+
+.dropdown-toggle {
+ white-space: nowrap;
+}
+.dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0;
+ border-left: 0.3em solid transparent;
+}
+.dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropdown-menu {
+ --bs-dropdown-zindex: 1000;
+ --bs-dropdown-min-width: 10rem;
+ --bs-dropdown-padding-x: 0;
+ --bs-dropdown-padding-y: 0.5rem;
+ --bs-dropdown-spacer: 0.125rem;
+ --bs-dropdown-font-size: 1rem;
+ --bs-dropdown-color: var(--bs-body-color);
+ --bs-dropdown-bg: var(--bs-body-bg);
+ --bs-dropdown-border-color: var(--bs-border-color-translucent);
+ --bs-dropdown-border-radius: var(--bs-border-radius);
+ --bs-dropdown-border-width: var(--bs-border-width);
+ --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));
+ --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
+ --bs-dropdown-divider-margin-y: 0.5rem;
+ --bs-dropdown-box-shadow: var(--bs-box-shadow);
+ --bs-dropdown-link-color: var(--bs-body-color);
+ --bs-dropdown-link-hover-color: var(--bs-body-color);
+ --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);
+ --bs-dropdown-link-active-color: #fff;
+ --bs-dropdown-link-active-bg: #446e9b;
+ --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);
+ --bs-dropdown-item-padding-x: 1rem;
+ --bs-dropdown-item-padding-y: 0.25rem;
+ --bs-dropdown-header-color: #777;
+ --bs-dropdown-header-padding-x: 1rem;
+ --bs-dropdown-header-padding-y: 0.5rem;
+ position: absolute;
+ z-index: var(--bs-dropdown-zindex);
+ display: none;
+ min-width: var(--bs-dropdown-min-width);
+ padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);
+ margin: 0;
+ font-size: var(--bs-dropdown-font-size);
+ color: var(--bs-dropdown-color);
+ text-align: left;
+ list-style: none;
+ background-color: var(--bs-dropdown-bg);
+ background-clip: padding-box;
+ border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);
+ border-radius: var(--bs-dropdown-border-radius);
+}
+.dropdown-menu[data-bs-popper] {
+ top: 100%;
+ left: 0;
+ margin-top: var(--bs-dropdown-spacer);
+}
+
+.dropdown-menu-start {
+ --bs-position: start;
+}
+.dropdown-menu-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+}
+
+.dropdown-menu-end {
+ --bs-position: end;
+}
+.dropdown-menu-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+}
+
+@media (min-width: 576px) {
+ .dropdown-menu-sm-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-sm-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-sm-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-sm-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 768px) {
+ .dropdown-menu-md-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-md-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-md-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-md-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 992px) {
+ .dropdown-menu-lg-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-lg-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-lg-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-lg-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 1200px) {
+ .dropdown-menu-xl-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-xl-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-xl-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-xl-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 1400px) {
+ .dropdown-menu-xxl-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-xxl-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-xxl-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-xxl-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+.dropup .dropdown-menu[data-bs-popper] {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: var(--bs-dropdown-spacer);
+}
+.dropup .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0.3em solid;
+ border-left: 0.3em solid transparent;
+}
+.dropup .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropend .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: auto;
+ left: 100%;
+ margin-top: 0;
+ margin-left: var(--bs-dropdown-spacer);
+}
+.dropend .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0;
+ border-bottom: 0.3em solid transparent;
+ border-left: 0.3em solid;
+}
+.dropend .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+.dropend .dropdown-toggle::after {
+ vertical-align: 0;
+}
+
+.dropstart .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: 100%;
+ left: auto;
+ margin-top: 0;
+ margin-right: var(--bs-dropdown-spacer);
+}
+.dropstart .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+}
+.dropstart .dropdown-toggle::after {
+ display: none;
+}
+.dropstart .dropdown-toggle::before {
+ display: inline-block;
+ margin-right: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0.3em solid;
+ border-bottom: 0.3em solid transparent;
+}
+.dropstart .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+.dropstart .dropdown-toggle::before {
+ vertical-align: 0;
+}
+
+.dropdown-divider {
+ height: 0;
+ margin: var(--bs-dropdown-divider-margin-y) 0;
+ overflow: hidden;
+ border-top: 1px solid var(--bs-dropdown-divider-bg);
+ opacity: 1;
+}
+
+.dropdown-item {
+ display: block;
+ width: 100%;
+ padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
+ clear: both;
+ font-weight: 400;
+ color: var(--bs-dropdown-link-color);
+ text-align: inherit;
+ text-decoration: none;
+ white-space: nowrap;
+ background-color: transparent;
+ border: 0;
+ border-radius: var(--bs-dropdown-item-border-radius, 0);
+}
+.dropdown-item:hover, .dropdown-item:focus {
+ color: var(--bs-dropdown-link-hover-color);
+ background-color: var(--bs-dropdown-link-hover-bg);
+}
+.dropdown-item.active, .dropdown-item:active {
+ color: var(--bs-dropdown-link-active-color);
+ text-decoration: none;
+ background-color: var(--bs-dropdown-link-active-bg);
+}
+.dropdown-item.disabled, .dropdown-item:disabled {
+ color: var(--bs-dropdown-link-disabled-color);
+ pointer-events: none;
+ background-color: transparent;
+}
+
+.dropdown-menu.show {
+ display: block;
+}
+
+.dropdown-header {
+ display: block;
+ padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);
+ margin-bottom: 0;
+ font-size: 0.875rem;
+ color: var(--bs-dropdown-header-color);
+ white-space: nowrap;
+}
+
+.dropdown-item-text {
+ display: block;
+ padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
+ color: var(--bs-dropdown-link-color);
+}
+
+.dropdown-menu-dark {
+ --bs-dropdown-color: #dee2e6;
+ --bs-dropdown-bg: #333;
+ --bs-dropdown-border-color: var(--bs-border-color-translucent);
+ --bs-dropdown-box-shadow: ;
+ --bs-dropdown-link-color: #dee2e6;
+ --bs-dropdown-link-hover-color: #fff;
+ --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
+ --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);
+ --bs-dropdown-link-active-color: #fff;
+ --bs-dropdown-link-active-bg: #446e9b;
+ --bs-dropdown-link-disabled-color: #999;
+ --bs-dropdown-header-color: #999;
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ flex: 1 1 auto;
+}
+.btn-group > .btn-check:checked + .btn,
+.btn-group > .btn-check:focus + .btn,
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn-check:checked + .btn,
+.btn-group-vertical > .btn-check:focus + .btn,
+.btn-group-vertical > .btn:hover,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+ z-index: 1;
+}
+
+.btn-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+.btn-toolbar .input-group {
+ width: auto;
+}
+
+.btn-group {
+ border-radius: var(--bs-border-radius);
+}
+.btn-group > :not(.btn-check:first-child) + .btn,
+.btn-group > .btn-group:not(:first-child) {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn.dropdown-toggle-split:first-child,
+.btn-group > .btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn:nth-child(n+3),
+.btn-group > :not(.btn-check) + .btn,
+.btn-group > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.dropdown-toggle-split {
+ padding-right: 0.5625rem;
+ padding-left: 0.5625rem;
+}
+.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
+ margin-left: 0;
+}
+.dropstart .dropdown-toggle-split::before {
+ margin-right: 0;
+}
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+ padding-right: 0.375rem;
+ padding-left: 0.375rem;
+}
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+}
+
+.btn-group-vertical {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+ width: 100%;
+}
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) {
+ margin-top: calc(var(--bs-border-width) * -1);
+}
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group-vertical > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn ~ .btn,
+.btn-group-vertical > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.nav {
+ --bs-nav-link-padding-x: 1rem;
+ --bs-nav-link-padding-y: 0.5rem;
+ --bs-nav-link-font-weight: ;
+ --bs-nav-link-color: var(--bs-link-color);
+ --bs-nav-link-hover-color: var(--bs-link-hover-color);
+ --bs-nav-link-disabled-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav-link {
+ display: block;
+ padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
+ font-size: var(--bs-nav-link-font-size);
+ font-weight: var(--bs-nav-link-font-weight);
+ color: var(--bs-nav-link-color);
+ text-decoration: none;
+ background: none;
+ border: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .nav-link {
+ transition: none;
+ }
+}
+.nav-link:hover, .nav-link:focus {
+ color: var(--bs-nav-link-hover-color);
+}
+.nav-link:focus-visible {
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+}
+.nav-link.disabled, .nav-link:disabled {
+ color: var(--bs-nav-link-disabled-color);
+ pointer-events: none;
+ cursor: default;
+}
+
+.nav-tabs {
+ --bs-nav-tabs-border-width: var(--bs-border-width);
+ --bs-nav-tabs-border-color: var(--bs-border-color);
+ --bs-nav-tabs-border-radius: var(--bs-border-radius);
+ --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);
+ --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);
+ --bs-nav-tabs-link-active-bg: var(--bs-body-bg);
+ --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);
+ border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);
+}
+.nav-tabs .nav-link {
+ margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));
+ border: var(--bs-nav-tabs-border-width) solid transparent;
+ border-top-left-radius: var(--bs-nav-tabs-border-radius);
+ border-top-right-radius: var(--bs-nav-tabs-border-radius);
+}
+.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+ isolation: isolate;
+ border-color: var(--bs-nav-tabs-link-hover-border-color);
+}
+.nav-tabs .nav-link.active,
+.nav-tabs .nav-item.show .nav-link {
+ color: var(--bs-nav-tabs-link-active-color);
+ background-color: var(--bs-nav-tabs-link-active-bg);
+ border-color: var(--bs-nav-tabs-link-active-border-color);
+}
+.nav-tabs .dropdown-menu {
+ margin-top: calc(-1 * var(--bs-nav-tabs-border-width));
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.nav-pills {
+ --bs-nav-pills-border-radius: var(--bs-border-radius);
+ --bs-nav-pills-link-active-color: #fff;
+ --bs-nav-pills-link-active-bg: #446e9b;
+}
+.nav-pills .nav-link {
+ border-radius: var(--bs-nav-pills-border-radius);
+}
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+ color: var(--bs-nav-pills-link-active-color);
+ background-color: var(--bs-nav-pills-link-active-bg);
+}
+
+.nav-underline {
+ --bs-nav-underline-gap: 1rem;
+ --bs-nav-underline-border-width: 0.125rem;
+ --bs-nav-underline-link-active-color: var(--bs-emphasis-color);
+ gap: var(--bs-nav-underline-gap);
+}
+.nav-underline .nav-link {
+ padding-right: 0;
+ padding-left: 0;
+ border-bottom: var(--bs-nav-underline-border-width) solid transparent;
+}
+.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {
+ border-bottom-color: currentcolor;
+}
+.nav-underline .nav-link.active,
+.nav-underline .show > .nav-link {
+ font-weight: 700;
+ color: var(--bs-nav-underline-link-active-color);
+ border-bottom-color: currentcolor;
+}
+
+.nav-fill > .nav-link,
+.nav-fill .nav-item {
+ flex: 1 1 auto;
+ text-align: center;
+}
+
+.nav-justified > .nav-link,
+.nav-justified .nav-item {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center;
+}
+
+.nav-fill .nav-item .nav-link,
+.nav-justified .nav-item .nav-link {
+ width: 100%;
+}
+
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+
+.navbar {
+ --bs-navbar-padding-x: 0;
+ --bs-navbar-padding-y: 0.5rem;
+ --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);
+ --bs-navbar-hover-color: #3399f3;
+ --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);
+ --bs-navbar-active-color: #3399f3;
+ --bs-navbar-brand-padding-y: 0.3125rem;
+ --bs-navbar-brand-margin-end: 1rem;
+ --bs-navbar-brand-font-size: 1.25rem;
+ --bs-navbar-brand-color: #3399f3;
+ --bs-navbar-brand-hover-color: #3399f3;
+ --bs-navbar-nav-link-padding-x: 0.5rem;
+ --bs-navbar-toggler-padding-y: 0.25rem;
+ --bs-navbar-toggler-padding-x: 0.75rem;
+ --bs-navbar-toggler-font-size: 1.25rem;
+ --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28119, 119, 119, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+ --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);
+ --bs-navbar-toggler-border-radius: var(--bs-border-radius);
+ --bs-navbar-toggler-focus-width: 0.25rem;
+ --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);
+}
+.navbar > .container,
+.navbar > .container-fluid,
+.navbar > .container-sm,
+.navbar > .container-md,
+.navbar > .container-lg,
+.navbar > .container-xl,
+.navbar > .container-xxl {
+ display: flex;
+ flex-wrap: inherit;
+ align-items: center;
+ justify-content: space-between;
+}
+.navbar-brand {
+ padding-top: var(--bs-navbar-brand-padding-y);
+ padding-bottom: var(--bs-navbar-brand-padding-y);
+ margin-right: var(--bs-navbar-brand-margin-end);
+ font-size: var(--bs-navbar-brand-font-size);
+ color: var(--bs-navbar-brand-color);
+ text-decoration: none;
+ white-space: nowrap;
+}
+.navbar-brand:hover, .navbar-brand:focus {
+ color: var(--bs-navbar-brand-hover-color);
+}
+
+.navbar-nav {
+ --bs-nav-link-padding-x: 0;
+ --bs-nav-link-padding-y: 0.5rem;
+ --bs-nav-link-font-weight: ;
+ --bs-nav-link-color: var(--bs-navbar-color);
+ --bs-nav-link-hover-color: var(--bs-navbar-hover-color);
+ --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {
+ color: var(--bs-navbar-active-color);
+}
+.navbar-nav .dropdown-menu {
+ position: static;
+}
+
+.navbar-text {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ color: var(--bs-navbar-color);
+}
+.navbar-text a,
+.navbar-text a:hover,
+.navbar-text a:focus {
+ color: var(--bs-navbar-active-color);
+}
+
+.navbar-collapse {
+ flex-basis: 100%;
+ flex-grow: 1;
+ align-items: center;
+}
+
+.navbar-toggler {
+ padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);
+ font-size: var(--bs-navbar-toggler-font-size);
+ line-height: 1;
+ color: var(--bs-navbar-color);
+ background-color: transparent;
+ border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);
+ border-radius: var(--bs-navbar-toggler-border-radius);
+ transition: var(--bs-navbar-toggler-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .navbar-toggler {
+ transition: none;
+ }
+}
+.navbar-toggler:hover {
+ text-decoration: none;
+}
+.navbar-toggler:focus {
+ text-decoration: none;
+ outline: 0;
+ box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);
+}
+
+.navbar-toggler-icon {
+ display: inline-block;
+ width: 1.5em;
+ height: 1.5em;
+ vertical-align: middle;
+ background-image: var(--bs-navbar-toggler-icon-bg);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 100%;
+}
+
+.navbar-nav-scroll {
+ max-height: var(--bs-scroll-height, 75vh);
+ overflow-y: auto;
+}
+
+@media (min-width: 576px) {
+ .navbar-expand-sm {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-sm .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-sm .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-sm .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-sm .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-sm .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-sm .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-sm .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-sm .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-sm .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-expand-md {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-md .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-md .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-md .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-md .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-md .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-md .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-md .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-md .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-md .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 992px) {
+ .navbar-expand-lg {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-lg .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-lg .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-lg .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-lg .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-lg .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-lg .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-lg .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-lg .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-lg .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 1200px) {
+ .navbar-expand-xl {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-xl .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-xl .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-xl .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-xl .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-xl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-xl .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-xl .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-xl .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-xl .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 1400px) {
+ .navbar-expand-xxl {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-xxl .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-xxl .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-xxl .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-xxl .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-xxl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-xxl .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-xxl .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-xxl .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-xxl .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+.navbar-expand {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+}
+.navbar-expand .navbar-nav {
+ flex-direction: row;
+}
+.navbar-expand .navbar-nav .dropdown-menu {
+ position: absolute;
+}
+.navbar-expand .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+}
+.navbar-expand .navbar-nav-scroll {
+ overflow: visible;
+}
+.navbar-expand .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+}
+.navbar-expand .navbar-toggler {
+ display: none;
+}
+.navbar-expand .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+}
+.navbar-expand .offcanvas .offcanvas-header {
+ display: none;
+}
+.navbar-expand .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+}
+
+.navbar-dark,
+.navbar[data-bs-theme=dark] {
+ --bs-navbar-color: rgba(255, 255, 255, 0.55);
+ --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);
+ --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
+ --bs-navbar-active-color: #fff;
+ --bs-navbar-brand-color: #fff;
+ --bs-navbar-brand-hover-color: #fff;
+ --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
+ --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+[data-bs-theme=dark] .navbar-toggler-icon {
+ --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+.card {
+ --bs-card-spacer-y: 1rem;
+ --bs-card-spacer-x: 1rem;
+ --bs-card-title-spacer-y: 0.5rem;
+ --bs-card-title-color: ;
+ --bs-card-subtitle-color: ;
+ --bs-card-border-width: var(--bs-border-width);
+ --bs-card-border-color: var(--bs-border-color-translucent);
+ --bs-card-border-radius: var(--bs-border-radius);
+ --bs-card-box-shadow: ;
+ --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));
+ --bs-card-cap-padding-y: 0.5rem;
+ --bs-card-cap-padding-x: 1rem;
+ --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);
+ --bs-card-cap-color: ;
+ --bs-card-height: ;
+ --bs-card-color: ;
+ --bs-card-bg: var(--bs-body-bg);
+ --bs-card-img-overlay-padding: 1rem;
+ --bs-card-group-margin: 0.75rem;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ height: var(--bs-card-height);
+ color: var(--bs-body-color);
+ word-wrap: break-word;
+ background-color: var(--bs-card-bg);
+ background-clip: border-box;
+ border: var(--bs-card-border-width) solid var(--bs-card-border-color);
+ border-radius: var(--bs-card-border-radius);
+}
+.card > hr {
+ margin-right: 0;
+ margin-left: 0;
+}
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+}
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+ border-top: 0;
+}
+
+.card-body {
+ flex: 1 1 auto;
+ padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
+ color: var(--bs-card-color);
+}
+
+.card-title {
+ margin-bottom: var(--bs-card-title-spacer-y);
+ color: var(--bs-card-title-color);
+}
+
+.card-subtitle {
+ margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));
+ margin-bottom: 0;
+ color: var(--bs-card-subtitle-color);
+}
+
+.card-text:last-child {
+ margin-bottom: 0;
+}
+
+.card-link + .card-link {
+ margin-left: var(--bs-card-spacer-x);
+}
+
+.card-header {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ margin-bottom: 0;
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-header:first-child {
+ border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;
+}
+
+.card-footer {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-footer:last-child {
+ border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);
+}
+
+.card-header-tabs {
+ margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
+ margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));
+ margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
+ border-bottom: 0;
+}
+.card-header-tabs .nav-link.active {
+ background-color: var(--bs-card-bg);
+ border-bottom-color: var(--bs-card-bg);
+}
+
+.card-header-pills {
+ margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
+ margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
+}
+
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: var(--bs-card-img-overlay-padding);
+ border-radius: var(--bs-card-inner-border-radius);
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ width: 100%;
+}
+
+.card-img,
+.card-img-top {
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+
+.card-img,
+.card-img-bottom {
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+
+.card-group > .card {
+ margin-bottom: var(--bs-card-group-margin);
+}
+@media (min-width: 576px) {
+ .card-group {
+ display: flex;
+ flex-flow: row wrap;
+ }
+ .card-group > .card {
+ flex: 1 0 0%;
+ margin-bottom: 0;
+ }
+ .card-group > .card + .card {
+ margin-left: 0;
+ border-left: 0;
+ }
+ .card-group > .card:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-img-top,
+ .card-group > .card:not(:last-child) .card-header {
+ border-top-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-img-bottom,
+ .card-group > .card:not(:last-child) .card-footer {
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-img-top,
+ .card-group > .card:not(:first-child) .card-header {
+ border-top-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-img-bottom,
+ .card-group > .card:not(:first-child) .card-footer {
+ border-bottom-left-radius: 0;
+ }
+}
+
+.accordion {
+ --bs-accordion-color: var(--bs-body-color);
+ --bs-accordion-bg: var(--bs-body-bg);
+ --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
+ --bs-accordion-border-color: var(--bs-border-color);
+ --bs-accordion-border-width: var(--bs-border-width);
+ --bs-accordion-border-radius: var(--bs-border-radius);
+ --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));
+ --bs-accordion-btn-padding-x: 1.25rem;
+ --bs-accordion-btn-padding-y: 1rem;
+ --bs-accordion-btn-color: var(--bs-body-color);
+ --bs-accordion-btn-bg: var(--bs-accordion-bg);
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23777'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-icon-width: 1.25rem;
+ --bs-accordion-btn-icon-transform: rotate(-180deg);
+ --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231b2c3e'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-focus-border-color: #a2b7cd;
+ --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+ --bs-accordion-body-padding-x: 1.25rem;
+ --bs-accordion-body-padding-y: 1rem;
+ --bs-accordion-active-color: var(--bs-primary-text-emphasis);
+ --bs-accordion-active-bg: var(--bs-primary-bg-subtle);
+}
+
+.accordion-button {
+ position: relative;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);
+ font-size: 1rem;
+ color: var(--bs-accordion-btn-color);
+ text-align: left;
+ background-color: var(--bs-accordion-btn-bg);
+ border: 0;
+ border-radius: 0;
+ overflow-anchor: none;
+ transition: var(--bs-accordion-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .accordion-button {
+ transition: none;
+ }
+}
+.accordion-button:not(.collapsed) {
+ color: var(--bs-accordion-active-color);
+ background-color: var(--bs-accordion-active-bg);
+ box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);
+}
+.accordion-button:not(.collapsed)::after {
+ background-image: var(--bs-accordion-btn-active-icon);
+ transform: var(--bs-accordion-btn-icon-transform);
+}
+.accordion-button::after {
+ flex-shrink: 0;
+ width: var(--bs-accordion-btn-icon-width);
+ height: var(--bs-accordion-btn-icon-width);
+ margin-left: auto;
+ content: "";
+ background-image: var(--bs-accordion-btn-icon);
+ background-repeat: no-repeat;
+ background-size: var(--bs-accordion-btn-icon-width);
+ transition: var(--bs-accordion-btn-icon-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .accordion-button::after {
+ transition: none;
+ }
+}
+.accordion-button:hover {
+ z-index: 2;
+}
+.accordion-button:focus {
+ z-index: 3;
+ border-color: var(--bs-accordion-btn-focus-border-color);
+ outline: 0;
+ box-shadow: var(--bs-accordion-btn-focus-box-shadow);
+}
+
+.accordion-header {
+ margin-bottom: 0;
+}
+
+.accordion-item {
+ color: var(--bs-accordion-color);
+ background-color: var(--bs-accordion-bg);
+ border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);
+}
+.accordion-item:first-of-type {
+ border-top-left-radius: var(--bs-accordion-border-radius);
+ border-top-right-radius: var(--bs-accordion-border-radius);
+}
+.accordion-item:first-of-type .accordion-button {
+ border-top-left-radius: var(--bs-accordion-inner-border-radius);
+ border-top-right-radius: var(--bs-accordion-inner-border-radius);
+}
+.accordion-item:not(:first-of-type) {
+ border-top: 0;
+}
+.accordion-item:last-of-type {
+ border-bottom-right-radius: var(--bs-accordion-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-border-radius);
+}
+.accordion-item:last-of-type .accordion-button.collapsed {
+ border-bottom-right-radius: var(--bs-accordion-inner-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-inner-border-radius);
+}
+.accordion-item:last-of-type .accordion-collapse {
+ border-bottom-right-radius: var(--bs-accordion-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-border-radius);
+}
+
+.accordion-body {
+ padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);
+}
+
+.accordion-flush .accordion-collapse {
+ border-width: 0;
+}
+.accordion-flush .accordion-item {
+ border-right: 0;
+ border-left: 0;
+ border-radius: 0;
+}
+.accordion-flush .accordion-item:first-child {
+ border-top: 0;
+}
+.accordion-flush .accordion-item:last-child {
+ border-bottom: 0;
+}
+.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {
+ border-radius: 0;
+}
+
+[data-bs-theme=dark] .accordion-button::after {
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238fa8c3'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238fa8c3'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.breadcrumb {
+ --bs-breadcrumb-padding-x: 0;
+ --bs-breadcrumb-padding-y: 0;
+ --bs-breadcrumb-margin-bottom: 1rem;
+ --bs-breadcrumb-bg: ;
+ --bs-breadcrumb-border-radius: ;
+ --bs-breadcrumb-divider-color: var(--bs-secondary-color);
+ --bs-breadcrumb-item-padding-x: 0.5rem;
+ --bs-breadcrumb-item-active-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
+ margin-bottom: var(--bs-breadcrumb-margin-bottom);
+ font-size: var(--bs-breadcrumb-font-size);
+ list-style: none;
+ background-color: var(--bs-breadcrumb-bg);
+ border-radius: var(--bs-breadcrumb-border-radius);
+}
+
+.breadcrumb-item + .breadcrumb-item {
+ padding-left: var(--bs-breadcrumb-item-padding-x);
+}
+.breadcrumb-item + .breadcrumb-item::before {
+ float: left;
+ padding-right: var(--bs-breadcrumb-item-padding-x);
+ color: var(--bs-breadcrumb-divider-color);
+ content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */;
+}
+.breadcrumb-item.active {
+ color: var(--bs-breadcrumb-item-active-color);
+}
+
+.pagination {
+ --bs-pagination-padding-x: 0.75rem;
+ --bs-pagination-padding-y: 0.375rem;
+ --bs-pagination-font-size: 1rem;
+ --bs-pagination-color: var(--bs-link-color);
+ --bs-pagination-bg: var(--bs-body-bg);
+ --bs-pagination-border-width: var(--bs-border-width);
+ --bs-pagination-border-color: var(--bs-border-color);
+ --bs-pagination-border-radius: var(--bs-border-radius);
+ --bs-pagination-hover-color: var(--bs-link-hover-color);
+ --bs-pagination-hover-bg: var(--bs-tertiary-bg);
+ --bs-pagination-hover-border-color: var(--bs-border-color);
+ --bs-pagination-focus-color: var(--bs-link-hover-color);
+ --bs-pagination-focus-bg: var(--bs-secondary-bg);
+ --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+ --bs-pagination-active-color: #fff;
+ --bs-pagination-active-bg: #446e9b;
+ --bs-pagination-active-border-color: #446e9b;
+ --bs-pagination-disabled-color: var(--bs-secondary-color);
+ --bs-pagination-disabled-bg: var(--bs-secondary-bg);
+ --bs-pagination-disabled-border-color: var(--bs-border-color);
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+}
+
+.page-link {
+ position: relative;
+ display: block;
+ padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
+ font-size: var(--bs-pagination-font-size);
+ color: var(--bs-pagination-color);
+ text-decoration: none;
+ background-color: var(--bs-pagination-bg);
+ border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .page-link {
+ transition: none;
+ }
+}
+.page-link:hover {
+ z-index: 2;
+ color: var(--bs-pagination-hover-color);
+ background-color: var(--bs-pagination-hover-bg);
+ border-color: var(--bs-pagination-hover-border-color);
+}
+.page-link:focus {
+ z-index: 3;
+ color: var(--bs-pagination-focus-color);
+ background-color: var(--bs-pagination-focus-bg);
+ outline: 0;
+ box-shadow: var(--bs-pagination-focus-box-shadow);
+}
+.page-link.active, .active > .page-link {
+ z-index: 3;
+ color: var(--bs-pagination-active-color);
+ background-color: var(--bs-pagination-active-bg);
+ border-color: var(--bs-pagination-active-border-color);
+}
+.page-link.disabled, .disabled > .page-link {
+ color: var(--bs-pagination-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-pagination-disabled-bg);
+ border-color: var(--bs-pagination-disabled-border-color);
+}
+
+.page-item:not(:first-child) .page-link {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.page-item:first-child .page-link {
+ border-top-left-radius: var(--bs-pagination-border-radius);
+ border-bottom-left-radius: var(--bs-pagination-border-radius);
+}
+.page-item:last-child .page-link {
+ border-top-right-radius: var(--bs-pagination-border-radius);
+ border-bottom-right-radius: var(--bs-pagination-border-radius);
+}
+
+.pagination-lg {
+ --bs-pagination-padding-x: 1.5rem;
+ --bs-pagination-padding-y: 0.75rem;
+ --bs-pagination-font-size: 1.25rem;
+ --bs-pagination-border-radius: var(--bs-border-radius-lg);
+}
+
+.pagination-sm {
+ --bs-pagination-padding-x: 0.5rem;
+ --bs-pagination-padding-y: 0.25rem;
+ --bs-pagination-font-size: 0.875rem;
+ --bs-pagination-border-radius: var(--bs-border-radius-sm);
+}
+
+.badge {
+ --bs-badge-padding-x: 0.65em;
+ --bs-badge-padding-y: 0.35em;
+ --bs-badge-font-size: 0.75em;
+ --bs-badge-font-weight: 700;
+ --bs-badge-color: #fff;
+ --bs-badge-border-radius: var(--bs-border-radius);
+ display: inline-block;
+ padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
+ font-size: var(--bs-badge-font-size);
+ font-weight: var(--bs-badge-font-weight);
+ line-height: 1;
+ color: var(--bs-badge-color);
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: var(--bs-badge-border-radius);
+}
+.badge:empty {
+ display: none;
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+.alert {
+ --bs-alert-bg: transparent;
+ --bs-alert-padding-x: 1rem;
+ --bs-alert-padding-y: 1rem;
+ --bs-alert-margin-bottom: 1rem;
+ --bs-alert-color: inherit;
+ --bs-alert-border-color: transparent;
+ --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
+ --bs-alert-border-radius: var(--bs-border-radius);
+ --bs-alert-link-color: inherit;
+ position: relative;
+ padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
+ margin-bottom: var(--bs-alert-margin-bottom);
+ color: var(--bs-alert-color);
+ background-color: var(--bs-alert-bg);
+ border: var(--bs-alert-border);
+ border-radius: var(--bs-alert-border-radius);
+}
+
+.alert-heading {
+ color: inherit;
+}
+
+.alert-link {
+ font-weight: 700;
+ color: var(--bs-alert-link-color);
+}
+
+.alert-dismissible {
+ padding-right: 3rem;
+}
+.alert-dismissible .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ padding: 1.25rem 1rem;
+}
+
+.alert-primary {
+ --bs-alert-color: var(--bs-primary-text-emphasis);
+ --bs-alert-bg: var(--bs-primary-bg-subtle);
+ --bs-alert-border-color: var(--bs-primary-border-subtle);
+ --bs-alert-link-color: var(--bs-primary-text-emphasis);
+}
+
+.alert-secondary {
+ --bs-alert-color: var(--bs-secondary-text-emphasis);
+ --bs-alert-bg: var(--bs-secondary-bg-subtle);
+ --bs-alert-border-color: var(--bs-secondary-border-subtle);
+ --bs-alert-link-color: var(--bs-secondary-text-emphasis);
+}
+
+.alert-success {
+ --bs-alert-color: var(--bs-success-text-emphasis);
+ --bs-alert-bg: var(--bs-success-bg-subtle);
+ --bs-alert-border-color: var(--bs-success-border-subtle);
+ --bs-alert-link-color: var(--bs-success-text-emphasis);
+}
+
+.alert-info {
+ --bs-alert-color: var(--bs-info-text-emphasis);
+ --bs-alert-bg: var(--bs-info-bg-subtle);
+ --bs-alert-border-color: var(--bs-info-border-subtle);
+ --bs-alert-link-color: var(--bs-info-text-emphasis);
+}
+
+.alert-warning {
+ --bs-alert-color: var(--bs-warning-text-emphasis);
+ --bs-alert-bg: var(--bs-warning-bg-subtle);
+ --bs-alert-border-color: var(--bs-warning-border-subtle);
+ --bs-alert-link-color: var(--bs-warning-text-emphasis);
+}
+
+.alert-danger {
+ --bs-alert-color: var(--bs-danger-text-emphasis);
+ --bs-alert-bg: var(--bs-danger-bg-subtle);
+ --bs-alert-border-color: var(--bs-danger-border-subtle);
+ --bs-alert-link-color: var(--bs-danger-text-emphasis);
+}
+
+.alert-light {
+ --bs-alert-color: var(--bs-light-text-emphasis);
+ --bs-alert-bg: var(--bs-light-bg-subtle);
+ --bs-alert-border-color: var(--bs-light-border-subtle);
+ --bs-alert-link-color: var(--bs-light-text-emphasis);
+}
+
+.alert-dark {
+ --bs-alert-color: var(--bs-dark-text-emphasis);
+ --bs-alert-bg: var(--bs-dark-bg-subtle);
+ --bs-alert-border-color: var(--bs-dark-border-subtle);
+ --bs-alert-link-color: var(--bs-dark-text-emphasis);
+}
+
+@keyframes progress-bar-stripes {
+ 0% {
+ background-position-x: 1rem;
+ }
+}
+.progress,
+.progress-stacked {
+ --bs-progress-height: 1rem;
+ --bs-progress-font-size: 0.75rem;
+ --bs-progress-bg: var(--bs-secondary-bg);
+ --bs-progress-border-radius: var(--bs-border-radius);
+ --bs-progress-box-shadow: var(--bs-box-shadow-inset);
+ --bs-progress-bar-color: #fff;
+ --bs-progress-bar-bg: #446e9b;
+ --bs-progress-bar-transition: width 0.6s ease;
+ display: flex;
+ height: var(--bs-progress-height);
+ overflow: hidden;
+ font-size: var(--bs-progress-font-size);
+ background-color: var(--bs-progress-bg);
+ border-radius: var(--bs-progress-border-radius);
+}
+
+.progress-bar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ color: var(--bs-progress-bar-color);
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--bs-progress-bar-bg);
+ transition: var(--bs-progress-bar-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar {
+ transition: none;
+ }
+}
+
+.progress-bar-striped {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: var(--bs-progress-height) var(--bs-progress-height);
+}
+
+.progress-stacked > .progress {
+ overflow: visible;
+}
+
+.progress-stacked > .progress > .progress-bar {
+ width: 100%;
+}
+
+.progress-bar-animated {
+ animation: 1s linear infinite progress-bar-stripes;
+}
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ animation: none;
+ }
+}
+
+.list-group {
+ --bs-list-group-color: var(--bs-body-color);
+ --bs-list-group-bg: var(--bs-body-bg);
+ --bs-list-group-border-color: var(--bs-border-color);
+ --bs-list-group-border-width: var(--bs-border-width);
+ --bs-list-group-border-radius: var(--bs-border-radius);
+ --bs-list-group-item-padding-x: 1rem;
+ --bs-list-group-item-padding-y: 0.5rem;
+ --bs-list-group-action-color: var(--bs-secondary-color);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);
+ --bs-list-group-action-active-color: var(--bs-body-color);
+ --bs-list-group-action-active-bg: var(--bs-secondary-bg);
+ --bs-list-group-disabled-color: var(--bs-secondary-color);
+ --bs-list-group-disabled-bg: var(--bs-body-bg);
+ --bs-list-group-active-color: #fff;
+ --bs-list-group-active-bg: #446e9b;
+ --bs-list-group-active-border-color: #446e9b;
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: var(--bs-list-group-border-radius);
+}
+
+.list-group-numbered {
+ list-style-type: none;
+ counter-reset: section;
+}
+.list-group-numbered > .list-group-item::before {
+ content: counters(section, ".") ". ";
+ counter-increment: section;
+}
+
+.list-group-item-action {
+ width: 100%;
+ color: var(--bs-list-group-action-color);
+ text-align: inherit;
+}
+.list-group-item-action:hover, .list-group-item-action:focus {
+ z-index: 1;
+ color: var(--bs-list-group-action-hover-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-action-hover-bg);
+}
+.list-group-item-action:active {
+ color: var(--bs-list-group-action-active-color);
+ background-color: var(--bs-list-group-action-active-bg);
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);
+ color: var(--bs-list-group-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-bg);
+ border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);
+}
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
+}
+.list-group-item.disabled, .list-group-item:disabled {
+ color: var(--bs-list-group-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-list-group-disabled-bg);
+}
+.list-group-item.active {
+ z-index: 2;
+ color: var(--bs-list-group-active-color);
+ background-color: var(--bs-list-group-active-bg);
+ border-color: var(--bs-list-group-active-border-color);
+}
+.list-group-item + .list-group-item {
+ border-top-width: 0;
+}
+.list-group-item + .list-group-item.active {
+ margin-top: calc(-1 * var(--bs-list-group-border-width));
+ border-top-width: var(--bs-list-group-border-width);
+}
+
+.list-group-horizontal {
+ flex-direction: row;
+}
+.list-group-horizontal > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+}
+.list-group-horizontal > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+}
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+}
+
+@media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ flex-direction: row;
+ }
+ .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 768px) {
+ .list-group-horizontal-md {
+ flex-direction: row;
+ }
+ .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ flex-direction: row;
+ }
+ .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 1400px) {
+ .list-group-horizontal-xxl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+.list-group-flush {
+ border-radius: 0;
+}
+.list-group-flush > .list-group-item {
+ border-width: 0 0 var(--bs-list-group-border-width);
+}
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0;
+}
+
+.list-group-item-primary {
+ --bs-list-group-color: var(--bs-primary-text-emphasis);
+ --bs-list-group-bg: var(--bs-primary-bg-subtle);
+ --bs-list-group-border-color: var(--bs-primary-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);
+ --bs-list-group-active-color: var(--bs-primary-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-primary-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);
+}
+
+.list-group-item-secondary {
+ --bs-list-group-color: var(--bs-secondary-text-emphasis);
+ --bs-list-group-bg: var(--bs-secondary-bg-subtle);
+ --bs-list-group-border-color: var(--bs-secondary-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);
+ --bs-list-group-active-color: var(--bs-secondary-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);
+}
+
+.list-group-item-success {
+ --bs-list-group-color: var(--bs-success-text-emphasis);
+ --bs-list-group-bg: var(--bs-success-bg-subtle);
+ --bs-list-group-border-color: var(--bs-success-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-success-border-subtle);
+ --bs-list-group-active-color: var(--bs-success-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-success-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-success-text-emphasis);
+}
+
+.list-group-item-info {
+ --bs-list-group-color: var(--bs-info-text-emphasis);
+ --bs-list-group-bg: var(--bs-info-bg-subtle);
+ --bs-list-group-border-color: var(--bs-info-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-info-border-subtle);
+ --bs-list-group-active-color: var(--bs-info-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-info-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-info-text-emphasis);
+}
+
+.list-group-item-warning {
+ --bs-list-group-color: var(--bs-warning-text-emphasis);
+ --bs-list-group-bg: var(--bs-warning-bg-subtle);
+ --bs-list-group-border-color: var(--bs-warning-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);
+ --bs-list-group-active-color: var(--bs-warning-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-warning-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);
+}
+
+.list-group-item-danger {
+ --bs-list-group-color: var(--bs-danger-text-emphasis);
+ --bs-list-group-bg: var(--bs-danger-bg-subtle);
+ --bs-list-group-border-color: var(--bs-danger-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);
+ --bs-list-group-active-color: var(--bs-danger-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-danger-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);
+}
+
+.list-group-item-light {
+ --bs-list-group-color: var(--bs-light-text-emphasis);
+ --bs-list-group-bg: var(--bs-light-bg-subtle);
+ --bs-list-group-border-color: var(--bs-light-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-light-border-subtle);
+ --bs-list-group-active-color: var(--bs-light-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-light-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-light-text-emphasis);
+}
+
+.list-group-item-dark {
+ --bs-list-group-color: var(--bs-dark-text-emphasis);
+ --bs-list-group-bg: var(--bs-dark-bg-subtle);
+ --bs-list-group-border-color: var(--bs-dark-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);
+ --bs-list-group-active-color: var(--bs-dark-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-dark-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);
+}
+
+.btn-close {
+ --bs-btn-close-color: #000;
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
+ --bs-btn-close-opacity: 0.5;
+ --bs-btn-close-hover-opacity: 0.75;
+ --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(68, 110, 155, 0.25);
+ --bs-btn-close-focus-opacity: 1;
+ --bs-btn-close-disabled-opacity: 0.25;
+ --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
+ box-sizing: content-box;
+ width: 1em;
+ height: 1em;
+ padding: 0.25em 0.25em;
+ color: var(--bs-btn-close-color);
+ background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
+ border: 0;
+ border-radius: 0.375rem;
+ opacity: var(--bs-btn-close-opacity);
+}
+.btn-close:hover {
+ color: var(--bs-btn-close-color);
+ text-decoration: none;
+ opacity: var(--bs-btn-close-hover-opacity);
+}
+.btn-close:focus {
+ outline: 0;
+ box-shadow: var(--bs-btn-close-focus-shadow);
+ opacity: var(--bs-btn-close-focus-opacity);
+}
+.btn-close:disabled, .btn-close.disabled {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ opacity: var(--bs-btn-close-disabled-opacity);
+}
+
+.btn-close-white {
+ filter: var(--bs-btn-close-white-filter);
+}
+
+[data-bs-theme=dark] .btn-close {
+ filter: var(--bs-btn-close-white-filter);
+}
+
+.toast {
+ --bs-toast-zindex: 1090;
+ --bs-toast-padding-x: 0.75rem;
+ --bs-toast-padding-y: 0.5rem;
+ --bs-toast-spacing: 1.5rem;
+ --bs-toast-max-width: 350px;
+ --bs-toast-font-size: 0.875rem;
+ --bs-toast-color: ;
+ --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-border-width: var(--bs-border-width);
+ --bs-toast-border-color: var(--bs-border-color-translucent);
+ --bs-toast-border-radius: var(--bs-border-radius);
+ --bs-toast-box-shadow: var(--bs-box-shadow);
+ --bs-toast-header-color: var(--bs-secondary-color);
+ --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-header-border-color: var(--bs-border-color-translucent);
+ width: var(--bs-toast-max-width);
+ max-width: 100%;
+ font-size: var(--bs-toast-font-size);
+ color: var(--bs-toast-color);
+ pointer-events: auto;
+ background-color: var(--bs-toast-bg);
+ background-clip: padding-box;
+ border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
+ box-shadow: var(--bs-toast-box-shadow);
+ border-radius: var(--bs-toast-border-radius);
+}
+.toast.showing {
+ opacity: 0;
+}
+.toast:not(.show) {
+ display: none;
+}
+
+.toast-container {
+ --bs-toast-zindex: 1090;
+ position: absolute;
+ z-index: var(--bs-toast-zindex);
+ width: -webkit-max-content;
+ width: -moz-max-content;
+ width: max-content;
+ max-width: 100%;
+ pointer-events: none;
+}
+.toast-container > :not(:last-child) {
+ margin-bottom: var(--bs-toast-spacing);
+}
+
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
+ color: var(--bs-toast-header-color);
+ background-color: var(--bs-toast-header-bg);
+ background-clip: padding-box;
+ border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);
+ border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
+ border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
+}
+.toast-header .btn-close {
+ margin-right: calc(-0.5 * var(--bs-toast-padding-x));
+ margin-left: var(--bs-toast-padding-x);
+}
+
+.toast-body {
+ padding: var(--bs-toast-padding-x);
+ word-wrap: break-word;
+}
+
+.modal {
+ --bs-modal-zindex: 1055;
+ --bs-modal-width: 500px;
+ --bs-modal-padding: 1rem;
+ --bs-modal-margin: 0.5rem;
+ --bs-modal-color: ;
+ --bs-modal-bg: var(--bs-body-bg);
+ --bs-modal-border-color: var(--bs-border-color-translucent);
+ --bs-modal-border-width: var(--bs-border-width);
+ --bs-modal-border-radius: var(--bs-border-radius-lg);
+ --bs-modal-box-shadow: var(--bs-box-shadow-sm);
+ --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));
+ --bs-modal-header-padding-x: 1rem;
+ --bs-modal-header-padding-y: 1rem;
+ --bs-modal-header-padding: 1rem 1rem;
+ --bs-modal-header-border-color: var(--bs-border-color);
+ --bs-modal-header-border-width: var(--bs-border-width);
+ --bs-modal-title-line-height: 1.5;
+ --bs-modal-footer-gap: 0.5rem;
+ --bs-modal-footer-bg: ;
+ --bs-modal-footer-border-color: var(--bs-border-color);
+ --bs-modal-footer-border-width: var(--bs-border-width);
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: var(--bs-modal-zindex);
+ display: none;
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+ outline: 0;
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: var(--bs-modal-margin);
+ pointer-events: none;
+}
+.modal.fade .modal-dialog {
+ transition: transform 0.3s ease-out;
+ transform: translate(0, -50px);
+}
+@media (prefers-reduced-motion: reduce) {
+ .modal.fade .modal-dialog {
+ transition: none;
+ }
+}
+.modal.show .modal-dialog {
+ transform: none;
+}
+.modal.modal-static .modal-dialog {
+ transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+ height: calc(100% - var(--bs-modal-margin) * 2);
+}
+.modal-dialog-scrollable .modal-content {
+ max-height: 100%;
+ overflow: hidden;
+}
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto;
+}
+
+.modal-dialog-centered {
+ display: flex;
+ align-items: center;
+ min-height: calc(100% - var(--bs-modal-margin) * 2);
+}
+
+.modal-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ color: var(--bs-modal-color);
+ pointer-events: auto;
+ background-color: var(--bs-modal-bg);
+ background-clip: padding-box;
+ border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);
+ border-radius: var(--bs-modal-border-radius);
+ outline: 0;
+}
+
+.modal-backdrop {
+ --bs-backdrop-zindex: 1050;
+ --bs-backdrop-bg: #000;
+ --bs-backdrop-opacity: 0.5;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: var(--bs-backdrop-zindex);
+ width: 100vw;
+ height: 100vh;
+ background-color: var(--bs-backdrop-bg);
+}
+.modal-backdrop.fade {
+ opacity: 0;
+}
+.modal-backdrop.show {
+ opacity: var(--bs-backdrop-opacity);
+}
+
+.modal-header {
+ display: flex;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--bs-modal-header-padding);
+ border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);
+ border-top-left-radius: var(--bs-modal-inner-border-radius);
+ border-top-right-radius: var(--bs-modal-inner-border-radius);
+}
+.modal-header .btn-close {
+ padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);
+ margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;
+}
+
+.modal-title {
+ margin-bottom: 0;
+ line-height: var(--bs-modal-title-line-height);
+}
+
+.modal-body {
+ position: relative;
+ flex: 1 1 auto;
+ padding: var(--bs-modal-padding);
+}
+
+.modal-footer {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-end;
+ padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);
+ background-color: var(--bs-modal-footer-bg);
+ border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);
+ border-bottom-right-radius: var(--bs-modal-inner-border-radius);
+ border-bottom-left-radius: var(--bs-modal-inner-border-radius);
+}
+.modal-footer > * {
+ margin: calc(var(--bs-modal-footer-gap) * 0.5);
+}
+
+@media (min-width: 576px) {
+ .modal {
+ --bs-modal-margin: 1.75rem;
+ --bs-modal-box-shadow: var(--bs-box-shadow);
+ }
+ .modal-dialog {
+ max-width: var(--bs-modal-width);
+ margin-right: auto;
+ margin-left: auto;
+ }
+ .modal-sm {
+ --bs-modal-width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg,
+ .modal-xl {
+ --bs-modal-width: 800px;
+ }
+}
+@media (min-width: 1200px) {
+ .modal-xl {
+ --bs-modal-width: 1140px;
+ }
+}
+.modal-fullscreen {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+}
+.modal-fullscreen .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+}
+.modal-fullscreen .modal-header,
+.modal-fullscreen .modal-footer {
+ border-radius: 0;
+}
+.modal-fullscreen .modal-body {
+ overflow-y: auto;
+}
+
+@media (max-width: 575.98px) {
+ .modal-fullscreen-sm-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-sm-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-sm-down .modal-header,
+ .modal-fullscreen-sm-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-sm-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 767.98px) {
+ .modal-fullscreen-md-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-md-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-md-down .modal-header,
+ .modal-fullscreen-md-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-md-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 991.98px) {
+ .modal-fullscreen-lg-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-lg-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-lg-down .modal-header,
+ .modal-fullscreen-lg-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-lg-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 1199.98px) {
+ .modal-fullscreen-xl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-xl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-xl-down .modal-header,
+ .modal-fullscreen-xl-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-xl-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 1399.98px) {
+ .modal-fullscreen-xxl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-header,
+ .modal-fullscreen-xxl-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-body {
+ overflow-y: auto;
+ }
+}
+.tooltip {
+ --bs-tooltip-zindex: 1080;
+ --bs-tooltip-max-width: 200px;
+ --bs-tooltip-padding-x: 0.5rem;
+ --bs-tooltip-padding-y: 0.25rem;
+ --bs-tooltip-margin: ;
+ --bs-tooltip-font-size: 0.875rem;
+ --bs-tooltip-color: var(--bs-body-bg);
+ --bs-tooltip-bg: var(--bs-emphasis-color);
+ --bs-tooltip-border-radius: var(--bs-border-radius);
+ --bs-tooltip-opacity: 0.9;
+ --bs-tooltip-arrow-width: 0.8rem;
+ --bs-tooltip-arrow-height: 0.4rem;
+ z-index: var(--bs-tooltip-zindex);
+ display: block;
+ margin: var(--bs-tooltip-margin);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-tooltip-font-size);
+ word-wrap: break-word;
+ opacity: 0;
+}
+.tooltip.show {
+ opacity: var(--bs-tooltip-opacity);
+}
+.tooltip .tooltip-arrow {
+ display: block;
+ width: var(--bs-tooltip-arrow-width);
+ height: var(--bs-tooltip-arrow-height);
+}
+.tooltip .tooltip-arrow::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+}
+
+.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
+ bottom: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
+ top: -1px;
+ border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-top-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
+ left: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
+ right: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-right-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:end:ignore */
+.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
+ top: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
+ bottom: -1px;
+ border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
+ border-bottom-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
+ right: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
+ left: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
+ border-left-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:end:ignore */
+.tooltip-inner {
+ max-width: var(--bs-tooltip-max-width);
+ padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
+ color: var(--bs-tooltip-color);
+ text-align: center;
+ background-color: var(--bs-tooltip-bg);
+ border-radius: var(--bs-tooltip-border-radius);
+}
+
+.popover {
+ --bs-popover-zindex: 1070;
+ --bs-popover-max-width: 276px;
+ --bs-popover-font-size: 0.875rem;
+ --bs-popover-bg: var(--bs-body-bg);
+ --bs-popover-border-width: var(--bs-border-width);
+ --bs-popover-border-color: var(--bs-border-color-translucent);
+ --bs-popover-border-radius: var(--bs-border-radius-lg);
+ --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));
+ --bs-popover-box-shadow: var(--bs-box-shadow);
+ --bs-popover-header-padding-x: 1rem;
+ --bs-popover-header-padding-y: 0.5rem;
+ --bs-popover-header-font-size: 1rem;
+ --bs-popover-header-color: #2d2d2d;
+ --bs-popover-header-bg: var(--bs-secondary-bg);
+ --bs-popover-body-padding-x: 1rem;
+ --bs-popover-body-padding-y: 1rem;
+ --bs-popover-body-color: var(--bs-body-color);
+ --bs-popover-arrow-width: 1rem;
+ --bs-popover-arrow-height: 0.5rem;
+ --bs-popover-arrow-border: var(--bs-popover-border-color);
+ z-index: var(--bs-popover-zindex);
+ display: block;
+ max-width: var(--bs-popover-max-width);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-popover-font-size);
+ word-wrap: break-word;
+ background-color: var(--bs-popover-bg);
+ background-clip: padding-box;
+ border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
+ border-radius: var(--bs-popover-border-radius);
+}
+.popover .popover-arrow {
+ display: block;
+ width: var(--bs-popover-arrow-width);
+ height: var(--bs-popover-arrow-height);
+}
+.popover .popover-arrow::before, .popover .popover-arrow::after {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+ border-width: 0;
+}
+
+.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
+ bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+}
+.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
+ border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
+}
+.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
+ bottom: 0;
+ border-top-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
+ bottom: var(--bs-popover-border-width);
+ border-top-color: var(--bs-popover-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
+ left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+ width: var(--bs-popover-arrow-height);
+ height: var(--bs-popover-arrow-width);
+}
+.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
+ border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
+}
+.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
+ left: 0;
+ border-right-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
+ left: var(--bs-popover-border-width);
+ border-right-color: var(--bs-popover-bg);
+}
+
+/* rtl:end:ignore */
+.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
+ top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+}
+.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
+ border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
+}
+.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
+ top: 0;
+ border-bottom-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
+ top: var(--bs-popover-border-width);
+ border-bottom-color: var(--bs-popover-bg);
+}
+.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: var(--bs-popover-arrow-width);
+ margin-left: calc(-0.5 * var(--bs-popover-arrow-width));
+ content: "";
+ border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
+ right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+ width: var(--bs-popover-arrow-height);
+ height: var(--bs-popover-arrow-width);
+}
+.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
+ border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
+}
+.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
+ right: 0;
+ border-left-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
+ right: var(--bs-popover-border-width);
+ border-left-color: var(--bs-popover-bg);
+}
+
+/* rtl:end:ignore */
+.popover-header {
+ padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
+ margin-bottom: 0;
+ font-size: var(--bs-popover-header-font-size);
+ color: var(--bs-popover-header-color);
+ background-color: var(--bs-popover-header-bg);
+ border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
+ border-top-left-radius: var(--bs-popover-inner-border-radius);
+ border-top-right-radius: var(--bs-popover-inner-border-radius);
+}
+.popover-header:empty {
+ display: none;
+}
+
+.popover-body {
+ padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);
+ color: var(--bs-popover-body-color);
+}
+
+.carousel {
+ position: relative;
+}
+
+.carousel.pointer-event {
+ touch-action: pan-y;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+.carousel-inner::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.carousel-item {
+ position: relative;
+ display: none;
+ float: left;
+ width: 100%;
+ margin-right: -100%;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ transition: transform 0.6s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-item {
+ transition: none;
+ }
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+ display: block;
+}
+
+.carousel-item-next:not(.carousel-item-start),
+.active.carousel-item-end {
+ transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-end),
+.active.carousel-item-start {
+ transform: translateX(-100%);
+}
+
+.carousel-fade .carousel-item {
+ opacity: 0;
+ transition-property: opacity;
+ transform: none;
+}
+.carousel-fade .carousel-item.active,
+.carousel-fade .carousel-item-next.carousel-item-start,
+.carousel-fade .carousel-item-prev.carousel-item-end {
+ z-index: 1;
+ opacity: 1;
+}
+.carousel-fade .active.carousel-item-start,
+.carousel-fade .active.carousel-item-end {
+ z-index: 0;
+ opacity: 0;
+ transition: opacity 0s 0.6s;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-fade .active.carousel-item-start,
+ .carousel-fade .active.carousel-item-end {
+ transition: none;
+ }
+}
+
+.carousel-control-prev,
+.carousel-control-next {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 15%;
+ padding: 0;
+ color: #fff;
+ text-align: center;
+ background: none;
+ border: 0;
+ opacity: 0.5;
+ transition: opacity 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-control-prev,
+ .carousel-control-next {
+ transition: none;
+ }
+}
+.carousel-control-prev:hover, .carousel-control-prev:focus,
+.carousel-control-next:hover,
+.carousel-control-next:focus {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: 0.9;
+}
+
+.carousel-control-prev {
+ left: 0;
+}
+
+.carousel-control-next {
+ right: 0;
+}
+
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100% 100%;
+}
+
+/* rtl:options: {
+ "autoRename": true,
+ "stringMap":[ {
+ "name" : "prev-next",
+ "search" : "prev",
+ "replace" : "next"
+ } ]
+} */
+.carousel-control-prev-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
+}
+
+.carousel-control-next-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.carousel-indicators {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ padding: 0;
+ margin-right: 15%;
+ margin-bottom: 1rem;
+ margin-left: 15%;
+}
+.carousel-indicators [data-bs-target] {
+ box-sizing: content-box;
+ flex: 0 1 auto;
+ width: 30px;
+ height: 3px;
+ padding: 0;
+ margin-right: 3px;
+ margin-left: 3px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ opacity: 0.5;
+ transition: opacity 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-indicators [data-bs-target] {
+ transition: none;
+ }
+}
+.carousel-indicators .active {
+ opacity: 1;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 1.25rem;
+ left: 15%;
+ padding-top: 1.25rem;
+ padding-bottom: 1.25rem;
+ color: #fff;
+ text-align: center;
+}
+
+.carousel-dark .carousel-control-prev-icon,
+.carousel-dark .carousel-control-next-icon {
+ filter: invert(1) grayscale(100);
+}
+.carousel-dark .carousel-indicators [data-bs-target] {
+ background-color: #000;
+}
+.carousel-dark .carousel-caption {
+ color: #000;
+}
+
+[data-bs-theme=dark] .carousel .carousel-control-prev-icon,
+[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,
+[data-bs-theme=dark].carousel .carousel-control-next-icon {
+ filter: invert(1) grayscale(100);
+}
+[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {
+ background-color: #000;
+}
+[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {
+ color: #000;
+}
+
+.spinner-grow,
+.spinner-border {
+ display: inline-block;
+ width: var(--bs-spinner-width);
+ height: var(--bs-spinner-height);
+ vertical-align: var(--bs-spinner-vertical-align);
+ border-radius: 50%;
+ animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);
+}
+
+@keyframes spinner-border {
+ to {
+ transform: rotate(360deg) /* rtl:ignore */;
+ }
+}
+.spinner-border {
+ --bs-spinner-width: 2rem;
+ --bs-spinner-height: 2rem;
+ --bs-spinner-vertical-align: -0.125em;
+ --bs-spinner-border-width: 0.25em;
+ --bs-spinner-animation-speed: 0.75s;
+ --bs-spinner-animation-name: spinner-border;
+ border: var(--bs-spinner-border-width) solid currentcolor;
+ border-right-color: transparent;
+}
+
+.spinner-border-sm {
+ --bs-spinner-width: 1rem;
+ --bs-spinner-height: 1rem;
+ --bs-spinner-border-width: 0.2em;
+}
+
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0);
+ }
+ 50% {
+ opacity: 1;
+ transform: none;
+ }
+}
+.spinner-grow {
+ --bs-spinner-width: 2rem;
+ --bs-spinner-height: 2rem;
+ --bs-spinner-vertical-align: -0.125em;
+ --bs-spinner-animation-speed: 0.75s;
+ --bs-spinner-animation-name: spinner-grow;
+ background-color: currentcolor;
+ opacity: 0;
+}
+
+.spinner-grow-sm {
+ --bs-spinner-width: 1rem;
+ --bs-spinner-height: 1rem;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ --bs-spinner-animation-speed: 1.5s;
+ }
+}
+.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {
+ --bs-offcanvas-zindex: 1045;
+ --bs-offcanvas-width: 400px;
+ --bs-offcanvas-height: 30vh;
+ --bs-offcanvas-padding-x: 1rem;
+ --bs-offcanvas-padding-y: 1rem;
+ --bs-offcanvas-color: var(--bs-body-color);
+ --bs-offcanvas-bg: var(--bs-body-bg);
+ --bs-offcanvas-border-width: var(--bs-border-width);
+ --bs-offcanvas-border-color: var(--bs-border-color-translucent);
+ --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);
+ --bs-offcanvas-transition: transform 0.3s ease-in-out;
+ --bs-offcanvas-title-line-height: 1.5;
+}
+
+@media (max-width: 575.98px) {
+ .offcanvas-sm {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-sm {
+ transition: none;
+ }
+}
+@media (max-width: 575.98px) {
+ .offcanvas-sm.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-sm.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-sm.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-sm.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 576px) {
+ .offcanvas-sm {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-sm .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-sm .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 767.98px) {
+ .offcanvas-md {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-md {
+ transition: none;
+ }
+}
+@media (max-width: 767.98px) {
+ .offcanvas-md.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-md.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-md.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-md.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 768px) {
+ .offcanvas-md {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-md .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-md .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 991.98px) {
+ .offcanvas-lg {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-lg {
+ transition: none;
+ }
+}
+@media (max-width: 991.98px) {
+ .offcanvas-lg.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-lg.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-lg.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-lg.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 992px) {
+ .offcanvas-lg {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-lg .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-lg .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .offcanvas-xl {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-xl {
+ transition: none;
+ }
+}
+@media (max-width: 1199.98px) {
+ .offcanvas-xl.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-xl.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-xl.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-xl.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 1200px) {
+ .offcanvas-xl {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-xl .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-xl .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 1399.98px) {
+ .offcanvas-xxl {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-xxl {
+ transition: none;
+ }
+}
+@media (max-width: 1399.98px) {
+ .offcanvas-xxl.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-xxl.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-xxl.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-xxl.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 1400px) {
+ .offcanvas-xxl {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-xxl .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-xxl .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+.offcanvas {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .offcanvas {
+ transition: none;
+ }
+}
+.offcanvas.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+}
+.offcanvas.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+}
+.offcanvas.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+}
+.offcanvas.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+}
+.offcanvas.showing, .offcanvas.show:not(.hiding) {
+ transform: none;
+}
+.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {
+ visibility: visible;
+}
+
+.offcanvas-backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1040;
+ width: 100vw;
+ height: 100vh;
+ background-color: #000;
+}
+.offcanvas-backdrop.fade {
+ opacity: 0;
+}
+.offcanvas-backdrop.show {
+ opacity: 0.5;
+}
+
+.offcanvas-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
+}
+.offcanvas-header .btn-close {
+ padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);
+ margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));
+ margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));
+ margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));
+}
+
+.offcanvas-title {
+ margin-bottom: 0;
+ line-height: var(--bs-offcanvas-title-line-height);
+}
+
+.offcanvas-body {
+ flex-grow: 1;
+ padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
+ overflow-y: auto;
+}
+
+.placeholder {
+ display: inline-block;
+ min-height: 1em;
+ vertical-align: middle;
+ cursor: wait;
+ background-color: currentcolor;
+ opacity: 0.5;
+}
+.placeholder.btn::before {
+ display: inline-block;
+ content: "";
+}
+
+.placeholder-xs {
+ min-height: 0.6em;
+}
+
+.placeholder-sm {
+ min-height: 0.8em;
+}
+
+.placeholder-lg {
+ min-height: 1.2em;
+}
+
+.placeholder-glow .placeholder {
+ animation: placeholder-glow 2s ease-in-out infinite;
+}
+
+@keyframes placeholder-glow {
+ 50% {
+ opacity: 0.2;
+ }
+}
+.placeholder-wave {
+ -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+ mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+ -webkit-mask-size: 200% 100%;
+ mask-size: 200% 100%;
+ animation: placeholder-wave 2s linear infinite;
+}
+
+@keyframes placeholder-wave {
+ 100% {
+ -webkit-mask-position: -200% 0%;
+ mask-position: -200% 0%;
+ }
+}
+.clearfix::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.text-bg-primary {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-secondary {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-success {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-info {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-warning {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-danger {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-light {
+ color: #000 !important;
+ background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-dark {
+ color: #fff !important;
+ background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;
+}
+
+.link-primary {
+ color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-primary:hover, .link-primary:focus {
+ color: RGBA(54, 88, 124, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(54, 88, 124, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(54, 88, 124, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-secondary {
+ color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-secondary:hover, .link-secondary:focus {
+ color: RGBA(122, 122, 122, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(122, 122, 122, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(122, 122, 122, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-success {
+ color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-success:hover, .link-success:focus {
+ color: RGBA(48, 145, 26, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(48, 145, 26, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(48, 145, 26, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-info {
+ color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-info:hover, .link-info:focus {
+ color: RGBA(41, 122, 194, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(41, 122, 194, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(41, 122, 194, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-warning {
+ color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-warning:hover, .link-warning:focus {
+ color: RGBA(170, 94, 0, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(170, 94, 0, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(170, 94, 0, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-danger {
+ color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-danger:hover, .link-danger:focus {
+ color: RGBA(164, 2, 0, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(164, 2, 0, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(164, 2, 0, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-light {
+ color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-light:hover, .link-light:focus {
+ color: RGBA(241, 241, 241, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(241, 241, 241, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(241, 241, 241, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-dark {
+ color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-dark:hover, .link-dark:focus {
+ color: RGBA(41, 41, 41, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(41, 41, 41, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(41, 41, 41, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-body-emphasis {
+ color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-body-emphasis:hover, .link-body-emphasis:focus {
+ color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;
+ text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;
+}
+
+.focus-ring:focus {
+ outline: 0;
+ box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);
+}
+
+.icon-link {
+ display: inline-flex;
+ gap: 0.375rem;
+ align-items: center;
+ -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));
+ text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));
+ text-underline-offset: 0.25em;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+}
+.icon-link > .bi {
+ flex-shrink: 0;
+ width: 1em;
+ height: 1em;
+ fill: currentcolor;
+ transition: 0.2s ease-in-out transform;
+}
+@media (prefers-reduced-motion: reduce) {
+ .icon-link > .bi {
+ transition: none;
+ }
+}
+
+.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {
+ transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));
+}
+
+.ratio {
+ position: relative;
+ width: 100%;
+}
+.ratio::before {
+ display: block;
+ padding-top: var(--bs-aspect-ratio);
+ content: "";
+}
+.ratio > * {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.ratio-1x1 {
+ --bs-aspect-ratio: 100%;
+}
+
+.ratio-4x3 {
+ --bs-aspect-ratio: 75%;
+}
+
+.ratio-16x9 {
+ --bs-aspect-ratio: 56.25%;
+}
+
+.ratio-21x9 {
+ --bs-aspect-ratio: 42.8571428571%;
+}
+
+.fixed-top {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+.fixed-bottom {
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+.sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+}
+
+.sticky-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+}
+
+@media (min-width: 576px) {
+ .sticky-sm-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-sm-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 768px) {
+ .sticky-md-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-md-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 992px) {
+ .sticky-lg-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-lg-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 1200px) {
+ .sticky-xl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-xl-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 1400px) {
+ .sticky-xxl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-xxl-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+.hstack {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ align-self: stretch;
+}
+
+.vstack {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ align-self: stretch;
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+ width: 1px !important;
+ height: 1px !important;
+ padding: 0 !important;
+ margin: -1px !important;
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ white-space: nowrap !important;
+ border: 0 !important;
+}
+.visually-hidden:not(caption),
+.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
+ position: absolute !important;
+}
+
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: "";
+}
+
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.vr {
+ display: inline-block;
+ align-self: stretch;
+ width: var(--bs-border-width);
+ min-height: 1em;
+ background-color: currentcolor;
+ opacity: 0.25;
+}
+
+.align-baseline {
+ vertical-align: baseline !important;
+}
+
+.align-top {
+ vertical-align: top !important;
+}
+
+.align-middle {
+ vertical-align: middle !important;
+}
+
+.align-bottom {
+ vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+ vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+ vertical-align: text-top !important;
+}
+
+.float-start {
+ float: left !important;
+}
+
+.float-end {
+ float: right !important;
+}
+
+.float-none {
+ float: none !important;
+}
+
+.object-fit-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+}
+
+.object-fit-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+}
+
+.object-fit-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+}
+
+.object-fit-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+}
+
+.object-fit-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+}
+
+.opacity-0 {
+ opacity: 0 !important;
+}
+
+.opacity-25 {
+ opacity: 0.25 !important;
+}
+
+.opacity-50 {
+ opacity: 0.5 !important;
+}
+
+.opacity-75 {
+ opacity: 0.75 !important;
+}
+
+.opacity-100 {
+ opacity: 1 !important;
+}
+
+.overflow-auto {
+ overflow: auto !important;
+}
+
+.overflow-hidden {
+ overflow: hidden !important;
+}
+
+.overflow-visible {
+ overflow: visible !important;
+}
+
+.overflow-scroll {
+ overflow: scroll !important;
+}
+
+.overflow-x-auto {
+ overflow-x: auto !important;
+}
+
+.overflow-x-hidden {
+ overflow-x: hidden !important;
+}
+
+.overflow-x-visible {
+ overflow-x: visible !important;
+}
+
+.overflow-x-scroll {
+ overflow-x: scroll !important;
+}
+
+.overflow-y-auto {
+ overflow-y: auto !important;
+}
+
+.overflow-y-hidden {
+ overflow-y: hidden !important;
+}
+
+.overflow-y-visible {
+ overflow-y: visible !important;
+}
+
+.overflow-y-scroll {
+ overflow-y: scroll !important;
+}
+
+.d-inline {
+ display: inline !important;
+}
+
+.d-inline-block {
+ display: inline-block !important;
+}
+
+.d-block {
+ display: block !important;
+}
+
+.d-grid {
+ display: grid !important;
+}
+
+.d-inline-grid {
+ display: inline-grid !important;
+}
+
+.d-table {
+ display: table !important;
+}
+
+.d-table-row {
+ display: table-row !important;
+}
+
+.d-table-cell {
+ display: table-cell !important;
+}
+
+.d-flex {
+ display: flex !important;
+}
+
+.d-inline-flex {
+ display: inline-flex !important;
+}
+
+.d-none {
+ display: none !important;
+}
+
+.shadow {
+ box-shadow: var(--bs-box-shadow) !important;
+}
+
+.shadow-sm {
+ box-shadow: var(--bs-box-shadow-sm) !important;
+}
+
+.shadow-lg {
+ box-shadow: var(--bs-box-shadow-lg) !important;
+}
+
+.shadow-none {
+ box-shadow: none !important;
+}
+
+.focus-ring-primary {
+ --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-secondary {
+ --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-success {
+ --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-info {
+ --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-warning {
+ --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-danger {
+ --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-light {
+ --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-dark {
+ --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));
+}
+
+.position-static {
+ position: static !important;
+}
+
+.position-relative {
+ position: relative !important;
+}
+
+.position-absolute {
+ position: absolute !important;
+}
+
+.position-fixed {
+ position: fixed !important;
+}
+
+.position-sticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+}
+
+.top-0 {
+ top: 0 !important;
+}
+
+.top-50 {
+ top: 50% !important;
+}
+
+.top-100 {
+ top: 100% !important;
+}
+
+.bottom-0 {
+ bottom: 0 !important;
+}
+
+.bottom-50 {
+ bottom: 50% !important;
+}
+
+.bottom-100 {
+ bottom: 100% !important;
+}
+
+.start-0 {
+ left: 0 !important;
+}
+
+.start-50 {
+ left: 50% !important;
+}
+
+.start-100 {
+ left: 100% !important;
+}
+
+.end-0 {
+ right: 0 !important;
+}
+
+.end-50 {
+ right: 50% !important;
+}
+
+.end-100 {
+ right: 100% !important;
+}
+
+.translate-middle {
+ transform: translate(-50%, -50%) !important;
+}
+
+.translate-middle-x {
+ transform: translateX(-50%) !important;
+}
+
+.translate-middle-y {
+ transform: translateY(-50%) !important;
+}
+
+.border {
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-0 {
+ border: 0 !important;
+}
+
+.border-top {
+ border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-top-0 {
+ border-top: 0 !important;
+}
+
+.border-end {
+ border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-end-0 {
+ border-right: 0 !important;
+}
+
+.border-bottom {
+ border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-bottom-0 {
+ border-bottom: 0 !important;
+}
+
+.border-start {
+ border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-start-0 {
+ border-left: 0 !important;
+}
+
+.border-primary {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-secondary {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-success {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-info {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-warning {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-danger {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-light {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-dark {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-black {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-white {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-primary-subtle {
+ border-color: var(--bs-primary-border-subtle) !important;
+}
+
+.border-secondary-subtle {
+ border-color: var(--bs-secondary-border-subtle) !important;
+}
+
+.border-success-subtle {
+ border-color: var(--bs-success-border-subtle) !important;
+}
+
+.border-info-subtle {
+ border-color: var(--bs-info-border-subtle) !important;
+}
+
+.border-warning-subtle {
+ border-color: var(--bs-warning-border-subtle) !important;
+}
+
+.border-danger-subtle {
+ border-color: var(--bs-danger-border-subtle) !important;
+}
+
+.border-light-subtle {
+ border-color: var(--bs-light-border-subtle) !important;
+}
+
+.border-dark-subtle {
+ border-color: var(--bs-dark-border-subtle) !important;
+}
+
+.border-1 {
+ border-width: 1px !important;
+}
+
+.border-2 {
+ border-width: 2px !important;
+}
+
+.border-3 {
+ border-width: 3px !important;
+}
+
+.border-4 {
+ border-width: 4px !important;
+}
+
+.border-5 {
+ border-width: 5px !important;
+}
+
+.border-opacity-10 {
+ --bs-border-opacity: 0.1;
+}
+
+.border-opacity-25 {
+ --bs-border-opacity: 0.25;
+}
+
+.border-opacity-50 {
+ --bs-border-opacity: 0.5;
+}
+
+.border-opacity-75 {
+ --bs-border-opacity: 0.75;
+}
+
+.border-opacity-100 {
+ --bs-border-opacity: 1;
+}
+
+.w-25 {
+ width: 25% !important;
+}
+
+.w-50 {
+ width: 50% !important;
+}
+
+.w-75 {
+ width: 75% !important;
+}
+
+.w-100 {
+ width: 100% !important;
+}
+
+.w-auto {
+ width: auto !important;
+}
+
+.mw-100 {
+ max-width: 100% !important;
+}
+
+.vw-100 {
+ width: 100vw !important;
+}
+
+.min-vw-100 {
+ min-width: 100vw !important;
+}
+
+.h-25 {
+ height: 25% !important;
+}
+
+.h-50 {
+ height: 50% !important;
+}
+
+.h-75 {
+ height: 75% !important;
+}
+
+.h-100 {
+ height: 100% !important;
+}
+
+.h-auto {
+ height: auto !important;
+}
+
+.mh-100 {
+ max-height: 100% !important;
+}
+
+.vh-100 {
+ height: 100vh !important;
+}
+
+.min-vh-100 {
+ min-height: 100vh !important;
+}
+
+.flex-fill {
+ flex: 1 1 auto !important;
+}
+
+.flex-row {
+ flex-direction: row !important;
+}
+
+.flex-column {
+ flex-direction: column !important;
+}
+
+.flex-row-reverse {
+ flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+ flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+ flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+ flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+ flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+ flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+ flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+ flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+}
+
+.justify-content-start {
+ justify-content: flex-start !important;
+}
+
+.justify-content-end {
+ justify-content: flex-end !important;
+}
+
+.justify-content-center {
+ justify-content: center !important;
+}
+
+.justify-content-between {
+ justify-content: space-between !important;
+}
+
+.justify-content-around {
+ justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+ justify-content: space-evenly !important;
+}
+
+.align-items-start {
+ align-items: flex-start !important;
+}
+
+.align-items-end {
+ align-items: flex-end !important;
+}
+
+.align-items-center {
+ align-items: center !important;
+}
+
+.align-items-baseline {
+ align-items: baseline !important;
+}
+
+.align-items-stretch {
+ align-items: stretch !important;
+}
+
+.align-content-start {
+ align-content: flex-start !important;
+}
+
+.align-content-end {
+ align-content: flex-end !important;
+}
+
+.align-content-center {
+ align-content: center !important;
+}
+
+.align-content-between {
+ align-content: space-between !important;
+}
+
+.align-content-around {
+ align-content: space-around !important;
+}
+
+.align-content-stretch {
+ align-content: stretch !important;
+}
+
+.align-self-auto {
+ align-self: auto !important;
+}
+
+.align-self-start {
+ align-self: flex-start !important;
+}
+
+.align-self-end {
+ align-self: flex-end !important;
+}
+
+.align-self-center {
+ align-self: center !important;
+}
+
+.align-self-baseline {
+ align-self: baseline !important;
+}
+
+.align-self-stretch {
+ align-self: stretch !important;
+}
+
+.order-first {
+ order: -1 !important;
+}
+
+.order-0 {
+ order: 0 !important;
+}
+
+.order-1 {
+ order: 1 !important;
+}
+
+.order-2 {
+ order: 2 !important;
+}
+
+.order-3 {
+ order: 3 !important;
+}
+
+.order-4 {
+ order: 4 !important;
+}
+
+.order-5 {
+ order: 5 !important;
+}
+
+.order-last {
+ order: 6 !important;
+}
+
+.m-0 {
+ margin: 0 !important;
+}
+
+.m-1 {
+ margin: 0.25rem !important;
+}
+
+.m-2 {
+ margin: 0.5rem !important;
+}
+
+.m-3 {
+ margin: 1rem !important;
+}
+
+.m-4 {
+ margin: 1.5rem !important;
+}
+
+.m-5 {
+ margin: 3rem !important;
+}
+
+.m-auto {
+ margin: auto !important;
+}
+
+.mx-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+}
+
+.mx-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+}
+
+.mx-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+}
+
+.mx-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+}
+
+.mx-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+}
+
+.mx-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+}
+
+.mx-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+}
+
+.my-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+
+.my-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+}
+
+.my-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+}
+
+.my-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+}
+
+.mt-0 {
+ margin-top: 0 !important;
+}
+
+.mt-1 {
+ margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+ margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+ margin-top: 1rem !important;
+}
+
+.mt-4 {
+ margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+ margin-top: 3rem !important;
+}
+
+.mt-auto {
+ margin-top: auto !important;
+}
+
+.me-0 {
+ margin-right: 0 !important;
+}
+
+.me-1 {
+ margin-right: 0.25rem !important;
+}
+
+.me-2 {
+ margin-right: 0.5rem !important;
+}
+
+.me-3 {
+ margin-right: 1rem !important;
+}
+
+.me-4 {
+ margin-right: 1.5rem !important;
+}
+
+.me-5 {
+ margin-right: 3rem !important;
+}
+
+.me-auto {
+ margin-right: auto !important;
+}
+
+.mb-0 {
+ margin-bottom: 0 !important;
+}
+
+.mb-1 {
+ margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+ margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+ margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+ margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+ margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+ margin-bottom: auto !important;
+}
+
+.ms-0 {
+ margin-left: 0 !important;
+}
+
+.ms-1 {
+ margin-left: 0.25rem !important;
+}
+
+.ms-2 {
+ margin-left: 0.5rem !important;
+}
+
+.ms-3 {
+ margin-left: 1rem !important;
+}
+
+.ms-4 {
+ margin-left: 1.5rem !important;
+}
+
+.ms-5 {
+ margin-left: 3rem !important;
+}
+
+.ms-auto {
+ margin-left: auto !important;
+}
+
+.p-0 {
+ padding: 0 !important;
+}
+
+.p-1 {
+ padding: 0.25rem !important;
+}
+
+.p-2 {
+ padding: 0.5rem !important;
+}
+
+.p-3 {
+ padding: 1rem !important;
+}
+
+.p-4 {
+ padding: 1.5rem !important;
+}
+
+.p-5 {
+ padding: 3rem !important;
+}
+
+.px-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+}
+
+.px-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+}
+
+.px-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+}
+
+.px-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+}
+
+.px-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+}
+
+.px-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+}
+
+.py-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+}
+
+.py-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+}
+
+.py-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+ padding-top: 0 !important;
+}
+
+.pt-1 {
+ padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+ padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+ padding-top: 1rem !important;
+}
+
+.pt-4 {
+ padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+ padding-top: 3rem !important;
+}
+
+.pe-0 {
+ padding-right: 0 !important;
+}
+
+.pe-1 {
+ padding-right: 0.25rem !important;
+}
+
+.pe-2 {
+ padding-right: 0.5rem !important;
+}
+
+.pe-3 {
+ padding-right: 1rem !important;
+}
+
+.pe-4 {
+ padding-right: 1.5rem !important;
+}
+
+.pe-5 {
+ padding-right: 3rem !important;
+}
+
+.pb-0 {
+ padding-bottom: 0 !important;
+}
+
+.pb-1 {
+ padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+ padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+ padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+ padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+ padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+ padding-left: 0 !important;
+}
+
+.ps-1 {
+ padding-left: 0.25rem !important;
+}
+
+.ps-2 {
+ padding-left: 0.5rem !important;
+}
+
+.ps-3 {
+ padding-left: 1rem !important;
+}
+
+.ps-4 {
+ padding-left: 1.5rem !important;
+}
+
+.ps-5 {
+ padding-left: 3rem !important;
+}
+
+.gap-0 {
+ gap: 0 !important;
+}
+
+.gap-1 {
+ gap: 0.25rem !important;
+}
+
+.gap-2 {
+ gap: 0.5rem !important;
+}
+
+.gap-3 {
+ gap: 1rem !important;
+}
+
+.gap-4 {
+ gap: 1.5rem !important;
+}
+
+.gap-5 {
+ gap: 3rem !important;
+}
+
+.row-gap-0 {
+ row-gap: 0 !important;
+}
+
+.row-gap-1 {
+ row-gap: 0.25rem !important;
+}
+
+.row-gap-2 {
+ row-gap: 0.5rem !important;
+}
+
+.row-gap-3 {
+ row-gap: 1rem !important;
+}
+
+.row-gap-4 {
+ row-gap: 1.5rem !important;
+}
+
+.row-gap-5 {
+ row-gap: 3rem !important;
+}
+
+.column-gap-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+}
+
+.column-gap-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+}
+
+.column-gap-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+}
+
+.column-gap-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+}
+
+.column-gap-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+}
+
+.column-gap-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+}
+
+.font-monospace {
+ font-family: var(--bs-font-monospace) !important;
+}
+
+.fs-1 {
+ font-size: calc(1.375rem + 1.5vw) !important;
+}
+
+.fs-2 {
+ font-size: calc(1.325rem + 0.9vw) !important;
+}
+
+.fs-3 {
+ font-size: calc(1.3rem + 0.6vw) !important;
+}
+
+.fs-4 {
+ font-size: calc(1.275rem + 0.3vw) !important;
+}
+
+.fs-5 {
+ font-size: 1.25rem !important;
+}
+
+.fs-6 {
+ font-size: 1rem !important;
+}
+
+.fst-italic {
+ font-style: italic !important;
+}
+
+.fst-normal {
+ font-style: normal !important;
+}
+
+.fw-lighter {
+ font-weight: lighter !important;
+}
+
+.fw-light {
+ font-weight: 300 !important;
+}
+
+.fw-normal {
+ font-weight: 400 !important;
+}
+
+.fw-medium {
+ font-weight: 500 !important;
+}
+
+.fw-semibold {
+ font-weight: 600 !important;
+}
+
+.fw-bold {
+ font-weight: 700 !important;
+}
+
+.fw-bolder {
+ font-weight: bolder !important;
+}
+
+.lh-1 {
+ line-height: 1 !important;
+}
+
+.lh-sm {
+ line-height: 1.25 !important;
+}
+
+.lh-base {
+ line-height: 1.5 !important;
+}
+
+.lh-lg {
+ line-height: 2 !important;
+}
+
+.text-start {
+ text-align: left !important;
+}
+
+.text-end {
+ text-align: right !important;
+}
+
+.text-center {
+ text-align: center !important;
+}
+
+.text-decoration-none {
+ text-decoration: none !important;
+}
+
+.text-decoration-underline {
+ text-decoration: underline !important;
+}
+
+.text-decoration-line-through {
+ text-decoration: line-through !important;
+}
+
+.text-lowercase {
+ text-transform: lowercase !important;
+}
+
+.text-uppercase {
+ text-transform: uppercase !important;
+}
+
+.text-capitalize {
+ text-transform: capitalize !important;
+}
+
+.text-wrap {
+ white-space: normal !important;
+}
+
+.text-nowrap {
+ white-space: nowrap !important;
+}
+
+/* rtl:begin:remove */
+.text-break {
+ word-wrap: break-word !important;
+ word-break: break-word !important;
+}
+
+/* rtl:end:remove */
+.text-primary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-secondary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-success {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-info {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-warning {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-danger {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-light {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-dark {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-black {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-white {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-body {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-muted {
+ --bs-text-opacity: 1;
+ color: var(--bs-secondary-color) !important;
+}
+
+.text-black-50 {
+ --bs-text-opacity: 1;
+ color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+ --bs-text-opacity: 1;
+ color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-body-secondary {
+ --bs-text-opacity: 1;
+ color: var(--bs-secondary-color) !important;
+}
+
+.text-body-tertiary {
+ --bs-text-opacity: 1;
+ color: var(--bs-tertiary-color) !important;
+}
+
+.text-body-emphasis {
+ --bs-text-opacity: 1;
+ color: var(--bs-emphasis-color) !important;
+}
+
+.text-reset {
+ --bs-text-opacity: 1;
+ color: inherit !important;
+}
+
+.text-opacity-25 {
+ --bs-text-opacity: 0.25;
+}
+
+.text-opacity-50 {
+ --bs-text-opacity: 0.5;
+}
+
+.text-opacity-75 {
+ --bs-text-opacity: 0.75;
+}
+
+.text-opacity-100 {
+ --bs-text-opacity: 1;
+}
+
+.text-primary-emphasis {
+ color: var(--bs-primary-text-emphasis) !important;
+}
+
+.text-secondary-emphasis {
+ color: var(--bs-secondary-text-emphasis) !important;
+}
+
+.text-success-emphasis {
+ color: var(--bs-success-text-emphasis) !important;
+}
+
+.text-info-emphasis {
+ color: var(--bs-info-text-emphasis) !important;
+}
+
+.text-warning-emphasis {
+ color: var(--bs-warning-text-emphasis) !important;
+}
+
+.text-danger-emphasis {
+ color: var(--bs-danger-text-emphasis) !important;
+}
+
+.text-light-emphasis {
+ color: var(--bs-light-text-emphasis) !important;
+}
+
+.text-dark-emphasis {
+ color: var(--bs-dark-text-emphasis) !important;
+}
+
+.link-opacity-10 {
+ --bs-link-opacity: 0.1;
+}
+
+.link-opacity-10-hover:hover {
+ --bs-link-opacity: 0.1;
+}
+
+.link-opacity-25 {
+ --bs-link-opacity: 0.25;
+}
+
+.link-opacity-25-hover:hover {
+ --bs-link-opacity: 0.25;
+}
+
+.link-opacity-50 {
+ --bs-link-opacity: 0.5;
+}
+
+.link-opacity-50-hover:hover {
+ --bs-link-opacity: 0.5;
+}
+
+.link-opacity-75 {
+ --bs-link-opacity: 0.75;
+}
+
+.link-opacity-75-hover:hover {
+ --bs-link-opacity: 0.75;
+}
+
+.link-opacity-100 {
+ --bs-link-opacity: 1;
+}
+
+.link-opacity-100-hover:hover {
+ --bs-link-opacity: 1;
+}
+
+.link-offset-1 {
+ text-underline-offset: 0.125em !important;
+}
+
+.link-offset-1-hover:hover {
+ text-underline-offset: 0.125em !important;
+}
+
+.link-offset-2 {
+ text-underline-offset: 0.25em !important;
+}
+
+.link-offset-2-hover:hover {
+ text-underline-offset: 0.25em !important;
+}
+
+.link-offset-3 {
+ text-underline-offset: 0.375em !important;
+}
+
+.link-offset-3-hover:hover {
+ text-underline-offset: 0.375em !important;
+}
+
+.link-underline-primary {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-secondary {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-success {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-info {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-warning {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-danger {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-light {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-dark {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-underline-opacity-0 {
+ --bs-link-underline-opacity: 0;
+}
+
+.link-underline-opacity-0-hover:hover {
+ --bs-link-underline-opacity: 0;
+}
+
+.link-underline-opacity-10 {
+ --bs-link-underline-opacity: 0.1;
+}
+
+.link-underline-opacity-10-hover:hover {
+ --bs-link-underline-opacity: 0.1;
+}
+
+.link-underline-opacity-25 {
+ --bs-link-underline-opacity: 0.25;
+}
+
+.link-underline-opacity-25-hover:hover {
+ --bs-link-underline-opacity: 0.25;
+}
+
+.link-underline-opacity-50 {
+ --bs-link-underline-opacity: 0.5;
+}
+
+.link-underline-opacity-50-hover:hover {
+ --bs-link-underline-opacity: 0.5;
+}
+
+.link-underline-opacity-75 {
+ --bs-link-underline-opacity: 0.75;
+}
+
+.link-underline-opacity-75-hover:hover {
+ --bs-link-underline-opacity: 0.75;
+}
+
+.link-underline-opacity-100 {
+ --bs-link-underline-opacity: 1;
+}
+
+.link-underline-opacity-100-hover:hover {
+ --bs-link-underline-opacity: 1;
+}
+
+.bg-primary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-secondary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-success {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-info {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-warning {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-danger {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-light {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-dark {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-black {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-white {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-transparent {
+ --bs-bg-opacity: 1;
+ background-color: transparent !important;
+}
+
+.bg-body-secondary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body-tertiary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-opacity-10 {
+ --bs-bg-opacity: 0.1;
+}
+
+.bg-opacity-25 {
+ --bs-bg-opacity: 0.25;
+}
+
+.bg-opacity-50 {
+ --bs-bg-opacity: 0.5;
+}
+
+.bg-opacity-75 {
+ --bs-bg-opacity: 0.75;
+}
+
+.bg-opacity-100 {
+ --bs-bg-opacity: 1;
+}
+
+.bg-primary-subtle {
+ background-color: var(--bs-primary-bg-subtle) !important;
+}
+
+.bg-secondary-subtle {
+ background-color: var(--bs-secondary-bg-subtle) !important;
+}
+
+.bg-success-subtle {
+ background-color: var(--bs-success-bg-subtle) !important;
+}
+
+.bg-info-subtle {
+ background-color: var(--bs-info-bg-subtle) !important;
+}
+
+.bg-warning-subtle {
+ background-color: var(--bs-warning-bg-subtle) !important;
+}
+
+.bg-danger-subtle {
+ background-color: var(--bs-danger-bg-subtle) !important;
+}
+
+.bg-light-subtle {
+ background-color: var(--bs-light-bg-subtle) !important;
+}
+
+.bg-dark-subtle {
+ background-color: var(--bs-dark-bg-subtle) !important;
+}
+
+.bg-gradient {
+ background-image: var(--bs-gradient) !important;
+}
+
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ user-select: all !important;
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ user-select: auto !important;
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ user-select: none !important;
+}
+
+.pe-none {
+ pointer-events: none !important;
+}
+
+.pe-auto {
+ pointer-events: auto !important;
+}
+
+.rounded {
+ border-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-0 {
+ border-radius: 0 !important;
+}
+
+.rounded-1 {
+ border-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-2 {
+ border-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-3 {
+ border-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-4 {
+ border-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-5 {
+ border-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-circle {
+ border-radius: 50% !important;
+}
+
+.rounded-pill {
+ border-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-top {
+ border-top-left-radius: var(--bs-border-radius) !important;
+ border-top-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-top-0 {
+ border-top-left-radius: 0 !important;
+ border-top-right-radius: 0 !important;
+}
+
+.rounded-top-1 {
+ border-top-left-radius: var(--bs-border-radius-sm) !important;
+ border-top-right-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-top-2 {
+ border-top-left-radius: var(--bs-border-radius) !important;
+ border-top-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-top-3 {
+ border-top-left-radius: var(--bs-border-radius-lg) !important;
+ border-top-right-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-top-4 {
+ border-top-left-radius: var(--bs-border-radius-xl) !important;
+ border-top-right-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-top-5 {
+ border-top-left-radius: var(--bs-border-radius-xxl) !important;
+ border-top-right-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-top-circle {
+ border-top-left-radius: 50% !important;
+ border-top-right-radius: 50% !important;
+}
+
+.rounded-top-pill {
+ border-top-left-radius: var(--bs-border-radius-pill) !important;
+ border-top-right-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-end {
+ border-top-right-radius: var(--bs-border-radius) !important;
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-end-0 {
+ border-top-right-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+}
+
+.rounded-end-1 {
+ border-top-right-radius: var(--bs-border-radius-sm) !important;
+ border-bottom-right-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-end-2 {
+ border-top-right-radius: var(--bs-border-radius) !important;
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-end-3 {
+ border-top-right-radius: var(--bs-border-radius-lg) !important;
+ border-bottom-right-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-end-4 {
+ border-top-right-radius: var(--bs-border-radius-xl) !important;
+ border-bottom-right-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-end-5 {
+ border-top-right-radius: var(--bs-border-radius-xxl) !important;
+ border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-end-circle {
+ border-top-right-radius: 50% !important;
+ border-bottom-right-radius: 50% !important;
+}
+
+.rounded-end-pill {
+ border-top-right-radius: var(--bs-border-radius-pill) !important;
+ border-bottom-right-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-bottom {
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-bottom-0 {
+ border-bottom-right-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+}
+
+.rounded-bottom-1 {
+ border-bottom-right-radius: var(--bs-border-radius-sm) !important;
+ border-bottom-left-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-bottom-2 {
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-bottom-3 {
+ border-bottom-right-radius: var(--bs-border-radius-lg) !important;
+ border-bottom-left-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-bottom-4 {
+ border-bottom-right-radius: var(--bs-border-radius-xl) !important;
+ border-bottom-left-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-bottom-5 {
+ border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
+ border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-bottom-circle {
+ border-bottom-right-radius: 50% !important;
+ border-bottom-left-radius: 50% !important;
+}
+
+.rounded-bottom-pill {
+ border-bottom-right-radius: var(--bs-border-radius-pill) !important;
+ border-bottom-left-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-start {
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+ border-top-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-start-0 {
+ border-bottom-left-radius: 0 !important;
+ border-top-left-radius: 0 !important;
+}
+
+.rounded-start-1 {
+ border-bottom-left-radius: var(--bs-border-radius-sm) !important;
+ border-top-left-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-start-2 {
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+ border-top-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-start-3 {
+ border-bottom-left-radius: var(--bs-border-radius-lg) !important;
+ border-top-left-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-start-4 {
+ border-bottom-left-radius: var(--bs-border-radius-xl) !important;
+ border-top-left-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-start-5 {
+ border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
+ border-top-left-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-start-circle {
+ border-bottom-left-radius: 50% !important;
+ border-top-left-radius: 50% !important;
+}
+
+.rounded-start-pill {
+ border-bottom-left-radius: var(--bs-border-radius-pill) !important;
+ border-top-left-radius: var(--bs-border-radius-pill) !important;
+}
+
+.visible {
+ visibility: visible !important;
+}
+
+.invisible {
+ visibility: hidden !important;
+}
+
+.z-n1 {
+ z-index: -1 !important;
+}
+
+.z-0 {
+ z-index: 0 !important;
+}
+
+.z-1 {
+ z-index: 1 !important;
+}
+
+.z-2 {
+ z-index: 2 !important;
+}
+
+.z-3 {
+ z-index: 3 !important;
+}
+
+@media (min-width: 576px) {
+ .float-sm-start {
+ float: left !important;
+ }
+ .float-sm-end {
+ float: right !important;
+ }
+ .float-sm-none {
+ float: none !important;
+ }
+ .object-fit-sm-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-sm-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-sm-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-sm-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-sm-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-sm-inline {
+ display: inline !important;
+ }
+ .d-sm-inline-block {
+ display: inline-block !important;
+ }
+ .d-sm-block {
+ display: block !important;
+ }
+ .d-sm-grid {
+ display: grid !important;
+ }
+ .d-sm-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-sm-table {
+ display: table !important;
+ }
+ .d-sm-table-row {
+ display: table-row !important;
+ }
+ .d-sm-table-cell {
+ display: table-cell !important;
+ }
+ .d-sm-flex {
+ display: flex !important;
+ }
+ .d-sm-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-sm-none {
+ display: none !important;
+ }
+ .flex-sm-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-sm-row {
+ flex-direction: row !important;
+ }
+ .flex-sm-column {
+ flex-direction: column !important;
+ }
+ .flex-sm-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-sm-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-sm-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-sm-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-sm-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-sm-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-sm-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-sm-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-sm-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-sm-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-sm-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-sm-center {
+ justify-content: center !important;
+ }
+ .justify-content-sm-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-sm-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-sm-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-sm-start {
+ align-items: flex-start !important;
+ }
+ .align-items-sm-end {
+ align-items: flex-end !important;
+ }
+ .align-items-sm-center {
+ align-items: center !important;
+ }
+ .align-items-sm-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-sm-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-sm-start {
+ align-content: flex-start !important;
+ }
+ .align-content-sm-end {
+ align-content: flex-end !important;
+ }
+ .align-content-sm-center {
+ align-content: center !important;
+ }
+ .align-content-sm-between {
+ align-content: space-between !important;
+ }
+ .align-content-sm-around {
+ align-content: space-around !important;
+ }
+ .align-content-sm-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-sm-auto {
+ align-self: auto !important;
+ }
+ .align-self-sm-start {
+ align-self: flex-start !important;
+ }
+ .align-self-sm-end {
+ align-self: flex-end !important;
+ }
+ .align-self-sm-center {
+ align-self: center !important;
+ }
+ .align-self-sm-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-sm-stretch {
+ align-self: stretch !important;
+ }
+ .order-sm-first {
+ order: -1 !important;
+ }
+ .order-sm-0 {
+ order: 0 !important;
+ }
+ .order-sm-1 {
+ order: 1 !important;
+ }
+ .order-sm-2 {
+ order: 2 !important;
+ }
+ .order-sm-3 {
+ order: 3 !important;
+ }
+ .order-sm-4 {
+ order: 4 !important;
+ }
+ .order-sm-5 {
+ order: 5 !important;
+ }
+ .order-sm-last {
+ order: 6 !important;
+ }
+ .m-sm-0 {
+ margin: 0 !important;
+ }
+ .m-sm-1 {
+ margin: 0.25rem !important;
+ }
+ .m-sm-2 {
+ margin: 0.5rem !important;
+ }
+ .m-sm-3 {
+ margin: 1rem !important;
+ }
+ .m-sm-4 {
+ margin: 1.5rem !important;
+ }
+ .m-sm-5 {
+ margin: 3rem !important;
+ }
+ .m-sm-auto {
+ margin: auto !important;
+ }
+ .mx-sm-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-sm-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-sm-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-sm-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-sm-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-sm-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-sm-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-sm-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-sm-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-sm-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-sm-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-sm-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-sm-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-sm-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-sm-0 {
+ margin-top: 0 !important;
+ }
+ .mt-sm-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-sm-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-sm-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-sm-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-sm-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-sm-auto {
+ margin-top: auto !important;
+ }
+ .me-sm-0 {
+ margin-right: 0 !important;
+ }
+ .me-sm-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-sm-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-sm-3 {
+ margin-right: 1rem !important;
+ }
+ .me-sm-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-sm-5 {
+ margin-right: 3rem !important;
+ }
+ .me-sm-auto {
+ margin-right: auto !important;
+ }
+ .mb-sm-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-sm-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-sm-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-sm-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-sm-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-sm-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-sm-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-sm-0 {
+ margin-left: 0 !important;
+ }
+ .ms-sm-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-sm-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-sm-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-sm-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-sm-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-sm-auto {
+ margin-left: auto !important;
+ }
+ .p-sm-0 {
+ padding: 0 !important;
+ }
+ .p-sm-1 {
+ padding: 0.25rem !important;
+ }
+ .p-sm-2 {
+ padding: 0.5rem !important;
+ }
+ .p-sm-3 {
+ padding: 1rem !important;
+ }
+ .p-sm-4 {
+ padding: 1.5rem !important;
+ }
+ .p-sm-5 {
+ padding: 3rem !important;
+ }
+ .px-sm-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-sm-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-sm-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-sm-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-sm-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-sm-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-sm-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-sm-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-sm-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-sm-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-sm-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-sm-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-sm-0 {
+ padding-top: 0 !important;
+ }
+ .pt-sm-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-sm-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-sm-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-sm-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-sm-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-sm-0 {
+ padding-right: 0 !important;
+ }
+ .pe-sm-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-sm-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-sm-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-sm-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-sm-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-sm-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-sm-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-sm-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-sm-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-sm-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-sm-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-sm-0 {
+ padding-left: 0 !important;
+ }
+ .ps-sm-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-sm-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-sm-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-sm-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-sm-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-sm-0 {
+ gap: 0 !important;
+ }
+ .gap-sm-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-sm-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-sm-3 {
+ gap: 1rem !important;
+ }
+ .gap-sm-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-sm-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-sm-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-sm-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-sm-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-sm-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-sm-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-sm-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-sm-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-sm-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-sm-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-sm-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-sm-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-sm-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-sm-start {
+ text-align: left !important;
+ }
+ .text-sm-end {
+ text-align: right !important;
+ }
+ .text-sm-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 768px) {
+ .float-md-start {
+ float: left !important;
+ }
+ .float-md-end {
+ float: right !important;
+ }
+ .float-md-none {
+ float: none !important;
+ }
+ .object-fit-md-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-md-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-md-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-md-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-md-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-md-inline {
+ display: inline !important;
+ }
+ .d-md-inline-block {
+ display: inline-block !important;
+ }
+ .d-md-block {
+ display: block !important;
+ }
+ .d-md-grid {
+ display: grid !important;
+ }
+ .d-md-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-md-table {
+ display: table !important;
+ }
+ .d-md-table-row {
+ display: table-row !important;
+ }
+ .d-md-table-cell {
+ display: table-cell !important;
+ }
+ .d-md-flex {
+ display: flex !important;
+ }
+ .d-md-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-md-none {
+ display: none !important;
+ }
+ .flex-md-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-md-row {
+ flex-direction: row !important;
+ }
+ .flex-md-column {
+ flex-direction: column !important;
+ }
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-md-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-md-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-md-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-md-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-md-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-md-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-md-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-md-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-md-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-md-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-md-center {
+ justify-content: center !important;
+ }
+ .justify-content-md-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-md-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-md-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-md-start {
+ align-items: flex-start !important;
+ }
+ .align-items-md-end {
+ align-items: flex-end !important;
+ }
+ .align-items-md-center {
+ align-items: center !important;
+ }
+ .align-items-md-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-md-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-md-start {
+ align-content: flex-start !important;
+ }
+ .align-content-md-end {
+ align-content: flex-end !important;
+ }
+ .align-content-md-center {
+ align-content: center !important;
+ }
+ .align-content-md-between {
+ align-content: space-between !important;
+ }
+ .align-content-md-around {
+ align-content: space-around !important;
+ }
+ .align-content-md-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-md-auto {
+ align-self: auto !important;
+ }
+ .align-self-md-start {
+ align-self: flex-start !important;
+ }
+ .align-self-md-end {
+ align-self: flex-end !important;
+ }
+ .align-self-md-center {
+ align-self: center !important;
+ }
+ .align-self-md-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-md-stretch {
+ align-self: stretch !important;
+ }
+ .order-md-first {
+ order: -1 !important;
+ }
+ .order-md-0 {
+ order: 0 !important;
+ }
+ .order-md-1 {
+ order: 1 !important;
+ }
+ .order-md-2 {
+ order: 2 !important;
+ }
+ .order-md-3 {
+ order: 3 !important;
+ }
+ .order-md-4 {
+ order: 4 !important;
+ }
+ .order-md-5 {
+ order: 5 !important;
+ }
+ .order-md-last {
+ order: 6 !important;
+ }
+ .m-md-0 {
+ margin: 0 !important;
+ }
+ .m-md-1 {
+ margin: 0.25rem !important;
+ }
+ .m-md-2 {
+ margin: 0.5rem !important;
+ }
+ .m-md-3 {
+ margin: 1rem !important;
+ }
+ .m-md-4 {
+ margin: 1.5rem !important;
+ }
+ .m-md-5 {
+ margin: 3rem !important;
+ }
+ .m-md-auto {
+ margin: auto !important;
+ }
+ .mx-md-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-md-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-md-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-md-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-md-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-md-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-md-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-md-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-md-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-md-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-md-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-md-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-md-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-md-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-md-0 {
+ margin-top: 0 !important;
+ }
+ .mt-md-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-md-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-md-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-md-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-md-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-md-auto {
+ margin-top: auto !important;
+ }
+ .me-md-0 {
+ margin-right: 0 !important;
+ }
+ .me-md-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-md-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-md-3 {
+ margin-right: 1rem !important;
+ }
+ .me-md-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-md-5 {
+ margin-right: 3rem !important;
+ }
+ .me-md-auto {
+ margin-right: auto !important;
+ }
+ .mb-md-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-md-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-md-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-md-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-md-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-md-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-md-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-md-0 {
+ margin-left: 0 !important;
+ }
+ .ms-md-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-md-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-md-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-md-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-md-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-md-auto {
+ margin-left: auto !important;
+ }
+ .p-md-0 {
+ padding: 0 !important;
+ }
+ .p-md-1 {
+ padding: 0.25rem !important;
+ }
+ .p-md-2 {
+ padding: 0.5rem !important;
+ }
+ .p-md-3 {
+ padding: 1rem !important;
+ }
+ .p-md-4 {
+ padding: 1.5rem !important;
+ }
+ .p-md-5 {
+ padding: 3rem !important;
+ }
+ .px-md-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-md-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-md-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-md-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-md-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-md-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-md-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-md-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-md-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-md-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-md-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-md-0 {
+ padding-top: 0 !important;
+ }
+ .pt-md-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-md-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-md-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-md-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-md-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-md-0 {
+ padding-right: 0 !important;
+ }
+ .pe-md-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-md-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-md-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-md-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-md-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-md-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-md-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-md-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-md-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-md-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-md-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-md-0 {
+ padding-left: 0 !important;
+ }
+ .ps-md-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-md-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-md-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-md-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-md-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-md-0 {
+ gap: 0 !important;
+ }
+ .gap-md-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-md-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-md-3 {
+ gap: 1rem !important;
+ }
+ .gap-md-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-md-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-md-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-md-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-md-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-md-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-md-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-md-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-md-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-md-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-md-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-md-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-md-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-md-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-md-start {
+ text-align: left !important;
+ }
+ .text-md-end {
+ text-align: right !important;
+ }
+ .text-md-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 992px) {
+ .float-lg-start {
+ float: left !important;
+ }
+ .float-lg-end {
+ float: right !important;
+ }
+ .float-lg-none {
+ float: none !important;
+ }
+ .object-fit-lg-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-lg-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-lg-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-lg-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-lg-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-lg-inline {
+ display: inline !important;
+ }
+ .d-lg-inline-block {
+ display: inline-block !important;
+ }
+ .d-lg-block {
+ display: block !important;
+ }
+ .d-lg-grid {
+ display: grid !important;
+ }
+ .d-lg-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-lg-table {
+ display: table !important;
+ }
+ .d-lg-table-row {
+ display: table-row !important;
+ }
+ .d-lg-table-cell {
+ display: table-cell !important;
+ }
+ .d-lg-flex {
+ display: flex !important;
+ }
+ .d-lg-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-lg-none {
+ display: none !important;
+ }
+ .flex-lg-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-lg-row {
+ flex-direction: row !important;
+ }
+ .flex-lg-column {
+ flex-direction: column !important;
+ }
+ .flex-lg-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-lg-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-lg-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-lg-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-lg-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-lg-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-lg-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-lg-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-lg-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-lg-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-lg-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-lg-center {
+ justify-content: center !important;
+ }
+ .justify-content-lg-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-lg-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-lg-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-lg-start {
+ align-items: flex-start !important;
+ }
+ .align-items-lg-end {
+ align-items: flex-end !important;
+ }
+ .align-items-lg-center {
+ align-items: center !important;
+ }
+ .align-items-lg-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-lg-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-lg-start {
+ align-content: flex-start !important;
+ }
+ .align-content-lg-end {
+ align-content: flex-end !important;
+ }
+ .align-content-lg-center {
+ align-content: center !important;
+ }
+ .align-content-lg-between {
+ align-content: space-between !important;
+ }
+ .align-content-lg-around {
+ align-content: space-around !important;
+ }
+ .align-content-lg-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-lg-auto {
+ align-self: auto !important;
+ }
+ .align-self-lg-start {
+ align-self: flex-start !important;
+ }
+ .align-self-lg-end {
+ align-self: flex-end !important;
+ }
+ .align-self-lg-center {
+ align-self: center !important;
+ }
+ .align-self-lg-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-lg-stretch {
+ align-self: stretch !important;
+ }
+ .order-lg-first {
+ order: -1 !important;
+ }
+ .order-lg-0 {
+ order: 0 !important;
+ }
+ .order-lg-1 {
+ order: 1 !important;
+ }
+ .order-lg-2 {
+ order: 2 !important;
+ }
+ .order-lg-3 {
+ order: 3 !important;
+ }
+ .order-lg-4 {
+ order: 4 !important;
+ }
+ .order-lg-5 {
+ order: 5 !important;
+ }
+ .order-lg-last {
+ order: 6 !important;
+ }
+ .m-lg-0 {
+ margin: 0 !important;
+ }
+ .m-lg-1 {
+ margin: 0.25rem !important;
+ }
+ .m-lg-2 {
+ margin: 0.5rem !important;
+ }
+ .m-lg-3 {
+ margin: 1rem !important;
+ }
+ .m-lg-4 {
+ margin: 1.5rem !important;
+ }
+ .m-lg-5 {
+ margin: 3rem !important;
+ }
+ .m-lg-auto {
+ margin: auto !important;
+ }
+ .mx-lg-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-lg-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-lg-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-lg-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-lg-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-lg-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-lg-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-lg-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-lg-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-lg-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-lg-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-lg-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-lg-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-lg-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-lg-0 {
+ margin-top: 0 !important;
+ }
+ .mt-lg-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-lg-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-lg-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-lg-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-lg-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-lg-auto {
+ margin-top: auto !important;
+ }
+ .me-lg-0 {
+ margin-right: 0 !important;
+ }
+ .me-lg-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-lg-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-lg-3 {
+ margin-right: 1rem !important;
+ }
+ .me-lg-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-lg-5 {
+ margin-right: 3rem !important;
+ }
+ .me-lg-auto {
+ margin-right: auto !important;
+ }
+ .mb-lg-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-lg-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-lg-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-lg-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-lg-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-lg-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-lg-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-lg-0 {
+ margin-left: 0 !important;
+ }
+ .ms-lg-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-lg-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-lg-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-lg-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-lg-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-lg-auto {
+ margin-left: auto !important;
+ }
+ .p-lg-0 {
+ padding: 0 !important;
+ }
+ .p-lg-1 {
+ padding: 0.25rem !important;
+ }
+ .p-lg-2 {
+ padding: 0.5rem !important;
+ }
+ .p-lg-3 {
+ padding: 1rem !important;
+ }
+ .p-lg-4 {
+ padding: 1.5rem !important;
+ }
+ .p-lg-5 {
+ padding: 3rem !important;
+ }
+ .px-lg-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-lg-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-lg-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-lg-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-lg-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-lg-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-lg-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-lg-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-lg-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-lg-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-lg-0 {
+ padding-top: 0 !important;
+ }
+ .pt-lg-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-lg-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-lg-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-lg-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-lg-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-lg-0 {
+ padding-right: 0 !important;
+ }
+ .pe-lg-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-lg-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-lg-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-lg-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-lg-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-lg-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-lg-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-lg-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-lg-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-lg-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-lg-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-lg-0 {
+ padding-left: 0 !important;
+ }
+ .ps-lg-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-lg-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-lg-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-lg-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-lg-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-lg-0 {
+ gap: 0 !important;
+ }
+ .gap-lg-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-lg-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-lg-3 {
+ gap: 1rem !important;
+ }
+ .gap-lg-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-lg-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-lg-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-lg-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-lg-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-lg-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-lg-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-lg-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-lg-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-lg-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-lg-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-lg-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-lg-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-lg-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-lg-start {
+ text-align: left !important;
+ }
+ .text-lg-end {
+ text-align: right !important;
+ }
+ .text-lg-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1200px) {
+ .float-xl-start {
+ float: left !important;
+ }
+ .float-xl-end {
+ float: right !important;
+ }
+ .float-xl-none {
+ float: none !important;
+ }
+ .object-fit-xl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-xl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-xl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-xl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-xl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-xl-inline {
+ display: inline !important;
+ }
+ .d-xl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xl-block {
+ display: block !important;
+ }
+ .d-xl-grid {
+ display: grid !important;
+ }
+ .d-xl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-xl-table {
+ display: table !important;
+ }
+ .d-xl-table-row {
+ display: table-row !important;
+ }
+ .d-xl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xl-flex {
+ display: flex !important;
+ }
+ .d-xl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-xl-none {
+ display: none !important;
+ }
+ .flex-xl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xl-row {
+ flex-direction: row !important;
+ }
+ .flex-xl-column {
+ flex-direction: column !important;
+ }
+ .flex-xl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-xl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-xl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-xl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-xl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xl-center {
+ align-items: center !important;
+ }
+ .align-items-xl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xl-center {
+ align-content: center !important;
+ }
+ .align-content-xl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xl-center {
+ align-self: center !important;
+ }
+ .align-self-xl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xl-stretch {
+ align-self: stretch !important;
+ }
+ .order-xl-first {
+ order: -1 !important;
+ }
+ .order-xl-0 {
+ order: 0 !important;
+ }
+ .order-xl-1 {
+ order: 1 !important;
+ }
+ .order-xl-2 {
+ order: 2 !important;
+ }
+ .order-xl-3 {
+ order: 3 !important;
+ }
+ .order-xl-4 {
+ order: 4 !important;
+ }
+ .order-xl-5 {
+ order: 5 !important;
+ }
+ .order-xl-last {
+ order: 6 !important;
+ }
+ .m-xl-0 {
+ margin: 0 !important;
+ }
+ .m-xl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-xl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-xl-3 {
+ margin: 1rem !important;
+ }
+ .m-xl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-xl-5 {
+ margin: 3rem !important;
+ }
+ .m-xl-auto {
+ margin: auto !important;
+ }
+ .mx-xl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-xl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-xl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-xl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-xl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-xl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-xl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-xl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-xl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-xl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-xl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-xl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-xl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-xl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-xl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-xl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-xl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-xl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-xl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-xl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-xl-auto {
+ margin-top: auto !important;
+ }
+ .me-xl-0 {
+ margin-right: 0 !important;
+ }
+ .me-xl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-xl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-xl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-xl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-xl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-xl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-xl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-xl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-xl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-xl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-xl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-xl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-xl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-xl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-xl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-xl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-xl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-xl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-xl-auto {
+ margin-left: auto !important;
+ }
+ .p-xl-0 {
+ padding: 0 !important;
+ }
+ .p-xl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-xl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-xl-3 {
+ padding: 1rem !important;
+ }
+ .p-xl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-xl-5 {
+ padding: 3rem !important;
+ }
+ .px-xl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-xl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-xl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-xl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-xl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-xl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-xl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-xl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-xl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-xl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-xl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-xl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-xl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-xl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-xl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-xl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-xl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-xl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-xl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-xl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-xl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-xl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-xl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-xl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-xl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-xl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-xl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-xl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-xl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-xl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-xl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-xl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-xl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-xl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-xl-0 {
+ gap: 0 !important;
+ }
+ .gap-xl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-xl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-xl-3 {
+ gap: 1rem !important;
+ }
+ .gap-xl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-xl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-xl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-xl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-xl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-xl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-xl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-xl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-xl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-xl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-xl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-xl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-xl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-xl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-xl-start {
+ text-align: left !important;
+ }
+ .text-xl-end {
+ text-align: right !important;
+ }
+ .text-xl-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1400px) {
+ .float-xxl-start {
+ float: left !important;
+ }
+ .float-xxl-end {
+ float: right !important;
+ }
+ .float-xxl-none {
+ float: none !important;
+ }
+ .object-fit-xxl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-xxl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-xxl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-xxl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-xxl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-xxl-inline {
+ display: inline !important;
+ }
+ .d-xxl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xxl-block {
+ display: block !important;
+ }
+ .d-xxl-grid {
+ display: grid !important;
+ }
+ .d-xxl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-xxl-table {
+ display: table !important;
+ }
+ .d-xxl-table-row {
+ display: table-row !important;
+ }
+ .d-xxl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xxl-flex {
+ display: flex !important;
+ }
+ .d-xxl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-xxl-none {
+ display: none !important;
+ }
+ .flex-xxl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xxl-row {
+ flex-direction: row !important;
+ }
+ .flex-xxl-column {
+ flex-direction: column !important;
+ }
+ .flex-xxl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xxl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xxl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xxl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xxl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xxl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-xxl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xxl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xxl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-xxl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xxl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xxl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xxl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xxl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-xxl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-xxl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xxl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xxl-center {
+ align-items: center !important;
+ }
+ .align-items-xxl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xxl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xxl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xxl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xxl-center {
+ align-content: center !important;
+ }
+ .align-content-xxl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xxl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xxl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xxl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xxl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xxl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xxl-center {
+ align-self: center !important;
+ }
+ .align-self-xxl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xxl-stretch {
+ align-self: stretch !important;
+ }
+ .order-xxl-first {
+ order: -1 !important;
+ }
+ .order-xxl-0 {
+ order: 0 !important;
+ }
+ .order-xxl-1 {
+ order: 1 !important;
+ }
+ .order-xxl-2 {
+ order: 2 !important;
+ }
+ .order-xxl-3 {
+ order: 3 !important;
+ }
+ .order-xxl-4 {
+ order: 4 !important;
+ }
+ .order-xxl-5 {
+ order: 5 !important;
+ }
+ .order-xxl-last {
+ order: 6 !important;
+ }
+ .m-xxl-0 {
+ margin: 0 !important;
+ }
+ .m-xxl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-xxl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-xxl-3 {
+ margin: 1rem !important;
+ }
+ .m-xxl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-xxl-5 {
+ margin: 3rem !important;
+ }
+ .m-xxl-auto {
+ margin: auto !important;
+ }
+ .mx-xxl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-xxl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-xxl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-xxl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-xxl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-xxl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-xxl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-xxl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-xxl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-xxl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-xxl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-xxl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-xxl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-xxl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-xxl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-xxl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-xxl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-xxl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-xxl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-xxl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-xxl-auto {
+ margin-top: auto !important;
+ }
+ .me-xxl-0 {
+ margin-right: 0 !important;
+ }
+ .me-xxl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-xxl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-xxl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-xxl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-xxl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-xxl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xxl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-xxl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-xxl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-xxl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-xxl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-xxl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-xxl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-xxl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-xxl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-xxl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-xxl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-xxl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-xxl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-xxl-auto {
+ margin-left: auto !important;
+ }
+ .p-xxl-0 {
+ padding: 0 !important;
+ }
+ .p-xxl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-xxl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-xxl-3 {
+ padding: 1rem !important;
+ }
+ .p-xxl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-xxl-5 {
+ padding: 3rem !important;
+ }
+ .px-xxl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xxl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-xxl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-xxl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-xxl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-xxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-xxl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-xxl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-xxl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-xxl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-xxl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-xxl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-xxl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-xxl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-xxl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-xxl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-xxl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-xxl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-xxl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-xxl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-xxl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-xxl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-xxl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-xxl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xxl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-xxl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-xxl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-xxl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-xxl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-xxl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-xxl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-xxl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-xxl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-xxl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-xxl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-xxl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-xxl-0 {
+ gap: 0 !important;
+ }
+ .gap-xxl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-xxl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-xxl-3 {
+ gap: 1rem !important;
+ }
+ .gap-xxl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-xxl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-xxl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-xxl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-xxl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-xxl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-xxl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-xxl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-xxl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-xxl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-xxl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-xxl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-xxl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-xxl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-xxl-start {
+ text-align: left !important;
+ }
+ .text-xxl-end {
+ text-align: right !important;
+ }
+ .text-xxl-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1200px) {
+ .fs-1 {
+ font-size: 2.5rem !important;
+ }
+ .fs-2 {
+ font-size: 2rem !important;
+ }
+ .fs-3 {
+ font-size: 1.75rem !important;
+ }
+ .fs-4 {
+ font-size: 1.5rem !important;
+ }
+}
+@media print {
+ .d-print-inline {
+ display: inline !important;
+ }
+ .d-print-inline-block {
+ display: inline-block !important;
+ }
+ .d-print-block {
+ display: block !important;
+ }
+ .d-print-grid {
+ display: grid !important;
+ }
+ .d-print-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-print-table {
+ display: table !important;
+ }
+ .d-print-table-row {
+ display: table-row !important;
+ }
+ .d-print-table-cell {
+ display: table-cell !important;
+ }
+ .d-print-flex {
+ display: flex !important;
+ }
+ .d-print-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-print-none {
+ display: none !important;
+ }
+}
+.navbar .nav-link,
+.navbar .navbar-brand {
+ text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.05);
+ transition: color ease-in-out 0.2s;
+}
+.navbar.bg-primary {
+ background-image: linear-gradient(#7191b3, #446e9b 50%, #3f658f);
+ filter: none;
+ border: 1px solid #36587c;
+}
+.navbar.bg-secondary {
+ background-image: linear-gradient(#b1b1b1, #999 50%, #8d8d8d);
+ filter: none;
+ border: 1px solid #7a7a7a;
+}
+.navbar.bg-success {
+ background-image: linear-gradient(#6bc756, #3cb521 50%, #37a71e);
+ filter: none;
+ border: 1px solid #30911a;
+}
+.navbar.bg-info {
+ background-image: linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);
+ filter: none;
+ border: 1px solid #297ac2;
+}
+.navbar.bg-warning {
+ background-image: linear-gradient(#de963d, #d47500 50%, #c36c00);
+ filter: none;
+ border: 1px solid #aa5e00;
+}
+.navbar.bg-danger {
+ background-image: linear-gradient(#d93f3d, #cd0200 50%, #bd0200);
+ filter: none;
+ border: 1px solid #a40200;
+}
+.navbar.bg-light {
+ background-image: linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);
+ filter: none;
+ border: 1px solid #bebebe;
+}
+.navbar.bg-dark {
+ background-image: linear-gradient(#646464, #333 50%, #2f2f2f);
+ filter: none;
+ border: 1px solid #292929;
+}
+.navbar.bg-light .nav-link,
+.navbar.bg-light .navbar-brand {
+ text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.1);
+}
+.navbar.bg-light .navbar-brand {
+ color: rgba(var(--bs-emphasis-color-rgb), 0.65);
+}
+.navbar.bg-light .navbar-brand:hover {
+ color: #3399f3;
+}
+
+.btn {
+ text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.1);
+}
+.btn-link {
+ text-shadow: none;
+}
+
+.btn-primary {
+ background-image: linear-gradient(#7191b3, #446e9b 50%, #3f658f);
+ filter: none;
+ border: 1px solid #36587c;
+}
+
+.btn-primary:not(.disabled):hover {
+ background-image: linear-gradient(#6d8aaa, #3f658f 50%, #3a5d84);
+ filter: none;
+ border: 1px solid #325172;
+}
+
+.btn-secondary {
+ background-image: linear-gradient(#b1b1b1, #999 50%, #8d8d8d);
+ filter: none;
+ border: 1px solid #7a7a7a;
+}
+
+.btn-secondary:not(.disabled):hover {
+ background-image: linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);
+ filter: none;
+ border: 1px solid #717171;
+}
+
+.btn-success {
+ background-image: linear-gradient(#6bc756, #3cb521 50%, #37a71e);
+ filter: none;
+ border: 1px solid #30911a;
+}
+
+.btn-success:not(.disabled):hover {
+ background-image: linear-gradient(#67bc54, #37a71e 50%, #339a1c);
+ filter: none;
+ border: 1px solid #2c8618;
+}
+
+.btn-info {
+ background-image: linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);
+ filter: none;
+ border: 1px solid #297ac2;
+}
+
+.btn-info:not(.disabled):hover {
+ background-image: linear-gradient(#61a8e7, #2f8de0 50%, #2b82ce);
+ filter: none;
+ border: 1px solid #2671b3;
+}
+
+.btn-warning {
+ background-image: linear-gradient(#de963d, #d47500 50%, #c36c00);
+ filter: none;
+ border: 1px solid #aa5e00;
+}
+
+.btn-warning:not(.disabled):hover {
+ background-image: linear-gradient(#d18f3d, #c36c00 50%, #b36300);
+ filter: none;
+ border: 1px solid #9c5600;
+}
+
+.btn-danger {
+ background-image: linear-gradient(#d93f3d, #cd0200 50%, #bd0200);
+ filter: none;
+ border: 1px solid #a40200;
+}
+
+.btn-danger:not(.disabled):hover {
+ background-image: linear-gradient(#cd3f3d, #bd0200 50%, #ae0200);
+ filter: none;
+ border: 1px solid #970200;
+}
+
+.btn-light {
+ background-image: linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);
+ filter: none;
+ border: 1px solid #bebebe;
+}
+
+.btn-light:not(.disabled):hover {
+ background-image: linear-gradient(#e4e4e4, #dbdbdb 50%, #c9c9c9);
+ filter: none;
+ border: 1px solid #afafaf;
+}
+
+.btn-dark {
+ background-image: linear-gradient(#646464, #333 50%, #2f2f2f);
+ filter: none;
+ border: 1px solid #292929;
+}
+
+.btn-dark:not(.disabled):hover {
+ background-image: linear-gradient(#616161, #2f2f2f 50%, #2b2b2b);
+ filter: none;
+ border: 1px solid #262626;
+}
+
+[class*=btn-outline-] {
+ text-shadow: none;
+}
+
+.badge.bg-light {
+ color: #333;
+}
+
+.card h1, .card .h1,
+.card h2,
+.card .h2,
+.card h3,
+.card .h3,
+.card h4,
+.card .h4,
+.card h5,
+.card .h5,
+.card h6,
+.card .h6,
+.list-group-item h1,
+.list-group-item .h1,
+.list-group-item h2,
+.list-group-item .h2,
+.list-group-item h3,
+.list-group-item .h3,
+.list-group-item h4,
+.list-group-item .h4,
+.list-group-item h5,
+.list-group-item .h5,
+.list-group-item h6,
+.list-group-item .h6 {
+ color: inherit;
+}
\ No newline at end of file
diff --git a/app/view/__init__.R b/app/view/__init__.R
new file mode 100644
index 0000000..65702e2
--- /dev/null
+++ b/app/view/__init__.R
@@ -0,0 +1,2 @@
+# View: Shiny modules and related code.
+# https://go.appsilon.com/rhino-project-structure
diff --git a/app/view/demand.R b/app/view/demand.R
new file mode 100644
index 0000000..e68d450
--- /dev/null
+++ b/app/view/demand.R
@@ -0,0 +1,234 @@
+box::use(
+ bsicons,
+ bslib,
+ shiny,
+)
+
+box::use(
+ app/logic/validate,
+ app/view/demand_data_table,
+ app/view/demand_results_table,
+ app/view/file_input,
+)
+
+#' @export
+sidebar_ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ shiny$tagList(
+ file_input$ui(ns("upload_demand")),
+
+ shiny$checkboxInput(
+ inputId = ns("group"),
+ label = bslib$tooltip(
+ trigger = list(
+ "Do you have a grouping variable?",
+ bsicons$bs_icon("info-circle")
+ ),
+ "Grouping will be disregarded if Analysis Type = Two Stage."
+ ),
+ value = FALSE
+ ),
+ bslib$accordion(
+ open = FALSE,
+ style = "margin-bottom: 25px;",
+ bslib$accordion_panel(
+ title = "Specs",
+ icon = bsicons$bs_icon("gear"),
+ shiny$checkboxInput(
+ inputId = ns("check_free"),
+ label = bslib$tooltip(
+ trigger = list(
+ "Do you want to constrain Q0 to a specific value?",
+ bsicons$bs_icon("info-circle")
+ ),
+ "Currently an experimental feature. Selecting Yes will only work
+ with a fixed k value.",
+ ),
+ value = FALSE
+ ),
+ shiny$uiOutput(
+ ns("num_free")
+ ),
+ # v2 feature
+ # shiny$uiOutput(
+ # outputId = ns("groupname")
+ # )
+ )
+ ),
+ shiny$selectInput(
+ inputId = ns("equation"),
+ label = "Select equation:",
+ choices = c(
+ "Exponentiated (with k)",
+ # v2 feature
+ # "Exponentiated (no k)",
+ "Exponential (with k)"
+ )
+ ),
+ # v2 feature
+ # shiny$selectInput(
+ # inputId = ns("free"),
+ # label = bslib$tooltip(
+ # trigger = list(
+ # "Did you assess $0 (free)?",
+ # bsicons$bs_icon("info-circle")
+ # ),
+ # "Currently an experimental feature. Selecting Yes will only work
+ # with a fixed k value."
+ # ),
+ # choices = c(
+ # "Yes (constrain Q0 to observed)" = TRUE,
+ # "No (do not constrain Q0 to observed)" = FALSE
+ # ),
+ # selected = FALSE
+ # ),
+ shiny$uiOutput(
+ ns("k_value")
+ ),
+ shiny$radioButtons(
+ inputId = ns("analysis_type"),
+ label = "Analysis Type",
+ choices = list(
+ "Fit to Group (pooled)" = "Pooled",
+ "Fit to Group (mean)" = "Mean",
+ "Two Stage" = "Ind"
+ # v2 feature
+ # "Mixed Effects" = "MEM"
+ ),
+ selected = "Pooled"
+ ),
+ shiny$uiOutput(
+ ns("calculate")
+ )
+ )
+}
+
+#' @export
+sidebar_server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+
+ file_input$server("upload_demand", type = "demand")
+
+ # v2 feature
+ # output$groupname <- shiny$renderUI({
+ # if (input$group) {
+ # shiny$textInput(
+ # inputId = ns("groupcol"),
+ # label = "What is your grouping column name?"
+ # )
+ # }
+ # })
+ # shiny$observe({
+
+ output$num_free <- shiny$renderUI({
+ if (input$check_free) {
+ shiny$numericInput(
+ inputId = ns("q0_val"),
+ label = bslib$tooltip(
+ trigger = list(
+ "What number would you like to constrain Q0 to?",
+ bsicons$bs_icon("info-circle")
+ ),
+ "Currently an experimental feature. Selecting Yes will only work
+ with a fixed k value."
+ ),
+ value = 0,
+ min = 0,
+ max = 100
+ )
+ }
+ })
+
+ output$k_value <- shiny$renderUI({
+ k_choices <- if (input$check_free) {
+ validate$k_values
+ } else {
+ ks <- c(validate$k_values, "ind", "fit", "range")
+ names(ks) <- c(
+ as.character(validate$k_values),
+ "Individual k",
+ "Fitted k",
+ "Empirical range (+.5)"
+ )
+ ks
+ }
+
+ if (input$equation %in% c("Exponentiated (with k)",
+ "Exponential (with k)")) {
+ if (input$analysis_type %in% c("Pooled", "Mean", "Ind")) {
+ shiny$selectInput(
+ inputId = ns("k"),
+ label = bslib$tooltip(
+ trigger = list(
+ "Select k value ",
+ bsicons$bs_icon("info-circle")
+ ),
+ "Please refer at the documentation on the welcome page
+ for insight on selecting a k value."
+ ),
+ choices = k_choices,
+ selected = input$k
+ )
+ }
+ }
+ })
+
+ output$calculate <- shiny$renderUI({
+ shiny$req(session$userData$data$demand)
+ shiny$actionButton(
+ inputId = ns("calculate_demand"),
+ label = "Calculate"
+ )
+ })
+ })
+}
+
+#' @export
+navpanel_ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ shiny$tagList(
+ demand_data_table$ui(
+ ns("data_table_demand")
+ ),
+ demand_results_table$ui(
+ ns("results_table_demand")
+ )
+ )
+}
+
+#' @export
+navpanel_server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+
+ data_r <- shiny$reactiveValues(data_d = NULL)
+
+ shiny$observe({
+ shiny$req(session$userData$data$demand)
+ data_r$data_d <- validate$rename_cols(session$userData$data$demand) |>
+ validate$reshape_data(dat = _) |>
+ validate$retype_data(dat = _)
+ })
+
+ demand_data_table$server(
+ "data_table_demand",
+ isgroup = shiny$reactive(input$group),
+ data_r = data_r
+ )
+
+ demand_results_table$server(
+ "results_table_demand",
+ data_r = data_r,
+ eq = shiny$reactive(input$equation),
+ agg = shiny$reactive(input$analysis_type),
+ fix_q0 = shiny$reactive(input$check_free),
+ q0_val = shiny$reactive(input$q0_val),
+ kval = shiny$reactive(input$k),
+ calculate_btn = shiny$reactive(input$calculate_demand),
+ groupcol = shiny$reactive(input$group)
+ )
+ })
+}
diff --git a/app/view/demand_data_table.R b/app/view/demand_data_table.R
new file mode 100644
index 0000000..a61cf46
--- /dev/null
+++ b/app/view/demand_data_table.R
@@ -0,0 +1,322 @@
+box::use(
+ beezdemand[CheckUnsystematic, GetDescriptives, GetEmpirical],
+ bslib,
+ dplyr,
+ DT,
+ rhino,
+ shiny,
+ stats,
+)
+
+box::use(
+ app/logic/utils,
+ app/logic/validate,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ bslib$navset_card_tab(
+ title = "Data Table",
+ bslib$nav_panel(
+ id = "data",
+ "Data",
+ DT$DTOutput(ns("data_table"))
+ ),
+ bslib$nav_panel(
+ id = "descriptives",
+ "Descriptives",
+ DT$DTOutput(ns("descriptives_table"))
+ ),
+ bslib$nav_panel(
+ id = "empirical",
+ "Empirical Measures",
+ DT$DTOutput(ns("empirical_table"))
+ ),
+ bslib$nav_panel(
+ style = "padding: 5px !important;",
+ id = "systematic",
+ "Systematic Criteria",
+ bslib$card(
+ style = "border: none; ",
+ bslib$layout_sidebar(
+ fillable = TRUE,
+ sidebar = bslib$sidebar(
+ title = "Systematic Settings",
+ open = FALSE,
+ shiny$numericInput(
+ inputId = ns("deltaq"),
+ label = "Criteria #1: Relative change (DeltaQ)",
+ value = .025,
+ min = 0,
+ max = 1,
+ step = .005
+ ),
+ shiny$numericInput(
+ inputId = ns("bounce"),
+ label = "Criteria #2: Price to price increases (Bounce)",
+ value = .10,
+ min = 0,
+ max = 1,
+ step = .01
+ ),
+ shiny$numericInput(
+ inputId = ns("reversals"),
+ label = "Criteria #3: Number of reversals (Reversals)",
+ value = 0,
+ min = 0,
+ max = 4,
+ step = 1
+ ),
+ shiny$numericInput(
+ inputId = ns("ncons0"),
+ label = "Criteria #3a: Number of consecutive 0s used to flag reversals",
+ value = 2,
+ min = 0,
+ max = 4,
+ step = 1
+ )
+ ),
+ DT$DTOutput(ns("systematic_table"))
+ )
+ )
+ )
+ )
+}
+
+#' @export
+server <- function(id, isgroup = NULL, data_r) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+
+ # show data table
+ shiny$observe({
+ shiny$req(session$userData$data$demand)
+ rhino$log$info("Printing Demand Datatable")
+ output$data_table <- DT$renderDT(server = FALSE, {
+ DT$datatable(
+ data_r$data_d,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller", "FixedColumns"),
+ fillContainer = FALSE,
+ options = list(
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Demand_Data", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Demand_Data", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Demand_Data", title = NULL)
+ ),
+ fixedColumns = list(leftColumns = 1),
+ deferRender = TRUE,
+ scrollY = 250,
+ scrollX = TRUE,
+ scroller = TRUE
+ )
+ )
+ })
+ })
+
+ # show descriptives table
+ shiny$observe({
+ shiny$req(session$userData$data$demand)
+ rhino$log$info("Printing Demand Descriptives Table")
+ descriptives <- NULL
+ if (isgroup()) {
+ if (!"group" %in% colnames(data_r$data_d)) {
+ shiny$showNotification(
+ "You have selected to group the data but there is no
+ 'group' column in the data.",
+ type = "error",
+ duration = 10
+ )
+ return()
+ }
+ data_g <- data_r$data_d |>
+ dplyr$mutate(group = "aggregate")
+ data_g_e <- data_g |>
+ GetDescriptives(dat = _, bwplot = FALSE) |>
+ dplyr$mutate(group = "aggregate")
+ data_d_e <- data_r$data_d |>
+ dplyr$group_by(group) |>
+ dplyr$group_modify(~ GetDescriptives(dat = .x, bwplot = FALSE))
+ descriptives <- dplyr$bind_rows(data_g_e, data_d_e) |>
+ dplyr$relocate(group, .before = Price)
+ } else {
+ descriptives <- data_r$data_d |>
+ GetDescriptives(dat = _, bwplot = FALSE)
+ }
+
+ descriptives <- descriptives |>
+ dplyr$mutate(dplyr$across(dplyr$where(is.numeric), round, 2))
+
+ output$descriptives_table <- DT$renderDT(server = FALSE, {
+ DT$datatable(
+ descriptives,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ options = list(
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Demand_Descriptives", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Demand_Descriptives", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Demand_Descriptives", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 250,
+ scroller = TRUE
+ )
+ )
+ })
+ })
+
+ # show empirical table
+ shiny$observe({
+ shiny$req(session$userData$data$demand)
+ empirical <- NULL
+ rhino$log$info(
+ paste0(
+ "Calculating empirical demand data with grouping = ", isgroup()
+ )
+ )
+ data_g <- stats$aggregate(y ~ x, data_r$data_d, mean, na.rm = TRUE)
+ data_g$id <- "aggregate"
+ if (isgroup()) {
+ if (!"group" %in% colnames(data_r$data_d)) {
+ shiny$showNotification(
+ "You have selected to group the data but there is no
+ 'group' column in the data.",
+ type = "error",
+ duration = 10
+ )
+ return()
+ }
+ data_gg <- stats$aggregate(y ~ x + group, data_r$data_d, mean, na.rm = TRUE)
+ data_gg$id <- "group aggregate"
+ data_g_emp <- GetEmpirical(data_g) |>
+ dplyr$mutate(
+ # `GM(O)` = utils$geomean(data_g$x * data_g$y),
+ dplyr$across(dplyr$where(is.numeric), round, 1),
+ group = "aggregate") |>
+ dplyr$relocate(group, .before = id)
+ data_gg_emp <- dplyr$group_by(data_gg, group) |>
+ dplyr$group_modify(~ GetEmpirical(.x))
+ data_d_emp <- dplyr$group_by(data_r$data_d, group) |>
+ dplyr$group_modify(~ GetEmpirical(.x))
+ empirical <- dplyr$bind_rows(data_g_emp, data_gg_emp, data_d_emp)
+ } else {
+ data_g_emp <- GetEmpirical(data_g)
+ data_d_emp <- try(GetEmpirical(data_r$data_d), silent = TRUE)
+ if (inherits(data_d_emp, "try-error")) {
+ shiny$showNotification(
+ "Do you have a grouping variable you didn't specify in the 'Specs' dropdown?",
+ type = "error",
+ duration = 10
+ )
+ return()
+ } else {
+ empirical <- dplyr$bind_rows(data_g_emp, data_d_emp)
+ }
+ }
+
+ empirical <- empirical |>
+ dplyr$mutate(dplyr$across(dplyr$where(is.numeric), round, 2))
+
+ output$empirical_table <- DT$renderDT(server = FALSE, {
+ DT$datatable(
+ empirical,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ options = list(
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Demand_Empirical_Measures", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Demand_Empirical_Measures", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Demand_Empirical_Measures", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 250,
+ scroller = TRUE
+ )
+ )
+ })
+ })
+
+ # show systematic table
+ shiny$observe({
+ shiny$req(session$userData$data$demand)
+ systematic <- NULL
+ rhino$log$info("Calculating systematic criteria")
+ if (isgroup()) {
+ if (!"group" %in% colnames(data_r$data_d)) {
+ shiny$showNotification(
+ "You have selected to group the data but there is no
+ 'group' column in the data.",
+ type = "error",
+ duration = 10
+ )
+ return()
+ }
+ # for each unique group, calculate the systematic criteria
+ systematic <- data_r$data_d |>
+ dplyr$group_by(group) |>
+ dplyr$group_modify(~ CheckUnsystematic(
+ dat = .x,
+ deltaq = input$deltaq,
+ bounce = input$bounce,
+ reversals = input$reversals,
+ ncons0 = input$ncons0
+ ))
+ } else {
+ systematic <- data_r$data_d |>
+ CheckUnsystematic(
+ dat = _,
+ deltaq = input$deltaq,
+ bounce = input$bounce,
+ reversals = input$reversals,
+ ncons0 = input$ncons0
+ )
+ }
+
+ output$systematic_table <- DT$renderDT(server = FALSE, {
+ DT$datatable(
+ systematic,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller", "FixedColumns"),
+ fillContainer = FALSE,
+ options = list(
+ autoWidth = FALSE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Demand_Systematic_Criteria", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Demand_Systematic_Criteria", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Demand_Systematic_Criteria", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 250,
+ scroller = TRUE,
+ scrollX = TRUE,
+ fixedColumns = list(leftColumns = 1)
+ )
+ )
+ })
+ })
+ })
+}
diff --git a/app/view/demand_results_table.R b/app/view/demand_results_table.R
new file mode 100644
index 0000000..ee95b6c
--- /dev/null
+++ b/app/view/demand_results_table.R
@@ -0,0 +1,355 @@
+box::use(
+ beezdemand[FitCurves, theme_apa],
+ bslib,
+ dplyr,
+ DT[datatable, DTOutput, renderDT],
+ esquisse,
+ ggplot2,
+ htmltools[tagList],
+ rhino,
+ shiny,
+ stats[aggregate, coef],
+ tidyr[pivot_longer],
+)
+
+box::use(
+ app/logic/utils,
+ app/logic/validate,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ bslib$navset_card_tab(
+ title = "Results Table",
+ bslib$nav_panel(
+ id = "fitted_results",
+ "Model Results",
+ DTOutput(ns("model_results_table"))
+ ),
+ bslib$nav_panel(
+ id = "plot_results",
+ "Plots",
+ bslib$card(
+ style = "border: none; ",
+ bslib$layout_sidebar(
+ fillable = TRUE,
+ sidebar = bslib$sidebar(
+ title = "Plot Settings",
+ open = FALSE,
+ shiny$textInput(
+ inputId = ns("title"),
+ label = "Title Text",
+ value = "title"
+ ),
+ shiny$uiOutput(ns("group_name")),
+ shiny$textInput(
+ inputId = ns("xtext"),
+ label = "X-Axis Text",
+ value = "x"
+ ),
+ shiny$textInput(
+ inputId = ns("ytext"),
+ label = "Y-Axis Text",
+ value = "y"
+ ),
+ shiny$checkboxInput(
+ inputId = ns("xlog"),
+ label = "Log X-Axis"
+ ),
+ shiny$checkboxInput(
+ inputId = ns("ylog"),
+ label = "Log Y-Axis"
+ ),
+ shiny$actionButton(
+ inputId = ns("update_plot_btn"),
+ label = "Update Plot"
+ )
+ ),
+ esquisse$ggplot_output(
+ ns("plot"),
+ downloads = esquisse$downloads_labels(
+ label = esquisse$ph("download-simple"),
+ png = tagList(esquisse$ph("image"), "PNG"),
+ pdf = NULL,
+ svg = tagList(esquisse$ph("browsers"), "SVG"),
+ jpeg = tagList(esquisse$ph("image"), "JPEG"),
+ pptx = NULL,
+ more = tagList(esquisse$ph("gear"), esquisse$i18n("More options"))
+ )
+ )
+ )
+ )
+ )
+ )
+}
+
+#' @export
+server <- function(
+ id, data_r, eq = NULL, agg = NULL,
+ fix_q0 = FALSE, q0_val = NULL, groupcol = NULL,
+ mem = FALSE, kval, calculate_btn
+ ) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+ res <- shiny$reactiveValues(
+ data = NULL,
+ output = NULL,
+ results = NULL,
+ plot = NULL
+ )
+
+ shiny$observe({
+ if (kval() %in% validate$k_values) {
+ k <- as.numeric(kval())
+ } else {
+ k <- kval()
+ }
+ analysis_type <- agg()
+ eq <- if (eq() %in% "Exponentiated (with k)") {
+ "koff"
+ } else if (eq() %in% "Exponential (with k)") {
+ "hs"
+ }
+ agg <- if (is.null(agg()) | agg() %in% "Ind") NULL else agg()
+ constrainq0 <- if (is.null(q0_val()) | !fix_q0()) NULL else q0_val()
+
+ rhino$log$info(paste(
+ "Calculating demand with options: agg =", agg, "; k =", k,
+ "; eq =", eq, "; constrainq0 =", constrainq0
+ ))
+ if ((is.null(groupcol()) | !groupcol()) | analysis_type %in% "Ind") {
+ res$output <- data_r$data_d |>
+ FitCurves(
+ dat = _,
+ eq = eq,
+ agg = agg,
+ k = k,
+ constrainq0 = constrainq0,
+ detailed = TRUE
+ )
+ res$results <- res$output[[1]] |>
+ dplyr$select(!(Intensity:Pmaxe)) |>
+ dplyr$mutate(dplyr$across(dplyr$all_of(c("Q0d", "K", "R2", "Q0se", "AbsSS", "SdRes",
+ "Q0Low", "Q0High", "EV", "Omaxd", "Pmaxd",
+ "Omaxa", "Pmaxa")), \(x) round(x, 2)),
+ dplyr$across(dplyr$all_of(c("Alpha", "Alphase",
+ "AlphaLow", "AlphaHigh")), \(x) round(x, 4)))
+ } else {
+ if (!"group" %in% colnames(data_r$data_d)) {
+ shiny$showNotification(
+ "You have selected to group the data but there is no
+ 'group' column in the data.",
+ type = "error",
+ duration = 10
+ )
+ return()
+ }
+
+ res$output <- vector("list", length = 3)
+ tmp <- data_r$data_d |>
+ dplyr$group_by(group) |>
+ dplyr$group_map(~{
+ fit_result <- FitCurves(
+ dat = .x,
+ eq = eq,
+ agg = agg,
+ k = k,
+ constrainq0 = constrainq0,
+ detailed = TRUE
+ )
+ list(
+ group = dplyr$first(.x$group),
+ fit_result_1 = fit_result[[1]],
+ fit_result_3 = fit_result[[3]]
+ )
+ }, .keep = TRUE)
+ res$output[[1]] <- dplyr$bind_rows(lapply(tmp, function(x) {
+ cbind(group = x$group, x$fit_result_1)}))
+ res$output[[3]] <- dplyr$bind_rows(lapply(tmp, function(x) {
+ cbind(group = x$group, x$fit_result_3[[1]])}))
+ res$results <- res$output[[1]] |>
+ dplyr$select(!(Intensity:Pmaxe)) |>
+ dplyr$mutate(dplyr$across(dplyr$all_of(c("Q0d", "K", "R2", "Q0se", "AbsSS", "SdRes",
+ "Q0Low", "Q0High", "EV", "Omaxd", "Pmaxd",
+ "Omaxa", "Pmaxa")), \(x) round(x, 2)),
+ dplyr$across(dplyr$all_of(c("Alpha", "Alphase",
+ "AlphaLow", "AlphaHigh")), \(x) round(x, 4)))
+
+ }
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ output$model_results_table <- renderDT(server = FALSE, {
+ shiny$req(res$results)
+ datatable(
+ res$results,
+ rownames = FALSE,
+ extensions = c('Buttons', "FixedColumns"),
+ fillContainer = TRUE,
+ options = list(
+ pageLength = 20,
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Btipl',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Demand_ModelResults", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Demand_ModelResults", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Demand_ModelResults", title = NULL)
+ ),
+ fixedColumns = list(leftColumns = 1)
+ )
+ )
+ })
+
+ shiny$observe({
+ if (groupcol()) {
+ if (!"group" %in% colnames(data_r$data_d)) {
+ shiny$showNotification(
+ "You have selected to group the data but there is no
+ 'group' column in the data.",
+ type = "error",
+ duration = 10
+ )
+ return()
+ }
+ output$group_name <- shiny$renderUI({
+ shiny$textInput(
+ inputId = ns("legend_title"),
+ label = "Legend Title",
+ value = "group"
+ )
+ })
+ } else {
+ output$group_name <- shiny$renderUI({
+ shiny$div()
+ })
+ }
+ analysis_type <- agg()
+ res$plot <- NULL
+ pt_shape <- 21
+ pt_fill <- "white"
+ pt_size <- 3
+ if (analysis_type %in% c("Mean")) {
+ if (!groupcol()) {
+ data_g <- aggregate(y ~ x, data_r$data_d, mean, na.rm = TRUE)
+ res$plot <- data_g |>
+ ggplot2$ggplot(ggplot2$aes(x = x, y = y)) +
+ ggplot2$geom_line(
+ ggplot2$aes(x = x, y = y),
+ data = res$output[[3]][[1]]
+ ) +
+ ggplot2$geom_point(shape = pt_shape, fill = pt_fill, size = pt_size) +
+ theme_apa()
+ } else {
+ data_g <- aggregate(y ~ x + group, data_r$data_d, mean, na.rm = TRUE)
+ res$plot <- data_g |>
+ ggplot2$ggplot(ggplot2$aes(x = x, y = y, group = group)) +
+ ggplot2$geom_line(
+ ggplot2$aes(x = x, y = y, color = group),
+ data = res$output[[3]]
+ ) +
+ ggplot2$geom_point(
+ ggplot2$aes(color = group),
+ shape = pt_shape,
+ fill = pt_fill,
+ size = pt_size) +
+ theme_apa()
+ }
+ } else if (analysis_type %in% "Ind") {
+ res$plot <- data_r$data_d |>
+ ggplot2$ggplot(ggplot2$aes(x = x, y = y, group = id)) +
+ ggplot2$geom_line(
+ ggplot2$aes(x = x, y = y, group = id),
+ data = dplyr$bind_rows(res$output[[3]]),
+ alpha = 0.33
+ ) +
+ theme_apa()
+ if (length(unique(data_r$data_d$id)) < 51) {
+ res$plot <- data_r$data_d |>
+ ggplot2$ggplot(ggplot2$aes(x = x, y = y)) +
+ ggplot2$geom_line(
+ ggplot2$aes(x = x, y = y),
+ data = dplyr$bind_rows(res$output[[3]])
+ ) +
+ ggplot2$geom_point(shape = pt_shape, fill = pt_fill, size = pt_size) +
+ theme_apa() +
+ ggplot2$facet_wrap(~ id)
+ }
+ } else {
+ if (!groupcol()) {
+ res$plot <- data_r$data_d |>
+ ggplot2$ggplot(ggplot2$aes(x = x, y = y)) +
+ ggplot2$geom_line(
+ ggplot2$aes(x = x, y = y),
+ data = res$output[[3]][[1]]
+ ) +
+ ggplot2$geom_point(shape = pt_shape, fill = pt_fill, size = pt_size) +
+ theme_apa()
+ } else {
+ res$plot <- data_r$data_d |>
+ ggplot2$ggplot(ggplot2$aes(x = x, y = y, group = group)) +
+ ggplot2$geom_line(
+ ggplot2$aes(x = x, y = y, color = group),
+ data = res$output[[3]]
+ ) +
+ ggplot2$geom_point(
+ ggplot2$aes(color = group),
+ shape = pt_shape,
+ fill = pt_fill,
+ size = pt_size) +
+ theme_apa()
+ }
+ }
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ shiny$observe({
+ if (is.null(res$plot)) return()
+ res$plot <- res$plot +
+ ggplot2$xlab(input$xtext) +
+ ggplot2$ylab(input$ytext) +
+ ggplot2$ggtitle(input$title)
+
+ if (input$xlog) {
+ res$plot <- res$plot +
+ ggplot2$scale_x_continuous(
+ transform = "pseudo_log"
+ )
+ } else {
+ res$plot <- res$plot +
+ ggplot2$scale_x_continuous()
+ }
+
+ if (input$ylog) {
+ res$plot <- res$plot +
+ ggplot2$scale_y_continuous(
+ transform = "pseudo_log"
+ )
+ } else {
+ res$plot <- res$plot +
+ ggplot2$scale_y_continuous()
+ }
+
+ if (groupcol()) {
+ res$plot <- res$plot +
+ ggplot2$guides(color = ggplot2$guide_legend(title = input$legend_title))
+ }
+
+ if (agg() != "Ind" | length(unique(data_r$data_d$id)) > 51) {
+ res$plot <- res$plot +
+ utils$add_shiny_logo(utils$watermark_tr)
+ }
+
+ esquisse$render_ggplot(
+ id = "plot",
+ expr = res$plot,
+ filename = "shinybeez-demand"
+ )
+ }) |>
+ shiny$bindEvent(c(calculate_btn(), input$update_plot_btn))
+ })
+}
diff --git a/app/view/discounting.R b/app/view/discounting.R
new file mode 100644
index 0000000..b1b63b7
--- /dev/null
+++ b/app/view/discounting.R
@@ -0,0 +1,168 @@
+box::use(
+ bsicons,
+ bslib,
+ shiny,
+)
+
+box::use(
+ app/logic/validate,
+ app/view/discounting_data_table,
+ app/view/discounting_results_table,
+ app/view/file_input,
+)
+
+#' @export
+sidebar_ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ shiny$tagList(
+ file_input$ui(ns("discounting")),
+
+ shiny$selectInput(
+ inputId = ns("calc_discounting"),
+ label = "What are you scoring?",
+ choices = c("27-Item MCQ",
+ "5.5 Trial Delay Discounting",
+ "5.5 Trial Probability Discounting")
+ ),
+ shiny$uiOutput(
+ outputId = ns("mcq_imputation")
+ ),
+ shiny$uiOutput(
+ outputId = ns("mcq_trans")
+ ),
+ shiny$uiOutput(
+ ns("calculate")
+ )
+ )
+}
+
+#' @export
+sidebar_server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+
+ file_input$server(
+ "discounting",
+ type = "discounting"
+ )
+
+ shiny$observe({
+ shiny$req(session$userData$data$discounting)
+
+ output$mcq_imputation <- shiny$renderUI({
+ if (input$calc_discounting == "27-Item MCQ") {
+ shiny$tagList(
+ shiny$selectInput(
+ inputId = ns("imputation"),
+ label = bslib$tooltip(
+ trigger = list(
+ "Impute missing values with:",
+ bsicons$bs_icon("info-circle")
+ ),
+ "GGM = Group Geometric Mean imputation; INN = Item Nearest
+ Neighbor imputation. Please
+ refer to the documentation for more information."
+ ),
+ choices = c(
+ "None" = "none",
+ "GGM" = "GGM",
+ "INN (no random)" = "INN",
+ "INN (random)" = "INN_random"
+ ),
+ selected = "None"
+ )
+ )
+ } else {
+ shiny$div()
+ }
+ })
+
+ output$mcq_trans <- shiny$renderUI({
+ if (input$calc_discounting == "27-Item MCQ") {
+ shiny$tagList(
+ shiny$selectInput(
+ inputId = ns("trans"),
+ label = bslib$tooltip(
+ trigger = list(
+ "Transform k values using:",
+ bsicons$bs_icon("info-circle")
+ ),
+ "None = No transformation;
+ Log = Log transformation (base 10);
+ Ln = Natural log (base e)."
+ ),
+ choices = c(
+ "None" = "none",
+ "Log" = "log",
+ "Ln" = "ln"
+ ),
+ selected = "None"
+ )
+ )
+ } else {
+ shiny$div()
+ }
+ })
+ })
+
+ output$calculate <- shiny$renderUI({
+ shiny$req(session$userData$data$discounting)
+ shiny$actionButton(
+ inputId = ns("calculate_discounting"),
+ label = "Calculate"
+ )
+ })
+ })
+}
+
+#' @export
+navpanel_ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ shiny$tagList(
+ discounting_data_table$ui(
+ ns("data_table_discounting")
+ ),
+ discounting_results_table$ui(
+ ns("results_table_discounting")
+ )
+ )
+}
+
+#' @export
+navpanel_server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+
+ data_r <- shiny$reactiveValues(data_d = NULL)
+
+ shiny$observe({
+ shiny$req(session$userData$data$discounting)
+ if (ncol(session$userData$data$discounting) == 28) {
+ data_r$data_d <- validate$reshape_data(
+ session$userData$data$discounting,
+ type = "discounting"
+ )
+ } else {
+ data_r$data_d <- session$userData$data$discounting
+ }
+
+ })
+
+ discounting_data_table$server(
+ "data_table_discounting",
+ data_r = data_r,
+ type = shiny$reactive(input$calc_discounting)
+ )
+
+ discounting_results_table$server(
+ "results_table_discounting",
+ data_r = data_r,
+ type = shiny$reactive(input$calc_discounting),
+ imputation = shiny$reactive(input$imputation),
+ trans = shiny$reactive(input$trans),
+ calculate_btn = shiny$reactive(input$calculate_discounting)
+ )
+ })
+}
diff --git a/app/view/discounting_data_table.R b/app/view/discounting_data_table.R
new file mode 100644
index 0000000..4520f37
--- /dev/null
+++ b/app/view/discounting_data_table.R
@@ -0,0 +1,102 @@
+box::use(
+ bslib,
+ dplyr,
+ DT,
+ rhino,
+ shiny,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+ bslib$navset_card_tab(
+ title = "Data Table",
+ bslib$nav_panel(
+ id = "data",
+ "Data",
+ DT$DTOutput(ns("data_table"))
+ ),
+ bslib$nav_panel(
+ id = "missings",
+ "Missing Summary",
+ DT$DTOutput(ns("missings_table"))
+ )
+ )
+}
+
+#' @export
+server <- function(id, data_r, type = NULL) {
+ shiny$moduleServer(id, function(input, output, session) {
+
+ shiny$observe({
+ shiny$req(session$userData$data$discounting)
+
+ if (type() %in% "27-Item MCQ" & any(is.na((data_r$data_d$response)))) {
+ shiny$showNotification(
+ "There appears to be missing data in the 27-Item MCQ. Please be
+ cautious when interpreting the results and choosing an appropriate
+ imputation method.",
+ type = "error",
+ duration = 10
+ )
+ }
+
+ rhino$log$info("Printing Discounting Datatable")
+ output$data_table <- DT$renderDT(server = FALSE, {
+ DT$datatable(
+ data_r$data_d,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ autoHideNavigation = TRUE,
+ options = list(
+ pageLength = 10,
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Data", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Data", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Data", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 300,
+ scroller = TRUE
+ )
+ )
+ })
+
+ output$missings_table <- DT$renderDT(server = FALSE, {
+ missings <- data_r$data_d |>
+ dplyr$group_by(subjectid) |>
+ dplyr$summarise(prop_missing = round(sum(is.na("response")) / dplyr$n(), 2)) |>
+ dplyr$ungroup()
+ DT$datatable(
+ missings,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ autoHideNavigation = TRUE,
+ options = list(
+ pageLength = 10,
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Missings", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Missings", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Missings", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 300,
+ scroller = TRUE
+ )
+ )
+ })
+ })
+ })
+}
diff --git a/app/view/discounting_results_table.R b/app/view/discounting_results_table.R
new file mode 100644
index 0000000..5bdc65d
--- /dev/null
+++ b/app/view/discounting_results_table.R
@@ -0,0 +1,382 @@
+box::use(
+ beezdemand,
+ beezdiscounting[...],
+ bslib,
+ dplyr,
+ DT,
+ esquisse,
+ htmltools,
+ ggplot2,
+ rhino,
+ shiny,
+ stats,
+ tidyr,
+)
+
+box::use(
+ app/logic/utils,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ shiny$uiOutput(
+ ns("results_box")
+ )
+}
+
+#' @export
+server <- function(
+ id, data_r, type,
+ imputation = "none", trans = "none",
+ calculate_btn
+ ) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+ res <- shiny$reactiveValues(
+ data = NULL,
+ results = NULL,
+ summary = NULL,
+ propplot = NULL,
+ boxplot = NULL
+ )
+
+ # populate the Results Table and tabs based on data and type
+ shiny$observe({
+ shiny$req(data_r$data_d)
+ shiny$req(type())
+ output$results_box <- shiny$renderUI(
+ if (type() == "27-Item MCQ" & !("I16" %in% names(data_r$data_d))) {
+ bslib$navset_card_tab(
+ id = ns("tabs"),
+ title = "Results Table",
+ bslib$nav_panel(
+ id = ns("results"),
+ "Results",
+ DT$DTOutput(ns("results_table"))
+ ),
+ bslib$nav_panel(
+ id = ns("summary"),
+ "Summary Statistics",
+ DT$DTOutput(ns("summary_table"))
+ ),
+ bslib$nav_panel(
+ id = ns("correlation"),
+ "Correlations",
+ DT$DTOutput(ns("correlation_table"))
+ ),
+ bslib$nav_panel(
+ id = ns("imputed_data"),
+ "Imputed Data",
+ DT$DTOutput(ns("imputed_data_table"))
+ ),
+ bslib$nav_panel(
+ id = ns("prop_sir"),
+ "Prop SIR/SS",
+ esquisse$ggplot_output(
+ ns("prop_plot"),
+ downloads = esquisse$downloads_labels(
+ label = esquisse$ph("download-simple"),
+ png = htmltools$tagList(esquisse$ph("image"), "PNG"),
+ pdf = NULL,
+ svg = htmltools$tagList(esquisse$ph("browsers"), "SVG"),
+ jpeg = htmltools$tagList(esquisse$ph("image"), "JPEG"),
+ pptx = NULL,
+ more = htmltools$tagList(esquisse$ph("gear"), esquisse$i18n("More options"))
+ )
+ ),
+ ),
+ bslib$nav_panel(
+ id = ns("boxplots"),
+ "Boxplot",
+ esquisse$ggplot_output(
+ ns("boxplot_plot"),
+ downloads = esquisse$downloads_labels(
+ label = esquisse$ph("download-simple"),
+ png = htmltools$tagList(esquisse$ph("image"), "PNG"),
+ pdf = NULL,
+ svg = htmltools$tagList(esquisse$ph("browsers"), "SVG"),
+ jpeg = htmltools$tagList(esquisse$ph("image"), "JPEG"),
+ pptx = NULL,
+ more = htmltools$tagList(esquisse$ph("gear"), esquisse$i18n("More options"))
+ )
+ ),
+ )
+ )
+ } else {
+ bslib$navset_card_tab(
+ id = ns("tabs"),
+ title = "Results Table",
+ bslib$nav_panel(
+ id = ns("results"),
+ "Results",
+ DT$DTOutput(ns("results_table"))
+ )
+ )
+ }
+ )
+ })
+
+ shiny$observe({
+ shiny$req(data_r$data_d)
+ # null out any objects left over
+ res$data <- NULL
+ res$results <- NULL
+ res$summary <- NULL
+ res$propplot <- NULL
+ res$boxplot <- NULL
+ trans <- trans()
+ if (type() == "27-Item MCQ" & !("I16" %in% names(data_r$data_d))) {
+ if (imputation() == "none" || is.null(imputation())) {
+ rhino$log$info("Calculating MCQ27 without imputation")
+ res$results <- score_mcq27(data_r$data_d, trans = trans)
+ res$data <- data_r$data_d
+ } else if (imputation() == "GGM") {
+ rhino$log$info("Calculating MCQ27 with GGM imputation")
+ res$results <- score_mcq27(data_r$data_d, impute_method = "GGM", trans = trans)
+ res$data <- data_r$data_d
+ } else if (imputation() == "INN") {
+ rhino$log$info("Calculating MCQ27 with INN imputation")
+ result <- score_mcq27(data_r$data_d, impute_method = "INN", return_data = TRUE, trans = trans)
+ res$results <- result$results
+ res$data <- result$data
+ } else if (imputation() == "INN_random") {
+ rhino$log$info("Calculating MCQ27 with INN random imputation")
+ result <- score_mcq27(data_r$data_d, impute_method = "INN", random = TRUE, return_data = TRUE, trans = trans)
+ res$results <- result$results
+ res$data <- result$data
+ }
+ # round results
+ res$results <- res$results |>
+ dplyr$mutate_at(dplyr$vars(dplyr$contains("_k")), ~ round(., 6)) |>
+ dplyr$mutate_at(dplyr$vars(dplyr$contains("_prop")), ~ round(., 3)) |>
+ dplyr$mutate_at(dplyr$vars(dplyr$contains("_cons")), ~ round(., 3))
+ # make summary table
+ res$summary <- summarize_mcq(res$results)
+ # make sir prop plot
+ if (any(names(res$data) %in% "newresponse")) {
+ res$propplot <- res$data |>
+ dplyr$mutate(response = newresponse) |>
+ prop_ss() |>
+ plot() +
+ beezdemand$theme_apa() +
+ utils$add_shiny_logo(utils$watermark_tr)
+ } else {
+ res$propplot <- res$data |>
+ prop_ss() |>
+ plot() +
+ beezdemand$theme_apa() +
+ utils$add_shiny_logo(utils$watermark_tr)
+ }
+ # make boxplot
+ res$boxplot <- res$results |>
+ plot() +
+ beezdemand$theme_apa() +
+ ggplot2$scale_x_discrete(
+ labels = c(
+ "Small k", "Medium k",
+ "Large k", "Geomean k",
+ "Overall k"
+ )
+ ) +
+ utils$add_shiny_logo(utils$watermark_tr)
+ } else if (type() == "5.5 Trial Delay Discounting") {
+ rhino$log$info("Calculating 5.5 Trial DD")
+ res$results <- calc_dd(data_r$data_d)
+ } else if (type() == "5.5 Trial Probability Discounting") {
+ rhino$log$info("Calculating 5.5 Trial PD")
+ res$results <- calc_pd(data_r$data_d)
+ }
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ output$results_table <- DT$renderDT(server = FALSE, {
+ shiny$req(res$results)
+ if (type() == "27-Item MCQ"){
+ DT$datatable(
+ res$results,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller", "FixedColumns"),
+ fillContainer = TRUE,
+ options = list(
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Results", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Results", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Results", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 300,
+ scroller = TRUE,
+ scrollX = TRUE,
+ fixedColumns = list(leftColumns = 1)
+ )
+ ) |>
+ DT$formatStyle(
+ c(
+ 'overall_consistency',
+ 'small_consistency',
+ 'medium_consistency',
+ 'large_consistency',
+ 'composite_consistency'
+ ),
+ backgroundColor = DT$styleInterval(.75, c('#FFAEB9', ''))
+ )
+ } else {
+ DT$datatable(
+ res$results,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller", "FixedColumns"),
+ fillContainer = TRUE,
+ options = list(
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Results", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Results", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Results", title = NULL)
+ ),
+ deferRender = FALSE,
+ scrollY = 300,
+ scroller = TRUE,
+ scrollX = TRUE,
+ fixedColumns = list(leftColumns = 1)
+ )
+ )
+ }
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ output$summary_table <- DT$renderDT(server = FALSE, {
+ shiny$req(res$summary)
+ DT$datatable(
+ res$summary,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ autoHideNavigation = TRUE,
+ options = list(
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ columnDefs = list(
+ list(className = 'dt-center', targets = 1:3),
+ list(className = 'dt-right', targets = 0)
+ ),
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Summary", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Summary", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Summary", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 250,
+ scroller = TRUE
+ )
+ ) |>
+ DT$formatRound(columns = c("Mean", "SD", "SEM"), digits = 4) |>
+ DT$formatStyle(
+ columns = "Metric",
+ textAlign = 'right'
+ ) |>
+ DT$formatStyle(
+ columns = c("Mean", "SD", "SEM"),
+ textAlign = 'center'
+ )
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ output$correlation_table <- DT$renderDT(server = FALSE, {
+ shiny$req(res$results)
+ correlations <- NULL
+ correlations <- res$results |>
+ dplyr$select(contains(c("small_k", "medium_k", "large_k"))) |>
+ stats$cor(use = "pairwise.complete.obs") |>
+ round(2)
+ DT$datatable(
+ data = correlations,
+ rownames = TRUE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ autoHideNavigation = TRUE,
+ options = list(
+ pageLength = 3,
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bt',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Summary", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Summary", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Summary", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 200,
+ scroller = TRUE
+ )
+ )
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ shiny$observe({
+ if (imputation() %in% c("INN", "INN_random")) {
+ output$imputed_data_table <- DT$renderDT(server = FALSE, {
+ shiny$req(res$data)
+ DT$datatable(
+ res$data,
+ rownames = FALSE,
+ extensions = c('Buttons', "Scroller"),
+ fillContainer = FALSE,
+ autoHideNavigation = TRUE,
+ options = list(
+ pageLength = 10,
+ autoWidth = TRUE,
+ ordering = TRUE,
+ dom = 'Bti',
+ buttons = list(
+ list(extend = 'copy'),
+ list(extend = 'print'),
+ list(extend = 'csv', filename = "ShinyBeez_Discounting_Imputed_Data", title = NULL),
+ list(extend = 'excel', filename = "ShinyBeez_Discounting_Imputed_Data", title = NULL),
+ list(extend = 'pdf', filename = "ShinyBeez_Discounting_Imputed_Data", title = NULL)
+ ),
+ deferRender = TRUE,
+ scrollY = 250,
+ scroller = TRUE
+ )
+ )
+ })
+ }
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ shiny$observe({
+ shiny$req(res$propplot)
+ esquisse$render_ggplot(
+ id = "prop_plot",
+ expr = res$propplot,
+ filename = "shinybeez-discounting-prop-sir")
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ shiny$observe({
+ shiny$req(res$boxplot)
+ esquisse$render_ggplot(
+ id = "boxplot_plot",
+ expr = res$boxplot,
+ filename = "shinybeez-discounting-k-boxplots")
+ }) |>
+ shiny$bindEvent(calculate_btn())
+
+ })
+}
diff --git a/app/view/file_input.R b/app/view/file_input.R
new file mode 100644
index 0000000..39f3cc8
--- /dev/null
+++ b/app/view/file_input.R
@@ -0,0 +1,138 @@
+box::use(
+ bsicons,
+ bslib,
+ rhino,
+ shiny,
+ tools,
+ vroom,
+)
+
+box::use(
+ app/logic/validate,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+ shiny$tagList(
+ shiny$fileInput(
+ # style = "padding-bottom: -10px;",
+ inputId = ns("upload"),
+ label = bslib$tooltip(
+ trigger = list(
+ "Upload your file (csv or tsv) ",
+ bsicons$bs_icon("info-circle")
+ ),
+ "If you are unsure of the format, please use the downloadable
+ templates on the welcome page."
+ ),
+ accept = c(".csv", ".tsv")
+ ),
+ # v2 feature
+ # actionButton(
+ # style = "margin-bottom: 15px; margin-top: -15px;",
+ # inputId = ns("load_ex_data"),
+ # label = "Or Load Example Data"
+ # ),
+ )
+}
+
+#' @export
+server <- function(id, type = "demand") {
+ shiny$moduleServer(id, function(input, output, session) {
+
+ shiny$observe({
+ ext <- tools$file_ext(input$upload$name)
+ if (type == "demand") {
+ rhino$log$info(paste0("Reading demand file: ", input$upload$name))
+ tmp <- switch(ext,
+ csv = vroom$vroom(
+ input$upload$datapath,
+ delim = ",",
+ show_col_types = FALSE
+ ),
+ tsv = vroom$vroom(
+ input$upload$datapath,
+ delim = "\t",
+ show_col_types = FALSE
+ )
+ # validate("Invalid file; Please upload a .csv or .tsv file")
+ )
+ chk_data <- validate$check_data(tmp, type = "demand")
+ if (is.character(chk_data)) {
+ shiny$showNotification(
+ paste(
+ "Data are not in the correct format. Please refer to the documentation.",
+ chk_data
+ ),
+ type = "error",
+ duration = 10
+ )
+ return()
+ } else {
+ session$userData$data$demand <- tmp
+ }
+ } else if (type == "discounting") {
+ rhino$log$info(paste0("Reading discounting file: ", input$upload$name))
+ tmp <- switch(ext,
+ csv = vroom$vroom(
+ input$upload$datapath,
+ delim = ",",
+ show_col_types = FALSE
+ ),
+ tsv = vroom$vroom(
+ input$upload$datapath,
+ delim = "\t",
+ show_col_types = FALSE
+ )
+ # validate("Invalid file; Please upload a .csv or .tsv file")
+ )
+
+ chk_data <- validate$check_data(tmp, type = "discounting")
+ if (is.character(chk_data)) {
+ shiny$showNotification(
+ paste(
+ "Data are not in the correct format. Please refer to the documentation.",
+ chk_data
+ ),
+ type = "error",
+ duration = 10
+ )
+ return()
+ } else {
+ session$userData$data$discounting <- tmp
+ }
+ }
+ }) |>
+ shiny$bindEvent(input[["upload"]])
+
+ # v2 feature
+ # observe({
+ # if (type == "demand") {
+ # print(paste0("Loading example data: ", type))
+ # session$userData$data$demand <- read.csv("app/static/data/example_data.csv",
+ # check.names = FALSE)
+ # # print(session$userData$data$demand)
+ # } else {
+ #
+ # if (type == "27-Item MCQ") {
+ # # session$userData$data$discounting <- readRDS("app/static/data/mcq27.rds")
+ # session$userData$data$discounting <- readRDS("app/static/data/mcq27.rds")
+ #
+ # } else if (type == "5.5 Trial Delay Discounting") {
+ # # session$userData$data$discounting <- readRDS("app/static/data/five.fivetrial_dd.rds")
+ # session$userData$data$discounting <- readRDS("app/static/data/five.fivetrial_dd.rds")
+ #
+ # } # else if (type == "5.5 Trial Probability Discounting") {
+ # # session$userData$data$discounting <- readRDS("app/static/data/five.fivetrial_pd.rds")
+ # # return(readRDS("app/static/data/five.fivetrial_pd.rds"))
+ #
+ # }
+ # }) |>
+ # bindEvent(input[["load_ex_data"]])
+ })
+}
+
+# .on_unload <- function(ns) {
+# log$info("Closing")
+# }
diff --git a/app/view/info.R b/app/view/info.R
new file mode 100644
index 0000000..f010ae0
--- /dev/null
+++ b/app/view/info.R
@@ -0,0 +1,55 @@
+box::use(
+ bslib,
+ shiny,
+)
+
+#' @export
+ui <- function(id) {
+ ns <- shiny$NS(id)
+ bslib$nav_item(
+ shiny$actionLink(ns("info"), "", icon = shiny$icon("info-circle"))
+ )
+}
+
+#' @export
+server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ shiny$observeEvent(input$info, {
+ shiny$showModal(shiny$modalDialog(
+ title = "Helpful information about the app",
+ size = "l",
+ shiny$tags$img(
+ src = "static/img/hex-shinybeez.png",
+ height = 115, width = 100
+ ),
+ shiny$HTML(
+ paste0(
+ "
+
+
+ Please refer to the welcome page for an overview on
+ using the app. We plan to include quick reference items
+ here in the future.
+ "
+ )
+ ),
+ # v2 future addition
+ # shiny$tabsetPanel(
+ # id = "modal_tabs",
+ # shiny$tabPanel(
+ # title = "Demand",
+ # value = "tab_demand",
+ # ),
+ # shiny$tabPanel(
+ # title = "Discounting",
+ # value = "tab_discounting"
+ # )
+ # ),
+ footer = shiny$tagList(
+ shiny$modalButton('Close')
+ ),
+ easyClose = TRUE
+ ))
+ })
+ })
+}
diff --git a/app/view/welcome.R b/app/view/welcome.R
new file mode 100644
index 0000000..ef860f8
--- /dev/null
+++ b/app/view/welcome.R
@@ -0,0 +1,766 @@
+box::use(
+ readr,
+ shiny,
+)
+
+#' @export
+sidebar_ui <- function(id) {
+ shiny$includeHTML("app/static/html/welcome_sidebar.html")
+}
+
+#' @export
+body_ui <- function(id) {
+ ns <- shiny$NS(id)
+
+ shiny$tags$html(
+ shiny$tags$body(
+ ## about section
+ shiny$tags$div(
+ id = "about",
+ shiny$HTML(
+ paste0(
+ "
+ About shinybeez
+ shinybeez is a a free and open-source web application
+ designed to streamline behavioral economic analyses of demand and
+ discounting data. shinybeez provides an intuitive interface for
+ conducting descriptive and inferential analyses without requiring
+ programming expertise. The app integrates features previously
+ scattered across multiple tools, allowing you to upload data,
+ calculate empirical measures, identify systematic datasets, fit
+ nonlinear models, and visualize results - all within a single
+ platform. shinybeez supports various analysis types for demand
+ data and can score multiple discounting tasks, including
+ the 27-Item Monetary Choice Questionnaire.
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "citation",
+ shiny$HTML(
+ paste0(
+ "
+ Citing shinybeez
+ If you use any part of shinybeez in your work, please cite it:
+
+
+ Kaplan, B. A. & Reed. D. D. (under review). Shinybeez: A Shiny app
+ for behavioral economic easy demand and discounting.
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "contact",
+ shiny$HTML(
+ paste0(
+ "
+ Contact and Issues
+ If you have any questions, comments, or suggestions, please contact
+ Brent Kaplan at
+ bkaplan.ku@gmail.com . If you encounter any bugs or
+ issues, please report them on the Github respository's
+ issues
+ page.
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "templates",
+ shiny$HTML(
+ paste0(
+ "
+ Downloadable Templates
+
+ Demand templates
+ Wide Format
+ Data collected from, say, Qualtrics, tend to come in what is
+ called 'wide' format
+ (see Hadley Wickham's paper on tidy data
+ for more on the 'wide' and 'long' data). 'Wide' format data typically
+ consists of one row per participant and each price (or whatever the independent
+ variable is) is a column.
+ By default, shinybeez takes in this style of data.
+
+
+
+ Example demand data formatted in the wide template.
+
+ "
+ )
+ ),
+ shiny$downloadButton(
+ ns("download_demand_wide"),
+ style = "margin-bottom: 10px;",
+ "Demand template (wide format)"
+ ),
+ shiny$HTML(
+ paste0(
+ "
+
+
+ Long Format
+ You may also provide data in 'long' format. In order to specify
+ this non-default format, open in the 'Specs' panel on the sidebar
+ of the 'Demand' tab and select 'Long' under 'Data in long or
+ wide format?' You can download a template for long format here:
+
+
+
+ Example demand data formatted in the long template.
+
+ "
+ )
+ ),
+ shiny$downloadButton(
+ ns("download_demand_long"),
+ style = "margin-bottom: 10px;",
+ "Demand template (long format)"
+ ),
+ shiny$HTML(
+ paste0(
+ "
+
+
+ Wide Format (one grouping variable)
+ shinybeez also has the ability (currently ) to accept
+ one grouping argument. In order to specify this behavior, open
+ the 'Specs' panel on the sidebar of the 'Demand' tab and select
+ the box next to 'Do you have a grouping variable?'
+
+
+ When you upload your data, make sure to your grouping column is
+ called 'group' in the data. Future releases of shinybeez will
+ allow you to specify the name of your grouping column.
+
+
+
+ Example demand data with one grouping variable formatted in the wide template.
+
+ "
+ )
+ ),
+ shiny$downloadButton(
+ ns("download_demand_wide_group"),
+ style = "margin-bottom: 10px;",
+ "Demand template (wide format, one grouping column)"
+ ),
+ shiny$HTML(
+ paste0(
+ "
+
+
+ Long Format (one grouping variable)
+ shinybeez also has the ability (currently ) to accept
+ one grouping argument. In order to specify this behavior, open
+ the 'Specs' panel on the sidebar of the 'Demand' tab and select
+ the box next to 'Do you have a grouping variable?'
+
+
+ When you upload your data, make sure to your grouping column is
+ called 'group' in the data. Future releases of shinybeez will
+ allow you to specify the name of your grouping column.
+
+
+ Example demand data with one grouping variable formatted in the long template.
+
+ "
+ )
+ ),
+ shiny$downloadButton(
+ ns("download_demand_long_group"),
+ style = "margin-bottom: 10px;",
+ "Demand template (long format, one grouping column)"
+ ),
+ shiny$HTML(
+ paste0(
+ "
+
+
+ Discounting templates
+ Wide Format - 27-Item Monetary Choice Questionnaire
+ shinybeez allows you to analyze data from the 27-Item
+ Monetary Choice Questionnaire in wide format.
+ The first column contains the subject
+ id and each subsequent column contains a response (0 for SS or
+ 1 for LL).
+
+ "
+ )
+ ),
+ shiny$downloadButton(
+ ns("download_27mcq_wide"),
+ style = "margin-top: 10px; margin-bottom: 10px;",
+ "27-Item MCQ template (wide format)"
+ ),
+ shiny$HTML(
+ paste0(
+ "
+
+
+ Long Format - 27-Item Monetary Choice Questionnaire
+ shinybeez allows you to analyze data from the 27-Item
+ Monetary Choice Questionnaire when provided in long format.
+ The first column contains the subject
+ id, the second column contains the question id, and the third
+ column contains the response.
+
+ "
+ )
+ ),
+ shiny$downloadButton(
+ ns("download_27mcq_long"),
+ style = "margin-top: 10px; margin-bottom: 10px;",
+ "27-Item MCQ template (long format)"
+ )
+ ),
+ ## demand section
+ shiny$tags$div(
+ id = "overview-demand",
+ shiny$HTML(
+ paste0(
+ "
+
+ Demand
+
+ Overview
+ Upon clicking the demand tab, you will see a collapsable sidebar where
+ a data file is selected for upload, as well as additional specifications
+ related to analyzing the data. Currently, the available options to select
+ are whether a grouping variable should be integrated into the results,
+ whether Q0 should be constrained to a specific value, select whether
+ to use the exponentiated
+ (Koffarnus et al, 2015 ) or
+ exponential
+ (Hursh & Silberberg, 2008 )
+ demand equation, select
+ what k value method should be used, and the analysis type (discussed
+ below). In the main panel of the app are two boxes with embedded tabs.
+ The box at the top contains information related to the data (i.e.,
+ information that does not require any curve fitting) and the box at the
+ bottom contains information related to the results of the curve fitting.
+ Once data are uploaded, the top box is populated with information
+ (by default, the uploaded data is displayed), and results
+ in the bottom box are populated after you click the 'Calculate' button.
+
+ An important feature to note is that each of the tables displayed in the
+ demand page can be exported in the following ways: 'Copy' will copy the
+ contents of the table to the clipboard; 'Print' will open an option to print
+ the table through the device print interface; 'CSV' will prompt saving
+ the table as a comma-separated text file; 'Excel' will prompt saving the table
+ as a Microsoft Excel file with a .xslx extension; 'PDF' will prompt to download
+ the table as a file with a .pdf extention.
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "systematic-demand",
+ shiny$HTML(
+ paste0(
+ "
+ Systematic Criteria
+ The last tab contains a table of criteria used for identifying
+ systematic datasets according to the
+ Stein et al. (2015) algorithm.
+ The reported values include the number of total criteria passed and whether
+ each individual criterion was met (passed) or not (fail). For each criterion,
+ the value is provided. Finally, the number of total positive values is
+ included in the final column. Note that this tab has additional features.
+ When you click to open the collapsable sidebar within this tab ,
+ you will be
+ presented with adjustments that can be made to the criterion values
+ outlined in Stein et al. (2015) .
+ These values
+ are set at the defaults outlined in
+ Stein et al. (2015)
+ and changing these values will update the table. When a grouping variable is
+ specified, a group identificatio ncolumn is added, but the results do not change
+ as these criteria are only applied at the individual level.
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "regression-demand",
+ shiny$HTML(
+ paste0(
+ "
+ Nonlinear Regression
+ The bottom box on the demand page has two tabs and displays the results of
+ the nonlinear curve fitting process in a tabular format (Model Results tab) and
+ graphical format (Plots tab). In the Model Results tab, a table is displayed
+ with the following information: equation, estimated Q0 (including
+ standard error and confidence intervals), k value, estimated
+ alpha (including standard error and confidence intervals), R2 , model
+ absolute sum of squares, standard deviation of the residuals, essential value,
+ derived Omax , derived Pmax , and
+ analytic Omax and analytic Pmax
+ (see
+ Gilroy, 2019 ). The last column of the table provides
+ a quick note on whether the model converged, and the results for a model that
+ has indication other than convergence should be interpreted with caution.
+
+
+ The aforementioned model results are applied to the data depending on the
+ analysis type chosen in the sidebar of the demand page. When the Fit to Group
+ (pooled) analysis type is chosen, a single regression model is fit to the
+ entire sample (all data points), and any dependence or clustering is ignored.
+ When the Fit to Group (mean) analysis
+ type is chosen, data are first aggregated by taking the mean of the y values at
+ each x value and a regression line is fit to those points. When the
+ Two Stage analysis type is chosen, a regression
+ model is fit to each individual subject separately. When a grouping variable
+ is specified the analysis types Fit to Group (pooled) and Fit to Group (mean)
+ will fit curves as just described except within each group. There is no
+ effect on whether a grouping variable is specified when the Two Stage analysis
+ type is selected.
+
+
+ The second tab in the results box contains a plot of the results based
+ on the settings specified in the sidebar, especially Analysis Type. Before
+ describing and showing what these plots look like, we describe some
+ plot customization settings in the collapsible side bar in the plot tab.
+ You may customize the plot title, the x-axis title, the y-axis title, and
+ (when applicable) the group legend title. In addition, you can specify
+ whether to (pseudo)log transform either the x or y axes.
+ Then, you may output the plot directly as a png, svg, or jpeg file, or
+ display the plot in the viewer window and choose additional formats such
+ as pdf, bmp, eps, or tiff. In this plot viewer, you may specify specific
+ height and width values, as well as file name.
+
+
+ When Fit to Group (pooled) analysis type is selected, all data points
+ will display with the best-fit line. Similarly, when
+ a group is specified the points and lines will be colored according to the
+ groups. When Fit to Group (mean) analysis type is specified,
+ the preprocessed average data points are displayed with the best fit line
+ and when a group is specified, the points and lines will be
+ colored according to the groups. Finally, when
+ Two Stage analysis type is selected, plots will be displayed in one of two
+ ways. When there are 50 or fewer IDs (e.g., respondents), each ID will get
+ their own subplot and when there are more than 50 IDs all
+ curves and points will be shown on a single plot.
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "cites-demand",
+ shiny$HTML(
+ paste0(
+ "
+ Suggested Citations
+
+ Underyling R package driving demand functions:
+
+
+
+
+ Kaplan, B. A., Gilroy, S. P., Reed, D. D., Koffarnus, M. N., &
+ Hursh, S. R. (2019). The R package beezdemand : Behavioral Economic
+ Easy Demand. Perspectives on Behavior Science,
+ 42 (1), 163-180.
+ https://doi.org/10.1007/s40614-018-00187-7
+
+
+
+ Systematic criteria:
+
+
+ Stein, J. S., Koffarnus, M. N., Snider, S. E., Quisenberry, A. J.,
+ & Bickel, W. K. (2015). Identification and management of
+ nonsystematic purchase task data: Toward best practice.
+ Experimental and Clinical Psychopharmacology, 23 (5),
+ 377-386.
+ https://doi.org/10.1037/pha0000020
+
+
+ Exponentiated demand equation:
+
+
+ Koffarnus, M. N., Franck, C. T., Stein, J. S., & Bickel, W. K.
+ (2015). A modified exponential behavioral economic demand model
+ to better describe consumption data. Experimental and Clinical
+ Psychopharmacology, 23 (6), 504-512.
+
+ https://doi.org/10.1037/pha0000045
+
+
+ Exponential demand equation:
+
+
+ Hursh, S. R., & Silberberg, A. (2008). Economic demand and
+ essential value. Psychological Review, 115 (1),
+ 186-198.
+ https://doi.org/10.1037/0033-295X.115.1.186
+
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "faq-demand",
+ shiny$HTML(
+ paste0(
+ "
+ Frequently Asked Questions
+
+ Why is the F-test for group demand curves not available?
+ Over time, with the increased awareness of mixed effects models,
+ we believe that using the 'Extra Sum of Squares F-test' is probably
+ not a good idea to test for differences in group-level demand curves
+ when the demand curves are fit using fixed effects only (i.e., no
+ random effects). The issue boils down to the purpose of group-level
+ only modeling. We believe that while this approach may be beneficial
+ to ascertain an overall trend in the data and to describe
+ the data, you should not use the results for subsequent
+ inferential tests, such as the F-test. Whether you use the
+ pooled approach or the fit to means approach, both of these
+ techniques disregard the clustering and interdependency of points
+ within an individual. For a lengthier discussion, please see
+
+ Kaplan et al. (2021) .
+
+ Where are the other equations?
+ Currenty shinybeez supports two of the most popular demand
+ models. This limitation is in part due to the beezemand
+ R package currently supporting only those two models. We expect
+ additional models to be implemented in the near future.
+ How can I conduct cross-price elasticity analyses?
+ This is currently not supported in shinybeez . However,
+ we are working on it and plan to have that feature in a future
+ release
+ "
+ )
+ ),
+ ),
+ ## discounting section
+ shiny$tags$div(
+ id = "overview-discounting",
+ shiny$HTML(
+ paste0(
+ "
+
+ Discounting
+
+ Overview
+
+ shinybeez allows you to analyze data from the
+ 27-Item Monetary Choice Questionnaire and from the
+ minute discounting tasks (as administered via the Qualtrics
+ template).
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "mcq",
+ shiny$HTML(
+ paste0(
+ "
+ 27-Item Monetary Choice Questionnaire
+
+ The analyses and outputs for scoring the 27-Item MCQ are nearly
+ identical to that of the 21- and 27-Item Monetary Choice
+ Questionnaire Automated Scorer developed in Microsoft Excel (Kaplan et al.,
+ 2016 ; Kaplan et
+ al., 2014 ). When you upload your spreadsheet in the specified
+ format, two additional settings will appear in the sidebar. The
+ first is a selector for imputing missing values (described next),
+ and the second is a selector for transforming resulting k values
+ by: 'none' (no transformation), 'log' (log base 10), and 'ln' (log
+ base e or natural log). These selectors will have a result on the
+ output in the bottom box of the Discounting page but will have no
+ effect on the top box of the discounting page that displays the
+ uploaded data and the proportion of missing values for each
+ subject ID.
+
+
+
Treatment of missing values
+ Missing values can be dealt with according to the methods outlined by
+
+ Yeh et al. (2023) : 'none' (no imputation); 'GGM' (group
+ geometric mean); 'INN (no random)' (item nearest neighbor); and
+ 'INN (random)'
+ (item nearest neighbor with a random component). We will briefly
+ discuss these
+ methods, but direct readers to
+
+ Yeh et al. (2023) for a full,
+ comprehensive treatment of the approaches. After calculating the
+ small, medium, and large k values for each person, the 'GGM'
+ option calculates the geometric (i.e., composite) k value of the
+ three amount sets so long as one of the amount sets has been
+ calculated . For the 'INN (no random), the missing value will
+ be imputed as the value from the adjacent small, medium, or large
+ response(s) so long as the non-missing responses are the same. For
+ the 'INN (random)', the same procedure is used except in the case
+ of non-identical responses, the missing response will be replaced
+ by either a 0 (i.e., SIR/SS) or 1 (i.e., LDR/LL) chosen from a
+ binomial distribution with equal probabilities. Given the
+ randomness of this latter approach, a table of the provided data
+ along with an additional column with the new, imputed response is
+ provided in the bottom box of the Discounting page. For a more
+ complete description and comparisons of these methods, see the
+ paper by
+ Yeh et al. (2023) .
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "5trial",
+ shiny$HTML(
+ paste0(
+ "
+ 5-trial discounting task
+
+ shinybeez also has the ability to automatically score results from
+ the delay and probability minute discounting tasks
+ provided in the Qualtrics Minute Discounting Task template
+ (see
+ Koffarnus et al., 2017 ;
+ Koffarnus et al., 2021 ).
+ The Results
+ box displays an exportable table of the results including: ResponseId;
+ question index; ordered question number; page timing metadata;
+ response (SS or LL) for each question index; whether the respondent's
+ responses were flagged by the attention question (see
+ Koffarnus et al., 2021
+ for additional information about this specific task); k value; and Effective
+ Delay 50 value (see
+ Yoon & Higgins, 2008 ).
+ In the case of the probability
+ minute task, the h value (instead of the k value), Effective Θ50 value
+ (instead of Effective Delay 50 value), and Effective Probability 50 value are
+ displayed.
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "cites-discounting",
+ shiny$HTML(
+ paste0(
+ "
+ Suggested Citations
+
+ Underyling R package driving discounting functions:
+
+
+ Kaplan, B. A. (2023). beezdiscounting : Behavioral
+ Economic Easy Discounting. R package version 0.3.1,
+
+ https://CRAN.R-project.org/package=beezdiscounting
+
+
+ Describing scoring of the 21- and 27-Item Monetary Choice Questionnaires:
+
+
+
+
+ Kaplan, B. A., Amlung, M., Reed, D. D., Jarmolowicz, D. P.,
+ McKerchar, T. L., & Lemley, S. M. (2016). Automating scoring of
+ delay discounting for the 21- and 27-Item Monetary Choice
+ Questionnaires. The Behavior Analyst, 39 (2),
+ 293-304.
+ https://doi.org/10.1007/s40614-016-0070-9
+
+
+ Seminal article introducing the 27-Item Monetary Choice Questionnaire:
+
+
+ Kirby, K. N., Petry, N. M., & Bickel, W. K. (1999).
+ Heroin addicts have higher discount rates for delayed rewards
+ than non-drug-using controls. Journal of Experimental
+ Psychology: General, 128 (1), 78-87.
+
+ https://doi.org/10.1037//0096-3445.128.1.78
+
+
+ Imputing missing data in the 27-Item Monetary Choice Questionnaire:
+
+
+ Yeh, Y.-H., Tegge, A. N., Freitas-Lemos, R., Myerson, J., Green, L.,
+ & Bickel, W. K. (2023). Discounting of delayed rewards: Missing
+ data imputation for the 21- and 27-item monetary choice
+ questionnaires. PLOS ONE, 18 (10),
+ e0292258.
+ https://doi.org/10.1371/journal.pone.0292258
+
+
+ Minute discounting task:
+
+
+ Koffarnus, M. N., & Bickel, W. K. (2014). A 5-trial adjusting
+ delay discounting task: Accurate discount rates in less than 60
+ seconds. Experimental and Clinical Psychopharmacology,
+ 22 (3), 222-228.
+ https://doi.org/10.1037/a0035973
+
+
+ Koffarnus, M. N., Rzeszutek, M. J., & Kaplan, B. A. (2021).
+ Additional discounting rates in less than one minute: Task variants
+ for probability and a wider range of delays.
+ https://doi.org/10.13140/RG.2.2.31281.92000
+
+
+ Koffarnus, M. N., Kaplan, B. A., & Stein, J. S. (2017). User guide
+ for Qualtrics minute discounting template.
+
+ https://doi.org/10.13140/RG.2.2.26495.79527
+
+ "
+ )
+ )
+ ),
+ shiny$tags$div(
+ id = "faq-discounting",
+ shiny$HTML(
+ paste0(
+ "
+ Frequently Asked Questions
+
+ Why does the Kirby et al table say .025 but the results of
+ shinybeez say something different?
+ This is because the original paper by Kirby and colleagues
+ presented rounded k values. shinybeez and the underlying
+ R package beezdiscounting , as well as the 21- and 27-Item
+ Monetary Choice Questionnaire Automated Scorers do not provide
+ the rounded values. For more information about how those k values
+ are calculated, please see the article by
+
+ Kaplan et al. (2016) where they discuss derivation of k
+ values in the context of the 27-Item MCQ.
+
+ How can I calculate Area Under the Curve or
+ conduct nonlinear regression on discounting?
+ We are rapidly working on adding these functionalities to
+ shinybeez , as well as the underlying R package
+ beezdiscounting . Please check back soon for new features!
+
+ "
+ )
+ )
+ ),
+ ## references resources section
+ shiny$tags$div(
+ id = "resources",
+ shiny$HTML(
+ paste0(
+ "
+ Helpful Resources
+
+ Applying mixed effects models for behavioral economic demand:
+
+
+
+
+ Kaplan, B. A., Franck, C. T., McKee, K., Gilroy, S. P., &
+ Koffarnus, M. N. (2021). Applying mixed-effects modeling to
+ behavioral economic demand: An introduction. Perspectives on
+ Behavior Science, 44 (2), 333-358.
+ https://doi.org/10.1007/s40614-021-00299-7
+
+
+ Effective Delay 50 in discounting:
+
+
+ Yoon, J. H., & Higgins, S. T. (2008). Turning k on its head:
+ Comments on use of an ED50 in delay discounting research. Drug
+ and Alcohol Dependence, 95 (1), 169-172.
+
+ https://doi.org/10.1016/j.drugalcdep.2007.12.011
+
+
+ Statistics in behavior analysis:
+
+
+ Young, M. E. (2018). A place for statistics in behavior analysis.
+ Behavior Analysis: Research and Practice, 18 (2),
+ 193-202.
+
+ https://doi.org/10.1037/bar0000099
+
+
+ "
+ )
+ )
+ )
+ )
+ )
+}
+
+
+#' @export
+body_server <- function(id) {
+ shiny$moduleServer(id, function(input, output, session) {
+ ns <- session$ns
+
+ output$download_demand_wide <- shiny$downloadHandler(
+ filename <- function() {
+ paste("Shinybeez-template-demand-wide.csv")
+ },
+ content <- function(file) {
+ file.copy("app/static/data/templates/template_demand_wide.csv", file)
+ }
+ )
+
+ output$download_demand_long <- shiny$downloadHandler(
+ filename <- function() {
+ paste("Shinybeez-template-demand-long.csv")
+ },
+ content <- function(file) {
+ file.copy("app/static/data/templates/template_demand_long.csv", file)
+ }
+ )
+
+ output$download_demand_wide_group <- shiny$downloadHandler(
+ filename <- function() {
+ paste("Shinybeez-template-demand-wide-grouping.csv")
+ },
+ content <- function(file) {
+ file.copy("app/static/data/templates/template_demand_wide_onegroup.csv", file)
+ }
+ )
+
+ output$download_demand_long_group <- shiny$downloadHandler(
+ filename <- function() {
+ paste("Shinybeez-template-demand-long-grouping.csv")
+ },
+ content <- function(file) {
+ file.copy("app/static/data/templates/template_demand_long_onegroup.csv", file)
+ }
+ )
+
+ output$download_27mcq_wide <- shiny$downloadHandler(
+ filename <- function() {
+ paste("Shinybeez-template-27item-mcq-wide.csv")
+ },
+ content <- function(file) {
+ file.copy("app/static/data/templates/template_mcq27_wide.csv", file)
+ }
+ )
+
+ output$download_27mcq_long <- shiny$downloadHandler(
+ filename <- function() {
+ paste("Shinybeez-template-27item-mcq-long.csv")
+ },
+ content <- function(file) {
+ file.copy("app/static/data/templates/template_mcq27_long.csv", file)
+ }
+ )
+ })
+}
diff --git a/config.yml b/config.yml
new file mode 100644
index 0000000..be3728c
--- /dev/null
+++ b/config.yml
@@ -0,0 +1,3 @@
+default:
+ rhino_log_level: !expr Sys.getenv("RHINO_LOG_LEVEL", "INFO")
+ rhino_log_file: !expr Sys.getenv("RHINO_LOG_FILE", "logs/log.txt")
diff --git a/dependencies.R b/dependencies.R
new file mode 100644
index 0000000..af8617e
--- /dev/null
+++ b/dependencies.R
@@ -0,0 +1,21 @@
+# This file allows packrat (used by rsconnect during deployment) to pick up dependencies.
+library(assertthat)
+library(beezdemand)
+library(beezdiscounting)
+library(broom)
+library(broom.mixed)
+library(bsicons)
+library(bslib)
+library(dplyr)
+library(DT)
+library(esquisse)
+library(ggplot2)
+library(grid)
+library(plotly)
+library(png)
+library(reactlog)
+library(readr)
+library(rhino)
+library(shiny)
+library(tidyr)
+library(vroom)
diff --git a/renv.lock b/renv.lock
new file mode 100644
index 0000000..654952d
--- /dev/null
+++ b/renv.lock
@@ -0,0 +1,2420 @@
+{
+ "R": {
+ "Version": "4.4.1",
+ "Repositories": [
+ {
+ "Name": "CRAN",
+ "URL": "https://packagemanager.posit.co/cran/latest"
+ }
+ ]
+ },
+ "Packages": {
+ "BH": {
+ "Package": "BH",
+ "Version": "1.84.0-0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "a8235afbcd6316e6e91433ea47661013"
+ },
+ "DT": {
+ "Package": "DT",
+ "Version": "0.33",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "crosstalk",
+ "htmltools",
+ "htmlwidgets",
+ "httpuv",
+ "jquerylib",
+ "jsonlite",
+ "magrittr",
+ "promises"
+ ],
+ "Hash": "64ff3427f559ce3f2597a4fe13255cb6"
+ },
+ "GPArotation": {
+ "Package": "GPArotation",
+ "Version": "2024.3-1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "stats"
+ ],
+ "Hash": "b8b658ec0d7a6a55d9d01e00e3cafd20"
+ },
+ "KernSmooth": {
+ "Package": "KernSmooth",
+ "Version": "2.23-24",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats"
+ ],
+ "Hash": "9f33a1ee37bbe8919eb2ec4b9f2473a5"
+ },
+ "MASS": {
+ "Package": "MASS",
+ "Version": "7.3-60.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "graphics",
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "2f342c46163b0b54d7b64d1f798e2c78"
+ },
+ "Matrix": {
+ "Package": "Matrix",
+ "Version": "1.7-0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "graphics",
+ "grid",
+ "lattice",
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "1920b2f11133b12350024297d8a4ff4a"
+ },
+ "PKI": {
+ "Package": "PKI",
+ "Version": "0.1-14",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "base64enc"
+ ],
+ "Hash": "f5b9c6b2f62f1fa3dd53fd1ddccbb241"
+ },
+ "R.cache": {
+ "Package": "R.cache",
+ "Version": "0.16.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.methodsS3",
+ "R.oo",
+ "R.utils",
+ "digest",
+ "utils"
+ ],
+ "Hash": "fe539ca3f8efb7410c3ae2cf5fe6c0f8"
+ },
+ "R.methodsS3": {
+ "Package": "R.methodsS3",
+ "Version": "1.8.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "278c286fd6e9e75d0c2e8f731ea445c8"
+ },
+ "R.oo": {
+ "Package": "R.oo",
+ "Version": "1.26.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.methodsS3",
+ "methods",
+ "utils"
+ ],
+ "Hash": "4fed809e53ddb5407b3da3d0f572e591"
+ },
+ "R.utils": {
+ "Package": "R.utils",
+ "Version": "2.12.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.methodsS3",
+ "R.oo",
+ "methods",
+ "tools",
+ "utils"
+ ],
+ "Hash": "3dc2829b790254bfba21e60965787651"
+ },
+ "R6": {
+ "Package": "R6",
+ "Version": "2.5.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "470851b6d5d0ac559e9d01bb352b4021"
+ },
+ "RColorBrewer": {
+ "Package": "RColorBrewer",
+ "Version": "1.1-3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "45f0398006e83a5b10b72a90663d8d8c"
+ },
+ "Rcpp": {
+ "Package": "Rcpp",
+ "Version": "1.0.13",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "methods",
+ "utils"
+ ],
+ "Hash": "f27411eb6d9c3dada5edd444b8416675"
+ },
+ "anytime": {
+ "Package": "anytime",
+ "Version": "0.3.9",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "BH",
+ "R",
+ "Rcpp"
+ ],
+ "Hash": "74a64813f17b492da9c6afda6b128e3d"
+ },
+ "askpass": {
+ "Package": "askpass",
+ "Version": "1.2.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "sys"
+ ],
+ "Hash": "cad6cf7f1d5f6e906700b9d3e718c796"
+ },
+ "assertthat": {
+ "Package": "assertthat",
+ "Version": "0.2.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "tools"
+ ],
+ "Hash": "50c838a310445e954bc13f26f26a6ecf"
+ },
+ "backports": {
+ "Package": "backports",
+ "Version": "1.5.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "e1e1b9d75c37401117b636b7ae50827a"
+ },
+ "base64enc": {
+ "Package": "base64enc",
+ "Version": "0.1-3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "543776ae6848fde2f48ff3816d0628bc"
+ },
+ "beezdemand": {
+ "Package": "beezdemand",
+ "Version": "0.1.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "ggplot2",
+ "nls2",
+ "nlsr",
+ "nlstools",
+ "optimx",
+ "reshape2",
+ "stats"
+ ],
+ "Hash": "93d44fa6c9b14cf3e760d86b96ab62e1"
+ },
+ "beezdiscounting": {
+ "Package": "beezdiscounting",
+ "Version": "0.3.2",
+ "Source": "GitHub",
+ "RemoteType": "github",
+ "RemoteHost": "api.github.com",
+ "RemoteUsername": "brentkaplan",
+ "RemoteRepo": "beezdiscounting",
+ "RemoteRef": "master",
+ "RemoteSha": "e77fd8880bacab1bf7279fefda43652c44565f47",
+ "Requirements": [
+ "R",
+ "dplyr",
+ "ggplot2",
+ "gtools",
+ "magrittr",
+ "psych",
+ "stringr",
+ "tidyr"
+ ],
+ "Hash": "61ebcaccab3bebcf04afda2eb85fb492"
+ },
+ "bit": {
+ "Package": "bit",
+ "Version": "4.0.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "d242abec29412ce988848d0294b208fd"
+ },
+ "bit64": {
+ "Package": "bit64",
+ "Version": "4.0.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "bit",
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "9fe98599ca456d6552421db0d6772d8f"
+ },
+ "box": {
+ "Package": "box",
+ "Version": "1.2.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "tools"
+ ],
+ "Hash": "d94049c1d9446b0abb413fde9e82a505"
+ },
+ "box.linters": {
+ "Package": "box.linters",
+ "Version": "0.10.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cli",
+ "fs",
+ "glue",
+ "lintr",
+ "purrr",
+ "rlang",
+ "stringr",
+ "treesitter",
+ "treesitter.r",
+ "withr",
+ "xfun",
+ "xml2",
+ "xmlparsedata"
+ ],
+ "Hash": "603dde48648c89e2f721c125efd50aa6"
+ },
+ "brio": {
+ "Package": "brio",
+ "Version": "1.1.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "c1ee497a6d999947c2c224ae46799b1a"
+ },
+ "broom": {
+ "Package": "broom",
+ "Version": "1.0.6",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "backports",
+ "dplyr",
+ "generics",
+ "glue",
+ "lifecycle",
+ "purrr",
+ "rlang",
+ "stringr",
+ "tibble",
+ "tidyr"
+ ],
+ "Hash": "a4652c36d1f8abfc3ddf4774f768c934"
+ },
+ "broom.mixed": {
+ "Package": "broom.mixed",
+ "Version": "0.2.9.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "broom",
+ "coda",
+ "dplyr",
+ "forcats",
+ "furrr",
+ "methods",
+ "nlme",
+ "purrr",
+ "stringr",
+ "tibble",
+ "tidyr"
+ ],
+ "Hash": "c4e6c14e4d92d7b2d29ab0758184774a"
+ },
+ "bsicons": {
+ "Package": "bsicons",
+ "Version": "0.1.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "htmltools",
+ "rlang",
+ "utils"
+ ],
+ "Hash": "d8f892fbd94d0b9b1f6d688b05b8633c"
+ },
+ "bslib": {
+ "Package": "bslib",
+ "Version": "0.8.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "base64enc",
+ "cachem",
+ "fastmap",
+ "grDevices",
+ "htmltools",
+ "jquerylib",
+ "jsonlite",
+ "lifecycle",
+ "memoise",
+ "mime",
+ "rlang",
+ "sass"
+ ],
+ "Hash": "b299c6741ca9746fb227debcb0f9fb6c"
+ },
+ "cachem": {
+ "Package": "cachem",
+ "Version": "1.1.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "fastmap",
+ "rlang"
+ ],
+ "Hash": "cd9a672193789068eb5a2aad65a0dedf"
+ },
+ "callr": {
+ "Package": "callr",
+ "Version": "3.7.6",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "processx",
+ "utils"
+ ],
+ "Hash": "d7e13f49c19103ece9e58ad2d83a7354"
+ },
+ "cellranger": {
+ "Package": "cellranger",
+ "Version": "1.1.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "rematch",
+ "tibble"
+ ],
+ "Hash": "f61dbaec772ccd2e17705c1e872e9e7c"
+ },
+ "class": {
+ "Package": "class",
+ "Version": "7.3-22",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "MASS",
+ "R",
+ "stats",
+ "utils"
+ ],
+ "Hash": "f91f6b29f38b8c280f2b9477787d4bb2"
+ },
+ "classInt": {
+ "Package": "classInt",
+ "Version": "0.4-10",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "KernSmooth",
+ "R",
+ "class",
+ "e1071",
+ "grDevices",
+ "graphics",
+ "stats"
+ ],
+ "Hash": "f5a40793b1ae463a7ffb3902a95bf864"
+ },
+ "cli": {
+ "Package": "cli",
+ "Version": "3.6.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "b21916dd77a27642b447374a5d30ecf3"
+ },
+ "clipr": {
+ "Package": "clipr",
+ "Version": "0.8.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "utils"
+ ],
+ "Hash": "3f038e5ac7f41d4ac41ce658c85e3042"
+ },
+ "coda": {
+ "Package": "coda",
+ "Version": "0.19-4.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "lattice"
+ ],
+ "Hash": "af436915c590afc6fffc3ce3a5be1569"
+ },
+ "codetools": {
+ "Package": "codetools",
+ "Version": "0.2-20",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "61e097f35917d342622f21cdc79c256e"
+ },
+ "colorspace": {
+ "Package": "colorspace",
+ "Version": "2.1-1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "graphics",
+ "methods",
+ "stats"
+ ],
+ "Hash": "d954cb1c57e8d8b756165d7ba18aa55a"
+ },
+ "commonmark": {
+ "Package": "commonmark",
+ "Version": "1.9.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "5d8225445acb167abf7797de48b2ee3c"
+ },
+ "config": {
+ "Package": "config",
+ "Version": "0.3.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "yaml"
+ ],
+ "Hash": "8b7222e9d9eb5178eea545c0c4d33fc2"
+ },
+ "cpp11": {
+ "Package": "cpp11",
+ "Version": "0.4.7",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "5a295d7d963cc5035284dcdbaf334f4e"
+ },
+ "crayon": {
+ "Package": "crayon",
+ "Version": "1.5.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "grDevices",
+ "methods",
+ "utils"
+ ],
+ "Hash": "859d96e65ef198fd43e82b9628d593ef"
+ },
+ "crosstalk": {
+ "Package": "crosstalk",
+ "Version": "1.2.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R6",
+ "htmltools",
+ "jsonlite",
+ "lazyeval"
+ ],
+ "Hash": "ab12c7b080a57475248a30f4db6298c0"
+ },
+ "curl": {
+ "Package": "curl",
+ "Version": "5.2.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "411ca2c03b1ce5f548345d2fc2685f7a"
+ },
+ "cyclocomp": {
+ "Package": "cyclocomp",
+ "Version": "1.1.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "callr",
+ "crayon",
+ "desc",
+ "remotes",
+ "withr"
+ ],
+ "Hash": "cdc4a473222b0112d4df0bcfbed12d44"
+ },
+ "data.table": {
+ "Package": "data.table",
+ "Version": "1.15.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "methods"
+ ],
+ "Hash": "8ee9ac56ef633d0c7cab8b2ca87d683e"
+ },
+ "datamods": {
+ "Package": "datamods",
+ "Version": "1.5.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "classInt",
+ "data.table",
+ "htmltools",
+ "phosphoricons",
+ "reactable",
+ "readxl",
+ "rio",
+ "rlang",
+ "shiny",
+ "shinyWidgets",
+ "shinybusy",
+ "tibble",
+ "toastui",
+ "tools",
+ "writexl"
+ ],
+ "Hash": "c84c8e67ef8319a17503b76a9f7fd18f"
+ },
+ "desc": {
+ "Package": "desc",
+ "Version": "1.4.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "cli",
+ "utils"
+ ],
+ "Hash": "99b79fcbd6c4d1ce087f5c5c758b384f"
+ },
+ "diffobj": {
+ "Package": "diffobj",
+ "Version": "0.3.5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "crayon",
+ "methods",
+ "stats",
+ "tools",
+ "utils"
+ ],
+ "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8"
+ },
+ "digest": {
+ "Package": "digest",
+ "Version": "0.6.36",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "fd6824ad91ede64151e93af67df6376b"
+ },
+ "downlit": {
+ "Package": "downlit",
+ "Version": "0.4.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "brio",
+ "desc",
+ "digest",
+ "evaluate",
+ "fansi",
+ "memoise",
+ "rlang",
+ "vctrs",
+ "withr",
+ "yaml"
+ ],
+ "Hash": "45a6a596bf0108ee1ff16a040a2df897"
+ },
+ "dplyr": {
+ "Package": "dplyr",
+ "Version": "1.1.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "cli",
+ "generics",
+ "glue",
+ "lifecycle",
+ "magrittr",
+ "methods",
+ "pillar",
+ "rlang",
+ "tibble",
+ "tidyselect",
+ "utils",
+ "vctrs"
+ ],
+ "Hash": "fedd9d00c2944ff00a0e2696ccf048ec"
+ },
+ "e1071": {
+ "Package": "e1071",
+ "Version": "1.7-14",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "class",
+ "grDevices",
+ "graphics",
+ "methods",
+ "proxy",
+ "stats",
+ "utils"
+ ],
+ "Hash": "4ef372b716824753719a8a38b258442d"
+ },
+ "esquisse": {
+ "Package": "esquisse",
+ "Version": "2.0.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "bslib",
+ "datamods",
+ "downlit",
+ "ggplot2",
+ "grDevices",
+ "htmltools",
+ "jsonlite",
+ "phosphoricons",
+ "rlang",
+ "rstudioapi",
+ "scales",
+ "shiny",
+ "shinyWidgets",
+ "shinybusy"
+ ],
+ "Hash": "ac07eff19c6047cf806f4c73edb75ca2"
+ },
+ "evaluate": {
+ "Package": "evaluate",
+ "Version": "0.24.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "methods"
+ ],
+ "Hash": "a1066cbc05caee9a4bf6d90f194ff4da"
+ },
+ "fansi": {
+ "Package": "fansi",
+ "Version": "1.0.6",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "utils"
+ ],
+ "Hash": "962174cf2aeb5b9eea581522286a911f"
+ },
+ "farver": {
+ "Package": "farver",
+ "Version": "2.1.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "680887028577f3fa2a81e410ed0d6e42"
+ },
+ "fastmap": {
+ "Package": "fastmap",
+ "Version": "1.2.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "aa5e1cd11c2d15497494c5292d7ffcc8"
+ },
+ "fontawesome": {
+ "Package": "fontawesome",
+ "Version": "0.5.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "htmltools",
+ "rlang"
+ ],
+ "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d"
+ },
+ "forcats": {
+ "Package": "forcats",
+ "Version": "1.0.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "glue",
+ "lifecycle",
+ "magrittr",
+ "rlang",
+ "tibble"
+ ],
+ "Hash": "1a0a9a3d5083d0d573c4214576f1e690"
+ },
+ "foreign": {
+ "Package": "foreign",
+ "Version": "0.8-86",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "550170303dbb19d07b2bcc288068e7dc"
+ },
+ "fs": {
+ "Package": "fs",
+ "Version": "1.6.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "methods"
+ ],
+ "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a"
+ },
+ "furrr": {
+ "Package": "furrr",
+ "Version": "0.3.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "future",
+ "globals",
+ "lifecycle",
+ "purrr",
+ "rlang",
+ "vctrs"
+ ],
+ "Hash": "da7a4c32196cb2262a41dd5a25d486ff"
+ },
+ "future": {
+ "Package": "future",
+ "Version": "1.34.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "digest",
+ "globals",
+ "listenv",
+ "parallel",
+ "parallelly",
+ "utils"
+ ],
+ "Hash": "475771e3edb711591476be387c9a8c2e"
+ },
+ "generics": {
+ "Package": "generics",
+ "Version": "0.1.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "methods"
+ ],
+ "Hash": "15e9634c0fcd294799e9b2e929ed1b86"
+ },
+ "ggplot2": {
+ "Package": "ggplot2",
+ "Version": "3.5.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "MASS",
+ "R",
+ "cli",
+ "glue",
+ "grDevices",
+ "grid",
+ "gtable",
+ "isoband",
+ "lifecycle",
+ "mgcv",
+ "rlang",
+ "scales",
+ "stats",
+ "tibble",
+ "vctrs",
+ "withr"
+ ],
+ "Hash": "44c6a2f8202d5b7e878ea274b1092426"
+ },
+ "globals": {
+ "Package": "globals",
+ "Version": "0.16.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "codetools"
+ ],
+ "Hash": "2580567908cafd4f187c1e5a91e98b7f"
+ },
+ "glue": {
+ "Package": "glue",
+ "Version": "1.7.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "methods"
+ ],
+ "Hash": "e0b3a53876554bd45879e596cdb10a52"
+ },
+ "gtable": {
+ "Package": "gtable",
+ "Version": "0.3.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "glue",
+ "grid",
+ "lifecycle",
+ "rlang"
+ ],
+ "Hash": "e18861963cbc65a27736e02b3cd3c4a0"
+ },
+ "gtools": {
+ "Package": "gtools",
+ "Version": "3.9.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "588d091c35389f1f4a9d533c8d709b35"
+ },
+ "haven": {
+ "Package": "haven",
+ "Version": "2.5.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "cpp11",
+ "forcats",
+ "hms",
+ "lifecycle",
+ "methods",
+ "readr",
+ "rlang",
+ "tibble",
+ "tidyselect",
+ "vctrs"
+ ],
+ "Hash": "9171f898db9d9c4c1b2c745adc2c1ef1"
+ },
+ "highr": {
+ "Package": "highr",
+ "Version": "0.11",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "xfun"
+ ],
+ "Hash": "d65ba49117ca223614f71b60d85b8ab7"
+ },
+ "hms": {
+ "Package": "hms",
+ "Version": "1.1.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "lifecycle",
+ "methods",
+ "pkgconfig",
+ "rlang",
+ "vctrs"
+ ],
+ "Hash": "b59377caa7ed00fa41808342002138f9"
+ },
+ "htmltools": {
+ "Package": "htmltools",
+ "Version": "0.5.8.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "base64enc",
+ "digest",
+ "fastmap",
+ "grDevices",
+ "rlang",
+ "utils"
+ ],
+ "Hash": "81d371a9cc60640e74e4ab6ac46dcedc"
+ },
+ "htmlwidgets": {
+ "Package": "htmlwidgets",
+ "Version": "1.6.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "grDevices",
+ "htmltools",
+ "jsonlite",
+ "knitr",
+ "rmarkdown",
+ "yaml"
+ ],
+ "Hash": "04291cc45198225444a397606810ac37"
+ },
+ "httpuv": {
+ "Package": "httpuv",
+ "Version": "1.6.15",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "Rcpp",
+ "later",
+ "promises",
+ "utils"
+ ],
+ "Hash": "d55aa087c47a63ead0f6fc10f8fa1ee0"
+ },
+ "httr": {
+ "Package": "httr",
+ "Version": "1.4.7",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "curl",
+ "jsonlite",
+ "mime",
+ "openssl"
+ ],
+ "Hash": "ac107251d9d9fd72f0ca8049988f1d7f"
+ },
+ "isoband": {
+ "Package": "isoband",
+ "Version": "0.2.7",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "grid",
+ "utils"
+ ],
+ "Hash": "0080607b4a1a7b28979aecef976d8bc2"
+ },
+ "jquerylib": {
+ "Package": "jquerylib",
+ "Version": "0.1.4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "htmltools"
+ ],
+ "Hash": "5aab57a3bd297eee1c1d862735972182"
+ },
+ "jsonlite": {
+ "Package": "jsonlite",
+ "Version": "1.8.8",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "methods"
+ ],
+ "Hash": "e1b9c55281c5adc4dd113652d9e26768"
+ },
+ "knitr": {
+ "Package": "knitr",
+ "Version": "1.48",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "evaluate",
+ "highr",
+ "methods",
+ "tools",
+ "xfun",
+ "yaml"
+ ],
+ "Hash": "acf380f300c721da9fde7df115a5f86f"
+ },
+ "labeling": {
+ "Package": "labeling",
+ "Version": "0.4.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "graphics",
+ "stats"
+ ],
+ "Hash": "b64ec208ac5bc1852b285f665d6368b3"
+ },
+ "later": {
+ "Package": "later",
+ "Version": "1.3.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "Rcpp",
+ "rlang"
+ ],
+ "Hash": "a3e051d405326b8b0012377434c62b37"
+ },
+ "lattice": {
+ "Package": "lattice",
+ "Version": "0.22-6",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "graphics",
+ "grid",
+ "stats",
+ "utils"
+ ],
+ "Hash": "cc5ac1ba4c238c7ca9fa6a87ca11a7e2"
+ },
+ "lazyeval": {
+ "Package": "lazyeval",
+ "Version": "0.2.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "d908914ae53b04d4c0c0fd72ecc35370"
+ },
+ "lifecycle": {
+ "Package": "lifecycle",
+ "Version": "1.0.4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cli",
+ "glue",
+ "rlang"
+ ],
+ "Hash": "b8552d117e1b808b09a832f589b79035"
+ },
+ "lintr": {
+ "Package": "lintr",
+ "Version": "3.1.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "backports",
+ "codetools",
+ "cyclocomp",
+ "digest",
+ "glue",
+ "knitr",
+ "rex",
+ "stats",
+ "utils",
+ "xml2",
+ "xmlparsedata"
+ ],
+ "Hash": "08cff46381a242d44c0d8dd0aabd9f71"
+ },
+ "listenv": {
+ "Package": "listenv",
+ "Version": "0.9.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "e2fca3e12e4db979dccc6e519b10a7ee"
+ },
+ "logger": {
+ "Package": "logger",
+ "Version": "0.3.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "utils"
+ ],
+ "Hash": "c145edf05cc128e6ffcfa5d872c46329"
+ },
+ "magrittr": {
+ "Package": "magrittr",
+ "Version": "2.0.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "7ce2733a9826b3aeb1775d56fd305472"
+ },
+ "memoise": {
+ "Package": "memoise",
+ "Version": "2.0.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "cachem",
+ "rlang"
+ ],
+ "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c"
+ },
+ "mgcv": {
+ "Package": "mgcv",
+ "Version": "1.9-1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "Matrix",
+ "R",
+ "graphics",
+ "methods",
+ "nlme",
+ "splines",
+ "stats",
+ "utils"
+ ],
+ "Hash": "110ee9d83b496279960e162ac97764ce"
+ },
+ "mime": {
+ "Package": "mime",
+ "Version": "0.12",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "tools"
+ ],
+ "Hash": "18e9c28c1d3ca1560ce30658b22ce104"
+ },
+ "mnormt": {
+ "Package": "mnormt",
+ "Version": "2.1.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "c83992ef63553d1e4b97162a4a753470"
+ },
+ "munsell": {
+ "Package": "munsell",
+ "Version": "0.5.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "colorspace",
+ "methods"
+ ],
+ "Hash": "4fd8900853b746af55b81fda99da7695"
+ },
+ "nlme": {
+ "Package": "nlme",
+ "Version": "3.1-164",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "graphics",
+ "lattice",
+ "stats",
+ "utils"
+ ],
+ "Hash": "a623a2239e642806158bc4dc3f51565d"
+ },
+ "nloptr": {
+ "Package": "nloptr",
+ "Version": "2.1.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "27550641889a3abf3aec4d91186311ec"
+ },
+ "nls2": {
+ "Package": "nls2",
+ "Version": "0.3-4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "proto",
+ "stats"
+ ],
+ "Hash": "99bdbfcb3d1000bd00424c009b4c2ac0"
+ },
+ "nlsr": {
+ "Package": "nlsr",
+ "Version": "2023.8.31",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "digest"
+ ],
+ "Hash": "04e8ca6832e8936f891e58a596a29236"
+ },
+ "nlstools": {
+ "Package": "nlstools",
+ "Version": "2.1-0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "grDevices",
+ "graphics",
+ "stats",
+ "utils"
+ ],
+ "Hash": "07cda591104ce02de0b3c22c0eba7617"
+ },
+ "numDeriv": {
+ "Package": "numDeriv",
+ "Version": "2016.8-1.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "df58958f293b166e4ab885ebcad90e02"
+ },
+ "openssl": {
+ "Package": "openssl",
+ "Version": "2.2.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "askpass"
+ ],
+ "Hash": "2bcca3848e4734eb3b16103bc9aa4b8e"
+ },
+ "optimx": {
+ "Package": "optimx",
+ "Version": "2023-10.21",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "nloptr",
+ "numDeriv",
+ "pracma"
+ ],
+ "Hash": "6e83fa2fbad1f00fd3b4ca36598aa23d"
+ },
+ "packrat": {
+ "Package": "packrat",
+ "Version": "0.9.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "tools",
+ "utils"
+ ],
+ "Hash": "55ddd2d4a1959535f18393478b0c14a6"
+ },
+ "parallelly": {
+ "Package": "parallelly",
+ "Version": "1.38.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "parallel",
+ "tools",
+ "utils"
+ ],
+ "Hash": "6e8b139c1904f5e9e14c69db64453bbe"
+ },
+ "phosphoricons": {
+ "Package": "phosphoricons",
+ "Version": "0.2.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "htmltools"
+ ],
+ "Hash": "707ea26830bf7a2630955559dada2f72"
+ },
+ "pillar": {
+ "Package": "pillar",
+ "Version": "1.9.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "cli",
+ "fansi",
+ "glue",
+ "lifecycle",
+ "rlang",
+ "utf8",
+ "utils",
+ "vctrs"
+ ],
+ "Hash": "15da5a8412f317beeee6175fbc76f4bb"
+ },
+ "pkgbuild": {
+ "Package": "pkgbuild",
+ "Version": "1.4.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "callr",
+ "cli",
+ "desc",
+ "processx"
+ ],
+ "Hash": "a29e8e134a460a01e0ca67a4763c595b"
+ },
+ "pkgconfig": {
+ "Package": "pkgconfig",
+ "Version": "2.0.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "utils"
+ ],
+ "Hash": "01f28d4278f15c76cddbea05899c5d6f"
+ },
+ "pkgload": {
+ "Package": "pkgload",
+ "Version": "1.4.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "desc",
+ "fs",
+ "glue",
+ "lifecycle",
+ "methods",
+ "pkgbuild",
+ "processx",
+ "rlang",
+ "rprojroot",
+ "utils",
+ "withr"
+ ],
+ "Hash": "2ec30ffbeec83da57655b850cf2d3e0e"
+ },
+ "plotly": {
+ "Package": "plotly",
+ "Version": "4.10.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "RColorBrewer",
+ "base64enc",
+ "crosstalk",
+ "data.table",
+ "digest",
+ "dplyr",
+ "ggplot2",
+ "htmltools",
+ "htmlwidgets",
+ "httr",
+ "jsonlite",
+ "lazyeval",
+ "magrittr",
+ "promises",
+ "purrr",
+ "rlang",
+ "scales",
+ "tibble",
+ "tidyr",
+ "tools",
+ "vctrs",
+ "viridisLite"
+ ],
+ "Hash": "a1ac5c03ad5ad12b9d1597e00e23c3dd"
+ },
+ "plyr": {
+ "Package": "plyr",
+ "Version": "1.8.9",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "Rcpp"
+ ],
+ "Hash": "6b8177fd19982f0020743fadbfdbd933"
+ },
+ "png": {
+ "Package": "png",
+ "Version": "0.1-8",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "bd54ba8a0a5faded999a7aab6e46b374"
+ },
+ "pracma": {
+ "Package": "pracma",
+ "Version": "2.4.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "graphics",
+ "stats",
+ "utils"
+ ],
+ "Hash": "44bc172d47d1ea0a638d9f299e321203"
+ },
+ "praise": {
+ "Package": "praise",
+ "Version": "1.0.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Hash": "a555924add98c99d2f411e37e7d25e9f"
+ },
+ "prettyunits": {
+ "Package": "prettyunits",
+ "Version": "1.2.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7"
+ },
+ "processx": {
+ "Package": "processx",
+ "Version": "3.8.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "ps",
+ "utils"
+ ],
+ "Hash": "0c90a7d71988856bad2a2a45dd871bb9"
+ },
+ "progress": {
+ "Package": "progress",
+ "Version": "1.2.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "crayon",
+ "hms",
+ "prettyunits"
+ ],
+ "Hash": "f4625e061cb2865f111b47ff163a5ca6"
+ },
+ "promises": {
+ "Package": "promises",
+ "Version": "1.3.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R6",
+ "Rcpp",
+ "fastmap",
+ "later",
+ "magrittr",
+ "rlang",
+ "stats"
+ ],
+ "Hash": "434cd5388a3979e74be5c219bcd6e77d"
+ },
+ "proto": {
+ "Package": "proto",
+ "Version": "1.0.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "5cb1623df69ee6102d011c7f78f5791d"
+ },
+ "proxy": {
+ "Package": "proxy",
+ "Version": "0.4-27",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "stats",
+ "utils"
+ ],
+ "Hash": "e0ef355c12942cf7a6b91a6cfaea8b3e"
+ },
+ "ps": {
+ "Package": "ps",
+ "Version": "1.7.7",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "878b467580097e9c383acbb16adab57a"
+ },
+ "psych": {
+ "Package": "psych",
+ "Version": "2.4.6.26",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "GPArotation",
+ "grDevices",
+ "graphics",
+ "lattice",
+ "methods",
+ "mnormt",
+ "nlme",
+ "parallel",
+ "stats"
+ ],
+ "Hash": "4448d5f3ac3e2cbf79074391d494637e"
+ },
+ "purrr": {
+ "Package": "purrr",
+ "Version": "1.0.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cli",
+ "lifecycle",
+ "magrittr",
+ "rlang",
+ "vctrs"
+ ],
+ "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc"
+ },
+ "rappdirs": {
+ "Package": "rappdirs",
+ "Version": "0.3.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "5e3c5dc0b071b21fa128676560dbe94d"
+ },
+ "reactR": {
+ "Package": "reactR",
+ "Version": "0.6.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "htmltools"
+ ],
+ "Hash": "10f4d661c235181648a5958c02c0382a"
+ },
+ "reactable": {
+ "Package": "reactable",
+ "Version": "0.4.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "digest",
+ "htmltools",
+ "htmlwidgets",
+ "jsonlite",
+ "reactR"
+ ],
+ "Hash": "6069eb2a6597963eae0605c1875ff14c"
+ },
+ "reactlog": {
+ "Package": "reactlog",
+ "Version": "1.1.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "jsonlite"
+ ],
+ "Hash": "745883ab4ed03f20593cd27334712eaf"
+ },
+ "readr": {
+ "Package": "readr",
+ "Version": "2.1.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "cli",
+ "clipr",
+ "cpp11",
+ "crayon",
+ "hms",
+ "lifecycle",
+ "methods",
+ "rlang",
+ "tibble",
+ "tzdb",
+ "utils",
+ "vroom"
+ ],
+ "Hash": "9de96463d2117f6ac49980577939dfb3"
+ },
+ "readxl": {
+ "Package": "readxl",
+ "Version": "1.4.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cellranger",
+ "cpp11",
+ "progress",
+ "tibble",
+ "utils"
+ ],
+ "Hash": "8cf9c239b96df1bbb133b74aef77ad0a"
+ },
+ "rematch": {
+ "Package": "rematch",
+ "Version": "2.0.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "cbff1b666c6fa6d21202f07e2318d4f1"
+ },
+ "rematch2": {
+ "Package": "rematch2",
+ "Version": "2.1.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "tibble"
+ ],
+ "Hash": "76c9e04c712a05848ae7a23d2f170a40"
+ },
+ "remotes": {
+ "Package": "remotes",
+ "Version": "2.5.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "methods",
+ "stats",
+ "tools",
+ "utils"
+ ],
+ "Hash": "3ee025083e66f18db6cf27b56e23e141"
+ },
+ "renv": {
+ "Package": "renv",
+ "Version": "1.0.7",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "utils"
+ ],
+ "Hash": "397b7b2a265bc5a7a06852524dabae20"
+ },
+ "reshape2": {
+ "Package": "reshape2",
+ "Version": "1.4.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "Rcpp",
+ "plyr",
+ "stringr"
+ ],
+ "Hash": "bb5996d0bd962d214a11140d77589917"
+ },
+ "rex": {
+ "Package": "rex",
+ "Version": "1.2.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "lazyeval"
+ ],
+ "Hash": "ae34cd56890607370665bee5bd17812f"
+ },
+ "rhino": {
+ "Package": "rhino",
+ "Version": "1.9.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "box",
+ "box.linters",
+ "cli",
+ "config",
+ "fs",
+ "glue",
+ "lintr",
+ "logger",
+ "purrr",
+ "renv",
+ "rstudioapi",
+ "sass",
+ "shiny",
+ "styler",
+ "testthat",
+ "utils",
+ "withr",
+ "yaml"
+ ],
+ "Hash": "c78f7332dc588c31094daccd26513e83"
+ },
+ "rio": {
+ "Package": "rio",
+ "Version": "1.2.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.utils",
+ "curl",
+ "data.table",
+ "foreign",
+ "haven",
+ "lifecycle",
+ "readr",
+ "readxl",
+ "stats",
+ "tibble",
+ "tools",
+ "utils",
+ "writexl"
+ ],
+ "Hash": "a2d8d896c1ea5ca6ca622ec60ee78a2c"
+ },
+ "rlang": {
+ "Package": "rlang",
+ "Version": "1.1.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "3eec01f8b1dee337674b2e34ab1f9bc1"
+ },
+ "rmarkdown": {
+ "Package": "rmarkdown",
+ "Version": "2.27",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "bslib",
+ "evaluate",
+ "fontawesome",
+ "htmltools",
+ "jquerylib",
+ "jsonlite",
+ "knitr",
+ "methods",
+ "tinytex",
+ "tools",
+ "utils",
+ "xfun",
+ "yaml"
+ ],
+ "Hash": "27f9502e1cdbfa195f94e03b0f517484"
+ },
+ "rprojroot": {
+ "Package": "rprojroot",
+ "Version": "2.0.4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144"
+ },
+ "rsconnect": {
+ "Package": "rsconnect",
+ "Version": "1.3.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "PKI",
+ "R",
+ "cli",
+ "curl",
+ "digest",
+ "jsonlite",
+ "lifecycle",
+ "openssl",
+ "packrat",
+ "renv",
+ "rlang",
+ "rstudioapi",
+ "tools",
+ "yaml"
+ ],
+ "Hash": "90dc9ac04cec50f25657b077d4aaca57"
+ },
+ "rstudioapi": {
+ "Package": "rstudioapi",
+ "Version": "0.16.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "96710351d642b70e8f02ddeb237c46a7"
+ },
+ "sass": {
+ "Package": "sass",
+ "Version": "0.4.9",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R6",
+ "fs",
+ "htmltools",
+ "rappdirs",
+ "rlang"
+ ],
+ "Hash": "d53dbfddf695303ea4ad66f86e99b95d"
+ },
+ "scales": {
+ "Package": "scales",
+ "Version": "1.3.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "RColorBrewer",
+ "cli",
+ "farver",
+ "glue",
+ "labeling",
+ "lifecycle",
+ "munsell",
+ "rlang",
+ "viridisLite"
+ ],
+ "Hash": "c19df082ba346b0ffa6f833e92de34d1"
+ },
+ "shiny": {
+ "Package": "shiny",
+ "Version": "1.9.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R6",
+ "bslib",
+ "cachem",
+ "commonmark",
+ "crayon",
+ "fastmap",
+ "fontawesome",
+ "glue",
+ "grDevices",
+ "htmltools",
+ "httpuv",
+ "jsonlite",
+ "later",
+ "lifecycle",
+ "methods",
+ "mime",
+ "promises",
+ "rlang",
+ "sourcetools",
+ "tools",
+ "utils",
+ "withr",
+ "xtable"
+ ],
+ "Hash": "6a293995a66e12c48d13aa1f957d09c7"
+ },
+ "shinyWidgets": {
+ "Package": "shinyWidgets",
+ "Version": "0.8.6",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "anytime",
+ "bslib",
+ "grDevices",
+ "htmltools",
+ "jsonlite",
+ "rlang",
+ "sass",
+ "shiny"
+ ],
+ "Hash": "bc918b6911c4e928e24a9928295de834"
+ },
+ "shinybusy": {
+ "Package": "shinybusy",
+ "Version": "0.3.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "htmltools",
+ "htmlwidgets",
+ "jsonlite",
+ "shiny"
+ ],
+ "Hash": "7dc8feb4207741ff581422a04fc8f3ea"
+ },
+ "sourcetools": {
+ "Package": "sourcetools",
+ "Version": "0.1.7-1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "5f5a7629f956619d519205ec475fe647"
+ },
+ "stringi": {
+ "Package": "stringi",
+ "Version": "1.8.4",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "stats",
+ "tools",
+ "utils"
+ ],
+ "Hash": "39e1144fd75428983dc3f63aa53dfa91"
+ },
+ "stringr": {
+ "Package": "stringr",
+ "Version": "1.5.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "glue",
+ "lifecycle",
+ "magrittr",
+ "rlang",
+ "stringi",
+ "vctrs"
+ ],
+ "Hash": "960e2ae9e09656611e0b8214ad543207"
+ },
+ "styler": {
+ "Package": "styler",
+ "Version": "1.10.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R.cache",
+ "cli",
+ "magrittr",
+ "purrr",
+ "rlang",
+ "rprojroot",
+ "tools",
+ "vctrs",
+ "withr"
+ ],
+ "Hash": "93a2b1beac2437bdcc4724f8bf867e2c"
+ },
+ "sys": {
+ "Package": "sys",
+ "Version": "3.4.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "3a1be13d68d47a8cd0bfd74739ca1555"
+ },
+ "testthat": {
+ "Package": "testthat",
+ "Version": "3.2.1.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "R6",
+ "brio",
+ "callr",
+ "cli",
+ "desc",
+ "digest",
+ "evaluate",
+ "jsonlite",
+ "lifecycle",
+ "magrittr",
+ "methods",
+ "pkgload",
+ "praise",
+ "processx",
+ "ps",
+ "rlang",
+ "utils",
+ "waldo",
+ "withr"
+ ],
+ "Hash": "3f6e7e5e2220856ff865e4834766bf2b"
+ },
+ "tibble": {
+ "Package": "tibble",
+ "Version": "3.2.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "fansi",
+ "lifecycle",
+ "magrittr",
+ "methods",
+ "pillar",
+ "pkgconfig",
+ "rlang",
+ "utils",
+ "vctrs"
+ ],
+ "Hash": "a84e2cc86d07289b3b6f5069df7a004c"
+ },
+ "tidyr": {
+ "Package": "tidyr",
+ "Version": "1.3.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "cpp11",
+ "dplyr",
+ "glue",
+ "lifecycle",
+ "magrittr",
+ "purrr",
+ "rlang",
+ "stringr",
+ "tibble",
+ "tidyselect",
+ "utils",
+ "vctrs"
+ ],
+ "Hash": "915fb7ce036c22a6a33b5a8adb712eb1"
+ },
+ "tidyselect": {
+ "Package": "tidyselect",
+ "Version": "1.2.1",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "glue",
+ "lifecycle",
+ "rlang",
+ "vctrs",
+ "withr"
+ ],
+ "Hash": "829f27b9c4919c16b593794a6344d6c0"
+ },
+ "tinytex": {
+ "Package": "tinytex",
+ "Version": "0.52",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "xfun"
+ ],
+ "Hash": "cfbad971a71f0e27cec22e544a08bc3b"
+ },
+ "toastui": {
+ "Package": "toastui",
+ "Version": "0.3.3",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "htmltools",
+ "htmlwidgets",
+ "magrittr",
+ "phosphoricons",
+ "rlang",
+ "shiny",
+ "shinyWidgets",
+ "utils"
+ ],
+ "Hash": "1f333a5ffe7f0d6a0ccc48e7d4db2760"
+ },
+ "treesitter": {
+ "Package": "treesitter",
+ "Version": "0.1.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R6",
+ "cli",
+ "rlang",
+ "vctrs"
+ ],
+ "Hash": "22a579e4ac2ddd021df1791da7fd080f"
+ },
+ "treesitter.r": {
+ "Package": "treesitter.r",
+ "Version": "1.0.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "114b750618be4fe137355007cf47c450"
+ },
+ "tzdb": {
+ "Package": "tzdb",
+ "Version": "0.4.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cpp11"
+ ],
+ "Hash": "f561504ec2897f4d46f0c7657e488ae1"
+ },
+ "utf8": {
+ "Package": "utf8",
+ "Version": "1.2.4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "62b65c52671e6665f803ff02954446e9"
+ },
+ "vctrs": {
+ "Package": "vctrs",
+ "Version": "0.6.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "glue",
+ "lifecycle",
+ "rlang"
+ ],
+ "Hash": "c03fa420630029418f7e6da3667aac4a"
+ },
+ "viridisLite": {
+ "Package": "viridisLite",
+ "Version": "0.4.2",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "c826c7c4241b6fc89ff55aaea3fa7491"
+ },
+ "vroom": {
+ "Package": "vroom",
+ "Version": "1.6.5",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "bit64",
+ "cli",
+ "cpp11",
+ "crayon",
+ "glue",
+ "hms",
+ "lifecycle",
+ "methods",
+ "progress",
+ "rlang",
+ "stats",
+ "tibble",
+ "tidyselect",
+ "tzdb",
+ "vctrs",
+ "withr"
+ ],
+ "Hash": "390f9315bc0025be03012054103d227c"
+ },
+ "waldo": {
+ "Package": "waldo",
+ "Version": "0.5.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cli",
+ "diffobj",
+ "fansi",
+ "glue",
+ "methods",
+ "rematch2",
+ "rlang",
+ "tibble"
+ ],
+ "Hash": "c7d3fd6d29ab077cbac8f0e2751449e6"
+ },
+ "withr": {
+ "Package": "withr",
+ "Version": "3.0.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "grDevices",
+ "graphics"
+ ],
+ "Hash": "07909200e8bbe90426fbfeb73e1e27aa"
+ },
+ "writexl": {
+ "Package": "writexl",
+ "Version": "1.5.0",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Hash": "856a075aec895ea1bea3055fa54e356c"
+ },
+ "xfun": {
+ "Package": "xfun",
+ "Version": "0.46",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "grDevices",
+ "stats",
+ "tools"
+ ],
+ "Hash": "00ce32f398db0415dde61abfef11300c"
+ },
+ "xml2": {
+ "Package": "xml2",
+ "Version": "1.3.6",
+ "Source": "Repository",
+ "Repository": "RSPM",
+ "Requirements": [
+ "R",
+ "cli",
+ "methods",
+ "rlang"
+ ],
+ "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61"
+ },
+ "xmlparsedata": {
+ "Package": "xmlparsedata",
+ "Version": "1.0.5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "45e4bf3c46476896e821fc0a408fb4fc"
+ },
+ "xtable": {
+ "Package": "xtable",
+ "Version": "1.8-4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats",
+ "utils"
+ ],
+ "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2"
+ },
+ "yaml": {
+ "Package": "yaml",
+ "Version": "2.3.10",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Hash": "51dab85c6c98e50a18d7551e9d49f76c"
+ }
+ }
+}
diff --git a/renv/.gitignore b/renv/.gitignore
new file mode 100644
index 0000000..0ec0cbb
--- /dev/null
+++ b/renv/.gitignore
@@ -0,0 +1,7 @@
+library/
+local/
+cellar/
+lock/
+python/
+sandbox/
+staging/
diff --git a/renv/activate.R b/renv/activate.R
new file mode 100644
index 0000000..d13f993
--- /dev/null
+++ b/renv/activate.R
@@ -0,0 +1,1220 @@
+
+local({
+
+ # the requested version of renv
+ version <- "1.0.7"
+ attr(version, "sha") <- NULL
+
+ # the project directory
+ project <- Sys.getenv("RENV_PROJECT")
+ if (!nzchar(project))
+ project <- getwd()
+
+ # use start-up diagnostics if enabled
+ diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE")
+ if (diagnostics) {
+ start <- Sys.time()
+ profile <- tempfile("renv-startup-", fileext = ".Rprof")
+ utils::Rprof(profile)
+ on.exit({
+ utils::Rprof(NULL)
+ elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L)
+ writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed)))
+ writeLines(sprintf("- Profile: %s", profile))
+ print(utils::summaryRprof(profile))
+ }, add = TRUE)
+ }
+
+ # figure out whether the autoloader is enabled
+ enabled <- local({
+
+ # first, check config option
+ override <- getOption("renv.config.autoloader.enabled")
+ if (!is.null(override))
+ return(override)
+
+ # if we're being run in a context where R_LIBS is already set,
+ # don't load -- presumably we're being run as a sub-process and
+ # the parent process has already set up library paths for us
+ rcmd <- Sys.getenv("R_CMD", unset = NA)
+ rlibs <- Sys.getenv("R_LIBS", unset = NA)
+ if (!is.na(rlibs) && !is.na(rcmd))
+ return(FALSE)
+
+ # next, check environment variables
+ # TODO: prefer using the configuration one in the future
+ envvars <- c(
+ "RENV_CONFIG_AUTOLOADER_ENABLED",
+ "RENV_AUTOLOADER_ENABLED",
+ "RENV_ACTIVATE_PROJECT"
+ )
+
+ for (envvar in envvars) {
+ envval <- Sys.getenv(envvar, unset = NA)
+ if (!is.na(envval))
+ return(tolower(envval) %in% c("true", "t", "1"))
+ }
+
+ # enable by default
+ TRUE
+
+ })
+
+ # bail if we're not enabled
+ if (!enabled) {
+
+ # if we're not enabled, we might still need to manually load
+ # the user profile here
+ profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile")
+ if (file.exists(profile)) {
+ cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE")
+ if (tolower(cfg) %in% c("true", "t", "1"))
+ sys.source(profile, envir = globalenv())
+ }
+
+ return(FALSE)
+
+ }
+
+ # avoid recursion
+ if (identical(getOption("renv.autoloader.running"), TRUE)) {
+ warning("ignoring recursive attempt to run renv autoloader")
+ return(invisible(TRUE))
+ }
+
+ # signal that we're loading renv during R startup
+ options(renv.autoloader.running = TRUE)
+ on.exit(options(renv.autoloader.running = NULL), add = TRUE)
+
+ # signal that we've consented to use renv
+ options(renv.consent = TRUE)
+
+ # load the 'utils' package eagerly -- this ensures that renv shims, which
+ # mask 'utils' packages, will come first on the search path
+ library(utils, lib.loc = .Library)
+
+ # unload renv if it's already been loaded
+ if ("renv" %in% loadedNamespaces())
+ unloadNamespace("renv")
+
+ # load bootstrap tools
+ `%||%` <- function(x, y) {
+ if (is.null(x)) y else x
+ }
+
+ catf <- function(fmt, ..., appendLF = TRUE) {
+
+ quiet <- getOption("renv.bootstrap.quiet", default = FALSE)
+ if (quiet)
+ return(invisible())
+
+ msg <- sprintf(fmt, ...)
+ cat(msg, file = stdout(), sep = if (appendLF) "\n" else "")
+
+ invisible(msg)
+
+ }
+
+ header <- function(label,
+ ...,
+ prefix = "#",
+ suffix = "-",
+ n = min(getOption("width"), 78))
+ {
+ label <- sprintf(label, ...)
+ n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L)
+ if (n <= 0)
+ return(paste(prefix, label))
+
+ tail <- paste(rep.int(suffix, n), collapse = "")
+ paste0(prefix, " ", label, " ", tail)
+
+ }
+
+ heredoc <- function(text, leave = 0) {
+
+ # remove leading, trailing whitespace
+ trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text)
+
+ # split into lines
+ lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]]
+
+ # compute common indent
+ indent <- regexpr("[^[:space:]]", lines)
+ common <- min(setdiff(indent, -1L)) - leave
+ paste(substring(lines, common), collapse = "\n")
+
+ }
+
+ startswith <- function(string, prefix) {
+ substring(string, 1, nchar(prefix)) == prefix
+ }
+
+ bootstrap <- function(version, library) {
+
+ friendly <- renv_bootstrap_version_friendly(version)
+ section <- header(sprintf("Bootstrapping renv %s", friendly))
+ catf(section)
+
+ # attempt to download renv
+ catf("- Downloading renv ... ", appendLF = FALSE)
+ withCallingHandlers(
+ tarball <- renv_bootstrap_download(version),
+ error = function(err) {
+ catf("FAILED")
+ stop("failed to download:\n", conditionMessage(err))
+ }
+ )
+ catf("OK")
+ on.exit(unlink(tarball), add = TRUE)
+
+ # now attempt to install
+ catf("- Installing renv ... ", appendLF = FALSE)
+ withCallingHandlers(
+ status <- renv_bootstrap_install(version, tarball, library),
+ error = function(err) {
+ catf("FAILED")
+ stop("failed to install:\n", conditionMessage(err))
+ }
+ )
+ catf("OK")
+
+ # add empty line to break up bootstrapping from normal output
+ catf("")
+
+ return(invisible())
+ }
+
+ renv_bootstrap_tests_running <- function() {
+ getOption("renv.tests.running", default = FALSE)
+ }
+
+ renv_bootstrap_repos <- function() {
+
+ # get CRAN repository
+ cran <- getOption("renv.repos.cran", "https://cloud.r-project.org")
+
+ # check for repos override
+ repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA)
+ if (!is.na(repos)) {
+
+ # check for RSPM; if set, use a fallback repository for renv
+ rspm <- Sys.getenv("RSPM", unset = NA)
+ if (identical(rspm, repos))
+ repos <- c(RSPM = rspm, CRAN = cran)
+
+ return(repos)
+
+ }
+
+ # check for lockfile repositories
+ repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity)
+ if (!inherits(repos, "error") && length(repos))
+ return(repos)
+
+ # retrieve current repos
+ repos <- getOption("repos")
+
+ # ensure @CRAN@ entries are resolved
+ repos[repos == "@CRAN@"] <- cran
+
+ # add in renv.bootstrap.repos if set
+ default <- c(FALLBACK = "https://cloud.r-project.org")
+ extra <- getOption("renv.bootstrap.repos", default = default)
+ repos <- c(repos, extra)
+
+ # remove duplicates that might've snuck in
+ dupes <- duplicated(repos) | duplicated(names(repos))
+ repos[!dupes]
+
+ }
+
+ renv_bootstrap_repos_lockfile <- function() {
+
+ lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock")
+ if (!file.exists(lockpath))
+ return(NULL)
+
+ lockfile <- tryCatch(renv_json_read(lockpath), error = identity)
+ if (inherits(lockfile, "error")) {
+ warning(lockfile)
+ return(NULL)
+ }
+
+ repos <- lockfile$R$Repositories
+ if (length(repos) == 0)
+ return(NULL)
+
+ keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1))
+ vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1))
+ names(vals) <- keys
+
+ return(vals)
+
+ }
+
+ renv_bootstrap_download <- function(version) {
+
+ sha <- attr(version, "sha", exact = TRUE)
+
+ methods <- if (!is.null(sha)) {
+
+ # attempting to bootstrap a development version of renv
+ c(
+ function() renv_bootstrap_download_tarball(sha),
+ function() renv_bootstrap_download_github(sha)
+ )
+
+ } else {
+
+ # attempting to bootstrap a release version of renv
+ c(
+ function() renv_bootstrap_download_tarball(version),
+ function() renv_bootstrap_download_cran_latest(version),
+ function() renv_bootstrap_download_cran_archive(version)
+ )
+
+ }
+
+ for (method in methods) {
+ path <- tryCatch(method(), error = identity)
+ if (is.character(path) && file.exists(path))
+ return(path)
+ }
+
+ stop("All download methods failed")
+
+ }
+
+ renv_bootstrap_download_impl <- function(url, destfile) {
+
+ mode <- "wb"
+
+ # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715
+ fixup <-
+ Sys.info()[["sysname"]] == "Windows" &&
+ substring(url, 1L, 5L) == "file:"
+
+ if (fixup)
+ mode <- "w+b"
+
+ args <- list(
+ url = url,
+ destfile = destfile,
+ mode = mode,
+ quiet = TRUE
+ )
+
+ if ("headers" %in% names(formals(utils::download.file)))
+ args$headers <- renv_bootstrap_download_custom_headers(url)
+
+ do.call(utils::download.file, args)
+
+ }
+
+ renv_bootstrap_download_custom_headers <- function(url) {
+
+ headers <- getOption("renv.download.headers")
+ if (is.null(headers))
+ return(character())
+
+ if (!is.function(headers))
+ stopf("'renv.download.headers' is not a function")
+
+ headers <- headers(url)
+ if (length(headers) == 0L)
+ return(character())
+
+ if (is.list(headers))
+ headers <- unlist(headers, recursive = FALSE, use.names = TRUE)
+
+ ok <-
+ is.character(headers) &&
+ is.character(names(headers)) &&
+ all(nzchar(names(headers)))
+
+ if (!ok)
+ stop("invocation of 'renv.download.headers' did not return a named character vector")
+
+ headers
+
+ }
+
+ renv_bootstrap_download_cran_latest <- function(version) {
+
+ spec <- renv_bootstrap_download_cran_latest_find(version)
+ type <- spec$type
+ repos <- spec$repos
+
+ baseurl <- utils::contrib.url(repos = repos, type = type)
+ ext <- if (identical(type, "source"))
+ ".tar.gz"
+ else if (Sys.info()[["sysname"]] == "Windows")
+ ".zip"
+ else
+ ".tgz"
+ name <- sprintf("renv_%s%s", version, ext)
+ url <- paste(baseurl, name, sep = "/")
+
+ destfile <- file.path(tempdir(), name)
+ status <- tryCatch(
+ renv_bootstrap_download_impl(url, destfile),
+ condition = identity
+ )
+
+ if (inherits(status, "condition"))
+ return(FALSE)
+
+ # report success and return
+ destfile
+
+ }
+
+ renv_bootstrap_download_cran_latest_find <- function(version) {
+
+ # check whether binaries are supported on this system
+ binary <-
+ getOption("renv.bootstrap.binary", default = TRUE) &&
+ !identical(.Platform$pkgType, "source") &&
+ !identical(getOption("pkgType"), "source") &&
+ Sys.info()[["sysname"]] %in% c("Darwin", "Windows")
+
+ types <- c(if (binary) "binary", "source")
+
+ # iterate over types + repositories
+ for (type in types) {
+ for (repos in renv_bootstrap_repos()) {
+
+ # retrieve package database
+ db <- tryCatch(
+ as.data.frame(
+ utils::available.packages(type = type, repos = repos),
+ stringsAsFactors = FALSE
+ ),
+ error = identity
+ )
+
+ if (inherits(db, "error"))
+ next
+
+ # check for compatible entry
+ entry <- db[db$Package %in% "renv" & db$Version %in% version, ]
+ if (nrow(entry) == 0)
+ next
+
+ # found it; return spec to caller
+ spec <- list(entry = entry, type = type, repos = repos)
+ return(spec)
+
+ }
+ }
+
+ # if we got here, we failed to find renv
+ fmt <- "renv %s is not available from your declared package repositories"
+ stop(sprintf(fmt, version))
+
+ }
+
+ renv_bootstrap_download_cran_archive <- function(version) {
+
+ name <- sprintf("renv_%s.tar.gz", version)
+ repos <- renv_bootstrap_repos()
+ urls <- file.path(repos, "src/contrib/Archive/renv", name)
+ destfile <- file.path(tempdir(), name)
+
+ for (url in urls) {
+
+ status <- tryCatch(
+ renv_bootstrap_download_impl(url, destfile),
+ condition = identity
+ )
+
+ if (identical(status, 0L))
+ return(destfile)
+
+ }
+
+ return(FALSE)
+
+ }
+
+ renv_bootstrap_download_tarball <- function(version) {
+
+ # if the user has provided the path to a tarball via
+ # an environment variable, then use it
+ tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA)
+ if (is.na(tarball))
+ return()
+
+ # allow directories
+ if (dir.exists(tarball)) {
+ name <- sprintf("renv_%s.tar.gz", version)
+ tarball <- file.path(tarball, name)
+ }
+
+ # bail if it doesn't exist
+ if (!file.exists(tarball)) {
+
+ # let the user know we weren't able to honour their request
+ fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist."
+ msg <- sprintf(fmt, tarball)
+ warning(msg)
+
+ # bail
+ return()
+
+ }
+
+ catf("- Using local tarball '%s'.", tarball)
+ tarball
+
+ }
+
+ renv_bootstrap_download_github <- function(version) {
+
+ enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE")
+ if (!identical(enabled, "TRUE"))
+ return(FALSE)
+
+ # prepare download options
+ pat <- Sys.getenv("GITHUB_PAT")
+ if (nzchar(Sys.which("curl")) && nzchar(pat)) {
+ fmt <- "--location --fail --header \"Authorization: token %s\""
+ extra <- sprintf(fmt, pat)
+ saved <- options("download.file.method", "download.file.extra")
+ options(download.file.method = "curl", download.file.extra = extra)
+ on.exit(do.call(base::options, saved), add = TRUE)
+ } else if (nzchar(Sys.which("wget")) && nzchar(pat)) {
+ fmt <- "--header=\"Authorization: token %s\""
+ extra <- sprintf(fmt, pat)
+ saved <- options("download.file.method", "download.file.extra")
+ options(download.file.method = "wget", download.file.extra = extra)
+ on.exit(do.call(base::options, saved), add = TRUE)
+ }
+
+ url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version)
+ name <- sprintf("renv_%s.tar.gz", version)
+ destfile <- file.path(tempdir(), name)
+
+ status <- tryCatch(
+ renv_bootstrap_download_impl(url, destfile),
+ condition = identity
+ )
+
+ if (!identical(status, 0L))
+ return(FALSE)
+
+ renv_bootstrap_download_augment(destfile)
+
+ return(destfile)
+
+ }
+
+ # Add Sha to DESCRIPTION. This is stop gap until #890, after which we
+ # can use renv::install() to fully capture metadata.
+ renv_bootstrap_download_augment <- function(destfile) {
+ sha <- renv_bootstrap_git_extract_sha1_tar(destfile)
+ if (is.null(sha)) {
+ return()
+ }
+
+ # Untar
+ tempdir <- tempfile("renv-github-")
+ on.exit(unlink(tempdir, recursive = TRUE), add = TRUE)
+ untar(destfile, exdir = tempdir)
+ pkgdir <- dir(tempdir, full.names = TRUE)[[1]]
+
+ # Modify description
+ desc_path <- file.path(pkgdir, "DESCRIPTION")
+ desc_lines <- readLines(desc_path)
+ remotes_fields <- c(
+ "RemoteType: github",
+ "RemoteHost: api.github.com",
+ "RemoteRepo: renv",
+ "RemoteUsername: rstudio",
+ "RemotePkgRef: rstudio/renv",
+ paste("RemoteRef: ", sha),
+ paste("RemoteSha: ", sha)
+ )
+ writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path)
+
+ # Re-tar
+ local({
+ old <- setwd(tempdir)
+ on.exit(setwd(old), add = TRUE)
+
+ tar(destfile, compression = "gzip")
+ })
+ invisible()
+ }
+
+ # Extract the commit hash from a git archive. Git archives include the SHA1
+ # hash as the comment field of the tarball pax extended header
+ # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html)
+ # For GitHub archives this should be the first header after the default one
+ # (512 byte) header.
+ renv_bootstrap_git_extract_sha1_tar <- function(bundle) {
+
+ # open the bundle for reading
+ # We use gzcon for everything because (from ?gzcon)
+ # > Reading from a connection which does not supply a 'gzip' magic
+ # > header is equivalent to reading from the original connection
+ conn <- gzcon(file(bundle, open = "rb", raw = TRUE))
+ on.exit(close(conn))
+
+ # The default pax header is 512 bytes long and the first pax extended header
+ # with the comment should be 51 bytes long
+ # `52 comment=` (11 chars) + 40 byte SHA1 hash
+ len <- 0x200 + 0x33
+ res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len])
+
+ if (grepl("^52 comment=", res)) {
+ sub("52 comment=", "", res)
+ } else {
+ NULL
+ }
+ }
+
+ renv_bootstrap_install <- function(version, tarball, library) {
+
+ # attempt to install it into project library
+ dir.create(library, showWarnings = FALSE, recursive = TRUE)
+ output <- renv_bootstrap_install_impl(library, tarball)
+
+ # check for successful install
+ status <- attr(output, "status")
+ if (is.null(status) || identical(status, 0L))
+ return(status)
+
+ # an error occurred; report it
+ header <- "installation of renv failed"
+ lines <- paste(rep.int("=", nchar(header)), collapse = "")
+ text <- paste(c(header, lines, output), collapse = "\n")
+ stop(text)
+
+ }
+
+ renv_bootstrap_install_impl <- function(library, tarball) {
+
+ # invoke using system2 so we can capture and report output
+ bin <- R.home("bin")
+ exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R"
+ R <- file.path(bin, exe)
+
+ args <- c(
+ "--vanilla", "CMD", "INSTALL", "--no-multiarch",
+ "-l", shQuote(path.expand(library)),
+ shQuote(path.expand(tarball))
+ )
+
+ system2(R, args, stdout = TRUE, stderr = TRUE)
+
+ }
+
+ renv_bootstrap_platform_prefix <- function() {
+
+ # construct version prefix
+ version <- paste(R.version$major, R.version$minor, sep = ".")
+ prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-")
+
+ # include SVN revision for development versions of R
+ # (to avoid sharing platform-specific artefacts with released versions of R)
+ devel <-
+ identical(R.version[["status"]], "Under development (unstable)") ||
+ identical(R.version[["nickname"]], "Unsuffered Consequences")
+
+ if (devel)
+ prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r")
+
+ # build list of path components
+ components <- c(prefix, R.version$platform)
+
+ # include prefix if provided by user
+ prefix <- renv_bootstrap_platform_prefix_impl()
+ if (!is.na(prefix) && nzchar(prefix))
+ components <- c(prefix, components)
+
+ # build prefix
+ paste(components, collapse = "/")
+
+ }
+
+ renv_bootstrap_platform_prefix_impl <- function() {
+
+ # if an explicit prefix has been supplied, use it
+ prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA)
+ if (!is.na(prefix))
+ return(prefix)
+
+ # if the user has requested an automatic prefix, generate it
+ auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA)
+ if (is.na(auto) && getRversion() >= "4.4.0")
+ auto <- "TRUE"
+
+ if (auto %in% c("TRUE", "True", "true", "1"))
+ return(renv_bootstrap_platform_prefix_auto())
+
+ # empty string on failure
+ ""
+
+ }
+
+ renv_bootstrap_platform_prefix_auto <- function() {
+
+ prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity)
+ if (inherits(prefix, "error") || prefix %in% "unknown") {
+
+ msg <- paste(
+ "failed to infer current operating system",
+ "please file a bug report at https://github.com/rstudio/renv/issues",
+ sep = "; "
+ )
+
+ warning(msg)
+
+ }
+
+ prefix
+
+ }
+
+ renv_bootstrap_platform_os <- function() {
+
+ sysinfo <- Sys.info()
+ sysname <- sysinfo[["sysname"]]
+
+ # handle Windows + macOS up front
+ if (sysname == "Windows")
+ return("windows")
+ else if (sysname == "Darwin")
+ return("macos")
+
+ # check for os-release files
+ for (file in c("/etc/os-release", "/usr/lib/os-release"))
+ if (file.exists(file))
+ return(renv_bootstrap_platform_os_via_os_release(file, sysinfo))
+
+ # check for redhat-release files
+ if (file.exists("/etc/redhat-release"))
+ return(renv_bootstrap_platform_os_via_redhat_release())
+
+ "unknown"
+
+ }
+
+ renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) {
+
+ # read /etc/os-release
+ release <- utils::read.table(
+ file = file,
+ sep = "=",
+ quote = c("\"", "'"),
+ col.names = c("Key", "Value"),
+ comment.char = "#",
+ stringsAsFactors = FALSE
+ )
+
+ vars <- as.list(release$Value)
+ names(vars) <- release$Key
+
+ # get os name
+ os <- tolower(sysinfo[["sysname"]])
+
+ # read id
+ id <- "unknown"
+ for (field in c("ID", "ID_LIKE")) {
+ if (field %in% names(vars) && nzchar(vars[[field]])) {
+ id <- vars[[field]]
+ break
+ }
+ }
+
+ # read version
+ version <- "unknown"
+ for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) {
+ if (field %in% names(vars) && nzchar(vars[[field]])) {
+ version <- vars[[field]]
+ break
+ }
+ }
+
+ # join together
+ paste(c(os, id, version), collapse = "-")
+
+ }
+
+ renv_bootstrap_platform_os_via_redhat_release <- function() {
+
+ # read /etc/redhat-release
+ contents <- readLines("/etc/redhat-release", warn = FALSE)
+
+ # infer id
+ id <- if (grepl("centos", contents, ignore.case = TRUE))
+ "centos"
+ else if (grepl("redhat", contents, ignore.case = TRUE))
+ "redhat"
+ else
+ "unknown"
+
+ # try to find a version component (very hacky)
+ version <- "unknown"
+
+ parts <- strsplit(contents, "[[:space:]]")[[1L]]
+ for (part in parts) {
+
+ nv <- tryCatch(numeric_version(part), error = identity)
+ if (inherits(nv, "error"))
+ next
+
+ version <- nv[1, 1]
+ break
+
+ }
+
+ paste(c("linux", id, version), collapse = "-")
+
+ }
+
+ renv_bootstrap_library_root_name <- function(project) {
+
+ # use project name as-is if requested
+ asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE")
+ if (asis)
+ return(basename(project))
+
+ # otherwise, disambiguate based on project's path
+ id <- substring(renv_bootstrap_hash_text(project), 1L, 8L)
+ paste(basename(project), id, sep = "-")
+
+ }
+
+ renv_bootstrap_library_root <- function(project) {
+
+ prefix <- renv_bootstrap_profile_prefix()
+
+ path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA)
+ if (!is.na(path))
+ return(paste(c(path, prefix), collapse = "/"))
+
+ path <- renv_bootstrap_library_root_impl(project)
+ if (!is.null(path)) {
+ name <- renv_bootstrap_library_root_name(project)
+ return(paste(c(path, prefix, name), collapse = "/"))
+ }
+
+ renv_bootstrap_paths_renv("library", project = project)
+
+ }
+
+ renv_bootstrap_library_root_impl <- function(project) {
+
+ root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA)
+ if (!is.na(root))
+ return(root)
+
+ type <- renv_bootstrap_project_type(project)
+ if (identical(type, "package")) {
+ userdir <- renv_bootstrap_user_dir()
+ return(file.path(userdir, "library"))
+ }
+
+ }
+
+ renv_bootstrap_validate_version <- function(version, description = NULL) {
+
+ # resolve description file
+ #
+ # avoid passing lib.loc to `packageDescription()` below, since R will
+ # use the loaded version of the package by default anyhow. note that
+ # this function should only be called after 'renv' is loaded
+ # https://github.com/rstudio/renv/issues/1625
+ description <- description %||% packageDescription("renv")
+
+ # check whether requested version 'version' matches loaded version of renv
+ sha <- attr(version, "sha", exact = TRUE)
+ valid <- if (!is.null(sha))
+ renv_bootstrap_validate_version_dev(sha, description)
+ else
+ renv_bootstrap_validate_version_release(version, description)
+
+ if (valid)
+ return(TRUE)
+
+ # the loaded version of renv doesn't match the requested version;
+ # give the user instructions on how to proceed
+ dev <- identical(description[["RemoteType"]], "github")
+ remote <- if (dev)
+ paste("rstudio/renv", description[["RemoteSha"]], sep = "@")
+ else
+ paste("renv", description[["Version"]], sep = "@")
+
+ # display both loaded version + sha if available
+ friendly <- renv_bootstrap_version_friendly(
+ version = description[["Version"]],
+ sha = if (dev) description[["RemoteSha"]]
+ )
+
+ fmt <- heredoc("
+ renv %1$s was loaded from project library, but this project is configured to use renv %2$s.
+ - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.
+ - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.
+ ")
+ catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote)
+
+ FALSE
+
+ }
+
+ renv_bootstrap_validate_version_dev <- function(version, description) {
+ expected <- description[["RemoteSha"]]
+ is.character(expected) && startswith(expected, version)
+ }
+
+ renv_bootstrap_validate_version_release <- function(version, description) {
+ expected <- description[["Version"]]
+ is.character(expected) && identical(expected, version)
+ }
+
+ renv_bootstrap_hash_text <- function(text) {
+
+ hashfile <- tempfile("renv-hash-")
+ on.exit(unlink(hashfile), add = TRUE)
+
+ writeLines(text, con = hashfile)
+ tools::md5sum(hashfile)
+
+ }
+
+ renv_bootstrap_load <- function(project, libpath, version) {
+
+ # try to load renv from the project library
+ if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE))
+ return(FALSE)
+
+ # warn if the version of renv loaded does not match
+ renv_bootstrap_validate_version(version)
+
+ # execute renv load hooks, if any
+ hooks <- getHook("renv::autoload")
+ for (hook in hooks)
+ if (is.function(hook))
+ tryCatch(hook(), error = warnify)
+
+ # load the project
+ renv::load(project)
+
+ TRUE
+
+ }
+
+ renv_bootstrap_profile_load <- function(project) {
+
+ # if RENV_PROFILE is already set, just use that
+ profile <- Sys.getenv("RENV_PROFILE", unset = NA)
+ if (!is.na(profile) && nzchar(profile))
+ return(profile)
+
+ # check for a profile file (nothing to do if it doesn't exist)
+ path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project)
+ if (!file.exists(path))
+ return(NULL)
+
+ # read the profile, and set it if it exists
+ contents <- readLines(path, warn = FALSE)
+ if (length(contents) == 0L)
+ return(NULL)
+
+ # set RENV_PROFILE
+ profile <- contents[[1L]]
+ if (!profile %in% c("", "default"))
+ Sys.setenv(RENV_PROFILE = profile)
+
+ profile
+
+ }
+
+ renv_bootstrap_profile_prefix <- function() {
+ profile <- renv_bootstrap_profile_get()
+ if (!is.null(profile))
+ return(file.path("profiles", profile, "renv"))
+ }
+
+ renv_bootstrap_profile_get <- function() {
+ profile <- Sys.getenv("RENV_PROFILE", unset = "")
+ renv_bootstrap_profile_normalize(profile)
+ }
+
+ renv_bootstrap_profile_set <- function(profile) {
+ profile <- renv_bootstrap_profile_normalize(profile)
+ if (is.null(profile))
+ Sys.unsetenv("RENV_PROFILE")
+ else
+ Sys.setenv(RENV_PROFILE = profile)
+ }
+
+ renv_bootstrap_profile_normalize <- function(profile) {
+
+ if (is.null(profile) || profile %in% c("", "default"))
+ return(NULL)
+
+ profile
+
+ }
+
+ renv_bootstrap_path_absolute <- function(path) {
+
+ substr(path, 1L, 1L) %in% c("~", "/", "\\") || (
+ substr(path, 1L, 1L) %in% c(letters, LETTERS) &&
+ substr(path, 2L, 3L) %in% c(":/", ":\\")
+ )
+
+ }
+
+ renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) {
+ renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv")
+ root <- if (renv_bootstrap_path_absolute(renv)) NULL else project
+ prefix <- if (profile) renv_bootstrap_profile_prefix()
+ components <- c(root, renv, prefix, ...)
+ paste(components, collapse = "/")
+ }
+
+ renv_bootstrap_project_type <- function(path) {
+
+ descpath <- file.path(path, "DESCRIPTION")
+ if (!file.exists(descpath))
+ return("unknown")
+
+ desc <- tryCatch(
+ read.dcf(descpath, all = TRUE),
+ error = identity
+ )
+
+ if (inherits(desc, "error"))
+ return("unknown")
+
+ type <- desc$Type
+ if (!is.null(type))
+ return(tolower(type))
+
+ package <- desc$Package
+ if (!is.null(package))
+ return("package")
+
+ "unknown"
+
+ }
+
+ renv_bootstrap_user_dir <- function() {
+ dir <- renv_bootstrap_user_dir_impl()
+ path.expand(chartr("\\", "/", dir))
+ }
+
+ renv_bootstrap_user_dir_impl <- function() {
+
+ # use local override if set
+ override <- getOption("renv.userdir.override")
+ if (!is.null(override))
+ return(override)
+
+ # use R_user_dir if available
+ tools <- asNamespace("tools")
+ if (is.function(tools$R_user_dir))
+ return(tools$R_user_dir("renv", "cache"))
+
+ # try using our own backfill for older versions of R
+ envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME")
+ for (envvar in envvars) {
+ root <- Sys.getenv(envvar, unset = NA)
+ if (!is.na(root))
+ return(file.path(root, "R/renv"))
+ }
+
+ # use platform-specific default fallbacks
+ if (Sys.info()[["sysname"]] == "Windows")
+ file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv")
+ else if (Sys.info()[["sysname"]] == "Darwin")
+ "~/Library/Caches/org.R-project.R/R/renv"
+ else
+ "~/.cache/R/renv"
+
+ }
+
+ renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) {
+ sha <- sha %||% attr(version, "sha", exact = TRUE)
+ parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L)))
+ paste(parts, collapse = "")
+ }
+
+ renv_bootstrap_exec <- function(project, libpath, version) {
+ if (!renv_bootstrap_load(project, libpath, version))
+ renv_bootstrap_run(version, libpath)
+ }
+
+ renv_bootstrap_run <- function(version, libpath) {
+
+ # perform bootstrap
+ bootstrap(version, libpath)
+
+ # exit early if we're just testing bootstrap
+ if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA)))
+ return(TRUE)
+
+ # try again to load
+ if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) {
+ return(renv::load(project = getwd()))
+ }
+
+ # failed to download or load renv; warn the user
+ msg <- c(
+ "Failed to find an renv installation: the project will not be loaded.",
+ "Use `renv::activate()` to re-initialize the project."
+ )
+
+ warning(paste(msg, collapse = "\n"), call. = FALSE)
+
+ }
+
+ renv_json_read <- function(file = NULL, text = NULL) {
+
+ jlerr <- NULL
+
+ # if jsonlite is loaded, use that instead
+ if ("jsonlite" %in% loadedNamespaces()) {
+
+ json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity)
+ if (!inherits(json, "error"))
+ return(json)
+
+ jlerr <- json
+
+ }
+
+ # otherwise, fall back to the default JSON reader
+ json <- tryCatch(renv_json_read_default(file, text), error = identity)
+ if (!inherits(json, "error"))
+ return(json)
+
+ # report an error
+ if (!is.null(jlerr))
+ stop(jlerr)
+ else
+ stop(json)
+
+ }
+
+ renv_json_read_jsonlite <- function(file = NULL, text = NULL) {
+ text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n")
+ jsonlite::fromJSON(txt = text, simplifyVector = FALSE)
+ }
+
+ renv_json_read_default <- function(file = NULL, text = NULL) {
+
+ # find strings in the JSON
+ text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n")
+ pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
+ locs <- gregexpr(pattern, text, perl = TRUE)[[1]]
+
+ # if any are found, replace them with placeholders
+ replaced <- text
+ strings <- character()
+ replacements <- character()
+
+ if (!identical(c(locs), -1L)) {
+
+ # get the string values
+ starts <- locs
+ ends <- locs + attr(locs, "match.length") - 1L
+ strings <- substring(text, starts, ends)
+
+ # only keep those requiring escaping
+ strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE)
+
+ # compute replacements
+ replacements <- sprintf('"\032%i\032"', seq_along(strings))
+
+ # replace the strings
+ mapply(function(string, replacement) {
+ replaced <<- sub(string, replacement, replaced, fixed = TRUE)
+ }, strings, replacements)
+
+ }
+
+ # transform the JSON into something the R parser understands
+ transformed <- replaced
+ transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE)
+ transformed <- gsub("[[{]", "list(", transformed, perl = TRUE)
+ transformed <- gsub("[]}]", ")", transformed, perl = TRUE)
+ transformed <- gsub(":", "=", transformed, fixed = TRUE)
+ text <- paste(transformed, collapse = "\n")
+
+ # parse it
+ json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]]
+
+ # construct map between source strings, replaced strings
+ map <- as.character(parse(text = strings))
+ names(map) <- as.character(parse(text = replacements))
+
+ # convert to list
+ map <- as.list(map)
+
+ # remap strings in object
+ remapped <- renv_json_read_remap(json, map)
+
+ # evaluate
+ eval(remapped, envir = baseenv())
+
+ }
+
+ renv_json_read_remap <- function(json, map) {
+
+ # fix names
+ if (!is.null(names(json))) {
+ lhs <- match(names(json), names(map), nomatch = 0L)
+ rhs <- match(names(map), names(json), nomatch = 0L)
+ names(json)[rhs] <- map[lhs]
+ }
+
+ # fix values
+ if (is.character(json))
+ return(map[[json]] %||% json)
+
+ # handle true, false, null
+ if (is.name(json)) {
+ text <- as.character(json)
+ if (text == "true")
+ return(TRUE)
+ else if (text == "false")
+ return(FALSE)
+ else if (text == "null")
+ return(NULL)
+ }
+
+ # recurse
+ if (is.recursive(json)) {
+ for (i in seq_along(json)) {
+ json[i] <- list(renv_json_read_remap(json[[i]], map))
+ }
+ }
+
+ json
+
+ }
+
+ # load the renv profile, if any
+ renv_bootstrap_profile_load(project)
+
+ # construct path to library root
+ root <- renv_bootstrap_library_root(project)
+
+ # construct library prefix for platform
+ prefix <- renv_bootstrap_platform_prefix()
+
+ # construct full libpath
+ libpath <- file.path(root, prefix)
+
+ # run bootstrap code
+ renv_bootstrap_exec(project, libpath, version)
+
+ invisible()
+
+})
diff --git a/renv/settings.json b/renv/settings.json
new file mode 100644
index 0000000..ffdbb32
--- /dev/null
+++ b/renv/settings.json
@@ -0,0 +1,19 @@
+{
+ "bioconductor.version": null,
+ "external.libraries": [],
+ "ignored.packages": [],
+ "package.dependency.fields": [
+ "Imports",
+ "Depends",
+ "LinkingTo"
+ ],
+ "ppm.enabled": null,
+ "ppm.ignored.urls": [],
+ "r.version": null,
+ "snapshot.type": "implicit",
+ "use.cache": true,
+ "vcs.ignore.cellar": true,
+ "vcs.ignore.library": true,
+ "vcs.ignore.local": true,
+ "vcs.manage.ignores": true
+}
diff --git a/rhino.yml b/rhino.yml
new file mode 100644
index 0000000..d4cb260
--- /dev/null
+++ b/rhino.yml
@@ -0,0 +1,2 @@
+sass: node
+# legacy_entrypoint: box_top_level
diff --git a/rsconnect/shinyapps.io/brentkaplan/shinybeez.dcf b/rsconnect/shinyapps.io/brentkaplan/shinybeez.dcf
new file mode 100644
index 0000000..d741d90
--- /dev/null
+++ b/rsconnect/shinyapps.io/brentkaplan/shinybeez.dcf
@@ -0,0 +1,13 @@
+name: shinybeez
+title: shinybeez
+username: brentkaplan
+account: brentkaplan
+server: shinyapps.io
+hostUrl: https://api.shinyapps.io/v1
+appId: 12336420
+bundleId: 8885526
+url: https://brentkaplan.shinyapps.io/shinybeez/
+version: 1
+asMultiple: FALSE
+asStatic: FALSE
+ignoredFiles: debugging.R|other|shinybeez.code-workspace|ms
diff --git a/shinybeez.Rproj b/shinybeez.Rproj
new file mode 100644
index 0000000..8e3c2eb
--- /dev/null
+++ b/shinybeez.Rproj
@@ -0,0 +1,13 @@
+Version: 1.0
+
+RestoreWorkspace: Default
+SaveWorkspace: Default
+AlwaysSaveHistory: Default
+
+EnableCodeIndexing: Yes
+UseSpacesForTab: Yes
+NumSpacesForTab: 2
+Encoding: UTF-8
+
+RnwWeave: Sweave
+LaTeX: pdfLaTeX