/* Bannière de consentement — GÉNÉRÉ par scripts/mesure/injecter.py.
   Ne pas éditer : les couleurs sont dérivées de shared-design/theme.css à
   l'assemblage, ce qui rend la divergence impossible par construction.
   Marque mère : noir et blanc, rayon 0. Aucun accent de filiale ici — une
   bannière de consentement n'appartient à aucune filiale. */
/* Une barre pleine largeur masquait le haut de section sur laquelle elle
   tombait — sur /en, elle recouvrait le chiffre d'accroche. Une carte posée
   dans un coin dit la même chose sans reprendre la page en otage. */
.fm-consent {
  position: fixed; inset: auto auto 16px 16px; z-index: 9999;
  width: min(360px, calc(100vw - 32px));
  background: #FFFFFF;
  border: 1px solid #E3E6E6;
  font-family: 'Nunito', system-ui, sans-serif;
  color: #3D3E3E;
  padding: 14px 16px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}
.fm-consent[hidden] { display: none; }
.fm-consent__inner {
  display: flex; flex-direction: column; align-items: stretch; gap: 12px;
}
.fm-consent__texte { font-size: 13px; line-height: 1.5; margin: 0; }
/* `display: block` n'est pas décoratif : sans lui le titre se colle au texte
   (« Mesure d'audienceNous aimerions… »), un `margin` n'ayant aucun effet
   vertical sur un span en ligne. */
.fm-consent__titre {
  display: block;
  font-family: 'Poppins', system-ui, sans-serif; font-weight: 700; font-size: 11px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: #111111; margin: 0 0 5px;
}
.fm-consent__texte a {
  color: inherit; text-decoration: underline; text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
.fm-consent__texte a:hover { text-decoration-thickness: 2px; }
.fm-consent__actions { display: flex; gap: 8px; }
/* `flex: 1` sur les deux : à texte inégal (« Refuser » / « Accepter »), des
   boutons auto-dimensionnés donnent au refus une cible plus petite. */
/* 44 px de haut, y compris sur grand écran : c'est la cible tactile minimale, et
   l'alléger reviendrait à rendre le refus plus difficile à viser que l'accord. */
.fm-consent__bouton {
  flex: 1 1 0;
  font-family: 'Poppins', system-ui, sans-serif; font-weight: 700; font-size: 13px;
  min-height: 44px; padding: 8px 14px; border: 1px solid #111111;
  border-radius: 0; cursor: pointer; background: #FFFFFF;
  color: #111111;
}
/* Refuser et accepter ont le même poids visuel : un refus qui se cherche est un
   consentement extorqué, et la CNIL le lit ainsi. Seul l'aplat distingue. */
.fm-consent__bouton--oui {
  background: #111111; color: #FFFFFF;
}
.fm-consent__bouton:focus-visible {
  outline: 2px solid #111111; outline-offset: 3px;
}
.fm-consent__bouton--oui:focus-visible { outline-offset: 2px; }
/* Sur téléphone, une carte flottante dans un coin est pire qu'une barre : elle
   flotte sous le pouce. On revient pleine largeur, mais compacte. */
@media (max-width: 620px) {
  .fm-consent {
    inset: auto 0 0 0; width: auto; border-inline: 0; border-bottom: 0;
    padding: 14px 16px calc(14px + env(safe-area-inset-bottom, 0px));
  }
}
@media (prefers-reduced-motion: no-preference) {
  .fm-consent { animation: fm-consent-entree 200ms ease-out; }
  @keyframes fm-consent-entree {
    from { transform: translateY(8px); opacity: 0; }
    to { transform: none; opacity: 1; }
  }
}
