/* ==========================================================================
   Annuaire des medecins osteopathes - module de recherche et carte
   osteopathemedecin.fr

   Tout est portee par #annuaire : le theme Divi applique des regles larges sur
   les input, select, ul et p, il faut donc un contexte etanche. Les !important
   presents ci-dessous ne visent qu'a neutraliser des regles Divi elles-memes
   marquees !important.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Corrections apportees a la page qui accueille le module

   Ces trois regles sortent volontairement de #annuaire : elles neutralisent des
   styles du theme qui empechent le module de fonctionner. La feuille n'etant
   chargee que par la page annuaire, leur portee y reste limitee.
   -------------------------------------------------------------------------- */

/* Un ancetre en overflow autre que « visible » devient le conteneur de
   reference d'un element colle : celui-ci colle alors a l'interieur de cet
   ancetre, et jamais par rapport a l'ecran. Le theme pose overflow:hidden sur
   #page-container et overflow:auto sur body, ce qui annule le collage du
   bandeau de recherche.

   On garde le rognage horizontal, qui evite une barre de defilement laterale :
   « clip » ne cree pas de conteneur de defilement, contrairement a « hidden ». */
#page-container,
body {
  overflow-x: clip !important;
  overflow-y: visible !important;
}

/* Divi fait apparaitre en fondu la colonne qui contient le module. L'effet
   n'apporte rien ici et retarde l'affichage des resultats. */
.et_pb_column:has(#annuaire),
.et_pb_section:has(#annuaire),
.et_pb_row:has(#annuaire) {
  animation: none !important;
  opacity: 1 !important;
  transition: none !important;
}

#annuaire {
  --ann-marine: #175073;
  --ann-turquoise: #3391a6;
  --ann-turquoise-fonce: #2a7d8f;
  --ann-ciel: #d8ebf1;
  --ann-ciel-pale: #eef7fa;
  --ann-brume: #d1e2e7;
  --ann-texte: #1f2d35;
  --ann-texte-doux: #5c6f79;
  --ann-bordure: #d7e3e8;
  --ann-blanc: #fff;
  --ann-alerte: #b4442c;
  --ann-rayon: 14px;
  --ann-ombre: 0 2px 4px rgba(23, 80, 115, .06), 0 8px 24px rgba(23, 80, 115, .08);
  --ann-ombre-forte: 0 4px 10px rgba(23, 80, 115, .12), 0 16px 40px rgba(23, 80, 115, .16);
  --ann-hauteur-carte: 640px;

  font-family: 'Montserrat', Helvetica, Arial, Lucida, sans-serif;
  color: var(--ann-texte);
  line-height: 1.55;
  max-width: 1440px;
  margin: 0 auto;
  container-type: inline-size;
}

#annuaire *,
#annuaire *::before,
#annuaire *::after { box-sizing: border-box; }

#annuaire p { padding-bottom: 0; margin: 0; }

#annuaire ul,
#annuaire ol { list-style: none; margin: 0; padding: 0; }

#annuaire button { font-family: inherit; cursor: pointer; }

#annuaire :focus-visible {
  outline: 3px solid var(--ann-turquoise);
  outline-offset: 2px;
  border-radius: 6px;
}

/* --------------------------------------------------------------------------
   Bandeau de recherche
   -------------------------------------------------------------------------- */

.ann-recherche {
  background: var(--ann-blanc);
  border-radius: var(--ann-rayon);
  box-shadow: var(--ann-ombre);
  padding: 22px 24px;
  display: grid;
  gap: 16px;
  /* Reste visible pendant le defilement de la liste. Le decalage laisse la
     place a l'en-tete fixe du theme ; il est tenu a jour par le JavaScript,
     qui suit la hauteur reelle de cet en-tete. */
  position: sticky;
  top: var(--ann-decalage-collee, 0px);
  z-index: 30;
}

.ann-recherche__principal {
  display: flex;
  gap: 12px;
  align-items: flex-end;
  flex-wrap: wrap;
}

.ann-champ { flex: 1 1 320px; min-width: 0; }

.ann-combo { position: relative; }

.ann-combo__saisie {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--ann-blanc);
  border: 2px solid var(--ann-bordure);
  border-radius: 999px;
  padding: 0 6px 0 18px;
  transition: border-color .15s ease, box-shadow .15s ease;
}

.ann-combo__saisie:focus-within {
  border-color: var(--ann-turquoise);
  box-shadow: 0 0 0 4px var(--ann-ciel);
}

#annuaire .ann-combo__saisie input[type="search"] {
  flex: 1;
  min-width: 0;
  border: 0 !important;
  background: transparent !important;
  padding: 14px 0 !important;
  margin: 0 !important;
  font-size: 16px;
  font-family: inherit;
  color: var(--ann-texte);
  box-shadow: none !important;
  border-radius: 0 !important;
  -webkit-appearance: none;
  appearance: none;
}

#annuaire .ann-combo__saisie input[type="search"]:focus { outline: none; }
#annuaire .ann-combo__saisie input::placeholder { color: #93a6af; opacity: 1; }
#annuaire .ann-combo__saisie input::-webkit-search-cancel-button { -webkit-appearance: none; }

.ann-icone-bouton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--ann-turquoise);
  transition: background-color .15s ease, color .15s ease;
}

.ann-icone-bouton:hover { background: var(--ann-ciel); }
.ann-icone-bouton svg { width: 20px; height: 20px; fill: currentColor; }
.ann-icone-bouton[hidden] { display: none; }

.ann-geoloc.est-actif { color: var(--ann-blanc); background: var(--ann-turquoise); }

.ann-bouton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 0;
  border-radius: 999px;
  padding: 15px 30px;
  font-size: 16px;
  font-weight: 700;
  background: var(--ann-marine);
  color: var(--ann-blanc);
  transition: background-color .15s ease, transform .1s ease;
  white-space: nowrap;
}

.ann-bouton:hover { background: #10405d; }
.ann-bouton:active { transform: translateY(1px); }
.ann-bouton svg { width: 18px; height: 18px; fill: currentColor; }

/* Filtres secondaires */

/* Tant que le script n'a pas rempli les listes deroulantes, elles s'afficheraient
   vides et non stylees. On reserve leur place sans les montrer. */
#annuaire[data-etat="chargement"] .ann-filtres { visibility: hidden; }

.ann-filtres {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  align-items: center;
  padding-top: 14px;
  border-top: 1px solid var(--ann-bordure);
}

.ann-filtre {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ann-texte-doux);
}

/* Le select d'origine reste dans la page, masque : il porte la valeur et emet
   les evenements, la liste maison n'en est que l'habillage. */
.ann-select__natif {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.ann-select { position: relative; }

#annuaire .ann-select__bouton {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--ann-marine);
  background: var(--ann-ciel-pale);
  border: 1px solid var(--ann-bordure);
  border-radius: 999px;
  padding: 9px 14px;
  max-width: 100%;
  transition: border-color .15s ease, background-color .15s ease;
}

#annuaire .ann-select__bouton:hover { background: var(--ann-ciel); }

#annuaire .ann-select__bouton[aria-expanded="true"] {
  border-color: var(--ann-turquoise);
  background: var(--ann-blanc);
}

.ann-select__valeur {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ann-select__chevron {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
  fill: var(--ann-marine);
  transition: transform .15s ease;
}

#annuaire .ann-select__bouton[aria-expanded="true"] .ann-select__chevron {
  transform: rotate(180deg);
}

/* Selecteur avec l'identifiant : la remise a zero « #annuaire ul » plus haut
   l'emporterait sinon sur le retrait defini ici. */
#annuaire .ann-select__liste {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 100%;
  /* Bornee pour ne pas recouvrir la liste de resultats ; au-dela on fait
     defiler. La largeur suit le plus long libelle, sans deborder de l'ecran. */
  max-width: min(320px, 90vw);
  max-height: 264px;
  background: var(--ann-blanc);
  border-radius: 14px;
  box-shadow: var(--ann-ombre-forte);
  /* Retrait uniforme : les options ne touchent jamais les bords du panneau. */
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow-y: auto;
  /* Sans cela, un libelle long ajoute une barre de defilement horizontale. */
  overflow-x: hidden;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--ann-bordure) transparent;
  z-index: 60;
}

#annuaire .ann-select__liste[hidden] { display: none; }
.ann-select__liste::-webkit-scrollbar { width: 8px; }
.ann-select__liste::-webkit-scrollbar-track { background: transparent; }
.ann-select__liste::-webkit-scrollbar-thumb {
  background: var(--ann-bordure);
  border-radius: 8px;
}

#annuaire .ann-select__option {
  flex: 0 0 auto;
  padding: 8px 14px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ann-texte);
  cursor: pointer;
  /* Un libelle trop long est tronque plutot que d'elargir le panneau. */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#annuaire .ann-select__option[aria-selected="true"] {
  font-weight: 700;
  color: var(--ann-marine);
  background: var(--ann-ciel-pale);
}

#annuaire .ann-select__option:hover,
#annuaire .ann-select__option.est-survole {
  background: var(--ann-turquoise);
  color: var(--ann-blanc);
}

.ann-filtre-reinit {
  margin-left: auto;
  border: 0;
  background: none;
  color: var(--ann-turquoise);
  font-size: 13px;
  font-weight: 700;
  text-decoration: underline;
  padding: 6px 2px;
}

.ann-filtre-reinit[hidden] { display: none; }

/* --------------------------------------------------------------------------
   Suggestions (combobox)
   -------------------------------------------------------------------------- */

/* Meme remarque que pour la liste deroulante : l'identifiant est necessaire
   pour passer devant la remise a zero des listes. */
#annuaire .ann-suggestions {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--ann-blanc);
  border-radius: 18px;
  box-shadow: var(--ann-ombre-forte);
  padding: 8px;
  max-height: 340px;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  z-index: 40;
}

#annuaire .ann-suggestions[hidden] { display: none; }

.ann-suggestions__titre {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ann-texte-doux);
  padding: 10px 14px 6px;
}

#annuaire .ann-suggestion {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-radius: 12px;
  cursor: pointer;
  font-size: 15px;
  line-height: 1.35;
}

#annuaire .ann-suggestion:hover,
#annuaire .ann-suggestion.est-survole {
  background: var(--ann-turquoise);
  color: var(--ann-blanc);
}

.ann-suggestion__icone {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  fill: var(--ann-turquoise);
}

#annuaire .ann-suggestion:hover .ann-suggestion__icone,
#annuaire .ann-suggestion.est-survole .ann-suggestion__icone { fill: currentColor; }

.ann-suggestion__texte { min-width: 0; }
.ann-suggestion__principal { font-weight: 600; }

.ann-suggestion__secondaire {
  font-size: 13px;
  color: var(--ann-texte-doux);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#annuaire .ann-suggestion:hover .ann-suggestion__secondaire,
#annuaire .ann-suggestion.est-survole .ann-suggestion__secondaire { color: rgba(255, 255, 255, .85); }

/* --------------------------------------------------------------------------
   Corps : liste + carte
   -------------------------------------------------------------------------- */

/* Liste et carte forment un seul bloc : pas d'espace entre les deux, un seul
   arrondi et une seule ombre, portes par le conteneur. */
.ann-corps {
  display: grid;
  grid-template-columns: minmax(340px, 5fr) 7fr;
  gap: 0;
  margin-top: 20px;
  align-items: stretch;
  border-radius: var(--ann-rayon);
  overflow: hidden;
  box-shadow: var(--ann-ombre);
  background: var(--ann-blanc);
}

.ann-panneau {
  background: var(--ann-blanc);
  border-right: 1px solid var(--ann-bordure);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: var(--ann-hauteur-carte);
}

.ann-resume {
  padding: 16px 20px;
  border-bottom: 1px solid var(--ann-bordure);
  background: var(--ann-ciel-pale);
  flex: 0 0 auto;
}

.ann-resume__compte {
  font-size: 17px;
  font-weight: 700;
  color: var(--ann-marine);
}

.ann-resume__detail {
  font-size: 13px;
  color: var(--ann-texte-doux);
  margin-top: 2px;
}

.ann-liste {
  overflow-y: auto;
  overscroll-behavior: contain;
  flex: 1 1 auto;
  scrollbar-width: thin;
}

.ann-liste::-webkit-scrollbar { width: 8px; }
.ann-liste::-webkit-scrollbar-thumb { background: var(--ann-bordure); border-radius: 8px; }

/* Fiche praticien */

.ann-fiche {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 4px 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--ann-bordure);
  cursor: pointer;
  transition: background-color .12s ease;
  position: relative;
}

.ann-fiche:last-child { border-bottom: 0; }
.ann-fiche:hover { background: var(--ann-ciel-pale); }

.ann-fiche.est-actif { background: var(--ann-ciel); }

.ann-fiche.est-actif::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: var(--ann-turquoise);
}

.ann-fiche__puce {
  grid-row: 1 / span 3;
  width: 22px;
  display: flex;
  justify-content: center;
  flex: 0 0 auto;
  margin-top: 1px;
}

.ann-fiche__puce svg {
  width: 22px;
  height: 22px;
  fill: var(--ann-turquoise);
}

/* Praticien sans coordonnees : present dans la liste, absent de la carte. */
.ann-fiche__puce.est-absent svg { fill: #b9c9d0; }

.ann-fiche__nom {
  font-size: 16px;
  font-weight: 700;
  color: var(--ann-turquoise);
  margin: 0;
  line-height: 1.3;
}

.ann-fiche__distance {
  grid-column: 3;
  grid-row: 1;
  font-size: 13px;
  font-weight: 700;
  color: var(--ann-marine);
  background: var(--ann-ciel);
  border-radius: 999px;
  padding: 3px 10px;
  white-space: nowrap;
  height: fit-content;
}

.ann-fiche__corps {
  grid-column: 2 / span 2;
  font-size: 14px;
  color: var(--ann-texte);
}

.ann-fiche__lieu { font-weight: 700; }
.ann-fiche__adresse { color: var(--ann-texte-doux); }

.ann-fiche__actions {
  grid-column: 2 / span 2;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-top: 8px;
  font-size: 13px;
  font-weight: 600;
}

#annuaire .ann-lien {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ann-turquoise);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}

#annuaire .ann-lien:hover {
  color: var(--ann-turquoise-fonce);
  border-bottom-color: currentColor;
}

.ann-lien svg { width: 15px; height: 15px; fill: currentColor; flex: 0 0 auto; }
.ann-lien img { height: 15px; width: auto; }

/* Etats de la liste */

.ann-etat {
  padding: 44px 24px;
  text-align: center;
  color: var(--ann-texte-doux);
  font-size: 15px;
}

.ann-etat__titre {
  font-size: 16px;
  font-weight: 700;
  color: var(--ann-marine);
  margin-bottom: 6px;
}

.ann-etat__action {
  margin-top: 16px;
  border: 2px solid var(--ann-turquoise);
  background: none;
  color: var(--ann-turquoise);
  border-radius: 999px;
  padding: 9px 20px;
  font-weight: 700;
  font-size: 14px;
}

.ann-etat__action:hover { background: var(--ann-turquoise); color: var(--ann-blanc); }

.ann-squelette { padding: 16px 20px; border-bottom: 1px solid var(--ann-bordure); }

.ann-squelette__ligne {
  height: 12px;
  border-radius: 6px;
  background: linear-gradient(90deg, var(--ann-ciel-pale) 25%, var(--ann-ciel) 50%, var(--ann-ciel-pale) 75%);
  background-size: 200% 100%;
  animation: ann-scintille 1.4s ease-in-out infinite;
  margin-bottom: 9px;
}

.ann-squelette__ligne:nth-child(1) { width: 55%; height: 15px; }
.ann-squelette__ligne:nth-child(2) { width: 80%; }
.ann-squelette__ligne:nth-child(3) { width: 40%; margin-bottom: 0; }

@keyframes ann-scintille {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* --------------------------------------------------------------------------
   Carte
   -------------------------------------------------------------------------- */

/* Plus de position sticky : la carte occupe exactement la hauteur du bloc, il
   n'y a donc rien a faire suivre au defilement. Reste en relative pour servir
   de reference au message d'erreur, place en absolu. */
.ann-carte-zone {
  position: relative;
  background: var(--ann-brume);
}

.ann-carte {
  width: 100%;
  height: var(--ann-hauteur-carte);
}

.ann-carte__erreur {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  text-align: center;
  padding: 32px;
  background: var(--ann-ciel-pale);
  color: var(--ann-texte-doux);
  font-size: 14px;
  z-index: 5;
}

.ann-carte__erreur[hidden] { display: none; }
.ann-carte__erreur strong { color: var(--ann-alerte); font-size: 15px; }
.ann-carte__erreur code {
  background: var(--ann-blanc);
  border: 1px solid var(--ann-bordure);
  border-radius: 6px;
  padding: 2px 6px;
  font-size: 13px;
}

/* Commandes de zoom */

.ann-zoom {
  display: flex;
  flex-direction: column;
  margin: 0 10px 10px 0;
  border-radius: 8px;
  overflow: hidden;
  background: var(--ann-blanc);
  box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
}

#annuaire .ann-zoom__bouton {
  width: 40px;
  height: 40px;
  border: 0;
  background: var(--ann-blanc);
  color: var(--ann-marine);
  font-size: 22px;
  font-weight: 400;
  line-height: 1;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background-color .12s ease;
}

#annuaire .ann-zoom__bouton:first-child { border-bottom: 1px solid var(--ann-bordure); }
#annuaire .ann-zoom__bouton:hover { background: var(--ann-ciel-pale); }
#annuaire .ann-zoom__bouton:active { background: var(--ann-ciel); }

/* Badge portant le nom, pose sous l'epingle. Pas de transform ici : Google
   s'en sert pour centrer l'etiquette, le decalage vertical est porte par
   labelOrigin cote JavaScript. */
.ann-marqueur-label {
  white-space: nowrap;
  background: var(--ann-turquoise);
  padding: 3px 9px;
  border-radius: 8px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .25);
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   Info-bulle

   Volontairement minimal. La mise en forme (couleurs, tailles, graisses) vient
   du CSS personnalise de la page, qui definit deja .info-window-header,
   .p_adresse, .p_linkdoclib et les autres. On se limite ici a ce que ce CSS ne
   couvre pas : le centrage, la largeur, et la neutralisation de contraintes
   posees par Google sur son propre conteneur.
   -------------------------------------------------------------------------- */

#annuaire .info-window-content {
  text-align: center;
  max-width: 300px;
}

#annuaire .p_intineraire { margin-bottom: 10px; line-height: 0; }
#annuaire .p_intineraire img { display: inline-block; }
#annuaire .p_tel { margin-top: 10px; }
#annuaire .p_linktel { color: var(--ann-turquoise); font-weight: 700; text-decoration: none; }

#annuaire .gm-style .gm-style-iw-c {
  border-radius: 14px;
  /* Retrait haut faible : le bouton de fermeture fait partie du flux du
     contenu et fournit deja l'espace superieur. Un retrait plus grand
     s'ajouterait au sien et creuserait un vide au-dessus du nom. */
  padding: 6px 22px 18px !important;
  max-height: none !important;
}

/* Google fige la hauteur de cette zone a l'ouverture et y met overflow:hidden,
   ce qui tronque le bas du contenu si sa mesure a ete trop courte. */
#annuaire .gm-style-iw-d {
  overflow: visible !important;
  max-height: none !important;
  max-width: none !important;
}

/* Le bouton de fermeture appartient au flux du contenu : sa hauteur par defaut
   creuse un vide de pres de 50 px au-dessus du nom, sans commune mesure avec
   le retrait du bas. On le ramene a une taille qui equilibre les deux. */
#annuaire .gm-style .gm-style-iw-c button.gm-ui-hover-effect {
  width: 26px !important;
  height: 26px !important;
  margin: 0 !important;
  opacity: .55;
}

#annuaire .gm-style .gm-style-iw-c button.gm-ui-hover-effect:hover { opacity: 1; }

#annuaire .gm-style .gm-style-iw-c button.gm-ui-hover-effect > span {
  width: 18px !important;
  height: 18px !important;
  margin: 4px !important;
}

/* --------------------------------------------------------------------------
   Bascule liste / carte (petits ecrans)
   -------------------------------------------------------------------------- */

.ann-bascule {
  display: none;
  background: var(--ann-blanc);
  border-radius: 999px;
  box-shadow: var(--ann-ombre);
  padding: 5px;
  gap: 4px;
  margin: 18px auto 0;
  width: fit-content;
  position: sticky;
  bottom: 16px;
  z-index: 25;
}

.ann-bascule__option {
  border: 0;
  background: none;
  border-radius: 999px;
  padding: 10px 24px;
  font-size: 14px;
  font-weight: 700;
  color: var(--ann-texte-doux);
}

.ann-bascule__option[aria-selected="true"] { background: var(--ann-marine); color: var(--ann-blanc); }

/* --------------------------------------------------------------------------
   Accessibilite
   -------------------------------------------------------------------------- */

.ann-invisible {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* --------------------------------------------------------------------------
   Adaptations
   -------------------------------------------------------------------------- */

@media (max-width: 1100px) {
  #annuaire { --ann-hauteur-carte: 560px; }
  .ann-corps { grid-template-columns: minmax(300px, 1fr) 1fr; }
}

@media (max-width: 900px) {
  #annuaire { --ann-hauteur-carte: 460px; }

  .ann-corps { grid-template-columns: 1fr; }

  /* Sur un ecran etroit, liste et carte ne cohabitent pas : on bascule. */
  .ann-corps[data-vue="liste"] .ann-carte-zone,
  .ann-corps[data-vue="carte"] .ann-panneau { display: none; }

  /* Empiles, les deux blocs ne se cotoient plus : la bordure de separation et
     la hauteur fixe de la liste n'ont plus lieu d'etre. */
  .ann-panneau {
    height: auto;
    border-right: 0;
    /* La bascule flotte au-dessus du contenu ; sans cette reserve, elle
       masquerait les actions de la derniere fiche. */
    padding-bottom: 46px;
  }
  .ann-liste { overflow-y: visible; }
  .ann-bascule { display: flex; }
}

@media (max-width: 620px) {
  .ann-recherche { padding: 16px; border-radius: 12px; }
  .ann-recherche__principal { flex-direction: column; align-items: stretch; }
  /* En direction colonne, flex-basis regit la hauteur : le 320px prevu pour la
     largeur creerait un vide de 320px sous le champ. */
  .ann-champ { flex: 0 0 auto; }
  .ann-bouton { width: 100%; }
  .ann-filtres { gap: 10px; }
  .ann-filtre { flex: 1 1 100%; justify-content: space-between; }
  .ann-filtre-reinit { margin-left: 0; }
  .ann-fiche { padding: 14px 16px; }
  .ann-fiche__distance { font-size: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  #annuaire *,
  #annuaire *::before,
  #annuaire *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

@media print {
  .ann-recherche, .ann-carte-zone, .ann-bascule { display: none !important; }
  .ann-panneau { max-height: none; box-shadow: none; }
  .ann-liste { overflow: visible; }
}
