/* ==========================================================================
   Bootstrap 5.3.x PATCH — extra utilities + grid *-sm + forms
   (Append AFTER your existing Bootstrap/CMS CSS)
   ========================================================================== */

/* --- Typography utility: .lead --- */
.lead{
  font-size: 1.25rem;
  font-weight: 300;
}

/* --- Images utility: .img-fluid --- */
.img-fluid{
  max-width: 100%;
  height: auto;
}

/* --- Grid responsive columns: *-sm (>= 576px) --- */
@media (min-width: 576px){
  .col-sm{flex:1 0 0%;}
  .col-sm-auto{flex:0 0 auto;width:auto;}
  .col-sm-1{flex:0 0 auto;width:8.33333333%;}
  .col-sm-2{flex:0 0 auto;width:16.66666667%;}
  .col-sm-3{flex:0 0 auto;width:25%;}
  .col-sm-4{flex:0 0 auto;width:33.33333333%;}
  .col-sm-5{flex:0 0 auto;width:41.66666667%;}
  .col-sm-6{flex:0 0 auto;width:50%;}
  .col-sm-7{flex:0 0 auto;width:58.33333333%;}
  .col-sm-8{flex:0 0 auto;width:66.66666667%;}
  .col-sm-9{flex:0 0 auto;width:75%;}
  .col-sm-10{flex:0 0 auto;width:83.33333333%;}
  .col-sm-11{flex:0 0 auto;width:91.66666667%;}
  .col-sm-12{flex:0 0 auto;width:100%;}

  .row-cols-sm-auto > *{flex:0 0 auto;width:auto;}
  .row-cols-sm-1 > *{flex:0 0 auto;width:100%;}
  .row-cols-sm-2 > *{flex:0 0 auto;width:50%;}
  .row-cols-sm-3 > *{flex:0 0 auto;width:33.33333333%;}
  .row-cols-sm-4 > *{flex:0 0 auto;width:25%;}
  .row-cols-sm-5 > *{flex:0 0 auto;width:20%;}
  .row-cols-sm-6 > *{flex:0 0 auto;width:16.66666667%;}

  .offset-sm-0{margin-left:0;}
  .offset-sm-1{margin-left:8.33333333%;}
  .offset-sm-2{margin-left:16.66666667%;}
  .offset-sm-3{margin-left:25%;}
  .offset-sm-4{margin-left:33.33333333%;}
  .offset-sm-5{margin-left:41.66666667%;}
  .offset-sm-6{margin-left:50%;}
  .offset-sm-7{margin-left:58.33333333%;}
  .offset-sm-8{margin-left:66.66666667%;}
  .offset-sm-9{margin-left:75%;}
  .offset-sm-10{margin-left:83.33333333%;}
  .offset-sm-11{margin-left:91.66666667%;}

  .order-sm-first{order:-1!important;}
  .order-sm-0{order:0!important;}
  .order-sm-1{order:1!important;}
  .order-sm-2{order:2!important;}
  .order-sm-3{order:3!important;}
  .order-sm-4{order:4!important;}
  .order-sm-5{order:5!important;}
  .order-sm-last{order:6!important;}
}

/* --- Forms (subset aligned to Bootstrap 5.3.x behavior) --- */

/* Labels & helpers */
.form-label{margin-bottom:.5rem;}
.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5;}
.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;}
.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;}
.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color,#6c757d);}

/* Base control */
.form-control{
  display:block;
  width:100%;
  padding:.375rem .75rem;
  font-size:1rem;
  font-weight:400;
  line-height:1.5;
  color:var(--bs-body-color,#212529);
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  background-color:var(--bs-body-bg,#fff);
  background-clip:padding-box;
  border:var(--bs-border-width,1px) solid var(--bs-border-color,#dee2e6);
  border-radius:var(--bs-border-radius,.375rem);
  transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.form-control:focus{
  color:var(--bs-body-color,#212529);
  background-color:var(--bs-body-bg,#fff);
  border-color:var(--bs-primary-border-subtle,#86b7fe);
  outline:0;
  box-shadow:0 0 0 .25rem rgba(13,110,253,.25);
}
.form-control::placeholder{color:var(--bs-secondary-color,#6c757d);opacity:1;}
.form-control:disabled,.form-control[readonly]{
  background-color:var(--bs-secondary-bg,#e9ecef);
  opacity:1;
}
.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0;}
.form-control::-webkit-datetime-edit{display:block;padding:0;}
.form-control[type=file]{overflow:hidden;}
.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer;}
.form-control::file-selector-button{
  padding:.375rem .75rem;
  margin:-.375rem -.75rem;
  margin-inline-end:.75rem;
  color:var(--bs-body-color,#212529);
  background-color:var(--bs-tertiary-bg,#f8f9fa);
  pointer-events:none;
  border-color:inherit;
  border-style:solid;
  border-width:0;
  border-inline-end-width:var(--bs-border-width,1px);
  border-radius:0;
  transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.form-control:hover:not(:disabled):not([readonly])::file-selector-button{
  background-color:var(--bs-secondary-bg,#e9ecef);
}
.form-control-plaintext{
  display:block;
  width:100%;
  padding:.375rem 0;
  margin-bottom:0;
  line-height:1.5;
  color:var(--bs-body-color,#212529);
  background-color:transparent;
  border:solid transparent;
  border-width:1px 0;
}
.form-control-plaintext:focus{outline:0;}

/* Sizing */
.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm,.25rem);}
.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg,.5rem);}

/* Select */
.form-select{
  display:block;
  width:100%;
  padding:.375rem 2.25rem .375rem .75rem;
  -moz-padding-start:calc(.75rem - 3px);
  font-size:1rem;
  font-weight:400;
  line-height:1.5;
  color:var(--bs-body-color,#212529);
  background-color:var(--bs-body-bg,#fff);
  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;
  border:var(--bs-border-width,1px) solid var(--bs-border-color,#dee2e6);
  border-radius:var(--bs-border-radius,.375rem);
  transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
}
.form-select:focus{
  border-color:var(--bs-primary-border-subtle,#86b7fe);
  outline:0;
  box-shadow:0 0 0 .25rem rgba(13,110,253,.25);
}
.form-select:disabled{background-color:var(--bs-secondary-bg,#e9ecef);}
.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm,.25rem);}
.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg,.5rem);}

/* Checks & radios */
.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem;}
.form-check .form-check-input{float:left;margin-left:-1.5em;}
.form-check-input{
  width:1em;
  height:1em;
  margin-top:.25em;
  vertical-align:top;
  background-color:var(--bs-body-bg,#fff);
  background-repeat:no-repeat;
  background-position:center;
  background-size:contain;
  border:var(--bs-border-width,1px) solid rgba(0,0,0,.25);
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact;
}
.form-check-input[type=checkbox]{border-radius:.25em;}
.form-check-input[type=radio]{border-radius:50%;}
.form-check-input:active{filter:brightness(90%);}
.form-check-input:focus{border-color:var(--bs-primary-border-subtle,#86b7fe);outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);}
.form-check-input:checked{
  background-color:var(--bs-primary,#0d6efd);
  border-color:var(--bs-primary,#0d6efd);
}
.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");
}
.form-check-input:checked[type=radio]{
  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");
}
.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5;}
.form-check-input:disabled ~ .form-check-label{cursor:default;opacity:.5;}
.form-check-label{color:var(--bs-body-color,#212529);cursor:pointer;}
.form-check-inline{display:inline-block;margin-right:1rem;}

/* Switch */
.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:focus{
  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(13,110,253,.25)'/%3e%3c/svg%3e");
}
.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");
}

/* Range */
.form-range{
  width:100%;
  height:1.5rem;
  padding:0;
  background-color:transparent;
  -webkit-appearance:none;
  appearance:none;
}
.form-range:focus{outline:0;}
.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 .25rem rgba(13,110,253,.25);}
.form-range::-webkit-slider-thumb{
  width:1rem;
  height:1rem;
  margin-top:-.25rem;
  background-color:var(--bs-primary,#0d6efd);
  border:0;
  border-radius:1rem;
  -webkit-appearance:none;
  appearance:none;
}
.form-range::-webkit-slider-runnable-track{
  width:100%;
  height:.5rem;
  cursor:pointer;
  background-color:var(--bs-secondary-bg,#e9ecef);
  border-radius:1rem;
}
.form-range::-moz-range-thumb{
  width:1rem;
  height:1rem;
  background-color:var(--bs-primary,#0d6efd);
  border:0;
  border-radius:1rem;
}
.form-range::-moz-range-track{
  width:100%;
  height:.5rem;
  cursor:pointer;
  background-color:var(--bs-secondary-bg,#e9ecef);
  border-radius:1rem;
}
.form-range:disabled{pointer-events:none;}
.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color,#6c757d);}
.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color,#6c757d);}

/* Input group */
.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 > .form-control:focus,
.input-group > .form-select:focus{z-index:5;}
.input-group .btn{position:relative;z-index:2;}
.input-group .btn:focus{z-index:5;}
.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,#212529);
  text-align:center;
  white-space:nowrap;
  background-color:var(--bs-tertiary-bg,#f8f9fa);
  border:var(--bs-border-width,1px) solid var(--bs-border-color,#dee2e6);
  border-radius:var(--bs-border-radius,.375rem);
}
.input-group-lg > .form-control,
.input-group-lg > .form-select,
.input-group-lg > .input-group-text,
.input-group-lg > .btn{
  padding:.5rem 1rem;
  font-size:1.25rem;
  border-radius:var(--bs-border-radius-lg,.5rem);
}
.input-group-sm > .form-control,
.input-group-sm > .form-select,
.input-group-sm > .input-group-text,
.input-group-sm > .btn{
  padding:.25rem .5rem;
  font-size:.875rem;
  border-radius:var(--bs-border-radius-sm,.25rem);
}
/* merge borders in input groups */
.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){
  border-top-right-radius:0;
  border-bottom-right-radius:0;
}
.input-group:not(.has-validation) > :not(:first-child):not(.dropdown-menu):not(.form-floating){
  margin-left:calc(var(--bs-border-width,1px) * -1);
  border-top-left-radius:0;
  border-bottom-left-radius:0;
}
.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){
  border-top-right-radius:0;
  border-bottom-right-radius:0;
}
.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-menu):not(.form-floating){
  margin-left:calc(var(--bs-border-width,1px) * -1);
  border-top-left-radius:0;
  border-bottom-left-radius:0;
}

/* Floating labels */
.form-floating{position:relative;}
.form-floating > .form-control,
.form-floating > .form-select{
  height:calc(3.5rem + 2px);
  line-height:1.25;
}
.form-floating > .form-control{padding:1rem .75rem;}
.form-floating > .form-select{padding-top:1.625rem;padding-bottom:.625rem;}
.form-floating > label{
  position:absolute;
  top:0;
  left:0;
  height:100%;
  padding:1rem .75rem;
  pointer-events:none;
  border:1px solid transparent;
  transform-origin:0 0;
  transition:opacity .1s ease-in-out,transform .1s ease-in-out;
  color:var(--bs-secondary-color,#6c757d);
}
.form-floating > .form-control::placeholder{color:transparent;}
.form-floating > .form-control:focus::placeholder{color:transparent;}
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control:focus ~ label,
.form-floating > .form-select ~ label{
  opacity:.65;
  transform:scale(.85) translateY(-.5rem) translateX(.15rem);
}

/* Validation */
.valid-feedback,
.invalid-feedback{
  display:none;
  width:100%;
  margin-top:.25rem;
  font-size:.875em;
}
.valid-feedback{color:var(--bs-success,#198754);}
.invalid-feedback{color:var(--bs-danger,#dc3545);}
.was-validated :valid ~ .valid-feedback,
.was-validated :invalid ~ .invalid-feedback,
.is-valid ~ .valid-feedback,
.is-invalid ~ .invalid-feedback{display:block;}

.was-validated .form-control:valid,
.form-control.is-valid{
  border-color:var(--bs-success,#198754);
  padding-right:calc(1.5em + .75rem);
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53a.5.5 0 0 1 .8-.6l1.2 1.6 3-3.7a.5.5 0 1 1 .8.6l-3.5 4.3a.5.5 0 0 1-.8 0z'/%3e%3c/svg%3e");
  background-repeat:no-repeat;
  background-position:right calc(.375em + .1875rem) center;
  background-size:calc(.75em + .375rem) calc(.75em + .375rem);
}
.was-validated .form-control:valid:focus,
.form-control.is-valid:focus{
  border-color:var(--bs-success,#198754);
  box-shadow:0 0 0 .25rem rgba(25,135,84,.25);
}
.was-validated .form-control:invalid,
.form-control.is-invalid{
  border-color:var(--bs-danger,#dc3545);
  padding-right:calc(1.5em + .75rem);
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5' fill='none' stroke='%23dc3545'/%3e%3cpath stroke='%23dc3545' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
  background-repeat:no-repeat;
  background-position:right calc(.375em + .1875rem) center;
  background-size:calc(.75em + .375rem) calc(.75em + .375rem);
}
.was-validated .form-control:invalid:focus,
.form-control.is-invalid:focus{
  border-color:var(--bs-danger,#dc3545);
  box-shadow:0 0 0 .25rem rgba(220,53,69,.25);
}

/* Select validation icons */
.was-validated .form-select:valid,
.form-select.is-valid{
  border-color:var(--bs-success,#198754);
  padding-right:4.125rem;
  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"),
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53a.5.5 0 0 1 .8-.6l1.2 1.6 3-3.7a.5.5 0 1 1 .8.6l-3.5 4.3a.5.5 0 0 1-.8 0z'/%3e%3c/svg%3e");
  background-position:right .75rem center, right 2.25rem center;
  background-size:16px 12px, calc(.75em + .375rem) calc(.75em + .375rem);
  background-repeat:no-repeat;
}
.was-validated .form-select:valid:focus,
.form-select.is-valid:focus{border-color:var(--bs-success,#198754);box-shadow:0 0 0 .25rem rgba(25,135,84,.25);}

.was-validated .form-select:invalid,
.form-select.is-invalid{
  border-color:var(--bs-danger,#dc3545);
  padding-right:4.125rem;
  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"),
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5' fill='none' stroke='%23dc3545'/%3e%3cpath stroke='%23dc3545' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
  background-position:right .75rem center, right 2.25rem center;
  background-size:16px 12px, calc(.75em + .375rem) calc(.75em + .375rem);
  background-repeat:no-repeat;
}
.was-validated .form-select:invalid:focus,
.form-select.is-invalid:focus{border-color:var(--bs-danger,#dc3545);box-shadow:0 0 0 .25rem rgba(220,53,69,.25);}
