:root {
  --bs-body-color: #212529;
  --bs-body-bg: #fff;
  --bs-border-color: #dee2e6;
  --bs-border-radius: .375rem;
  --bs-danger: #dc3545;
  --bs-success: #198754;
}

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; color: var(--bs-body-color); background: var(--bs-body-bg); }
a { color: inherit; }
img, svg { vertical-align: middle; }
button, input, textarea, select { font: inherit; }

.container {
  width: 100%;
  max-width: 1140px;
  margin-right: auto;
  margin-left: auto;
  padding-right: 12px;
  padding-left: 12px;
}

.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-.5 * var(--bs-gutter-x));
  margin-left: calc(-.5 * var(--bs-gutter-x));
}
.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * .5);
  padding-left: calc(var(--bs-gutter-x) * .5);
  margin-top: var(--bs-gutter-y);
}
.g-2 { --bs-gutter-x: .5rem; --bs-gutter-y: .5rem; }
.g-3 { --bs-gutter-x: 1rem; --bs-gutter-y: 1rem; }
.g-4 { --bs-gutter-x: 1.5rem; --bs-gutter-y: 1.5rem; }
.row-cols-2 > * { flex: 0 0 auto; width: 50%; }
.col-6 { flex: 0 0 auto; width: 50%; }
.col-12 { flex: 0 0 auto; width: 100%; }

.d-block { display: block !important; }
.d-flex { display: flex !important; }
.d-none { display: none !important; }
.flex-column { flex-direction: column !important; }
.flex-wrap { flex-wrap: wrap !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.align-items-center { align-items: center !important; }
.align-items-start { align-items: flex-start !important; }
.align-items-baseline { align-items: baseline !important; }
.align-self-start { align-self: flex-start !important; }
.justify-content-between { justify-content: space-between !important; }
.justify-content-center { justify-content: center !important; }
.justify-content-md-end { justify-content: center !important; }
.justify-content-center { justify-content: center !important; }
.gap-0 { gap: 0 !important; }
.gap-2 { gap: .5rem !important; }
.gap-3 { gap: 1rem !important; }

.position-relative { position: relative !important; }
.position-absolute { position: absolute !important; }
.position-fixed { position: fixed !important; }
.sticky-top { position: sticky; top: 0; z-index: 1020; }
.top-0 { top: 0 !important; }
.bottom-0 { bottom: 0 !important; }
.start-0 { left: 0 !important; }
.end-0 { right: 0 !important; }
.start-50 { left: 50% !important; }
.translate-middle-x { transform: translateX(-50%) !important; }
.w-100 { width: 100% !important; }
.h-100 { height: 100% !important; }
.min-vh-100 { min-height: 100vh !important; }
.overflow-hidden { overflow: hidden !important; }

.m-2 { margin: .5rem !important; }
.m-auto { margin: auto !important; }
.mx-auto { margin-right: auto !important; margin-left: auto !important; }
.mt-auto { margin-top: auto !important; }
.mt-2 { margin-top: .5rem !important; }
.mt-3 { margin-top: 1rem !important; }
.mt-4 { margin-top: 1.5rem !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-2 { margin-bottom: .5rem !important; }
.mb-3 { margin-bottom: 1rem !important; }
.mb-4 { margin-bottom: 1.5rem !important; }
.my-2 { margin-top: .5rem !important; margin-bottom: .5rem !important; }
.me-2 { margin-right: .5rem !important; }
.ms-auto { margin-left: auto !important; }
.p-0 { padding: 0 !important; }
.p-2 { padding: .5rem !important; }
.p-3 { padding: 1rem !important; }
.p-4 { padding: 1.5rem !important; }
.px-3 { padding-right: 1rem !important; padding-left: 1rem !important; }
.px-4 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; }
.py-2 { padding-top: .5rem !important; padding-bottom: .5rem !important; }
.py-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.py-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
.pb-0 { padding-bottom: 0 !important; }
.pb-1 { padding-bottom: .25rem !important; }
.pb-4 { padding-bottom: 1.5rem !important; }
.pt-2 { padding-top: .5rem !important; }
.gy-3 { --bs-gutter-y: 1rem; }
.order-1 { order: 1 !important; }
.order-2 { order: 2 !important; }

.text-center { text-align: center !important; }
.text-dark { color: #212529 !important; }
.text-decoration-none { text-decoration: none !important; }
.text-uppercase { text-transform: uppercase !important; }
.small { font-size: .875em !important; }
.fw-semibold { font-weight: 600 !important; }
.border-0 { border: 0 !important; }
.border-bottom { border-bottom: 1px solid var(--bs-border-color) !important; }
.shadow-sm { box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important; }
.bg-light { background-color: #f8f9fa !important; }
.rounded-3 { border-radius: .5rem !important; }
.rounded-4 { border-radius: 1rem !important; }
.rounded-circle { border-radius: 50% !important; }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  padding: .55rem .9rem;
  border: 1px solid transparent;
  border-radius: var(--bs-border-radius);
  background: transparent;
  color: inherit;
  text-decoration: none;
  line-height: 1.4;
  cursor: pointer;
  transition: color .15s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.btn:hover { text-decoration: none; }
.btn-sm { padding: .35rem .55rem; font-size: .875rem; }
.btn-lg { padding: .75rem 1.25rem; font-size: 1rem; }
.btn-link { color: inherit; border-color: transparent; background: transparent; }
.btn-outline-secondary { border-color: #6c757d; color: #495057; }
.btn-outline-secondary:hover { background: #6c757d; color: #fff; }
.btn-outline-dark { border-color: #212529; color: #212529; }
.btn-outline-dark:hover { background: #212529; color: #fff; }
.btn-close {
  width: 1em;
  height: 1em;
  padding: .25em;
  border: 0;
  background: transparent;
  color: currentColor;
  opacity: .65;
  cursor: pointer;
}
.btn-close::before { content: "x"; font-size: 1.25rem; line-height: 1; }
.btn-close-white { color: #fff; opacity: .9; }

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  background: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: .375rem;
}
.card-body { flex: 1 1 auto; padding: 1rem; }
.badge {
  display: inline-block;
  padding: .35em .65em;
  font-size: .75em;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  border-radius: .375rem;
}
.bg-success { background: var(--bs-success) !important; }

.form-control, .form-select {
  display: block;
  width: 100%;
  padding: .65rem .85rem;
  font-size: 1rem;
  line-height: 1.5;
  color: #212529;
  background-color: #fff;
  border: 1px solid #ced4da;
  border-radius: .375rem;
}
.form-control:focus, .form-select:focus {
  border-color: #caa83c;
  outline: 0;
  box-shadow: 0 0 0 .2rem rgba(212,175,55,.18);
}
.form-control-lg { min-height: 3rem; font-size: 1.05rem; }
.input-group { display: flex; width: 100%; }
.input-group > .form-control { flex: 1 1 auto; min-width: 0; }

.alert {
  position: relative;
  padding: 1rem;
  margin-bottom: 1rem;
  border: 1px solid transparent;
  border-radius: .375rem;
}
.alert-danger { color: #842029; background: #f8d7da; border-color: #f5c2c7; }

.ratio { position: relative; width: 100%; }
.ratio::before { display: block; padding-top: var(--bs-aspect-ratio); content: ""; }
.ratio > * { position: absolute; inset: 0; width: 100%; height: 100%; }
.ratio-1x1 { --bs-aspect-ratio: 100%; }

.navbar { position: relative; display: flex; flex-wrap: wrap; align-items: center; }
.navbar > .container { display: flex; flex-wrap: inherit; align-items: center; justify-content: space-between; }
.navbar-brand { padding-top: .3125rem; padding-bottom: .3125rem; margin-right: 1rem; text-decoration: none; white-space: nowrap; }
.navbar-nav { display: flex; flex-direction: column; padding-left: 0; margin: 0; list-style: none; }
.nav-link { display: block; padding: .5rem; text-decoration: none; }
.navbar-toggler { padding: .25rem .5rem; border: 1px solid transparent; background: transparent; }
.navbar-toggler-icon {
  display: inline-block;
  width: 1.5em;
  height: 1.5em;
  background: linear-gradient(currentColor,currentColor) center 35%/1.4em 2px no-repeat,
              linear-gradient(currentColor,currentColor) center 50%/1.4em 2px no-repeat,
              linear-gradient(currentColor,currentColor) center 65%/1.4em 2px no-repeat;
}
.collapse:not(.show) { display: none; }

.dropdown { position: relative; }
.dropdown-menu {
  position: absolute;
  z-index: 1000;
  display: none;
  min-width: 10rem;
  padding: .5rem 0;
  margin: 0;
  color: #212529;
  text-align: left;
  list-style: none;
  background: #fff;
  border: 1px solid rgba(0,0,0,.15);
  border-radius: .375rem;
}
.dropdown-menu.show { display: block; }
.dropdown-menu-end { right: 0; left: auto; }
.dropdown-item {
  display: block;
  width: 100%;
  padding: .45rem 1rem;
  clear: both;
  color: #212529;
  text-decoration: none;
  white-space: nowrap;
  background: transparent;
  border: 0;
}
.dropdown-item:hover { background: #f8f9fa; }
.dropdown-divider { height: 0; margin: .5rem 0; overflow: hidden; border-top: 1px solid rgba(0,0,0,.15); }

.modal {
  position: fixed;
  inset: 0;
  z-index: 1055;
  display: none;
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  outline: 0;
  background: rgba(0,0,0,.45);
}
.modal.show { display: block; }
.modal-dialog { position: relative; width: auto; margin: .5rem; pointer-events: none; }
.modal-dialog-centered { display: flex; align-items: center; min-height: calc(100% - 1rem); }
.modal-dialog-scrollable { height: calc(100% - 1rem); }
.modal-dialog-scrollable .modal-content { max-height: 100%; overflow: hidden; }
.modal-dialog-scrollable .modal-body { overflow-y: auto; }
.modal-content {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  pointer-events: auto;
  background: #fff;
  border-radius: .5rem;
  outline: 0;
}
.modal-header { display: flex; flex-shrink: 0; align-items: center; justify-content: space-between; padding: 1rem; }
.modal-title { margin: 0; line-height: 1.5; }
.modal-body { position: relative; flex: 1 1 auto; padding: 1rem; }
.modal-open { overflow: hidden; }

.offcanvas {
  position: fixed;
  bottom: 0;
  z-index: 1045;
  display: flex;
  flex-direction: column;
  max-width: 100%;
  visibility: hidden;
  background: #fff;
  outline: 0;
  transition: transform .3s ease-in-out;
}
.offcanvas-end { top: 0; right: 0; width: 400px; transform: translateX(100%); }
.offcanvas.show { visibility: visible; transform: none; }
.offcanvas-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem; }
.offcanvas-title { margin: 0; line-height: 1.5; }
.offcanvas-body { flex-grow: 1; padding: 1rem; overflow-y: auto; }

.toast-container { z-index: 1090; }
.toast { display: none; width: 100%; max-width: 350px; background: rgba(33,37,41,.96); color: #fff; border-radius: .5rem; }
.toast.show { display: block; }
.toast-body { padding: .75rem; word-wrap: break-word; }

.h4 { font-size: calc(1.275rem + .3vw); }
.h6 { font-size: 1rem; }

@media (min-width: 576px) {
  .container { max-width: 540px; }
  .col-sm-4 { flex: 0 0 auto; width: 33.333333%; }
  .col-sm-8 { flex: 0 0 auto; width: 66.666667%; }
  .row-cols-sm-3 > * { flex: 0 0 auto; width: 33.333333%; }
  .d-sm-block { display: block !important; }
  .flex-sm-row { flex-direction: row !important; }
  .p-sm-3 { padding: 1rem !important; }
  .p-sm-5 { padding: 3rem !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; }
  .mt-sm-3 { margin-top: 1rem !important; }
  .m-sm-3 { margin: 1rem !important; }
  .modal-fullscreen-sm-down { width: auto; max-width: none; height: auto; margin: .5rem; }
}

@media (min-width: 768px) {
  .container { max-width: 720px; }
  .col-md-6 { flex: 0 0 auto; width: 50%; }
  .row-cols-md-3 > * { flex: 0 0 auto; width: 33.333333%; }
  .d-md-flex { display: flex !important; }
  .p-md-5 { padding: 3rem !important; }
  .g-md-4 { --bs-gutter-x: 1.5rem; --bs-gutter-y: 1.5rem; }
  .text-md-start { text-align: left !important; }
  .justify-content-md-end { justify-content: flex-end !important; }
}

@media (min-width: 992px) {
  .container { max-width: 960px; }
  .col-lg-2 { flex: 0 0 auto; width: 16.666667%; }
  .col-lg-3 { flex: 0 0 auto; width: 25%; }
  .col-lg-4 { flex: 0 0 auto; width: 33.333333%; }
  .col-lg-5 { flex: 0 0 auto; width: 41.666667%; }
  .col-lg-7 { flex: 0 0 auto; width: 58.333333%; }
  .col-lg-8 { flex: 0 0 auto; width: 66.666667%; }
  .col-lg-9 { flex: 0 0 auto; width: 75%; }
  .row-cols-lg-4 > * { flex: 0 0 auto; width: 25%; }
  .d-lg-block { display: block !important; }
  .d-lg-flex { display: flex !important; }
  .d-lg-none { display: none !important; }
  .navbar-expand-lg { flex-wrap: nowrap; justify-content: flex-start; }
  .navbar-expand-lg .navbar-nav { flex-direction: row; }
  .navbar-expand-lg .navbar-collapse { display: flex !important; flex-basis: auto; }
  .navbar-expand-lg .navbar-toggler { display: none; }
  .g-lg-3 { --bs-gutter-x: 1rem; --bs-gutter-y: 1rem; }
  .g-lg-4 { --bs-gutter-x: 1.5rem; --bs-gutter-y: 1.5rem; }
  .g-lg-5 { --bs-gutter-x: 3rem; --bs-gutter-y: 3rem; }
  .px-lg-5 { padding-right: 3rem !important; padding-left: 3rem !important; }
  .order-lg-1 { order: 1 !important; }
  .order-lg-2 { order: 2 !important; }
}

@media (min-width: 1200px) {
  .container { max-width: 1260px; }
  .row-cols-xl-4 > * { flex: 0 0 auto; width: 25%; }
}

@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-radius: 0;
  }
}
