/* =====================================================================
   bs4-compat.css - Bootstrap 4 class aliases on Bootstrap 5.3 (2026-09-25)
   ---------------------------------------------------------------------
   The app moved from Bootstrap 4.5 to 5.3. Rather than rewrite hundreds of
   class names across a dirty worktree (and in VB-built HTML strings), BS4
   class names that BS5 dropped are re-provided here, and a few BS4
   behaviours the pages rely on are restored. Generated by a script - to
   change the spacing/float/text aliases, regenerate rather than hand-edit.
   New code should use the BS5 names (ms-/me-, float-start, fw-bold, ...).
   Loaded by Site.master straight after the Bootswatch theme + brand files.
   ===================================================================== */
.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:.25rem !important}.mr-1{margin-right:.25rem !important}
.pl-1{padding-left:.25rem !important}.pr-1{padding-right:.25rem !important}
.ml-n1{margin-left:-.25rem !important}.mr-n1{margin-right:-.25rem !important}
.ml-2{margin-left:.5rem !important}.mr-2{margin-right:.5rem !important}
.pl-2{padding-left:.5rem !important}.pr-2{padding-right:.5rem !important}
.ml-n2{margin-left:-.5rem !important}.mr-n2{margin-right:-.5rem !important}
.ml-3{margin-left:1rem !important}.mr-3{margin-right:1rem !important}
.pl-3{padding-left:1rem !important}.pr-3{padding-right:1rem !important}
.ml-n3{margin-left:-1rem !important}.mr-n3{margin-right:-1rem !important}
.ml-4{margin-left:1.5rem !important}.mr-4{margin-right:1.5rem !important}
.pl-4{padding-left:1.5rem !important}.pr-4{padding-right:1.5rem !important}
.ml-n4{margin-left:-1.5rem !important}.mr-n4{margin-right:-1.5rem !important}
.ml-5{margin-left:3rem !important}.mr-5{margin-right:3rem !important}
.pl-5{padding-left:3rem !important}.pr-5{padding-right:3rem !important}
.ml-n5{margin-left:-3rem !important}.mr-n5{margin-right:-3rem !important}
.ml-auto{margin-left:auto !important}.mr-auto{margin-right:auto !important}
.float-left{float:left!important}.float-right{float:right!important}
.text-left{text-align:left!important}.text-right{text-align:right!important}
@media (min-width: 576px) {
.ml-sm-0{margin-left:0 !important}.mr-sm-0{margin-right:0 !important}
.pl-sm-0{padding-left:0 !important}.pr-sm-0{padding-right:0 !important}
.ml-sm-1{margin-left:.25rem !important}.mr-sm-1{margin-right:.25rem !important}
.pl-sm-1{padding-left:.25rem !important}.pr-sm-1{padding-right:.25rem !important}
.ml-sm-n1{margin-left:-.25rem !important}.mr-sm-n1{margin-right:-.25rem !important}
.ml-sm-2{margin-left:.5rem !important}.mr-sm-2{margin-right:.5rem !important}
.pl-sm-2{padding-left:.5rem !important}.pr-sm-2{padding-right:.5rem !important}
.ml-sm-n2{margin-left:-.5rem !important}.mr-sm-n2{margin-right:-.5rem !important}
.ml-sm-3{margin-left:1rem !important}.mr-sm-3{margin-right:1rem !important}
.pl-sm-3{padding-left:1rem !important}.pr-sm-3{padding-right:1rem !important}
.ml-sm-n3{margin-left:-1rem !important}.mr-sm-n3{margin-right:-1rem !important}
.ml-sm-4{margin-left:1.5rem !important}.mr-sm-4{margin-right:1.5rem !important}
.pl-sm-4{padding-left:1.5rem !important}.pr-sm-4{padding-right:1.5rem !important}
.ml-sm-n4{margin-left:-1.5rem !important}.mr-sm-n4{margin-right:-1.5rem !important}
.ml-sm-5{margin-left:3rem !important}.mr-sm-5{margin-right:3rem !important}
.pl-sm-5{padding-left:3rem !important}.pr-sm-5{padding-right:3rem !important}
.ml-sm-n5{margin-left:-3rem !important}.mr-sm-n5{margin-right:-3rem !important}
.ml-sm-auto{margin-left:auto !important}.mr-sm-auto{margin-right:auto !important}
.float-sm-left{float:left!important}.float-sm-right{float:right!important}
.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}
}
@media (min-width: 768px) {
.ml-md-0{margin-left:0 !important}.mr-md-0{margin-right:0 !important}
.pl-md-0{padding-left:0 !important}.pr-md-0{padding-right:0 !important}
.ml-md-1{margin-left:.25rem !important}.mr-md-1{margin-right:.25rem !important}
.pl-md-1{padding-left:.25rem !important}.pr-md-1{padding-right:.25rem !important}
.ml-md-n1{margin-left:-.25rem !important}.mr-md-n1{margin-right:-.25rem !important}
.ml-md-2{margin-left:.5rem !important}.mr-md-2{margin-right:.5rem !important}
.pl-md-2{padding-left:.5rem !important}.pr-md-2{padding-right:.5rem !important}
.ml-md-n2{margin-left:-.5rem !important}.mr-md-n2{margin-right:-.5rem !important}
.ml-md-3{margin-left:1rem !important}.mr-md-3{margin-right:1rem !important}
.pl-md-3{padding-left:1rem !important}.pr-md-3{padding-right:1rem !important}
.ml-md-n3{margin-left:-1rem !important}.mr-md-n3{margin-right:-1rem !important}
.ml-md-4{margin-left:1.5rem !important}.mr-md-4{margin-right:1.5rem !important}
.pl-md-4{padding-left:1.5rem !important}.pr-md-4{padding-right:1.5rem !important}
.ml-md-n4{margin-left:-1.5rem !important}.mr-md-n4{margin-right:-1.5rem !important}
.ml-md-5{margin-left:3rem !important}.mr-md-5{margin-right:3rem !important}
.pl-md-5{padding-left:3rem !important}.pr-md-5{padding-right:3rem !important}
.ml-md-n5{margin-left:-3rem !important}.mr-md-n5{margin-right:-3rem !important}
.ml-md-auto{margin-left:auto !important}.mr-md-auto{margin-right:auto !important}
.float-md-left{float:left!important}.float-md-right{float:right!important}
.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}
}
@media (min-width: 992px) {
.ml-lg-0{margin-left:0 !important}.mr-lg-0{margin-right:0 !important}
.pl-lg-0{padding-left:0 !important}.pr-lg-0{padding-right:0 !important}
.ml-lg-1{margin-left:.25rem !important}.mr-lg-1{margin-right:.25rem !important}
.pl-lg-1{padding-left:.25rem !important}.pr-lg-1{padding-right:.25rem !important}
.ml-lg-n1{margin-left:-.25rem !important}.mr-lg-n1{margin-right:-.25rem !important}
.ml-lg-2{margin-left:.5rem !important}.mr-lg-2{margin-right:.5rem !important}
.pl-lg-2{padding-left:.5rem !important}.pr-lg-2{padding-right:.5rem !important}
.ml-lg-n2{margin-left:-.5rem !important}.mr-lg-n2{margin-right:-.5rem !important}
.ml-lg-3{margin-left:1rem !important}.mr-lg-3{margin-right:1rem !important}
.pl-lg-3{padding-left:1rem !important}.pr-lg-3{padding-right:1rem !important}
.ml-lg-n3{margin-left:-1rem !important}.mr-lg-n3{margin-right:-1rem !important}
.ml-lg-4{margin-left:1.5rem !important}.mr-lg-4{margin-right:1.5rem !important}
.pl-lg-4{padding-left:1.5rem !important}.pr-lg-4{padding-right:1.5rem !important}
.ml-lg-n4{margin-left:-1.5rem !important}.mr-lg-n4{margin-right:-1.5rem !important}
.ml-lg-5{margin-left:3rem !important}.mr-lg-5{margin-right:3rem !important}
.pl-lg-5{padding-left:3rem !important}.pr-lg-5{padding-right:3rem !important}
.ml-lg-n5{margin-left:-3rem !important}.mr-lg-n5{margin-right:-3rem !important}
.ml-lg-auto{margin-left:auto !important}.mr-lg-auto{margin-right:auto !important}
.float-lg-left{float:left!important}.float-lg-right{float:right!important}
.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}
}
@media (min-width: 1200px) {
.ml-xl-0{margin-left:0 !important}.mr-xl-0{margin-right:0 !important}
.pl-xl-0{padding-left:0 !important}.pr-xl-0{padding-right:0 !important}
.ml-xl-1{margin-left:.25rem !important}.mr-xl-1{margin-right:.25rem !important}
.pl-xl-1{padding-left:.25rem !important}.pr-xl-1{padding-right:.25rem !important}
.ml-xl-n1{margin-left:-.25rem !important}.mr-xl-n1{margin-right:-.25rem !important}
.ml-xl-2{margin-left:.5rem !important}.mr-xl-2{margin-right:.5rem !important}
.pl-xl-2{padding-left:.5rem !important}.pr-xl-2{padding-right:.5rem !important}
.ml-xl-n2{margin-left:-.5rem !important}.mr-xl-n2{margin-right:-.5rem !important}
.ml-xl-3{margin-left:1rem !important}.mr-xl-3{margin-right:1rem !important}
.pl-xl-3{padding-left:1rem !important}.pr-xl-3{padding-right:1rem !important}
.ml-xl-n3{margin-left:-1rem !important}.mr-xl-n3{margin-right:-1rem !important}
.ml-xl-4{margin-left:1.5rem !important}.mr-xl-4{margin-right:1.5rem !important}
.pl-xl-4{padding-left:1.5rem !important}.pr-xl-4{padding-right:1.5rem !important}
.ml-xl-n4{margin-left:-1.5rem !important}.mr-xl-n4{margin-right:-1.5rem !important}
.ml-xl-5{margin-left:3rem !important}.mr-xl-5{margin-right:3rem !important}
.pl-xl-5{padding-left:3rem !important}.pr-xl-5{padding-right:3rem !important}
.ml-xl-n5{margin-left:-3rem !important}.mr-xl-n5{margin-right:-3rem !important}
.ml-xl-auto{margin-left:auto !important}.mr-xl-auto{margin-right:auto !important}
.float-xl-left{float:left!important}.float-xl-right{float:right!important}
.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}
}

/* ---- typography / a11y ---- */
.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}
.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}
.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}
.text-monospace{font-family:var(--bs-font-monospace)!important}
.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}
.sr-only-focusable:active,.sr-only-focusable:focus{position:static!important;width:auto!important;height:auto!important;margin:0!important;overflow:visible!important;clip:auto!important;white-space:normal!important}

/* ---- links: BS4 had no underline until hover (BS5 reboot underlines) ---- */
a{text-decoration:none}
a:hover{text-decoration:underline}
.btn:hover,.nav-link:hover,.dropdown-item:hover,.page-link:hover,.list-group-item:hover,.navbar-brand:hover{text-decoration:none}

/* ---- labels: BS4 reboot gave every label a bottom margin ---- */
label{display:inline-block;margin-bottom:.5rem}
.form-check-label,.btn-check+label,.form-check label{margin-bottom:0}

/* ---- forms ---- */
.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{display:flex;flex-flow:row wrap;align-items:center}
.form-inline .form-check{width:100%}
@media (min-width:576px){
  .form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}
  .form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}
  .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}
  .form-inline .input-group,.form-inline .custom-select{width:auto}
}
.form-control-file,.form-control-range{display:block;width:100%}
/* BS5 strips the native arrow from every .form-control; WebForms DropDownLists
   use CssClass="form-control" everywhere, so put a form-select style arrow back. */
select.form-control:not([multiple]):not([size]),
.custom-select{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  padding-right:2.25rem;
  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;
}
[data-bs-theme="dark"] select.form-control:not([multiple]):not([size]),
[data-bs-theme="dark"] .custom-select{
  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='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
}
.custom-select{display:block;width:100%}
.input-group-append,.input-group-prepend{display:flex}
.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,
.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}
.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,
.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}
.input-group>.input-group-append{margin-left:-1px}
.input-group>.input-group-prepend{margin-right:-1px}

/* ---- buttons ---- */
.btn-block{display:block;width:100%}
.btn-block+.btn-block{margin-top:.5rem}

/* ---- badges: BS4 contextual variants ---- */
.badge-primary{color:#fff;background-color:var(--bs-primary)}
.badge-secondary{color:#fff;background-color:var(--bs-secondary)}
.badge-success{color:#fff;background-color:var(--bs-success)}
.badge-danger{color:#fff;background-color:var(--bs-danger)}
.badge-warning{color:#212529;background-color:var(--bs-warning)}
.badge-info{color:#fff;background-color:var(--bs-info)}
.badge-light{color:#212529;background-color:var(--bs-light)}
.badge-dark{color:#fff;background-color:var(--bs-dark)}
.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}
a.badge:hover{text-decoration:none}

/* ---- close button (BS5 renamed it .btn-close with an SVG icon) ---- */
.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}
.close:hover{color:#000;text-decoration:none;opacity:.75}
button.close{padding:0;background-color:transparent;border:0}
.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}
.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}
[data-bs-theme="dark"] .close{color:#fff;text-shadow:none}

/* ---- grid / layout ---- */
.no-gutters{--bs-gutter-x:0;--bs-gutter-y:0}
.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}
.embed-responsive::before{display:block;content:""}
.embed-responsive-16by9::before{padding-top:56.25%}
.embed-responsive-4by3::before{padding-top:75%}
.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}
.media{display:flex;align-items:flex-start}
.media-body{flex:1}

/* ---- borders / radius ---- */
.border-left{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}
.border-right{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}
.border-left-0{border-left:0!important}.border-right-0{border-right:0!important}
.rounded-left{border-top-left-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}
.rounded-right{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}

/* ---- tables: 5.3 paints every cell with --bs-table-bg (= body bg), which hides
   colours set on a <tr> (RAG rows, inline row highlights). BS4 cells were
   transparent, so restore that. Striped/hover/active still layer on top. ---- */
.table{--bs-table-bg:transparent}
