/* =========================================================
   BOOTSTRAP 4 COMPATIBILITY SHIM
   BS5 renamed/removed a handful of classes still used across
   the codebase. These rules are self-contained (don't depend
   on BS5 internals) so they keep working regardless of future
   BS5 upgrades. Load this LAST, after bootstrap5 + theme css.

   Long term: grep the codebase for each block below and
   migrate views to the native BS5 class, then delete that
   block. Nothing here needs to be "fixed" urgently.
   ========================================================= */

/* ---------- btn-xs (removed in BS5) ---------- */
.btn-xs {
  padding: 0.125rem 0.4rem;
  font-size: 0.75rem;
  line-height: 1.5;
  border-radius: var(--ax-radius-sm, 4px);
}

/* ---------- btn-block (removed, replaced by w-100 / d-grid) ---------- */
.btn-block {
  display: block;
  width: 100%;
}

/* ---------- sr-only -> visually-hidden ---------- */
.sr-only {
  position: absolute !important;
  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;
}

/* ---------- text-left/right -> text-start/end ---------- */
.text-left {
  text-align: left !important;
}
.text-right {
  text-align: right !important;
}

/* ---------- float-left/right -> float-start/end ---------- */
.float-left {
  float: left !important;
}
.float-right {
  float: right !important;
}

/* ---------- ml-*/
mr-*/pl-*/pr-*
  -
  > ms-*/me-*/ps-*/pe-*
  ----------
  BS5
  kept
  x/y
  spacing
  but
  renamed
  left/right
  to
  start/end.
  Re-declare
  the
  old
  class
  names
  with
  the
  same
  values
  BS4
  used.
  */
  .ml-0 {
  margin-left: 0 !important;
}
.mr-0 {
  margin-right: 0 !important;
}
.pl-0 {
  padding-left: 0 !important;
}
.pr-0 {
  padding-right: 0 !important;
}
.ml-1 {
  margin-left: var(--ax-space-1, 0.25rem) !important;
}
.mr-1 {
  margin-right: var(--ax-space-1, 0.25rem) !important;
}
.pl-1 {
  padding-left: var(--ax-space-1, 0.25rem) !important;
}
.pr-1 {
  padding-right: var(--ax-space-1, 0.25rem) !important;
}
.ml-2 {
  margin-left: var(--ax-space-2, 0.5rem) !important;
}
.mr-2 {
  margin-right: var(--ax-space-2, 0.5rem) !important;
}
.pl-2 {
  padding-left: var(--ax-space-2, 0.5rem) !important;
}
.pr-2 {
  padding-right: var(--ax-space-2, 0.5rem) !important;
}
.ml-3 {
  margin-left: var(--ax-space-3, 0.75rem) !important;
}
.mr-3 {
  margin-right: var(--ax-space-3, 0.75rem) !important;
}
.pl-3 {
  padding-left: var(--ax-space-3, 0.75rem) !important;
}
.pr-3 {
  padding-right: var(--ax-space-3, 0.75rem) !important;
}
.ml-4 {
  margin-left: var(--ax-space-4, 1rem) !important;
}
.mr-4 {
  margin-right: var(--ax-space-4, 1rem) !important;
}
.pl-4 {
  padding-left: var(--ax-space-4, 1rem) !important;
}
.pr-4 {
  padding-right: var(--ax-space-4, 1rem) !important;
}
.ml-5 {
  margin-left: var(--ax-space-5, 1.5rem) !important;
}
.mr-5 {
  margin-right: var(--ax-space-5, 1.5rem) !important;
}
.pl-5 {
  padding-left: var(--ax-space-5, 1.5rem) !important;
}
.pr-5 {
  padding-right: var(--ax-space-5, 1.5rem) !important;
}
.ml-auto {
  margin-left: auto !important;
}
.mr-auto {
  margin-right: auto !important;
}

/* ---------- font-weight-* (removed, BS5 uses fw-*) ---------- */
.font-weight-bold {
  font-weight: 700 !important;
}
.font-weight-normal {
  font-weight: 400 !important;
}
.font-weight-light {
  font-weight: 300 !important;
}

/* ---------- form-group (removed in BS5) ---------- */
.form-group {
  margin-bottom: 1rem;
}
.form-row {
  display: flex;
  flex-wrap: wrap;
  margin-right: -5px;
  margin-left: -5px;
}
.form-row > .col,
.form-row > [class*="col-"] {
  padding-right: 5px;
  padding-left: 5px;
}

/* ---------- form-inline (removed) ---------- */
.form-inline {
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}
.form-inline .form-control {
  display: inline-block;
  width: auto;
  vertical-align: middle;
}

/* ---------- custom-control / custom-checkbox / custom-radio / custom-switch
   (BS5 replaced with .form-check / .form-switch, different markup).
   Re-implemented standalone so old .custom-control markup still renders. ---------- */
.custom-control {
  position: relative;
  display: block;
  min-height: 1.5rem;
  padding-left: 1.5rem;
}
.custom-control-input {
  position: absolute;
  left: 0;
  z-index: -1;
  width: 1rem;
  height: 1.25rem;
  opacity: 0;
}
.custom-control-label {
  position: relative;
  margin-bottom: 0;
  cursor: pointer;
}
.custom-control-label::before {
  position: absolute;
  top: 0.125rem;
  left: -1.5rem;
  display: block;
  width: 1rem;
  height: 1rem;
  content: "";
  background-color: #fff;
  border: 1px solid var(--ax-gray-400, #adb5bd);
}
.custom-control-label::after {
  position: absolute;
  top: 0.125rem;
  left: -1.5rem;
  display: block;
  width: 1rem;
  height: 1rem;
  content: "";
  background: 50% / 50% 50% no-repeat;
}
.custom-checkbox .custom-control-label::before {
  border-radius: 0.25rem;
}
.custom-radio .custom-control-label::before {
  border-radius: 50%;
}
.custom-control-input:checked ~ .custom-control-label::before {
  color: #fff;
  border-color: var(--ax-primary, #635bff);
  background-color: var(--ax-primary, #635bff);
}
.custom-control-input:checked ~ .custom-control-label::after {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e");
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
  background-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");
}
.custom-control-input:focus ~ .custom-control-label::before {
  box-shadow: 0 0 0 3px var(--ax-primary-soft, #f0efff);
}
.custom-control-input:disabled ~ .custom-control-label {
  color: var(--ax-gray-400, #adb5bd);
}
.custom-switch {
  padding-left: 2.25rem;
}
.custom-switch .custom-control-label::before {
  left: -2.25rem;
  width: 1.75rem;
  border-radius: 0.5rem;
}
.custom-switch .custom-control-label::after {
  top: calc(0.125rem + 2px);
  left: calc(-2.25rem + 2px);
  width: calc(1rem - 4px);
  height: calc(1rem - 4px);
  background-color: var(--ax-gray-400, #adb5bd);
  border-radius: 0.5rem;
  transition:
    transform 0.15s ease,
    background-color 0.15s ease;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
  background-color: #fff;
  transform: translateX(0.75rem);
}

/* ---------- custom-select (BS5 uses form-select) ---------- */
.custom-select {
  display: inline-block;
  width: 100%;
  padding: 0.375rem 1.75rem 0.375rem 0.75rem;
  border: 1px solid var(--ax-border, #ced4da);
  border-radius: var(--ax-radius-md, 6px);
  background: #fff
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e")
    right 0.75rem center/8px 10px no-repeat;
  appearance: none;
}

/* ---------- custom-file (removed in BS5, use form-control type=file) ---------- */
.custom-file {
  position: relative;
  display: inline-block;
  width: 100%;
  height: calc(1.5em + 0.75rem + 2px);
}
.custom-file-input {
  position: relative;
  z-index: 2;
  width: 100%;
  height: calc(1.5em + 0.75rem + 2px);
  opacity: 0;
}
.custom-file-label {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1;
  height: calc(1.5em + 0.75rem + 2px);
  padding: 0.375rem 0.75rem;
  border: 1px solid var(--ax-border, #ced4da);
  border-radius: var(--ax-radius-md, 6px);
  background: #fff;
}
.custom-file-label::after {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 3;
  display: block;
  height: calc(1.5em + 0.75rem);
  padding: 0.375rem 0.75rem;
  content: "Browse";
  background-color: var(--ax-gray-100, #e9ecef);
  border-left: 1px solid var(--ax-border, #ced4da);
}

/* ---------- close (BS5 renamed to btn-close, different markup) ---------- */
.close {
  float: right;
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  color: #000;
  opacity: 0.5;
  background: transparent;
  border: 0;
}
.close:hover {
  opacity: 0.75;
}

/* ---------- badge-pill (removed, use rounded-pill) ---------- */
.badge-pill {
  border-radius: var(--ax-radius-pill, 999px);
}

/* ---------- media object (removed in BS5) ---------- */
.media {
  display: flex;
  align-items: flex-start;
}
.media-body {
  flex: 1;
}
