:root {
  --cdb-spacing-0: 0;
  --cdb-spacing-1: 0.25rem;
  --cdb-spacing-2: 0.5rem;
  --cdb-spacing-3: 1rem;
  --cdb-spacing-4: 1.5rem;
  --cdb-spacing-5: 3rem;
}

/* Legacy spacing helpers */
.ml-0 { margin-left: var(--cdb-spacing-0) !important; }
.ml-1 { margin-left: var(--cdb-spacing-1) !important; }
.ml-2 { margin-left: var(--cdb-spacing-2) !important; }
.ml-3 { margin-left: var(--cdb-spacing-3) !important; }
.ml-4 { margin-left: var(--cdb-spacing-4) !important; }
.ml-auto { margin-left: auto !important; }
.ml-n1 { margin-left: calc(-1 * var(--cdb-spacing-1)) !important; }

.mr-0 { margin-right: var(--cdb-spacing-0) !important; }
.mr-1 { margin-right: var(--cdb-spacing-1) !important; }
.mr-2 { margin-right: var(--cdb-spacing-2) !important; }
.mr-3 { margin-right: var(--cdb-spacing-3) !important; }
.mr-4 { margin-right: var(--cdb-spacing-4) !important; }
.mr-auto { margin-right: auto !important; }
.mr-n1 { margin-right: calc(-1 * var(--cdb-spacing-1)) !important; }
.mr-n3 { margin-right: calc(-1 * var(--cdb-spacing-3)) !important; }

.pl-0 { padding-left: var(--cdb-spacing-0) !important; }
.pl-2 { padding-left: var(--cdb-spacing-2) !important; }
.pl-3 { padding-left: var(--cdb-spacing-3) !important; }

.pr-0 { padding-right: var(--cdb-spacing-0) !important; }

@media (min-width: 576px) {
  .mr-sm-2 { margin-right: var(--cdb-spacing-2) !important; }
}

@media (min-width: 992px) {
  .ml-lg-2 { margin-left: var(--cdb-spacing-2) !important; }
  .ml-lg-4 { margin-left: var(--cdb-spacing-4) !important; }
  .pl-lg-4 { padding-left: var(--cdb-spacing-4) !important; }
  .pl-lg-5 { padding-left: var(--cdb-spacing-5) !important; }
  .pr-lg-0 { padding-right: var(--cdb-spacing-0) !important; }
  .pr-lg-3 { padding-right: var(--cdb-spacing-3) !important; }
}

@media (min-width: 1200px) {
  .ml-xl-3 { margin-left: var(--cdb-spacing-3) !important; }
  .mr-xl-5 { margin-right: var(--cdb-spacing-5) !important; }
  .pl-xl-4 { padding-left: var(--cdb-spacing-4) !important; }
}

/* Negative gutter helper */
.ml-n1, .mr-n1 { position: relative; }

/* Float utilities */
.float-left { float: left !important; }
.float-right { float: right !important; }

/* Text alignment */
.text-left { text-align: left !important; }
.text-right { text-align: right !important; }

/* Border helpers */
.border-left-0 { border-left: 0 !important; }
.border-right-0 { border-right: 0 !important; }

/* Dropdown alignment */
.dropdown-menu-right { right: 0; left: auto; }

/* Navbar toggler legacy helper */
.navbar-toggler-right { margin-left: auto; }

/* Badge palette aliases */
.badge-primary { background-color: var(--bs-primary, #0d6efd) !important; color: var(--bs-white, #fff) !important; }
.badge-secondary { background-color: var(--bs-secondary, #6c757d) !important; color: var(--bs-white, #fff) !important; }
.badge-success { background-color: var(--bs-success, #198754) !important; color: var(--bs-white, #fff) !important; }
.badge-danger { background-color: var(--bs-danger, #dc3545) !important; color: var(--bs-white, #fff) !important; }
.badge-warning { background-color: var(--bs-warning, #ffc107) !important; color: var(--bs-dark, #212529) !important; }
.badge-info { background-color: var(--bs-info, #0dcaf0) !important; color: var(--bs-white, #fff) !important; }
.badge-light { background-color: var(--bs-light, #f8f9fa) !important; color: var(--bs-body-color, #212529) !important; }
.badge-transparent { background-color: transparent !important; color: inherit !important; }

.badge-pill { border-radius: 10rem !important; }

/* Form helpers */
.form-inline { display: flex; flex-flow: row wrap; align-items: center; }

.input-group-append { display: flex; }
.input-group-append > .btn, .input-group-append > .btn-group { border-top-left-radius: 0; border-bottom-left-radius: 0; }

/* Legacy screen reader helper */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.sr-only-focusable:active, .sr-only-focusable:focus { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; white-space: normal; }