/* ─────────────────────────────────────────────────────────────────────────────
 * amo-select — habillage des listes déroulantes Amosphère.
 *
 * Le <select> natif reste dans le DOM (voir amo-select.js) : il porte toujours
 * le name, la valeur et la validation HTML. Ces règles ne dessinent que le
 * bouton de substitution et le panneau d'options.
 *
 * Amélioration progressive : sans JavaScript, aucune classe .amo-sel n'est
 * posée et le <select> s'affiche avec le style du gabarit, comme avant.
 * ───────────────────────────────────────────────────────────────────────────── */

.amo-sel {
  --amo-sel-navy:   #0e295c;
  --amo-sel-terra:  #e1622b;
  --amo-sel-bord:   #DDE3EE;
  --amo-sel-bord-h: #BCC6DA;
  --amo-sel-muted:  #596475;
  --amo-sel-light:  #66727F;
  --amo-sel-surv:   #FDF0EA;
  position: relative;
  display: block;
  font-family: 'Outfit', sans-serif;
  /* Pas de width:100% ici : en contexte bloc (.field) l'enveloppe s'étire déjà
     seule, et l'imposer casserait les barres de filtres, où les <select>
     étaient des éléments flex dimensionnés par leur contenu. La largeur pleine
     est portée par le bouton, à l'intérieur de l'enveloppe. */
}

/* Le <select> reste rendu (opacité nulle) et non display:none : sinon le
   navigateur refuse de lui donner le focus pour afficher le message de
   validation d'un champ `required`, et l'envoi du formulaire échoue en
   silence. pointer-events:none laisse tous les clics au bouton. */
.amo-sel > select.amo-sel-natif {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
  border: 0;
  padding: 0;
  margin: 0;
  appearance: none;
  -webkit-appearance: none;
}

/* ── Bouton (état fermé) ─────────────────────────────────────────────────── */
.amo-sel-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  background: #fff;
  border: 1.5px solid var(--amo-sel-bord);
  border-radius: 10px;
  padding: 11px 14px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--amo-sel-navy);
  text-align: left;
  cursor: pointer;
  transition: border-color .18s, box-shadow .18s;
}
.amo-sel-btn:hover { border-color: var(--amo-sel-bord-h); }
.amo-sel-btn:focus-visible,
.amo-sel-btn[aria-expanded="true"] {
  outline: none;
  border-color: var(--amo-sel-terra);
  box-shadow: 0 0 0 3px rgba(225, 98, 43, .14);
}
.amo-sel-btn .amo-sel-val {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Placeholder : l'option vide du <select> (« Choisir… ») */
.amo-sel-btn .amo-sel-val.est-vide { color: var(--amo-sel-light); font-weight: 400; }

.amo-sel-btn .amo-sel-chev { flex: none; transition: transform .2s; }
.amo-sel-btn[aria-expanded="true"] .amo-sel-chev { transform: rotate(180deg); }

.amo-sel[data-desactive="1"] .amo-sel-btn {
  opacity: .55;
  cursor: not-allowed;
  background: #F4F6FA;
}

/* ── Panneau (état ouvert) ───────────────────────────────────────────────── */
/* Rattaché à <body> et positionné en fixed : aucun conteneur à `overflow`
   caché ne peut le rogner, et le même nœud sert de feuille mobile. */
.amo-sel-pop {
  position: fixed;
  z-index: 9000;
  background: #fff;
  border: 1px solid #E5E8EF;
  border-radius: 12px;
  box-shadow: 0 14px 40px -8px rgba(14, 41, 92, .22), 0 2px 6px rgba(14, 41, 92, .06);
  padding: 6px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  color: #0e295c;
}
.amo-sel-pop[hidden] { display: none; }

.amo-sel-grp {
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .7px;
  color: #66727F;
  padding: 10px 12px 5px;
}
.amo-sel-opt {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 12px;
  border-radius: 8px;
  cursor: pointer;
  line-height: 1.35;
  color: #0e295c;
}
.amo-sel-opt .amo-sel-tick { flex: none; width: 14px; height: 14px; opacity: 0; }
.amo-sel-opt[aria-selected="true"] { font-weight: 600; color: #e1622b; }
.amo-sel-opt[aria-selected="true"] .amo-sel-tick { opacity: 1; }
/* .est-active = option survolée à la souris OU parcourue au clavier : une seule
   mise en avant, pour que doigt, souris et flèches racontent la même chose. */
.amo-sel-opt.est-active { background: #FDF0EA; color: #B54A1C; }
.amo-sel-opt[aria-disabled="true"] { color: #A6AEBB; cursor: default; }
.amo-sel-opt[aria-disabled="true"].est-active { background: transparent; color: #A6AEBB; }

/* Le « Choisir… » du site est une option comme une autre pour le navigateur,
   mais ce n'est pas un choix : ni coche, ni mise en avant terracotta. */
.amo-sel-opt.est-vide { color: #66727F; }
.amo-sel-opt.est-vide[aria-selected="true"] { font-weight: 400; color: #66727F; background: transparent; }
.amo-sel-opt.est-vide .amo-sel-tick { opacity: 0 !important; }

.amo-sel-vide { padding: 14px 12px; color: #66727F; font-size: 13px; }

/* ── Voile (mobile uniquement) ───────────────────────────────────────────── */
.amo-sel-voile {
  position: fixed;
  inset: 0;
  z-index: 8990;
  background: rgba(14, 41, 92, .38);
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
}
.amo-sel-voile[hidden] { display: none; }

/* ── Feuille mobile ──────────────────────────────────────────────────────── */
/* Sous 640 px, le panneau ancré sous le champ est inutilisable : il passe
   sous le clavier, se fait rogner par le pli, et les lignes sont trop fines
   pour le doigt. Il devient une feuille remontant du bas de l'écran, avec des
   cibles de 48 px et un en-tête rappelant le libellé du champ. */
@media (max-width: 640px) {
  .amo-sel-pop.est-feuille {
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    width: auto;
    max-height: 72vh;
    /* Marge basse = barre d'outils iOS / geste d'accueil Android */
    padding: 6px 10px calc(10px + env(safe-area-inset-bottom));
    border-radius: 18px 18px 0 0;
    border-bottom: 0;
    box-shadow: 0 -10px 40px -6px rgba(14, 41, 92, .28);
    /* L'état AU REPOS est l'état par défaut (aucune transformation) : la feuille
       est correctement collée au bas de l'écran même si la transition ne joue
       pas (onglet en arrière-plan, moteur qui gèle la timeline d'animation).
       C'est la classe temporaire .est-entrante, retirée à la frame suivante,
       qui produit le glissement — jamais l'inverse. */
    transition: transform .22s cubic-bezier(.22, .8, .3, 1), opacity .22s ease-out;
  }
  .amo-sel-pop.est-feuille.est-entrante { transform: translateY(16px); opacity: .35; }
  @media (prefers-reduced-motion: reduce) {
    .amo-sel-pop.est-feuille { transition: none; }
  }

  .amo-sel-pop.est-feuille .amo-sel-tete {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 4px 6px 12px;
    border-bottom: 1px solid #EDF0F6;
    margin-bottom: 4px;
  }
  .amo-sel-pop.est-feuille .amo-sel-titre {
    font-size: 15px;
    font-weight: 600;
    color: #0e295c;
  }
  .amo-sel-pop.est-feuille .amo-sel-fermer {
    flex: none;
    width: 34px;
    height: 34px;
    border: 0;
    border-radius: 50%;
    background: #F4F6FA;
    color: #596475;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    font-family: inherit;
  }
  /* Poignée de préhension, comme les feuilles natives iOS/Android */
  .amo-sel-pop.est-feuille .amo-sel-poignee {
    width: 38px;
    height: 4px;
    border-radius: 2px;
    background: #D8DEE9;
    margin: 4px auto 8px;
  }
  .amo-sel-pop.est-feuille .amo-sel-opt {
    padding: 13px 12px;      /* ≥ 48 px de haut avec la police : cible tactile RGAA */
    font-size: 15px;
    border-radius: 10px;
  }
  .amo-sel-pop.est-feuille .amo-sel-grp { padding: 12px 12px 6px; font-size: 11px; }

  /* Sans survol au doigt, seule l'option retenue doit ressortir. */
  .amo-sel-pop.est-feuille .amo-sel-opt.est-active:not([aria-selected="true"]) {
    background: transparent;
    color: #0e295c;
  }
  .amo-sel-pop.est-feuille .amo-sel-opt[aria-selected="true"] { background: #FDF0EA; }
  /* …sauf le « Choisir… », qui n'est pas un choix (règle répétée ici : la
     précédente est moins spécifique que celle de la feuille). */
  .amo-sel-pop.est-feuille .amo-sel-opt.est-vide[aria-selected="true"] { background: transparent; }

  .amo-sel-btn { padding: 12px 14px; font-size: 16px; }  /* 16px : pas de zoom auto iOS */
}

/* Le fond de page ne défile plus derrière la feuille ouverte. */
body.amo-sel-fige { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .amo-sel-btn, .amo-sel-btn .amo-sel-chev { transition: none; }
}
