/* ==========================================================================
   Bootstrap compatibility layer (self-hosted)
   --------------------------------------------------------------------------
   Replaces the Bootstrap 5 CDN dependency. Implements the subset of Bootstrap
   grid / utilities / components actually used across the (as-yet unmigrated)
   templates, so nothing breaks while pages migrate to the Tailwind design
   system. Values track Bootstrap 5.3 defaults for visual continuity.
   Bootstrap Icons (bi-*) remain a separate icon webfont and are unaffected.
   ========================================================================== */

:root {
  --bs-blue: #0d6efd;
  --bs-primary: #0d6efd;
  --bs-secondary: #6c757d;
  --bs-success: #198754;
  --bs-danger: #dc3545;
  --bs-warning: #ffc107;
  --bs-info: #0dcaf0;
  --bs-light: #f8f9fa;
  --bs-dark: #212529;
  --bs-body-color: #212529;
  --bs-body-bg: #fff;
  --bs-border-color: #dee2e6;
  --bs-border-radius: 0.375rem;
  --bs-border-radius-sm: 0.25rem;
  --bs-border-radius-lg: 0.5rem;
  --bs-link-color: #0d6efd;
  --bs-link-hover-color: #0a58ca;

  --bs-primary-subtle: #cfe2ff;
  --bs-secondary-subtle: #e2e3e5;
  --bs-success-subtle: #d1e7dd;
  --bs-danger-subtle: #f8d7da;
  --bs-warning-subtle: #fff3cd;
  --bs-info-subtle: #cff4fc;

  --bs-primary-text-emphasis: #052c65;
  --bs-success-text-emphasis: #0a3622;
  --bs-danger-text-emphasis: #58151c;
}

/* ------- minimal reboot (only what legacy CSS depends on) ------- */
*, *::before, *::after { box-sizing: border-box; }

/* ============================ Grid ============================ */
.container, .container-fluid {
  width: 100%;
  padding-right: 0.75rem;
  padding-left: 0.75rem;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 576px) { .container { max-width: 540px; } }
@media (min-width: 768px) { .container { max-width: 720px; } }
@media (min-width: 992px) { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1140px; } }
@media (min-width: 1400px) { .container { max-width: 1320px; } }

.row {
  --gutter-x: 1.5rem;
  --gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--gutter-y));
  margin-right: calc(-0.5 * var(--gutter-x));
  margin-left: calc(-0.5 * var(--gutter-x));
}
.row > * {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(0.5 * var(--gutter-x));
  padding-left: calc(0.5 * var(--gutter-x));
  margin-top: var(--gutter-y);
}
.col { flex: 1 0 0%; }
.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%; }

@media (min-width: 576px) {
  .col-sm-4 { flex: 0 0 auto; width: 33.33333333%; }
  .col-sm-6 { flex: 0 0 auto; width: 50%; }
  .col-sm-8 { flex: 0 0 auto; width: 66.66666667%; }
}
@media (min-width: 768px) {
  .col-md-3 { flex: 0 0 auto; width: 25%; }
  .col-md-4 { flex: 0 0 auto; width: 33.33333333%; }
  .col-md-6 { flex: 0 0 auto; width: 50%; }
  .col-md-8 { flex: 0 0 auto; width: 66.66666667%; }
  .col-md-10 { flex: 0 0 auto; width: 83.33333333%; }
}
@media (min-width: 992px) {
  .col-lg-2 { flex: 0 0 auto; width: 16.66666667%; }
  .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-10 { flex: 0 0 auto; width: 83.33333333%; }
  .col-lg-12 { flex: 0 0 auto; width: 100%; }
}

.g-1 { --gutter-x: 0.25rem; --gutter-y: 0.25rem; }
.g-2 { --gutter-x: 0.5rem; --gutter-y: 0.5rem; }
.g-3 { --gutter-x: 1rem; --gutter-y: 1rem; }
.g-4 { --gutter-x: 1.5rem; --gutter-y: 1.5rem; }
.g-5 { --gutter-x: 3rem; --gutter-y: 3rem; }

/* ========================= Display ========================= */
.d-none { display: none !important; }
.d-inline { display: inline !important; }
.d-inline-block { display: inline-block !important; }
.d-block { display: block !important; }
.d-grid { display: grid !important; }
.d-flex { display: flex !important; }
.d-inline-flex { display: inline-flex !important; }
.d-table { display: table !important; }
.d-table-cell { display: table-cell !important; }
@media (min-width: 576px) {
  .d-sm-none { display: none !important; }
  .d-sm-inline { display: inline !important; }
  .d-sm-block { display: block !important; }
  .d-sm-flex { display: flex !important; }
}
@media (min-width: 768px) {
  .d-md-none { display: none !important; }
  .d-md-block { display: block !important; }
  .d-md-flex { display: flex !important; }
}
@media (min-width: 992px) {
  .d-lg-block { display: block !important; }
  .d-lg-flex { display: flex !important; }
  .d-lg-table-cell { display: table-cell !important; }
}

/* ========================== Flex ========================== */
.flex-row { flex-direction: row !important; }
.flex-column { flex-direction: column !important; }
.flex-wrap { flex-wrap: wrap !important; }
.flex-nowrap { flex-wrap: nowrap !important; }
.flex-fill { flex: 1 1 auto !important; }
.flex-grow-1 { flex-grow: 1 !important; }
@media (min-width: 576px) { .flex-sm-row { flex-direction: row !important; } }

.align-items-start { align-items: flex-start !important; }
.align-items-center { align-items: center !important; }
.align-items-end { align-items: flex-end !important; }
.align-items-baseline { align-items: baseline !important; }
.align-self-center { align-self: center !important; }
.align-middle { vertical-align: middle !important; }
.align-top { vertical-align: top !important; }

.justify-content-start { justify-content: flex-start !important; }
.justify-content-center { justify-content: center !important; }
.justify-content-end { justify-content: flex-end !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; }
@media (min-width: 768px) { .justify-content-md-end { justify-content: flex-end !important; } }

/* ========================= Spacing ========================= */
/* scale: 0=0, 1=.25rem, 2=.5rem, 3=1rem, 4=1.5rem, 5=3rem */
.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}
.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}
.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}
.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}
.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}
.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}
.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}
.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}
.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}
.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}
.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}
.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}
.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}

/* ========================= Typography ========================= */
.text-start{text-align:left!important}.text-center{text-align:center!important}.text-end{text-align:right!important}
.text-nowrap{white-space:nowrap!important}
.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.text-break{word-wrap:break-word!important;word-break:break-word!important}
.text-uppercase{text-transform:uppercase!important}.text-lowercase{text-transform:lowercase!important}.text-capitalize{text-transform:capitalize!important}
.text-decoration-none{text-decoration:none!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}
.fst-italic{font-style:italic!important}
.fs-1{font-size:2.5rem!important;line-height:1.2}.fs-2{font-size:2rem!important;line-height:1.2}.fs-3{font-size:1.75rem!important;line-height:1.2}.fs-4{font-size:1.5rem!important;line-height:1.2}.fs-5{font-size:1.25rem!important;line-height:1.2}.fs-6{font-size:1rem!important}
.lead{font-size:1.25rem;font-weight:300}
.small{font-size:.875em}
.display-1{font-size:5rem;font-weight:300;line-height:1.2}.display-2{font-size:4.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.display-5{font-size:3rem;font-weight:300;line-height:1.2}.display-6{font-size:2.5rem;font-weight:300;line-height:1.2}

.text-muted{color:#6c757d!important}
.text-body{color:var(--bs-body-color)!important}
.text-white{color:#fff!important}
.text-dark{color:#212529!important}
.text-black{color:#000!important}
.text-primary{color:var(--bs-primary)!important}
.text-secondary{color:var(--bs-secondary)!important}
.text-success{color:var(--bs-success)!important}
.text-danger{color:var(--bs-danger)!important}
.text-warning{color:#997404!important}
.text-info{color:#087990!important}
.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}
.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}

/* ========================= Backgrounds ========================= */
.bg-white{background-color:#fff!important}
.bg-body{background-color:var(--bs-body-bg)!important}
.bg-light{background-color:var(--bs-light)!important}
.bg-dark{background-color:var(--bs-dark)!important}
.bg-primary{background-color:var(--bs-primary)!important}
.bg-secondary{background-color:var(--bs-secondary)!important}
.bg-success{background-color:var(--bs-success)!important}
.bg-danger{background-color:var(--bs-danger)!important}
.bg-warning{background-color:var(--bs-warning)!important}
.bg-info{background-color:var(--bs-info)!important}
.bg-primary-subtle{background-color:var(--bs-primary-subtle)!important}
.bg-secondary-subtle{background-color:var(--bs-secondary-subtle)!important}
.bg-success-subtle{background-color:var(--bs-success-subtle)!important}
.bg-danger-subtle{background-color:var(--bs-danger-subtle)!important}
.bg-warning-subtle{background-color:var(--bs-warning-subtle)!important}
.bg-info-subtle{background-color:var(--bs-info-subtle)!important}

.text-bg-primary{color:#fff!important;background-color:var(--bs-primary)!important}
.text-bg-secondary{color:#fff!important;background-color:var(--bs-secondary)!important}
.text-bg-success{color:#fff!important;background-color:var(--bs-success)!important}
.text-bg-danger{color:#fff!important;background-color:var(--bs-danger)!important}
.text-bg-warning{color:#000!important;background-color:var(--bs-warning)!important}
.text-bg-info{color:#000!important;background-color:var(--bs-info)!important}
.text-bg-light{color:#000!important;background-color:var(--bs-light)!important}
.text-bg-dark{color:#fff!important;background-color:var(--bs-dark)!important}

/* ========================= Borders ========================= */
.border{border:1px solid var(--bs-border-color)!important}
.border-0{border:0!important}
.border-top{border-top:1px solid var(--bs-border-color)!important}
.border-bottom{border-bottom:1px solid var(--bs-border-color)!important}
.border-start{border-left:1px solid var(--bs-border-color)!important}
.border-end{border-right:1px solid var(--bs-border-color)!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-primary{border-color:var(--bs-primary)!important}
.border-success{border-color:var(--bs-success)!important}
.border-warning{border-color:var(--bs-warning)!important}
.border-danger{border-color:var(--bs-danger)!important}
.border-primary-subtle{border-color:var(--bs-primary-subtle)!important}
.border-success-subtle{border-color:var(--bs-success-subtle)!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:1rem!important}
.rounded-5{border-radius:2rem!important}
.rounded-circle{border-radius:50%!important}
.rounded-pill{border-radius:50rem!important}

/* ========================= Elevation ========================= */
.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}
.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}
.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}
.shadow-none{box-shadow:none!important}

/* ========================= Sizing ========================= */
.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}
.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}
.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}
.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}

/* ========================= Position ========================= */
.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}
.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}
.bottom-0{bottom:0!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-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}

.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}
.float-start{float:left!important}.float-end{float:right!important}
.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){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}

/* ========================= Buttons ========================= */
.btn{
  display:inline-block;font-weight:400;line-height:1.5;color:var(--bs-body-color);
  text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;
  user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;
  border-radius:var(--bs-border-radius);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn:hover{color:var(--bs-body-color)}
.btn:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.btn:disabled,.btn.disabled{opacity:.65;pointer-events:none}
.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}
.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}

.btn-primary{color:#fff;background-color:var(--bs-primary);border-color:var(--bs-primary)}
.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}
.btn-secondary{color:#fff;background-color:var(--bs-secondary);border-color:var(--bs-secondary)}
.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}
.btn-success{color:#fff;background-color:var(--bs-success);border-color:var(--bs-success)}
.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}
.btn-danger{color:#fff;background-color:var(--bs-danger);border-color:var(--bs-danger)}
.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}
.btn-warning{color:#000;background-color:var(--bs-warning);border-color:var(--bs-warning)}
.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}
.btn-info{color:#000;background-color:var(--bs-info);border-color:var(--bs-info)}
.btn-light{color:#000;background-color:var(--bs-light);border-color:var(--bs-light)}
.btn-light:hover{color:#000;background-color:#d3d4d5;border-color:#c6c7c8}
.btn-dark{color:#fff;background-color:var(--bs-dark);border-color:var(--bs-dark)}

.btn-outline-primary{color:var(--bs-primary);border-color:var(--bs-primary)}
.btn-outline-primary:hover{color:#fff;background-color:var(--bs-primary);border-color:var(--bs-primary)}
.btn-outline-secondary{color:var(--bs-secondary);border-color:var(--bs-secondary)}
.btn-outline-secondary:hover{color:#fff;background-color:var(--bs-secondary);border-color:var(--bs-secondary)}
.btn-outline-success{color:var(--bs-success);border-color:var(--bs-success)}
.btn-outline-success:hover{color:#fff;background-color:var(--bs-success);border-color:var(--bs-success)}
.btn-outline-danger{color:var(--bs-danger);border-color:var(--bs-danger)}
.btn-outline-danger:hover{color:#fff;background-color:var(--bs-danger);border-color:var(--bs-danger)}

.btn-link{font-weight:400;color:var(--bs-link-color);text-decoration:underline;border-color:transparent;background:none}
.btn-link:hover{color:var(--bs-link-hover-color)}

.btn-group{position:relative;display:inline-flex;vertical-align:middle}
.btn-group > .btn{position:relative;flex:1 1 auto}
.btn-group > .btn:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}
.btn-group > .btn:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
.btn-group-sm > .btn{padding:.25rem .5rem;font-size:.875rem}
.btn-group-vertical{display:inline-flex;flex-direction:column}
.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}
.btn-check:checked + .btn{color:#fff;background-color:var(--bs-primary);border-color:var(--bs-primary)}

/* close button */
.btn-close{
  box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;border:0;border-radius:.375rem;
  opacity:.5;background:transparent 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") center/1em auto no-repeat;
  cursor:pointer;
}
.btn-close:hover{opacity:.75}
.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}

/* ========================= Card ========================= */
.card{
  position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;
  background-color:#fff;background-clip:border-box;border:1px solid var(--bs-border-color);
  border-radius:var(--bs-border-radius);
}
.card-body{flex:1 1 auto;padding:1rem}
.card-header{padding:.75rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid var(--bs-border-color)}
.card-header:first-child{border-radius:calc(var(--bs-border-radius) - 1px) calc(var(--bs-border-radius) - 1px) 0 0}
.card-footer{padding:.75rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid var(--bs-border-color)}
.card-title{margin-bottom:.5rem;font-weight:500;font-size:1.25rem}
.card-subtitle{margin-top:-.25rem;margin-bottom:0}
.card-text:last-child{margin-bottom:0}

/* ========================= Badge ========================= */
.badge{
  display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;
  color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-border-radius-sm);
}
.badge.bg-light,.badge.bg-warning,.badge.bg-info{color:#000}

/* ========================= Alerts ========================= */
.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:var(--bs-border-radius)}
.alert-heading{color:inherit;font-weight:600}
.alert-dismissible{padding-right:3rem}
.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}
.alert-success{color:#0a3622;background-color:#d1e7dd;border-color:#a3cfbb}
.alert-danger{color:#58151c;background-color:#f8d7da;border-color:#f1aeb5}
.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffe69c}
.alert-info{color:#055160;background-color:#cff4fc;border-color:#9eeaf9}
.alert-light{color:#495057;background-color:#fcfcfd;border-color:#e9ecef}
.alert-primary{color:#052c65;background-color:#cfe2ff;border-color:#9ec5fe}

/* ========================= List group ========================= */
.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-border-radius)}
.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;background-color:#fff;border:1px solid rgba(0,0,0,.125)}
.list-group-item + .list-group-item{border-top-width:0}
.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}
.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}
.list-group-flush{border-radius:0}
.list-group-flush > .list-group-item{border-width:0 0 1px}
.list-group-flush > .list-group-item:last-child{border-bottom-width:0}
.list-group-numbered{list-style-type:none;counter-reset:section}
.list-group-numbered > .list-group-item::before{content:counters(section,".") ". ";counter-increment:section}

/* ========================= Forms ========================= */
.form-label{margin-bottom:.5rem}
.form-control{
  display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;
  color:var(--bs-body-color);background-color:#fff;border:1px solid #ced4da;border-radius:var(--bs-border-radius);
  transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.form-control:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}
.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:1px 0}
.form-select{
  display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;line-height:1.5;color:var(--bs-body-color);
  background-color:#fff;border:1px solid #ced4da;border-radius:var(--bs-border-radius);appearance:none;
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
  background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;
}
.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}
.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}
.form-check-inline{display:inline-block;margin-right:1rem}
.form-check-input{
  width:1em;height:1em;margin-top:.25em;margin-left:-1.5em;vertical-align:top;background-color:#fff;
  border:1px solid rgba(0,0,0,.25);appearance:none;print-color-adjust:exact;
}
.form-check-input[type=checkbox]{border-radius:.25em}
.form-check-input[type=radio]{border-radius:50%}
.form-check-input:checked{background-color:var(--bs-primary);border-color:var(--bs-primary)}
.form-check-input:checked[type=checkbox]{background-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");background-size:contain;background-repeat:no-repeat;background-position:center}
.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.form-check-label{cursor:pointer}
.form-switch{padding-left:2.5em}
.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba(0,0,0,.25)'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}
.form-switch .form-check-input:checked{background-position:right center;background-image: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")}

.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}
.input-group > .form-control,.input-group > .form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}
.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-light);border:1px solid #ced4da;border-radius:var(--bs-border-radius)}
.input-group > :not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}
.input-group > :not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-danger)}
.is-invalid ~ .invalid-feedback{display:block}
.is-invalid{border-color:var(--bs-danger)!important}
.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-success)}
.is-valid ~ .valid-feedback{display:block}

/* ========================= Tables ========================= */
.table{width:100%;margin-bottom:1rem;color:var(--bs-body-color);vertical-align:top;border-color:var(--bs-border-color)}
.table > :not(caption) > * > *{padding:.5rem .5rem;border-bottom:1px solid var(--bs-border-color)}
.table > thead{vertical-align:bottom}
.table-sm > :not(caption) > * > *{padding:.25rem .25rem}
.table-striped > tbody > tr:nth-of-type(odd) > *{background-color:rgba(0,0,0,.05)}
.table-hover > tbody > tr:hover > *{background-color:rgba(0,0,0,.075)}
.table-light > :not(caption) > * > *,.table-light th{background-color:var(--bs-light)}
.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ========================= Nav / tabs / pills ========================= */
.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}
.nav-link{display:block;padding:.5rem 1rem;color:var(--bs-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out}
.nav-link:hover{color:var(--bs-link-hover-color)}
.nav-link.disabled{color:#6c757d;pointer-events:none}
.nav-tabs{border-bottom:1px solid var(--bs-border-color)}
.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius)}
.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef var(--bs-border-color)}
.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:var(--bs-border-color) var(--bs-border-color) #fff}
.nav-pills .nav-link{border-radius:var(--bs-border-radius)}
.nav-pills .nav-link.active{color:#fff;background-color:var(--bs-primary)}
.tab-content > .tab-pane{display:none}
.tab-content > .active{display:block}

/* ========================= Pagination ========================= */
.pagination{display:flex;padding-left:0;list-style:none}
.page-link{position:relative;display:block;padding:.375rem .75rem;color:var(--bs-link-color);text-decoration:none;background-color:#fff;border:1px solid var(--bs-border-color)}
.page-link:hover{color:var(--bs-link-hover-color);background-color:var(--bs-light)}
.page-item:not(:first-child) .page-link{margin-left:-1px}
.page-item:first-child .page-link{border-top-left-radius:var(--bs-border-radius);border-bottom-left-radius:var(--bs-border-radius)}
.page-item:last-child .page-link{border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius)}
.page-item.active .page-link{z-index:3;color:#fff;background-color:var(--bs-primary);border-color:var(--bs-primary)}
.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff}

/* ========================= Dropdown ========================= */
.dropdown{position:relative}
.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}
.dropdown-menu{
  position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:var(--bs-body-color);
  text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);
  border-radius:var(--bs-border-radius);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);
}
.dropdown-menu.show{display:block}
.dropdown-menu-end{right:0;left:auto}
.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background:transparent;border:0;cursor:pointer}
.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background-color:#e9ecef}
.dropdown-item.active{color:#fff;background-color:var(--bs-primary)}
.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}
.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}

/* ========================= Modal ========================= */
body.modal-open{overflow:hidden}
.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}
.modal.show{display:block}
.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}
@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-lg{max-width:800px}}
.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}
@media (min-width:576px){.modal-dialog-centered{min-height:calc(100% - 3.5rem)}}
.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}
.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--bs-border-color)}
.modal-title{margin-bottom:0;line-height:1.5}
.modal-body{position:relative;flex:1 1 auto;padding:1rem}
.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid var(--bs-border-color);gap:.5rem}
.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:var(--bs-backdrop-bg,#000);opacity:0}
.modal-backdrop.show{opacity:var(--bs-backdrop-opacity,.5)}
.fade{transition:opacity .15s linear}
.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-30px)}
.modal.show .modal-dialog{transform:none}

/* ========================= Toast ========================= */
.toast-container{position:absolute;z-index:1090;width:max-content;max-width:100%;pointer-events:none}
.toast{
  width:350px;max-width:100%;font-size:.875rem;color:var(--bs-body-color);pointer-events:auto;background-color:rgba(255,255,255,.95);
  background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:var(--bs-border-radius);
  display:none;margin-bottom:.75rem;
}
.toast.show{display:block}
.toast-body{padding:.75rem}

/* ========================= Spinner ========================= */
@keyframes bscompat-spin{to{transform:rotate(360deg)}}
.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite bscompat-spin}
.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}

/* ========================= Progress (Bootstrap base only) ========================= */
.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:var(--bs-border-radius)}
.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:var(--bs-primary);transition:width .6s ease}

/* ========================= Collapse ========================= */
/* Collapse — class name is bs-collapse (not "collapse") to avoid clashing with
   Tailwind's visibility:collapse utility on the same class name. */
.bs-collapse:not(.show){display:none}
.bs-collapse.show{display:block;visibility:visible}
.collapsing{height:0;overflow:hidden;transition:height .35s ease}
