/* ==========================================================================
   Bootstrap 5 components — targeted extract
   --------------------------------------------------------------------------
   The site now loads two OFFICIAL Bootstrap files:
     bootstrap-reboot.min.css   (9 KB)  — normalisation
     bootstrap-grid.min.css     (50 KB) — container, row, col, g-*, d-*,
                                          flex, align, justify, order, m/p
   Full Bootstrap weighs 226 KB. An audit of the classes actually present
   in the markup shows only six families are missing, listed here.
   Loading bootstrap-utilities.min.css (83 KB) for eight utility classes
   would make no sense: they are reproduced at the end of this file.

   RULE: this file contains ONLY structure and behaviour.
   All brand appearance stays in style.css, loaded afterwards.
   The values reproduce Bootstrap 5.3 exactly — in particular the
   .collapse / .collapsing rules, which Bootstrap's JavaScript depends on
   for the mobile navigation and the FAQ accordion. Changing them breaks both.
   ========================================================================== */

/* ------------------------------------------------------- 1. collapse
   Driven by bootstrap.min.js. Do not touch: the JS adds/removes .show
   and .collapsing relying on exactly these rules. */
.collapse:not(.show){display:none}
.collapsing{height:0;overflow:hidden;transition:height .35s ease}
@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}

/* --------------------------------------------------------- 2. navbar */
.navbar{
  position:relative;display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem;
}
.navbar>.container{
  display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between;
}
.navbar-brand{
  padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;
  font-size:1.25rem;text-decoration:none;white-space:nowrap;
}
.navbar-nav{
  display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none;
}
.navbar-nav .nav-link{padding-right:0;padding-left:0}
.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}
.navbar-toggler{
  padding:.25rem .75rem;font-size:1.25rem;line-height:1;
  background-color:transparent;border:1px solid transparent;border-radius:.375rem;
  transition:box-shadow .15s ease-in-out;
}
.navbar-toggler:hover{text-decoration:none}
.navbar-toggler:focus{text-decoration:none;outline:0}
@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}
/* Light bars: the site header is dark on every page, so the inversion
   filter the previous version used is no longer needed. */
.navbar-toggler-icon{
  display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.85%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
  background-repeat:no-repeat;background-position:center;background-size:100%;
}
.nav-link{
  display:block;padding:.5rem 1rem;text-decoration:none;
  transition:color .15s ease-in-out,background-color .15s ease-in-out;
}
@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}
@media (min-width:992px){
  .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}
  .navbar-expand-lg .navbar-nav{flex-direction:row}
  .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}
  .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}
  .navbar-expand-lg .navbar-toggler{display:none}
}

/* ------------------------------------------------------------ 3. btn */
.btn{
  display:inline-block;
  padding:var(--bs-btn-padding-y,.375rem) var(--bs-btn-padding-x,.75rem);
  font-family:inherit;font-size:var(--bs-btn-font-size,1rem);
  font-weight:var(--bs-btn-font-weight,400);line-height:1.5;
  color:var(--bs-btn-color,inherit);text-align:center;text-decoration:none;
  vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;
  border:1px solid transparent;border-radius:var(--bs-btn-border-radius,.375rem);
  background-color:transparent;
  transition:color .15s ease-in-out,background-color .15s ease-in-out,
             border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
@media (prefers-reduced-motion:reduce){.btn{transition:none}}
.btn:disabled,.btn.disabled{pointer-events:none;opacity:.65}
.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}
.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}

/* ------------------------------------------------------- 4. 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:inherit;background-color:#fff;background-clip:padding-box;
  border:1px solid #dee2e6;border-radius:.375rem;-webkit-appearance:none;appearance:none;
  transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
@media (prefers-reduced-motion:reduce){.form-control{transition:none}}
.form-control:focus{outline:0}
.form-control::placeholder{opacity:1}
.form-control:disabled{background-color:#e9ecef;opacity:1}
textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}
.form-select{
  display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;
  font-size:1rem;font-weight:400;line-height:1.5;color:inherit;
  background-color:#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:1px solid #dee2e6;border-radius:.375rem;
  -webkit-appearance:none;appearance:none;
}
.form-select:focus{outline:0}
.form-text{margin-top:.25rem;font-size:.875em}
.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-inline{display:inline-block;margin-right:1rem}
.form-check-input{
  width:1em;height:1em;margin-top:.25em;vertical-align:top;
  background-color:#fff;background-repeat:no-repeat;background-position:center;
  background-size:contain;border:1px solid rgba(0,0,0,.25);
  -webkit-appearance:none;appearance:none;print-color-adjust:exact;
}
.form-check-input[type=radio]{border-radius:50%}
.form-check-input:active{filter:brightness(90%)}
.form-check-input:focus{outline:0}
.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-label{cursor:pointer}
/* Validation feedback. .d-block is set by the PHP when the server returns
   an error; the :invalid rule covers browser-side validation. */
.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em}
.was-validated :invalid~.invalid-feedback,
.is-invalid~.invalid-feedback,
.invalid-feedback.d-block{display:block}

/* ---------------------------------------------------------- 5. alert */
.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}
.alert-link{font-weight:700}

/* ------------------------------------------------------ 6. accordion */
.accordion-header{margin-bottom:0}
.accordion-button{
  position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;
  font-size:1rem;color:inherit;text-align:left;background-color:#fff;border:0;
  border-radius:0;overflow-anchor:none;
  transition:color .15s ease-in-out,background-color .15s ease-in-out;
}
@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}
.accordion-button::after{
  flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";
  background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232F7346'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
  background-repeat:no-repeat;background-size:1.25rem;
  transition:transform .2s ease-in-out;
}
.accordion-button:not(.collapsed)::after{transform:rotate(-180deg)}
@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}
.accordion-body{padding:1rem 1.25rem}
.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}

/* -------------------------------------- 7. missing utilities (8)
   Taken from bootstrap-utilities.min.css, which weighs 83 KB for these
   eight rules.

   .text-danger and .text-decoration-none were genuinely missing:
   the former is set by assets/js/main.js on the form's character counter
   (so the "N characters to go" message never turned red), the latter by
   the clickable panels on the cantonal pages (whose entire content was
   underlined on hover, the theme's a:hover rule applying for lack of
   neutralisation). */
.gap-2{gap:.5rem!important}
.w-100{width:100%!important}
.h-100{height:100%!important}
.text-white{color:#fff!important}
.text-start{text-align:left!important}
.text-danger{color:#B42318!important}
.text-decoration-none,.text-decoration-none:hover{text-decoration:none!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;
}
