/*
 * GEIQ56 — Components CSS
 * Child theme Ollie (labernik-geiq56)
 *
 * Styles des composants réutilisables : navigation pill, boutons, badges,
 * cards, hero, footer. Basé sur le prototype HTML finalisé.
 *
 * Dépend de global.css pour les custom properties.
 */


/* ═══════════════════════════════════════════════════════════════════
   HEADER — Floating pill
   Cible les vraies classes WordPress générées par wp:navigation
   ═══════════════════════════════════════════════════════════════════ */

.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
  background: transparent;
  padding: 16px 24px;
  transition: padding .45s var(--ease-out);
}

.site-header.is-scrolled {
  padding: 10px 20px;
}

/* Neutraliser le padding Gutenberg sur le header */
.site-header.has-global-padding {
  padding-inline: 24px !important;
}
.site-header.is-scrolled.has-global-padding {
  padding-inline: 20px !important;
}

/* Inner pill
   v10.14 — Largeur resserrée. En mode burger universel (pas de menu
   horizontal à afficher), le header contient seulement : logo + social
   + CTA + burger = 4 éléments. 720px suffit largement, effet pill
   plus moderne / compact. */
.site-header__inner.wp-block-group {
  max-width: 720px !important;
  margin-inline: auto !important;
  padding: 0 24px !important;
  height: 62px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: var(--space-4) !important;
  background: rgba(255,255,255,.32) !important; /* v10.14.2 : .55 → .32 (encore plus transparent) */
  backdrop-filter: blur(28px) saturate(1.9) !important; /* blur renforcé pour lisibilité */
  -webkit-backdrop-filter: blur(28px) saturate(1.9) !important;
  border-radius: var(--radius-full) !important;
  box-shadow:
    0 2px 16px rgba(26,23,27,.05),
    0 0 0 1px rgba(255,255,255,.28),
    inset 0 1px 0 rgba(255,255,255,.55) !important;
  transition:
    height        .45s var(--ease-out),
    background    .35s ease,
    box-shadow    .35s ease,
    padding       .45s var(--ease-out),
    max-width     .45s var(--ease-out) !important;
}

.site-header.is-scrolled .site-header__inner.wp-block-group {
  height: 50px !important;
  padding: 0 18px !important;
  max-width: 620px !important; /* v10.14 : 920→620 pour rester proportionnel au mode normal */
  background: rgba(255,255,255,.26) !important; /* v10.14.2 : .48 → .26 (scroll) */
  backdrop-filter: blur(32px) saturate(2) !important;
  -webkit-backdrop-filter: blur(32px) saturate(2) !important;
  box-shadow:
    0 4px 24px rgba(26,23,27,.06),
    0 0 0 1px rgba(26,23,27,.04),
    inset 0 1px 0 rgba(255,255,255,.5) !important;
}

/* ── Logo ── */
.site-logo.wp-block-group {
  flex-shrink: 0 !important;
  gap: 0 !important;
}

/* Image logo */
.site-logo .wp-block-site-logo {
  margin: 0 !important;
  flex-shrink: 0;
}
.site-logo .wp-block-site-logo img,
.site-logo .wp-block-site-logo a img {
  height: 32px !important;
  width: auto !important;
  display: block !important;
  transition: height .45s var(--ease-out);
}
.site-header.is-scrolled .site-logo .wp-block-site-logo img { height: 26px !important; }

/* Texte logo (fallback si pas d'image) */
.site-logo__text.wp-block-site-title,
.site-logo .wp-block-site-title {
  font-family: var(--font-display) !important;
  font-size: 1.125rem !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900) !important;
  text-decoration: none !important;
  margin: 0 !important;
  line-height: 1 !important;
}
.site-logo .wp-block-site-title a {
  color: var(--color-neutral-900) !important;
  text-decoration: none !important;
}

/* Masquer le titre si l'image logo est présente */
.site-logo .wp-block-site-logo:not(:empty) + .wp-block-site-title {
  display: none;
}

/* ── Navigation WP — reset des styles Ollie/Gutenberg ── */

/* Cluster de droite (v5.5) : nav + social + CTA */
.site-header__right.wp-block-group {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  margin: 0 !important;
  padding: 0 !important;
  flex: 1 1 auto !important;
  justify-content: flex-end !important;
}
.header-cta-wrap.wp-block-group {
  margin: 0 !important;
  padding: 0 !important;
  display: flex !important;
  align-items: center !important;
}

/* Supprimer les styles par défaut du bloc navigation */
.site-header__inner .wp-block-navigation {
  flex: 0 1 auto !important;
  justify-content: flex-end !important;
  gap: 0 !important;
  /* Reset des styles Gutenberg */
  margin: 0 !important;
  padding: 0 !important;
}

/* Liste principale */
.site-header__inner .wp-block-navigation__container {
  display: flex !important;
  align-items: center !important;
  gap: 2px !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  flex-wrap: nowrap !important;
}

/* Items de navigation */
.site-header__inner .wp-block-navigation-item {
  position: relative !important;
  list-style: none !important;
  margin: 0 !important;
}

/* Liens */
.site-header__inner .wp-block-navigation-item__content {
  display: flex !important;
  align-items: center !important;
  gap: 4px !important;
  font-size: var(--font-body-sm-size) !important;
  font-weight: var(--fw-medium) !important;
  color: var(--color-neutral-600) !important;
  text-decoration: none !important;
  padding: 6px 12px !important;
  border-radius: var(--radius-full) !important;
  transition: color .15s, background .15s !important;
  white-space: nowrap !important;
}

.site-header__inner .wp-block-navigation-item__content:hover {
  color: var(--color-neutral-900) !important;
  background: rgba(26,23,27,.06) !important;
}

/* Label seul (span à l'intérieur du lien) */
.site-header__inner .wp-block-navigation-item__label {
  font-size: inherit !important;
  font-weight: inherit !important;
  color: inherit !important;
}

/* Description masquée */
.site-header__inner .wp-block-navigation-item__description {
  display: none !important;
}

/* Lien actif */
.site-header__inner .wp-block-navigation-item.current-menu-item .wp-block-navigation-item__content,
.site-header__inner .wp-block-navigation-item[aria-current="page"] .wp-block-navigation-item__content {
  color: var(--color-neutral-900) !important;
  font-weight: var(--fw-semibold) !important;
}

/* ── CTA button "Voir les offres" ── */
.site-header__inner .wp-block-navigation-item.nav-cta .wp-block-navigation-item__content {
  background: var(--color-primary) !important;
  color: #fff !important;
  padding: 7px 16px !important;
  margin-left: 4px !important;
  border-radius: var(--radius-full) !important;
  font-weight: var(--fw-semibold) !important;
}

.site-header__inner .wp-block-navigation-item.nav-cta .wp-block-navigation-item__content:hover {
  background: var(--color-primary-dark) !important;
  color: #fff !important;
}

/* ── Icône chevron du sous-menu ── */
.site-header__inner .wp-block-navigation__submenu-icon {
  display: inline-flex !important;
  align-items: center !important;
  margin-left: 2px !important;
  opacity: .5 !important;
  transition: transform .15s !important;
}
.site-header__inner .wp-block-navigation__submenu-icon svg {
  width: 10px; height: 10px;
}

/* ── Dropdown submenu ── */
.site-header__inner .wp-block-navigation__submenu-container {
  position: absolute !important;
  top: calc(100% + 8px) !important;
  left: 0 !important;
  min-width: 220px !important;
  background: var(--color-neutral-0) !important;
  border: 1.5px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: 0 8px 32px rgba(26,23,27,.12) !important;
  padding: 6px !important;
  list-style: none !important;
  z-index: 201 !important;
  /* Hidden par défaut — WP gère via classes open-on-hover-click */
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translateY(-6px) !important;
  transition: opacity .15s, transform .15s !important;
  /* Reset les styles Gutenberg */
  margin: 0 !important;
  flex-direction: column !important;
  min-height: unset !important;
}

/* WP ajoute .is-dropdown-open quand hover/focus */
.site-header__inner .wp-block-navigation-item.open-on-hover-click:hover .wp-block-navigation__submenu-container,
.site-header__inner .wp-block-navigation-item.open-on-hover-click:focus-within .wp-block-navigation__submenu-container,
.site-header__inner .wp-block-navigation__submenu-container.is-dropdown-open {
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: translateY(0) !important;
}

/* Liens dans le dropdown */
.site-header__inner .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 8px 12px !important;
  border-radius: var(--radius-md) !important;
  color: var(--color-neutral-600) !important;
  font-size: var(--font-body-sm-size) !important;
  font-weight: var(--fw-medium) !important;
  white-space: nowrap !important;
  background: transparent !important;
}

.site-header__inner .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: var(--color-neutral-100) !important;
  color: var(--color-neutral-900) !important;
}

/* ── Bouton hamburger mobile ── */
.wp-block-navigation__responsive-container-open {
  display: none !important;
  background: transparent !important;
  border: none !important;
  cursor: pointer !important;
  padding: 8px !important;
  color: var(--color-neutral-900) !important;
}

/* ── Conteneur responsive — masqué sur desktop ── */
.site-header__inner .wp-block-navigation__responsive-container:not(.is-menu-open) {
  /* Sur desktop, on montre directement */
  display: contents !important;
}

/* ── Dark mode — header ── */
[data-theme="dark"] .site-header__inner.wp-block-group {
  background: rgba(28, 24, 32, .82) !important;
  box-shadow:
    0 2px 18px rgba(0,0,0,.28),
    0 0 0 1px rgba(255,255,255,.07),
    inset 0 1px 0 rgba(255,255,255,.06) !important;
}

[data-theme="dark"] .site-header.is-scrolled .site-header__inner.wp-block-group {
  background: rgba(22, 18, 26, .88) !important;
  box-shadow:
    0 4px 28px rgba(0,0,0,.38),
    0 0 0 1px rgba(255,255,255,.08),
    inset 0 1px 0 rgba(255,255,255,.05) !important;
}

[data-theme="dark"] .site-logo .wp-block-site-title a { color: #f0eef1 !important; }

[data-theme="dark"] .site-header__inner .wp-block-navigation-item__content {
  color: rgba(255,255,255,.5) !important;
}
[data-theme="dark"] .site-header__inner .wp-block-navigation-item__content:hover {
  color: #f0eef1 !important;
  background: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .site-header__inner .wp-block-navigation-item.nav-cta .wp-block-navigation-item__content {
  color: #fff !important;
}

[data-theme="dark"] .site-header__inner .wp-block-navigation__submenu-container {
  background: #1e1a24 !important;
  border-color: rgba(255,255,255,.1) !important;
  box-shadow: 0 8px 32px rgba(0,0,0,.4) !important;
}
[data-theme="dark"] .site-header__inner .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  color: rgba(255,255,255,.5) !important;
}
[data-theme="dark"] .site-header__inner .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: rgba(255,255,255,.07) !important;
  color: #f0eef1 !important;
}

/* ── Responsive mobile ── */
@media (max-width: 767px) {
  .site-header { padding: 12px 16px; }

  .wp-block-navigation__responsive-container-open {
    display: flex !important;
  }

  .site-header__inner .wp-block-navigation__responsive-container:not(.is-menu-open) {
    display: none !important;
  }

  .site-header__inner .wp-block-navigation__responsive-container.is-menu-open {
    display: block !important;
    position: fixed !important;
    inset: 0 !important;
    z-index: 999 !important;
    background: rgba(255,255,255,.96) !important;
    backdrop-filter: blur(24px) !important;
    padding: var(--space-5) var(--space-4) !important;
  }

  .site-header__inner .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 4px !important;
  }

  [data-theme="dark"] .site-header__inner .wp-block-navigation__responsive-container.is-menu-open {
    background: rgba(26,23,27,.96) !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   BADGES
   ═══════════════════════════════════════════════════════════════════ */

.badge {
  display: inline-block;
  font-size: .65rem;
  font-weight: var(--fw-bold);
  letter-spacing: .05em;
  padding: 2px 8px;
  border-radius: var(--radius-full);
}

.badge--btp   { background: var(--color-primary); color: #fff; }
.badge--multi { background: var(--color-neutral-900); color: #fff; }
.badge--new   { background: var(--color-primary-soft); color: var(--color-primary); }


/* ═══════════════════════════════════════════════════════════════════
   BOUTONS
   ═══════════════════════════════════════════════════════════════════ */

.btn,
.wp-block-button__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-body);
  font-size: var(--font-body-size);
  font-weight: var(--fw-semibold);
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  border: 2px solid transparent;
  border-radius: var(--radius-md);
  padding: 13px 24px;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
  white-space: nowrap;
}

/* Primary */
.btn-primary,
.wp-block-button__link.btn-primary {
  background: var(--color-primary);
  color: #fff;
  border-color: var(--color-primary);
  position: relative;
  overflow: hidden;
}
.btn-primary::after,
.wp-block-button__link.btn-primary::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.18) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform .5s ease;
}
.btn-primary:hover::after,
.wp-block-button__link.btn-primary:hover::after { transform: translateX(120%); }
.btn-primary:hover,
.wp-block-button__link.btn-primary:hover {
  background: var(--color-primary-dark);
  border-color: var(--color-primary-dark);
  color: #fff;
}

/* Outline */
.btn-outline,
.wp-block-button__link.btn-outline {
  background: transparent;
  color: var(--color-neutral-900);
  border-color: var(--color-neutral-300, #c4cdd4);
}
.btn-outline:hover,
.wp-block-button__link.btn-outline:hover {
  background: var(--color-neutral-50);
  border-color: var(--color-neutral-400);
  color: var(--color-neutral-900);
}

/* Large */
.btn-lg { padding: 16px 32px; font-size: 1.0625rem; border-radius: 8px; }

/* Pill */
.btn-pill { border-radius: var(--radius-full); }

/* Ghost */
.btn-ghost {
  background: transparent;
  color: var(--color-primary);
  border-color: transparent;
  padding-inline: 8px;
}
.btn-ghost:hover {
  background: var(--color-primary-soft);
}


/* ═══════════════════════════════════════════════════════════════════
   HERO — section principale
   ═══════════════════════════════════════════════════════════════════ */

.hero {
  position: relative;
  overflow-x: clip;      /* clip horizontal seulement — bg-edge-light peut déborder verticalement */
  overflow-y: visible;
  background: var(--color-neutral-0);
  /* v7.1.1 : padding top condensé (134 → clamp 92-118) + bottom aligné sur --section-gap.
     Le header sticky reste à 72 px, on garde ~20 px d'air avant le persona-switch. */
  padding: clamp(92px, 8vw, 118px) 0 var(--section-gap);
  width: 100%;
}

/* Force la section hero à occuper toute la largeur même en FSE */
.hero.wp-block-group,
section.hero {
  max-width: 100% !important;
  width: 100% !important;
  padding-inline: 0 !important;
  margin-inline: 0 !important;
}

.hero__content {
  position: relative;
  z-index: 1;
  max-width: var(--wide-width);
  margin-inline: auto;
  padding-inline: var(--space-4);
  text-align: center;
}

/* hero__content en FSE : on contrôle la width nous-mêmes */
.hero__content.wp-block-group {
  max-width: var(--wide-width) !important;
  margin-inline: auto !important;
  padding-inline: var(--space-4) !important;
}

/* Eyebrow pill */
.hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: .8125rem;
  font-weight: var(--fw-medium);
  color: var(--color-neutral-500);
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-full);
  padding: 6px 16px;
  margin-bottom: var(--space-4);
  background: var(--color-neutral-50);
}

/* Dot animé avant l'eyebrow */
.hero__eyebrow::before {
  content: '';
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
  box-shadow: 0 0 8px rgba(227,0,67,.7);
  animation: blink 2.5s ease-in-out infinite;
  flex-shrink: 0;
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: .4; }
}

/* Title */
.hero__title {
  font-family: var(--font-display);
  font-size: clamp(2.25rem, 5.5vw, 3.75rem);
  font-weight: var(--fw-regular);
  color: var(--color-neutral-900);
  line-height: var(--lh-display);
  margin-bottom: var(--space-3);
}

/* Shimmer sur le texte italique */
.hero__title em {
  font-style: italic;
  background: linear-gradient(
    90deg,
    var(--color-primary) 0%,
    #ff4d6d 35%,
    var(--color-primary) 55%,
    #c0002a 80%,
    var(--color-primary) 100%
  );
  background-size: 220% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer-text 4s linear infinite;
  color: unset;
}

@keyframes shimmer-text {
  from { background-position: 0% center; }
  to   { background-position: 220% center; }
}

@media (prefers-reduced-motion: reduce) {
  .hero__title em {
    animation: none;
    background: none;
    -webkit-text-fill-color: var(--color-primary);
    color: var(--color-primary);
  }
  .hero__eyebrow::before { animation: none; }
}

.hero__subtitle {
  font-size: var(--font-body-lg-size);
  color: var(--color-neutral-500);
  line-height: var(--lh-body);
  max-width: 520px;
  margin-inline: auto;
  margin-bottom: var(--space-6);
}

.hero__actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: var(--space-7);
}

/* Boutons hero en FSE */
.hero__actions.wp-block-buttons {
  justify-content: center !important;
}

@media (max-width: 767px) {
  .hero { padding-top: 104px; }
  .hero__actions { flex-direction: column; align-items: center; }
}


/* ═══════════════════════════════════════════════════════════════════
   SECTIONS — layout helpers FSE
   Gutenberg ajoute des classes is-layout-* qui peuvent contraindre
   nos sections. On neutralise ça proprement.
   ═══════════════════════════════════════════════════════════════════ */

/* Toutes les sections doivent être full-width */
.section.wp-block-group {
  max-width: 100% !important;
  width: 100% !important;
  padding-inline: 0 !important;
  margin-inline: 0 !important;
}

/* ─────────────────────────────────────────────────────────────────
   v7.5.4 — Neutralisation du blockGap FSE sur les .section
   WordPress FSE injecte automatiquement
     :where(.wp-site-blocks) > * { margin-block-start: var(--wp--preset--spacing--4); }
     :root :where(.is-layout-flow) > * { margin-block-start: var(--wp--preset--spacing--4); }
   = 32 px de marge top sur chaque enfant racine, qui s'empilent
   sur notre padding-block et gonflent les espaces entre blocs.
   Le rythme vertical du design system est piloté UNIQUEMENT par
   le padding-block des .section--* (voir global.css §--section-gap).
   ─────────────────────────────────────────────────────────────── */
:root :where(.wp-site-blocks) > .section,
:root :where(.is-layout-flow) > .section,
:root :where(.is-layout-constrained) > .section,
.site-main .section,
main .section {
  margin-block: 0;
}

/* Le container interne gère la width max */
.container.wp-block-group {
  max-width: var(--wide-width) !important;
  margin-inline: auto !important;
  padding-inline: var(--space-4) !important;
  width: 100% !important;
}

/* Section-header centré */
.section-header.wp-block-group {
  text-align: center !important;
  margin-inline: auto !important;
}

/* Section eyebrow — pill générique (toutes sections hors hero) */
.section-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: .8125rem;
  font-weight: var(--fw-medium);
  color: var(--color-neutral-500);
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-full);
  padding: 6px 16px;
  margin-bottom: var(--space-3);
  background: var(--color-neutral-50);
}
.section-eyebrow::before {
  content: '';
  display: inline-block;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--color-primary);
  flex-shrink: 0;
  opacity: .7;
}

/* Section title — style affiché + split text target */
.section-title {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 3.5vw, 2.625rem);
  font-weight: var(--fw-regular);
  color: var(--color-neutral-900);
  line-height: var(--lh-display);
  margin-bottom: var(--space-3);
}
.section-title em {
  font-style: italic;
  color: var(--color-primary);
}

/* Section subtitle */
.section-subtitle {
  font-size: var(--font-body-lg-size);
  color: var(--color-neutral-500);
  line-height: var(--lh-body);
  max-width: 580px;
  margin-inline: auto;
  margin-bottom: var(--space-5);
}

[data-theme="dark"] .section-eyebrow { color: rgba(255,255,255,.45); border-color: rgba(255,255,255,.12); background: rgba(255,255,255,.05); }
[data-theme="dark"] .section-title   { color: #f0eef1; }
[data-theme="dark"] .section-subtitle{ color: rgba(255,255,255,.5); }


/* ═══════════════════════════════════════════════════════════════════
   FEATURES GRID
   ═══════════════════════════════════════════════════════════════════ */

/* Forcer le wp:columns en CSS grid (3 colonnes comme le prototype) */
.features-grid.wp-block-columns {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: var(--space-3) !important;
  flex-wrap: unset !important;
  margin-top: var(--space-6) !important;
}

/* Feature card — style prototype (radius-xl, padding-5/4) */
.feature-card.wp-block-column {
  position: relative;
  background:
    radial-gradient(circle 120px at var(--mx,50%) var(--my,50%), rgba(227,0,67,.07) 0%, transparent 100%),
    var(--color-neutral-0);
  border: 1.5px solid var(--color-neutral-200);
  border-radius: var(--radius-xl);
  padding: var(--space-5) var(--space-4);
  flex: none !important;
  width: 100% !important;
  max-width: none !important;
  overflow: visible !important;
  transition: border-color .2s, box-shadow .2s, transform .22s cubic-bezier(.4,0,.2,1), background .05s;
  will-change: transform;
}

.feature-card.wp-block-column:hover {
  border-color: rgba(227,0,67,.25);
  box-shadow: 0 6px 28px rgba(227,0,67,.08), 0 2px 8px rgba(26,23,27,.06);
  transform: translateY(-5px);
}

.feature-card__inner {
  gap: var(--space-3) !important;
}

.feature-card__icon {
  width: 40px; height: 40px;
  line-height: 1 !important;
  margin-bottom: var(--space-3) !important;
  font-size: 1.25rem !important;
  background: rgba(227,0,67,.08);
  border-radius: var(--radius-sm);
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0;
  transition: background .2s, transform .22s;
}
.feature-card.wp-block-column:hover .feature-card__icon {
  background: rgba(227,0,67,.14);
  transform: scale(1.1) rotate(-3deg);
}

/* Title : Instrument Serif, léger, comme le prototype */
.feature-card__title.wp-block-heading {
  font-family: var(--font-display) !important;
  font-size: 1.2rem !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900) !important;
  margin-bottom: var(--space-2) !important;
  line-height: 1.3 !important;
}

.feature-card__desc {
  font-size: .9375rem !important;
  color: var(--color-neutral-600) !important;
  line-height: 1.6 !important;
  margin: 0 !important;
}

[data-theme="dark"] .feature-card.wp-block-column {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.08);
}

@media (max-width: 767px) {
  .features-grid.wp-block-columns {
    grid-template-columns: 1fr !important;
  }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .features-grid.wp-block-columns {
    grid-template-columns: 1fr 1fr !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   GEIQ SWITCHER
   ═══════════════════════════════════════════════════════════════════ */

.geiq-switcher.wp-block-group {
  padding: 0;
}

/* Onglets navigation */
.geiq-switcher__tabs.wp-block-group {
  display: flex !important;
  gap: 0 !important;
  justify-content: center !important;
  background: var(--color-neutral-100);
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-full);
  padding: 4px !important;
  margin-bottom: var(--space-6) !important;
  width: fit-content;
  margin-inline: auto !important;
}

.geiq-tab {
  flex: none;
  text-align: center;
  padding: 10px 28px;
  font-size: var(--font-body-sm-size);
  font-weight: var(--fw-semibold);
  color: var(--color-neutral-600);
  border-radius: var(--radius-full);
  cursor: pointer;
  margin: 0 !important;
  transition: background .2s, color .2s, box-shadow .2s;
  user-select: none;
  white-space: nowrap;
}

.geiq-tab:hover { color: var(--color-neutral-900); }

.geiq-tab--active,
.geiq-tab.is-active {
  background: var(--color-neutral-0);
  color: var(--color-neutral-900);
  font-weight: var(--fw-semibold);
  box-shadow: 0 1px 4px rgba(26,23,27,.12);
}

[data-theme="dark"] .geiq-switcher__tabs.wp-block-group {
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.09);
}
[data-theme="dark"] .geiq-tab { color: rgba(255,255,255,.4); }
[data-theme="dark"] .geiq-tab--active,
[data-theme="dark"] .geiq-tab.is-active {
  background: rgba(255,255,255,.12);
  color: #f0eef1;
  box-shadow: none;
}

/* Panels */
.geiq-panel {
  display: none !important;
  gap: var(--space-7) !important;
  align-items: center !important;
  border-radius: var(--radius-lg);
}

.geiq-panel--active,
.geiq-panel.is-active {
  display: flex !important;
}

.geiq-panel__content {
  flex: 1 1 0;
  min-width: 0;
  gap: var(--space-3) !important;
}

.geiq-panel__visual {
  flex: 0 0 280px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.geiq-panel__badge-wrap {
  background: var(--color-neutral-100);
  border-radius: var(--radius-xl);
  padding: var(--space-6);
  flex-direction: column !important;
  gap: var(--space-2) !important;
}

.geiq-panel__stat {
  font-size: 1rem !important;
  color: var(--color-neutral-600);
  line-height: 1.4 !important;
}

/* ── Steps — style prototype ── */
.geiq-steps.wp-block-group {
  gap: 0 !important;
  margin-top: var(--space-3) !important;
  flex-direction: column !important;
}

.geiq-step.wp-block-group {
  gap: 14px !important;
  align-items: flex-start !important;
  /* Animation d'entrée — état initial caché */
  opacity: 0;
  transform: translateX(18px);
}

/* Animation déclenchée quand le panel est actif */
.geiq-panel--active .geiq-step:nth-child(1),
.geiq-panel.is-active .geiq-step:nth-child(1) {
  animation: geiq-step-in .52s cubic-bezier(.22,1,.36,1) .05s both;
}
.geiq-panel--active .geiq-step:nth-child(2),
.geiq-panel.is-active .geiq-step:nth-child(2) {
  animation: geiq-step-in .52s cubic-bezier(.22,1,.36,1) .19s both;
}
.geiq-panel--active .geiq-step:nth-child(3),
.geiq-panel.is-active .geiq-step:nth-child(3) {
  animation: geiq-step-in .52s cubic-bezier(.22,1,.36,1) .33s both;
}

@keyframes geiq-step-in {
  from { opacity: 0; transform: translateX(18px); }
  to   { opacity: 1; transform: none; }
}

/* Ping sur le numéro */
.geiq-panel--active .geiq-step__num,
.geiq-panel.is-active .geiq-step__num {
  animation: step-num-ping 2.6s ease-out infinite;
}
.geiq-panel--active .geiq-step:nth-child(2) .geiq-step__num,
.geiq-panel.is-active .geiq-step:nth-child(2) .geiq-step__num { animation-delay: .85s; }
.geiq-panel--active .geiq-step:nth-child(3) .geiq-step__num,
.geiq-panel.is-active .geiq-step:nth-child(3) .geiq-step__num { animation-delay: 1.7s; }

@keyframes step-num-ping {
  0%   { box-shadow: 0 0 0 0   rgba(227,0,67,.35); }
  60%  { box-shadow: 0 0 0 9px rgba(227,0,67,0); }
  100% { box-shadow: 0 0 0 0   rgba(227,0,67,0); }
}

@media (prefers-reduced-motion: reduce) {
  .geiq-step { opacity: 1; transform: none; }
  .geiq-panel--active .geiq-step,
  .geiq-panel.is-active .geiq-step { animation: none; }
  .geiq-panel--active .geiq-step__num,
  .geiq-panel.is-active .geiq-step__num { animation: none; }
}

/* Numéro — cercle avec dégradé + border rouge */
.geiq-step__num {
  flex-shrink: 0;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, #fff 0%, #fef0f3 100%);
  border: 1.5px solid var(--color-primary);
  color: var(--color-primary);
  font-family: var(--font-display);
  font-size: 1.0625rem;
  font-weight: 400;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 !important;
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  line-height: 1 !important;
}

/* Corps du step — glassmorphism */
.geiq-step__body.wp-block-group {
  background: rgba(255,255,255,.68);
  border: 1px solid rgba(227,0,67,.12);
  border-radius: var(--radius-md);
  padding: 10px 14px !important;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  flex: 1;
  gap: 2px !important;
  margin-bottom: var(--space-3) !important;
}

.geiq-step:last-child .geiq-step__body.wp-block-group {
  margin-bottom: 0 !important;
}

.geiq-step__title {
  font-size: .875rem !important;
  font-weight: var(--fw-bold) !important;
  color: var(--color-neutral-900) !important;
  margin: 0 0 2px !important;
  line-height: 1.4 !important;
}

.geiq-step__desc {
  font-size: .8125rem !important;
  color: var(--color-neutral-500) !important;
  margin: 0 !important;
  line-height: 1.5 !important;
}

/* Dark mode steps */
[data-theme="dark"] .geiq-step__num {
  background: linear-gradient(135deg, #2a1e25 0%, #311520 100%);
}
[data-theme="dark"] .geiq-step__body.wp-block-group {
  background: rgba(255,255,255,.06);
  border-color: rgba(227,0,67,.2);
}
[data-theme="dark"] .geiq-step__title { color: #f0eef1 !important; }
[data-theme="dark"] .geiq-step__desc  { color: rgba(255,255,255,.42) !important; }

@media (max-width: 767px) {
  .geiq-panel { flex-direction: column !important; }
  .geiq-panel__visual { flex: none; width: 100%; }
  .geiq-switcher__tabs.wp-block-group { width: 100%; max-width: 100%; }
  .geiq-tab { padding: 8px 16px; }
}


/* ═══════════════════════════════════════════════════════════════════
   JOBS PREVIEW — structure prototype (shortcode geiq56_jobs)
   ═══════════════════════════════════════════════════════════════════ */

.jobs-preview { margin-top: var(--space-5) !important; }

/* Grid — 2 cols comme le prototype (3 sur grands écrans) */
.jobs-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  margin-top: var(--space-5);
}
.jobs-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }

/* ── Job Card ── */
.job-card {
  background: var(--color-neutral-0);
  border: 1.5px solid var(--color-neutral-200);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  text-decoration: none;
  color: inherit;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  will-change: transform;
}
.job-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(227,0,67,.08), 0 0 0 1.5px rgba(227,0,67,.2);
  border-color: rgba(227,0,67,.25);
}
.job-card:hover .link-arrow { gap: 10px; }

/* Head : badges + date relative */
.job-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 6px;
}
.job-card__badges { display: flex; gap: 5px; flex-wrap: wrap; }
.job-card__ago {
  font-size: .75rem;
  color: var(--color-neutral-400);
  white-space: nowrap;
}

/* Title */
.job-card__title {
  font-family: var(--font-display);
  font-size: 1.125rem;
  font-weight: 400;
  color: var(--color-neutral-900);
  margin: 4px 0;
  line-height: 1.35;
}
.job-card:hover .job-card__title { color: var(--color-primary); }

/* Meta items : icône + texte */
.job-card__meta {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin-top: 2px;
}
.job-card__meta-item {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: .8125rem;
  color: var(--color-neutral-600);
}
.job-card__meta-item svg { flex-shrink: 0; }

/* Footer : statut + lien */
.job-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: var(--space-2);
  border-top: 1px solid var(--color-neutral-100);
  margin-top: auto;
}
.job-card__status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .8125rem;
  color: var(--color-neutral-600);
}

/* ── Badges ── */
.badge {
  display: inline-block;
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .05em;
  padding: 2px 8px;
  border-radius: var(--radius-full);
  line-height: 1.5;
}
.badge-btp    { background: var(--color-primary); color: #fff; }
.badge-multi  { background: var(--color-neutral-900); color: #fff; }
.badge-neutral { background: var(--color-neutral-100); color: var(--color-neutral-700); }

/* Dot de statut */
.badge-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
  display: inline-block;
}
.badge-dot--green  { background: var(--color-success); }
.badge-dot--orange { background: var(--color-warning); }
.badge-dot--red    { background: var(--color-primary); }

/* Link arrow */
.link-arrow {
  color: var(--color-primary);
  text-decoration: none;
  font-weight: var(--fw-medium);
  font-size: .875rem;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: gap .15s;
}
.link-arrow:hover { gap: 8px; color: var(--color-primary-dark); }

/* Jobs empty state */
.jobs-empty {
  padding: var(--space-7) var(--space-4);
  text-align: center;
  color: var(--color-neutral-500);
}

/* Dark mode */
[data-theme="dark"] .job-card {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.08);
}
[data-theme="dark"] .job-card__title { color: #f0eef1; }
[data-theme="dark"] .job-card__footer { border-top-color: rgba(255,255,255,.06); }
[data-theme="dark"] .badge-neutral { background: rgba(255,255,255,.08); color: rgba(255,255,255,.7); }

/* Responsive */
@media (max-width: 1023px) {
  .jobs-grid, .jobs-grid--cols-3 { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 767px) {
  .jobs-grid, .jobs-grid--cols-3 { grid-template-columns: 1fr !important; }
  .job-card { padding: var(--space-3) !important; }
}


/* ═══════════════════════════════════════════════════════════════════
   PARTNERS MARQUEE
   ═══════════════════════════════════════════════════════════════════ */

.partners-marquee__track.wp-block-group {
  flex-wrap: wrap !important;
  justify-content: center !important;
  gap: var(--space-4) !important;
  margin-top: var(--space-5) !important;
}

.partner-logo-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 48px;
  padding: 0 24px;
  background: var(--color-neutral-100);
  border-radius: var(--radius-md);
  font-size: var(--font-body-sm-size);
  color: var(--color-neutral-400);
  font-weight: var(--fw-medium);
  margin: 0 !important;
}


/* ═══════════════════════════════════════════════════════════════════
   CTA BLOCK
   ═══════════════════════════════════════════════════════════════════ */

.cta-section.wp-block-group {
  background: var(--color-neutral-900) !important;
  max-width: 100% !important;
  padding-inline: 0 !important;
  margin-inline: 0 !important;
}

.cta-block {
  padding: var(--space-8) var(--space-4);
  text-align: center;
}

.cta-block__title {
  color: var(--color-neutral-0) !important;
  font-family: var(--font-display) !important;
  font-size: clamp(1.875rem, 4vw, var(--font-h1-size)) !important;
  font-weight: var(--fw-regular) !important;
}

.cta-block__desc {
  color: rgba(255,255,255,.65) !important;
  font-size: var(--font-body-lg-size) !important;
  margin-bottom: var(--space-5) !important;
}

.cta-section .section-eyebrow {
  color: rgba(255,255,255,.5) !important;
  border-color: rgba(255,255,255,.15) !important;
  background: rgba(255,255,255,.06) !important;
}

.cta-section .wp-block-button__link.btn-outline {
  color: rgba(255,255,255,.85) !important;
  border-color: rgba(255,255,255,.25) !important;
}
.cta-section .wp-block-button__link.btn-outline:hover {
  border-color: rgba(255,255,255,.7) !important;
  color: #fff !important;
}


/* ═══════════════════════════════════════════════════════════════════
   FOOTER
   ═══════════════════════════════════════════════════════════════════ */

.site-footer {
  position: relative;
  overflow: hidden;
  background: rgba(249, 250, 251, .92);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border-top: 1px solid rgba(227, 0, 67, .10);
  /* v6.3.6 : padding-top réduit (--space-7 → clamp 48-72) pour supprimer
     la bande vide au-dessus du footer sur les pages Spoke qui finissent
     sur une section sans CTA (ex. /le-dispositif/ qui clôt par le switcher).
     Sur la homepage le CTA-final garde son propre padding 80px, le total
     reste confortable. */
  padding: clamp(48px, 5vw, 72px) 0 var(--space-4);
}

.footer__grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: var(--space-6);
  max-width: var(--wide-width);
  margin-inline: auto;
  padding-inline: var(--space-4);
  margin-bottom: var(--space-6);
}

.footer__brand-name {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: var(--fw-regular);
  color: var(--color-neutral-900);
  margin-bottom: var(--space-2);
  text-decoration: none;
}

.footer__tagline {
  font-size: var(--font-body-sm-size);
  color: var(--color-neutral-600);
  line-height: var(--lh-body);
  margin-bottom: var(--space-3);
}

.footer__col-title {
  font-size: var(--font-body-sm-size);
  font-weight: var(--fw-semibold);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--color-neutral-900);
  margin-bottom: var(--space-3);
}

.footer__links {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.footer__links a {
  font-size: var(--font-body-sm-size);
  color: var(--color-neutral-600);
  text-decoration: none;
  transition: color .15s;
}

.footer__links a:hover { color: var(--color-primary); }

.footer__bottom {
  max-width: var(--wide-width);
  margin-inline: auto;
  padding-inline: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px solid rgba(227,0,67,.08);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
}

.footer__legal {
  font-size: .8125rem;
  color: var(--color-neutral-400);
}

.footer__legal a {
  color: var(--color-neutral-400);
  text-decoration: none;
}
.footer__legal a:hover { color: var(--color-primary); }

.footer__socials {
  display: flex;
  gap: 8px;
  align-items: center;
}

.footer__social-link {
  width: 34px; height: 34px;
  border-radius: var(--radius-md);
  background: var(--color-neutral-100);
  border: 1px solid var(--color-neutral-200);
  display: flex; align-items: center; justify-content: center;
  color: var(--color-neutral-600);
  text-decoration: none;
  transition: background .15s, color .15s, border-color .15s;
}

.footer__social-link:hover {
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-color: rgba(227,0,67,.25);
}

/* Dark mode footer */
[data-theme="dark"] .site-footer {
  background: rgba(26, 23, 27, .92);
  border-top-color: rgba(227, 0, 67, .15);
}
[data-theme="dark"] .footer__col-title   { color: #f0eef1; }
[data-theme="dark"] .footer__brand-name  { color: #f0eef1; }
[data-theme="dark"] .footer__tagline     { color: rgba(255,255,255,.5); }
[data-theme="dark"] .footer__links a     { color: rgba(255,255,255,.5); }
[data-theme="dark"] .footer__bottom      { border-top-color: rgba(255,255,255,.08); }
[data-theme="dark"] .footer__legal       { color: rgba(255,255,255,.3); }
[data-theme="dark"] .footer__legal a     { color: rgba(255,255,255,.3); }
[data-theme="dark"] .footer__social-link {
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.09);
  color: rgba(255,255,255,.5);
}
[data-theme="dark"] .footer__social-link:hover {
  background: rgba(227,0,67,.2);
  color: var(--color-primary);
  border-color: rgba(227,0,67,.3);
}

@media (max-width: 1023px) {
  .footer__grid { grid-template-columns: 1fr 1fr; gap: var(--space-4); }
}
@media (max-width: 767px) {
  .footer__grid { grid-template-columns: 1fr; }
  .footer__bottom { flex-direction: column; text-align: center; }
}


/* ═══════════════════════════════════════════════════════════════════
   DARK MODE TOGGLE (sticky bas de page)
   ═══════════════════════════════════════════════════════════════════ */

.theme-toggle-sticky {
  position: fixed;
  bottom: 24px; right: 24px;
  z-index: 300;
  width: 44px; height: 44px;
  border-radius: var(--radius-full);
  background: var(--color-neutral-900);
  color: var(--color-neutral-0);
  border: none;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-md);
  transition: background .2s, transform .2s;
}

.theme-toggle-sticky:hover {
  background: var(--color-primary);
  transform: scale(1.08);
}

.icon-sun { display: none; }

[data-theme="dark"] .icon-moon { display: none; }
[data-theme="dark"] .icon-sun  { display: block; }
[data-theme="dark"] .theme-toggle-sticky {
  background: rgba(255,255,255,.12);
  color: #f0eef1;
}


/* ═══════════════════════════════════════════════════════════════════
   NEUTRALISATION CSS GUTENBERG
   Gutenberg injecte automatiquement des styles pour is-layout-flow,
   is-layout-constrained, etc. On neutralise tout ce qui peut nuire.
   ═══════════════════════════════════════════════════════════════════ */

/* Supprimer les marges auto forcées par Gutenberg sur les blocs enfants */
.site-main > * {
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Sections : pas de contrainte de width depuis le parent */
.site-main .wp-block-group.section,
.site-main .wp-block-group.hero {
  margin-inline: 0 !important;
  padding-inline: 0 !important;
  max-width: 100% !important;
  width: 100% !important;
}


/* ═══ METRIC CARDS ═══ */
/* v10.15 — refonte : suppression complète des rotate(), cartes droites,
   alignées, respirant mieux. Le wrapper .hero__metrics-wrap porte le gap
   vertical avec les boutons du hero. Les 2 grilles (candidat / entreprise)
   sont gérées par le même toggle persona que les feature-cards. */
.hero__metrics-wrap {
  position: relative; z-index: 1;
  width: 100%;
  margin-top: var(--space-7); /* vraie respiration vs. les CTA au-dessus */
  padding-top: var(--space-4);
}
.hero__metrics {
  position: relative; z-index: 1;
  display: flex; justify-content: center; align-items: stretch;
  gap: var(--space-3); flex-wrap: wrap;
  margin: 0 auto;
  padding: 0 var(--space-4);
}
.metric-card.wp-block-group {
  position: relative;
  background:
    radial-gradient(circle 90px at var(--mx,50%) var(--my,50%), rgba(196,30,58,.08) 0%, transparent 100%),
    var(--color-neutral-0);
  border: 1.5px solid var(--color-neutral-200);
  border-radius: var(--radius-lg);
  padding: 20px 24px;
  box-shadow: 0 4px 16px rgba(26,23,27,.05), 0 1px 2px rgba(26,23,27,.03);
  display: flex; flex-direction: column; gap: 4px;
  min-width: 158px;
  overflow: visible !important;
  transform: none; /* v10.15 — plus de rotate décoratif */
  transition: transform .25s ease, box-shadow .25s ease, border-color .2s ease;
  will-change: transform;
}
.metric-card.wp-block-group:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 28px rgba(26,23,27,.09), 0 0 0 1.5px rgba(196,30,58,.16);
  border-color: rgba(196,30,58,.26);
}
/* v10.15 — reset explicite des anciennes rotations (au cas où du post_content
   historique les réactiverait via cascade) */
.metric-card--1,
.metric-card--2,
.metric-card--3,
.metric-card--4 { transform: none; }
.metric-card__icon {
  width: 32px; height: 32px; border-radius: var(--radius-md);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 6px; font-size: 1rem; line-height: 1;
}
.metric-card__icon--red   { background: rgba(227,0,67,.08); color: var(--color-primary); }
.metric-card__icon--dark  { background: var(--color-neutral-100); color: var(--color-neutral-900); }
.metric-card__icon--green { background: rgba(5,139,79,.08); color: var(--color-success); }
.metric-card__icon--blue  { background: rgba(59,130,246,.08); color: #3b82f6; }
.metric-card__val {
  font-family: var(--font-display) !important;
  font-size: 2rem !important;
  color: var(--color-neutral-900) !important;
  line-height: 1 !important;
  font-weight: 400 !important;
  margin: 0 !important;
}
.metric-card__label {
  font-size: .75rem !important; font-weight: 500 !important;
  color: var(--color-neutral-400) !important;
  line-height: 1.35 !important; margin-top: 2px !important;
  margin-bottom: 0 !important;
}
/* Dark mode metric cards */
[data-theme="dark"] .metric-card.wp-block-group {
  background: rgba(255,255,255,.05);
  border-color: rgba(255,255,255,.1);
}

/* ═══ STATS BAND ═══ */
.stats-band.wp-block-group {
  display: grid !important;
  grid-template-columns: repeat(4,1fr) !important;
  border: 1.5px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-xl) !important;
  overflow: hidden !important;
  gap: 1px !important;
  background: var(--color-neutral-200) !important;
}
.stats-band__item.wp-block-group {
  background: var(--color-neutral-0) !important;
  padding: var(--space-5) var(--space-4) !important;
  text-align: center !important;
  transition: transform .2s ease !important;
  align-items: center !important;
  gap: 4px !important;
}
.stats-band__item.wp-block-group:hover { transform: translateY(-3px); }
.stats-band__val {
  font-family: var(--font-display) !important;
  font-size: 2.75rem !important;
  color: var(--color-primary) !important;
  line-height: 1 !important;
  font-weight: 400 !important;
  margin: 0 !important;
}
.stats-band__label {
  font-size: .8125rem !important;
  color: var(--color-neutral-600) !important;
  margin-top: 6px !important;
  line-height: 1.4 !important;
  margin-bottom: 0 !important;
}
[data-theme="dark"] .stats-band.wp-block-group { background: rgba(255,255,255,.08) !important; border-color: rgba(255,255,255,.08) !important; }
[data-theme="dark"] .stats-band__item.wp-block-group { background: #1a171b !important; }
@media (max-width:767px) { .stats-band.wp-block-group { grid-template-columns: 1fr 1fr !important; } }

/* ═══ TESTIMONIALS ═══ */
.testimonials-grid.wp-block-columns {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: var(--space-3) !important;
}
.testimonial.wp-block-column {
  background: var(--color-neutral-0) !important;
  border: 1.5px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-5) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: var(--space-4) !important;
  transition: transform .2s ease, box-shadow .2s ease !important;
  will-change: transform !important;
}
.testimonial.wp-block-column:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(26,23,27,.09);
}
.testimonial__quote.wp-block-quote {
  font-family: var(--font-display) !important;
  font-size: 1.25rem !important;
  font-style: italic !important;
  font-weight: 400 !important;
  line-height: 1.45 !important;
  color: var(--color-neutral-900) !important;
  flex: 1 !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.testimonial__quote.wp-block-quote p { margin: 0; }
.testimonial__quote.wp-block-quote::before { content: '\201C'; color: var(--color-primary); }
.testimonial__quote.wp-block-quote::after  { content: '\201D'; color: var(--color-primary); }
.testimonial__author.wp-block-group { gap: var(--space-2) !important; align-items: center !important; }
.testimonial__avatar.wp-block-image { flex-shrink: 0 !important; }
.testimonial__avatar.wp-block-image img { width: 44px !important; height: 44px !important; border-radius: 50% !important; object-fit: cover !important; }
.testimonial__name { font-weight: var(--fw-semibold) !important; font-size: .9375rem !important; margin: 0 !important; }
.testimonial__role { font-size: var(--font-body-sm-size) !important; color: var(--color-neutral-600) !important; margin: 0 !important; }
[data-theme="dark"] .testimonial.wp-block-column { background: rgba(255,255,255,.04) !important; border-color: rgba(255,255,255,.08) !important; }
[data-theme="dark"] .testimonial__quote.wp-block-quote { color: #f0eef1 !important; }
@media (max-width: 767px) { .testimonials-grid.wp-block-columns { grid-template-columns: 1fr !important; } }

/* ═══ PARTNERS MARQUEE ═══ */
.marquee-wrap.wp-block-group {
  overflow: hidden !important;
  mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%) !important;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%) !important;
  margin-top: var(--space-5) !important;
}
.marquee-track.wp-block-group {
  display: flex !important;
  align-items: center !important;
  gap: 0 !important;
  width: max-content !important;
  flex-wrap: nowrap !important;
  animation: marquee-scroll 60s linear infinite !important;
}
.marquee-wrap.wp-block-group:hover .marquee-track.wp-block-group { animation-play-state: paused !important; }
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.partner-logo-item {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 10px 32px !important;
  border-right: 1px solid var(--color-neutral-200) !important;
  flex-shrink: 0 !important;
  filter: grayscale(1) opacity(.45) !important;
  transition: filter .3s ease, transform .25s ease !important;
  cursor: default !important;
  margin: 0 !important;
  white-space: nowrap !important;
  font-size: var(--font-body-sm-size) !important;
  font-weight: var(--fw-semibold) !important;
  color: var(--color-neutral-900) !important;
}
.partner-logo-item:hover { filter: grayscale(0) opacity(1) !important; transform: translateY(-2px) !important; }
.partner-logo-item__icon {
  width: 28px; height: 28px; border-radius: 6px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800; color: #fff;
  flex-shrink: 0;
}

/* ═══ CTA GLASSMORPHISM (cta-dark) ═══ */
.cta-section.wp-block-group {
  background: var(--color-neutral-50) !important;
}
.cta-dark {
  background: rgba(45,42,50,.055);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1.5px solid rgba(45,42,50,.14);
  border-radius: var(--radius-xl);
  padding: var(--space-7) var(--space-5);
  text-align: center;
  position: relative; overflow: hidden;
}
.cta-dark::after {
  content: '';
  position: absolute; bottom: -20%; left: 50%;
  transform: translateX(-50%);
  width: 600px; height: 400px;
  background: radial-gradient(ellipse at center, rgba(227,0,67,.10) 0%, transparent 65%);
  pointer-events: none;
  z-index: 0;
}
.cta-dark__inner.wp-block-group {
  position: relative; z-index: 1;
  gap: var(--space-3) !important;
  align-items: center !important;
}
.cta-dark__title.wp-block-heading {
  font-family: var(--font-display) !important;
  font-size: clamp(1.75rem, 3.5vw, 2.75rem) !important;
  font-weight: 400 !important;
  line-height: 1.15 !important;
  color: var(--color-neutral-900) !important;
  margin: 0 !important;
}
.cta-dark__sub {
  font-size: 1.0625rem !important;
  color: var(--color-neutral-600) !important;
  max-width: 440px !important;
  margin: 0 auto !important;
  line-height: 1.6 !important;
}
.cta-dark__actions.wp-block-buttons { justify-content: center !important; }
.cta-dark .section-eyebrow { color: rgba(227,0,67,.7) !important; }
[data-theme="dark"] .cta-dark {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.09);
}
[data-theme="dark"] .cta-dark__title.wp-block-heading { color: #f0eef1 !important; }
[data-theme="dark"] .cta-dark__sub { color: rgba(255,255,255,.55) !important; }

/* ═══ SWITCHER AMÉLIORÉ — thumb animé ═══ */
.geiq-switcher.wp-block-group {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 auto var(--space-6) !important;
  background: var(--color-neutral-100) !important;
  border: 1px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-full) !important;
  padding: 4px !important;
  width: fit-content !important;
  position: relative !important;
  gap: 0 !important;
}
.geiq-switcher__thumb {
  position: absolute !important;
  top: 4px !important; left: 4px !important;
  height: calc(100% - 8px) !important;
  border-radius: var(--radius-full) !important;
  background: #fff !important;
  box-shadow: 0 1px 4px rgba(26,23,27,.12) !important;
  transition: transform .28s cubic-bezier(.4,0,.2,1), width .28s cubic-bezier(.4,0,.2,1), background .2s !important;
  pointer-events: none !important;
  z-index: 0 !important;
  margin: 0 !important;
}
.geiq-switcher__btn {
  position: relative !important;
  z-index: 1 !important;
  font-family: var(--font-body) !important;
  font-size: .875rem !important;
  font-weight: var(--fw-semibold) !important;
  padding: 10px 28px !important;
  border-radius: var(--radius-full) !important;
  border: none !important;
  background: transparent !important;
  color: var(--color-neutral-600) !important;
  cursor: pointer !important;
  transition: color .2s !important;
  white-space: nowrap !important;
  margin: 0 !important;
  user-select: none !important;
}
.geiq-switcher__btn.is-active,
.geiq-switcher__btn[data-active="true"] {
  color: var(--color-neutral-900) !important;
}
.geiq-switcher__btn[data-val="btp"].is-active { color: var(--color-primary) !important; }
.geiq-switcher[data-active="btp"] .geiq-switcher__thumb { background: var(--color-primary-soft) !important; }
.geiq-switcher[data-active="multi"] .geiq-switcher__thumb { background: #2d2a32 !important; box-shadow: none !important; }
/* Panel BTP */
.geiq-panel--btp.wp-block-group {
  background: rgba(227,0,67,.055) !important;
  border: 1.5px solid rgba(227,0,67,.18) !important;
  backdrop-filter: blur(10px) !important; -webkit-backdrop-filter: blur(10px) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
}
/* Panel Multi */
.geiq-panel--multi.wp-block-group {
  background: rgba(45,42,50,.055) !important;
  border: 1.5px solid rgba(45,42,50,.14) !important;
  backdrop-filter: blur(10px) !important; -webkit-backdrop-filter: blur(10px) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
}
/* Panel stats glassmorphism */
.panel-btp__stats.wp-block-group,
.panel-multi__stats.wp-block-group {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: var(--space-3) !important;
}
.panel-stat.wp-block-group {
  background: rgba(255,255,255,.68) !important;
  backdrop-filter: blur(8px) !important; -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid rgba(227,0,67,.13) !important;
  border-radius: var(--radius-md) !important;
  padding: var(--space-3) !important;
  gap: 0 !important;
}
.panel-stat--multi.wp-block-group { border-color: rgba(45,42,50,.10) !important; }
.panel-stat__val {
  font-family: var(--font-display) !important;
  font-size: 2.25rem !important;
  color: var(--color-neutral-900) !important;
  line-height: 1 !important;
  margin: 0 0 4px !important;
  font-weight: 400 !important;
}
.panel-stat__label {
  font-size: .8125rem !important; font-weight: var(--fw-semibold) !important;
  color: var(--color-neutral-700) !important;
  margin: 0 !important;
}
.panel-stat__sub {
  font-size: .72rem !important;
  color: var(--color-neutral-400) !important;
  font-style: italic !important;
  margin: 0 !important;
}
[data-theme="dark"] .panel-stat.wp-block-group { background: rgba(255,255,255,.08) !important; }


/* ═══════════════════════════════════════════════════════════════════
   SPLIT TEXT REVEAL
   Injecté par JS sur .section-title et .section-eyebrow
   ═══════════════════════════════════════════════════════════════════ */

.split-word {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
}
.split-inner {
  display: inline-block;
  transform: translateY(108%);
  opacity: 0;
  /* v10.17.3 — safety net : si l'IntersectionObserver du splitReveal
     ne trigger pas pour une raison quelconque (race condition, timing
     avec shortcodes, etc.), cette animation déclenchée après 2.5 s
     garantit que le texte finit par apparaître. Les cas nominaux
     (IO trigger + .is-visible posé) ne sont pas impactés — la classe
     .is-visible override cette animation. */
  animation: split-safety-fallback 0.001s linear 2.5s forwards;
}
@keyframes split-safety-fallback {
  to { transform: translateY(0); opacity: 1; }
}
.split-inner.is-visible {
  transform: translateY(0);
  opacity: 1;
  animation: none;                    /* coupe le fallback si l'IO a bien posé .is-visible */
  transition: transform .65s cubic-bezier(.16,1,.3,1), opacity .5s ease;
}

/* v10.17.4 — Fix brutal supprimé en v10.17.7 :
   avec le pattern legacy Spoke retiré, plus besoin de forcer
   l'affichage des eyebrows/titres des sections nouvelles.
   Elles sont visibles par défaut comme toutes les sections de la home. */

@media (prefers-reduced-motion: reduce) {
  .split-inner { transform: none; opacity: 1; }
}


/* ═══════════════════════════════════════════════════════════════════
   BORDER GLOW — ReactBits vanilla
   Injecté par JS sur .feature-card, .metric-card
   ═══════════════════════════════════════════════════════════════════ */

.bg-card {
  --edge-proximity: 0;
  --cursor-angle: 45deg;
  --edge-sensitivity: 28;
  --color-sensitivity: calc(var(--edge-sensitivity) + 20);
  --border-radius: var(--radius-lg);
  --glow-padding: 32px;
  --cone-spread: 22;
  --fill-opacity: 0.35;
  --card-bg: #ffffff;

  /* glow color rouge */
  --glow-color:    hsl(348deg 100% 55% / 100%);
  --glow-color-60: hsl(348deg 100% 55% / 60%);
  --glow-color-50: hsl(348deg 100% 55% / 50%);
  --glow-color-40: hsl(348deg 100% 55% / 40%);
  --glow-color-30: hsl(348deg 100% 55% / 30%);
  --glow-color-20: hsl(348deg 100% 55% / 20%);
  --glow-color-10: hsl(348deg 100% 55% / 10%);

  /* gradient mesh rouge */
  --gradient-one:   radial-gradient(at 80% 55%, #e30043 0px, transparent 50%);
  --gradient-two:   radial-gradient(at 69% 34%, #ff1a5c 0px, transparent 50%);
  --gradient-three: radial-gradient(at  8%  6%, #b8002f 0px, transparent 50%);
  --gradient-four:  radial-gradient(at 41% 38%, #e30043 0px, transparent 50%);
  --gradient-five:  radial-gradient(at 86% 85%, #ff1a5c 0px, transparent 50%);
  --gradient-six:   radial-gradient(at 82% 18%, #b8002f 0px, transparent 50%);
  --gradient-seven: radial-gradient(at 51%  4%, #ff1a5c 0px, transparent 50%);
  --gradient-base:  linear-gradient(#e30043 0 100%);

  position: relative;
  isolation: isolate;
  transform: translate3d(0, 0, 0.01px);
  overflow: visible !important;
}

/* Couche 1 — border gradient mesh */
.bg-card::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  border: 1px solid transparent;
  background:
    linear-gradient(var(--card-bg) 0 100%) padding-box,
    linear-gradient(rgb(255 255 255 / 0%) 0% 100%) border-box,
    var(--gradient-one)   border-box,
    var(--gradient-two)   border-box,
    var(--gradient-three) border-box,
    var(--gradient-four)  border-box,
    var(--gradient-five)  border-box,
    var(--gradient-six)   border-box,
    var(--gradient-seven) border-box,
    var(--gradient-base)  border-box;
  opacity: calc((var(--edge-proximity) - var(--color-sensitivity)) / (100 - var(--color-sensitivity)));
  mask-image: conic-gradient(
    from var(--cursor-angle) at center,
    black calc(var(--cone-spread) * 1%),
    transparent calc((var(--cone-spread) + 15) * 1%),
    transparent calc((100 - var(--cone-spread) - 15) * 1%),
    black calc((100 - var(--cone-spread)) * 1%)
  );
  transition: opacity 0.25s ease-out;
  pointer-events: none; z-index: -1;
}
.bg-card:not(:hover)::before { transition: opacity 0.75s ease-in-out; }

/* Couche 2 — fill soft */
.bg-card::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  background:
    var(--gradient-one)   padding-box,
    var(--gradient-two)   padding-box,
    var(--gradient-three) padding-box,
    var(--gradient-four)  padding-box,
    var(--gradient-five)  padding-box,
    var(--gradient-six)   padding-box,
    var(--gradient-seven) padding-box,
    var(--gradient-base)  padding-box;
  mask-image:
    linear-gradient(to bottom, black, black),
    radial-gradient(ellipse at 50% 50%, black 40%, transparent 65%),
    radial-gradient(ellipse at 66% 66%, black 5%, transparent 40%),
    radial-gradient(ellipse at 33% 33%, black 5%, transparent 40%);
  mask-composite: exclude;
  -webkit-mask-composite: destination-out;
  opacity: calc(var(--fill-opacity) * (var(--edge-proximity) - var(--color-sensitivity)) / (100 - var(--color-sensitivity)));
  mask-size: 100% 100%;
  transition: opacity 0.25s ease-out;
  pointer-events: none; z-index: -1;
}
.bg-card:not(:hover)::after { transition: opacity 0.75s ease-in-out; }

/* Couche 3 — edge light (span injecté par JS) */
.bg-card > .bg-edge-light {
  position: absolute;
  inset: calc(var(--glow-padding) * -1);
  border-radius: inherit;
  pointer-events: none; z-index: 1;
  mask-image: conic-gradient(
    from var(--cursor-angle) at center,
    black 2.5%, transparent 10%, transparent 90%, black 97.5%
  );
  opacity: calc((var(--edge-proximity) - var(--edge-sensitivity)) / (100 - var(--edge-sensitivity)));
  mix-blend-mode: plus-lighter;
  transition: opacity 0.25s ease-out;
}
.bg-card:not(:hover) > .bg-edge-light { transition: opacity 0.75s ease-in-out; }
.bg-card > .bg-edge-light::before {
  content: '';
  position: absolute;
  inset: var(--glow-padding);
  border-radius: inherit;
  box-shadow:
    inset 0 0 0 1px    var(--glow-color),
    inset 0 0 1px  0   var(--glow-color-60),
    inset 0 0 3px  0   var(--glow-color-50),
    inset 0 0 6px  0   var(--glow-color-40),
    inset 0 0 15px 0   var(--glow-color-30),
    inset 0 0 25px 2px var(--glow-color-20),
    inset 0 0 50px 2px var(--glow-color-10),
          0 0 1px  0   var(--glow-color-60),
          0 0 3px  0   var(--glow-color-50),
          0 0 6px  0   var(--glow-color-40),
          0 0 15px 0   var(--glow-color-30),
          0 0 25px 2px var(--glow-color-20),
          0 0 50px 2px var(--glow-color-10);
}

/* Les enfants directs passent au-dessus de la couche glow */
.metric-card > *,
.feature-card > * { position: relative; z-index: 1; }


/* ═══════════════════════════════════════════════════════════════════
   MOBILE RESPONSIVE — Passe complète
   ═══════════════════════════════════════════════════════════════════ */

/* ── Tablette (768px → 1023px) ── */
@media (min-width: 768px) and (max-width: 1023px) {
  .container.wp-block-group { padding-inline: var(--space-5) !important; }
  .hero { padding-top: 120px; }
  .hero__content { max-width: 100% !important; }
  .features-grid.wp-block-columns { grid-template-columns: 1fr 1fr !important; }
  .jobs-grid.wp-block-post-template { grid-template-columns: repeat(2, 1fr) !important; }
  .footer__grid { grid-template-columns: 1fr 1fr !important; gap: var(--space-5); }
  .cta-dark { padding: var(--space-6) var(--space-4) !important; }
}

/* ── Mobile (≤ 767px) ── */
@media (max-width: 767px) {

  /* ── Layout global ── */
  body { overflow-x: hidden; }
  .container.wp-block-group { padding-inline: var(--space-3) !important; }
  .section.wp-block-group { overflow-x: hidden; }

  /* ── Header ── */
  .site-header { padding: 10px 12px; }
  .site-header__inner.wp-block-group {
    padding: 0 14px !important;
    height: 52px !important;
    border-radius: var(--radius-xl) !important;
    gap: var(--space-2) !important;
  }

  /* Navigation mobile — réduire l'espace */
  .site-header__inner .wp-block-navigation { flex-shrink: 1; min-width: 0; }
  .site-header__inner .wp-block-navigation-item__content {
    padding-inline: 6px !important;
    font-size: .8rem !important;
  }

  /* Dropdown mobile */
  .wp-block-navigation__submenu-container {
    min-width: 180px !important;
  }

  /* ── Hero ── */
  .hero {
    padding-top: 96px !important;
    padding-bottom: var(--space-5) !important;
    text-align: center;
  }
  .hero__content { padding-inline: 0 !important; }
  .hero__eyebrow { font-size: .75rem; padding: 5px 12px; }
  .hero__title { font-size: clamp(1.9rem, 9vw, 2.6rem) !important; }
  .hero__subtitle {
    font-size: .9375rem !important;
    max-width: 100% !important;
    margin-inline: 0 !important;
  }
  .hero__actions.wp-block-buttons {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 10px !important;
  }
  .hero__actions .wp-block-button { width: 100% !important; }
  .hero__actions .wp-block-button__link {
    width: 100% !important;
    text-align: center !important;
    justify-content: center !important;
  }

  /* Metric cards — v10.15.3 : 1 COLONNE en mobile (géré par le bloc
     de vérité en fin de fichier, pas ici). On conserve seulement
     les ajustements de taille des labels/icônes pour petit écran. */
  .metric-card__val { font-size: 1.7rem !important; }
  .metric-card__label { font-size: .75rem !important; }
  .metric-card__icon { width: 28px; height: 28px; font-size: .9rem; margin-bottom: 4px; }

  /* ── Sections (v7.1 : token unifié, plus compact en mobile) ── */
  .section { padding-block: var(--section-gap-sm) !important; }
  .section-eyebrow { font-size: .75rem; }
  .section-title { font-size: clamp(1.5rem, 7vw, 2.2rem) !important; }
  .section-subtitle { font-size: .9375rem !important; }

  /* ── Features ── */
  .features-grid.wp-block-columns { grid-template-columns: 1fr !important; gap: var(--space-3) !important; }
  .feature-card.wp-block-column { padding: var(--space-4) var(--space-3) !important; }

  /* ── Switcher ── */
  .geiq-switcher.wp-block-group {
    width: 100% !important;
    max-width: 100% !important;
    flex-direction: row !important;
  }
  .geiq-switcher__btn {
    flex: 1 !important;
    text-align: center !important;
    padding: 9px 10px !important;
    font-size: .8125rem !important;
  }
  .geiq-panel { flex-direction: column !important; gap: var(--space-4) !important; }
  .geiq-panel__visual { flex: none !important; width: 100% !important; }
  .geiq-panel__badge-wrap { padding: var(--space-4) !important; }
  .geiq-panel--btp.wp-block-group,
  .geiq-panel--multi.wp-block-group { padding: var(--space-4) var(--space-3) !important; }
  .panel-btp__stats.wp-block-group,
  .panel-multi__stats.wp-block-group { grid-template-columns: 1fr 1fr !important; gap: var(--space-2) !important; }
  .panel-stat__val { font-size: 1.75rem !important; }

  /* ── Jobs ── */
  .jobs-grid.wp-block-post-template { grid-template-columns: 1fr !important; }
  .job-card.wp-block-group { padding: var(--space-3) !important; }

  /* ── Stats band ── */
  .stats-band.wp-block-group { grid-template-columns: 1fr 1fr !important; }
  .stats-band__val { font-size: 2.25rem !important; }
  .stats-band__item.wp-block-group { padding: var(--space-4) var(--space-3) !important; }

  /* ── Testimonials ── */
  .testimonials-grid.wp-block-columns { grid-template-columns: 1fr !important; }
  .testimonial.wp-block-column { padding: var(--space-4) !important; }
  .testimonial__quote.wp-block-quote { font-size: 1.0625rem !important; }

  /* ── Partners marquee ── */
  .marquee-wrap { overflow: hidden !important; }

  /* ── CTA ── */
  .cta-dark { padding: var(--space-5) var(--space-3) !important; border-radius: var(--radius-lg) !important; }
  .cta-dark__title.wp-block-heading { font-size: clamp(1.5rem, 7vw, 2rem) !important; }
  .cta-dark__sub { font-size: .9375rem !important; }
  .cta-dark__actions.wp-block-buttons {
    flex-direction: column !important;
    align-items: center !important;
    gap: 10px !important;
  }
  .cta-dark__actions .wp-block-button { width: 100% !important; }
  .cta-dark__actions .wp-block-button__link { width: 100% !important; text-align: center !important; }

  /* ── Footer ── */
  .footer__grid { grid-template-columns: 1fr !important; gap: var(--space-4) !important; }
  .footer__bottom {
    flex-direction: column !important;
    text-align: center !important;
    gap: var(--space-3) !important;
  }
  .footer__socials { justify-content: center; }

  /* ── Désactiver effets 3D + magnétisme sur tactile ── */
  @media (hover: none) {
    .metric-card, .feature-card { transform: none !important; }
    .btn-primary, .btn-outline, .wp-block-button__link { transform: none !important; }
  }
}

/* ── Très petit (≤ 479px) ── */
@media (max-width: 479px) {
  /* .hero__metrics : géré par le bloc v10.15.3 (1 colonne) */
  .stats-band.wp-block-group { grid-template-columns: 1fr 1fr !important; }
  .panel-btp__stats.wp-block-group,
  .panel-multi__stats.wp-block-group { grid-template-columns: 1fr !important; }
  .geiq-switcher__btn { padding: 8px 6px !important; font-size: .75rem !important; }
}

/* Scrollbar custom (repris du prototype) */
::-webkit-scrollbar { width: 3px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--color-primary);
  border-radius: 2px;
  box-shadow: 0 0 8px rgba(227,0,67,.55);
}

/* ═══════════════════════════════════════════════════════════════
   PATCH PIXEL-PERFECT v1.1 — Ajout classes utilisées par
   la page Accueil (wp:html blocks) manquantes dans v1.0
   Source : prototype/index.html (référence validée)
   ═══════════════════════════════════════════════════════════════ */

/* ── Hero pill ── */
.hero__pill {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .8125rem; font-weight: 500; color: var(--color-neutral-500);
  border: 1px solid var(--color-neutral-200); border-radius: var(--radius-full);
  padding: 6px 16px; margin: 0 auto var(--space-4);
  background: var(--color-neutral-50);
  width: fit-content;
}
.hero__pill-dot,
.hero__pill::before {
  content: '';
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--color-primary);
  box-shadow: 0 0 8px rgba(227,0,67,.7);
  animation: blink 2.5s ease-in-out infinite;
  display: inline-block;
}
@keyframes blink { 0%,100% { opacity:1; } 50% { opacity:.4; } }

/* ── Feature icon (encadré SVG) ── */
.feature-icon {
  width: 40px; height: 40px; border-radius: var(--radius-md);
  background: var(--color-primary-soft);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: var(--space-3);
  color: var(--color-primary);
  transition: transform .25s cubic-bezier(.34,1.56,.64,1);
}
.feature-card:hover .feature-icon { transform: scale(1.2) rotate(-6deg); }

/* ── Switcher section wrapper ── */
.switcher-section { padding: var(--space-7) 0; background: var(--color-neutral-0); }
[data-theme="dark"] .switcher-section { background: #1a171b; }

/* ── Switcher logo (bouton central) ── */
.geiq-switcher__logo {
  font-family: 'Instrument Serif', Georgia, serif;
  font-size: 1rem; font-weight: 400; letter-spacing: -.01em;
  color: var(--color-neutral-600);
}
.geiq-switcher__logo em { font-style: normal; color: var(--color-primary); }
.geiq-switcher__btn--center[aria-selected="true"] .geiq-switcher__logo { color: var(--color-neutral-900); }

/* ── Panels wrapper ── */
.geiq-panels { position: relative; }

/* ── Panel BTP : titres et stats ── */
.panel-btp__kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .72rem; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: var(--color-primary);
  margin-bottom: 20px;
}
.panel-btp__kicker-line {
  width: 24px; height: 1px; background: rgba(227,0,67,.4);
  display: inline-block;
}
.panel-btp__title {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  color: var(--color-neutral-900); font-weight: 400;
  line-height: 1.15; margin-bottom: var(--space-3);
}
.panel-btp__title em { font-style: italic; color: var(--color-primary); }
.panel-btp__sub {
  font-size: 1rem; color: var(--color-neutral-600);
  line-height: 1.7; margin-bottom: var(--space-4);
}
.panel-btp__actions { display: flex; gap: 10px; flex-wrap: wrap; }
.panel-btp__stats {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: var(--space-3); position: relative; z-index: 1;
}

/* ── Panel Multi : titres et stats ── */
.panel-multi__kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .72rem; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: var(--color-neutral-500);
  margin-bottom: 20px;
}
.panel-multi__kicker-line {
  width: 24px; height: 1px; background: var(--color-neutral-300);
  display: inline-block;
}
.panel-multi__title {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  color: var(--color-neutral-900); font-weight: 400;
  line-height: 1.15; margin-bottom: var(--space-3);
}
.panel-multi__title em { font-style: italic; color: var(--color-primary); }
.panel-multi__sub {
  font-size: 1rem; color: var(--color-neutral-600);
  line-height: 1.7; margin-bottom: var(--space-4);
}
.panel-multi__stats {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: var(--space-3); position: relative; z-index: 1;
}

/* ── Panel Général : grille intro + steps
   ─ Le background/border/blur sont maintenant pilotés par les tokens
     --panel-gen-bg/border/blur (voir bloc v10.15.18 en fin de fichier).
     Ici on ne garde que la géométrie (padding, border-width, radius). */
.geiq-panel--gen .panel-inner--gen {
  display: block; padding: var(--space-5) var(--space-6);
  border-width: 1.5px;
  border-style: solid;
  border-radius: var(--radius-lg);
}
.panel-gen__grid {
  display: flex; gap: var(--space-7); align-items: center;
  flex-wrap: wrap;
}
.panel-gen__intro { flex: 1; min-width: 0; }
.panel-gen__kicker {
  font-size: .75rem; font-weight: 600; letter-spacing: .1em;
  text-transform: uppercase; color: var(--color-primary);
  margin-bottom: var(--space-2);
}
.panel-gen__title {
  font-family: 'Instrument Serif', Georgia, serif;
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 400; color: var(--color-neutral-900);
  line-height: 1.2; margin-bottom: var(--space-3);
}
.panel-gen__desc {
  font-size: .9375rem; color: var(--color-neutral-600);
  line-height: 1.7; max-width: 440px;
}
.panel-gen__desc strong { color: var(--color-neutral-900); }
.panel-gen__footer {
  border-top: 1px solid var(--color-neutral-200);
  margin-top: var(--space-4); padding-top: var(--space-4);
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: var(--space-3);
}
.panel-gen__footer p { font-size: .875rem; color: var(--color-neutral-400); margin: 0; }
.panel-gen__footer-actions { display: flex; gap: 10px; flex-wrap: wrap; }
/* Dark mode du panel général : géré par les tokens --panel-gen-*
   dans le bloc v10.15.18 (fin de fichier). */
[data-theme="dark"] .panel-gen__title { color: #f0eef1; }
[data-theme="dark"] .panel-gen__desc { color: rgba(255,255,255,.5); }
[data-theme="dark"] .panel-gen__desc strong { color: #f0eef1; }

/* ── Boutons CTA (petits, on-red, on-dark) ── */
.btn-on-red {
  background: var(--color-primary); color: #fff;
  border: 2px solid var(--color-primary);
  border-radius: 6px; padding: 11px 22px;
  font-family: var(--font-body); font-weight: 600;
  font-size: .9375rem; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  transition: all .15s; white-space: nowrap; text-decoration: none;
}
.btn-on-red:hover { background: var(--color-primary-dark, #b8002f); border-color: var(--color-primary-dark, #b8002f); }

.btn-outline-white-sm {
  background: transparent; color: var(--color-primary);
  border: 2px solid rgba(227,0,67,.32);
  border-radius: 6px; padding: 11px 22px;
  font-family: var(--font-body); font-weight: 600;
  font-size: .9375rem; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  transition: all .15s; white-space: nowrap; text-decoration: none;
}
.btn-outline-white-sm:hover { background: rgba(227,0,67,.06); border-color: var(--color-primary); }

.btn-multi-primary {
  background: var(--color-primary); color: #fff;
  border: 2px solid var(--color-primary);
  border-radius: 6px; padding: 11px 22px;
  font-family: var(--font-body); font-weight: 600;
  font-size: .9375rem; cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  transition: all .15s; white-space: nowrap; text-decoration: none;
}
.btn-multi-primary:hover { background: var(--color-primary-dark, #b8002f); border-color: var(--color-primary-dark, #b8002f); }

.btn-link-primary {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: .875rem; font-weight: 600; color: var(--color-primary);
  border: 1.5px solid var(--color-primary);
  padding: 8px 16px; border-radius: 6px;
  text-decoration: none; transition: background .15s;
}
.btn-link-primary:hover { background: #fce7ed; }

.btn-link-neutral {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: .875rem; font-weight: 600; color: var(--color-neutral-900);
  border: 1.5px solid var(--color-neutral-200);
  padding: 8px 16px; border-radius: 6px;
  text-decoration: none; transition: background .15s, border-color .15s;
}
.btn-link-neutral:hover { border-color: var(--color-neutral-900); }

/* ── Step connector (ligne verticale entre numéros 1-2-3) ── */
.geiq-step__connector {
  width: 1.5px; min-height: 16px; flex: 1; margin: 5px 0;
  background: linear-gradient(to bottom, rgba(227,0,67,.38), rgba(227,0,67,.04));
}
.geiq-step:last-child .geiq-step__connector { display: none; }

/* ── Partner marquee : logos ── */
.partner-logo__icon {
  width: 28px; height: 28px; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 800; flex-shrink: 0;
  color: #fff;
}
.partner-logo__name {
  font-size: .8125rem; font-weight: 600;
  color: var(--color-neutral-900); white-space: nowrap;
}
[data-theme="dark"] .partner-logo__name { color: #f0eef1; }

/* ── CTA dark : eyebrow + responsive ── */
.cta-dark__eyebrow {
  display: block; color: var(--color-primary);
  margin-bottom: var(--space-2);
}

/* ── Responsive override pour le panel-gen (mobile stack) ── */
@media (max-width: 767px) {
  .panel-gen__grid { flex-direction: column; gap: var(--space-4); align-items: stretch; }
  .panel-gen__footer { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════════════════════════════════════════════════
   PATCH PIXEL-PERFECT v1.2 — Surcharge finale
   Les blocs wp:html ne génèrent PAS les classes .wp-block-group
   ni .wp-block-column → les règles ciblant ces classes ne
   s'appliquent plus. Ce patch ajoute des sélecteurs sans préfixe WP
   pour que le rendu corresponde au prototype validé.
   ═══════════════════════════════════════════════════════════════ */

/* ── HERO METRICS : cartes flottantes ── */
.hero__metrics .metric-card {
  position: relative;
  background: var(--color-neutral-0) !important;
  border: 1.5px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-3) var(--space-4) !important;
  min-width: 150px;
  max-width: 180px;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  text-align: center !important;
  gap: 8px !important;
  box-shadow: 0 4px 20px rgba(26,23,27,.06);
  transition: transform .3s ease, box-shadow .3s ease;
}
.hero__metrics .metric-card:hover {
  /* v10.15.2 — hover unifié : juste un lift subtil, plus de rotate
     (géré par le bloc de vérité unique en fin de fichier). */
  box-shadow: 0 8px 24px rgba(196,30,58,.09);
}
.hero__metrics .metric-card__icon {
  width: 32px; height: 32px; border-radius: var(--radius-sm);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin: 0 !important;
}
.hero__metrics .metric-card__val {
  font-family: var(--font-display);
  font-size: 2rem;
  color: var(--color-neutral-900);
  line-height: 1;
  font-weight: 400;
  display: block;
}
.hero__metrics .metric-card__label {
  font-size: .8125rem;
  color: var(--color-neutral-500);
  line-height: 1.4;
  display: block;
}
[data-theme="dark"] .hero__metrics .metric-card {
  background: #1a171b !important;
  border-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .hero__metrics .metric-card__val { color: #f0eef1; }

/* ── FEATURES GRID : grille 3 colonnes + cartes ── */
.features-grid,
.features-grid.wp-block-group {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: var(--space-4) !important;
  margin-top: var(--space-5);
}
@media (max-width: 767px) {
  .features-grid,
  .features-grid.wp-block-group { grid-template-columns: 1fr !important; }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .features-grid,
  .features-grid.wp-block-group { grid-template-columns: 1fr 1fr !important; }
}

.feature-card,
.feature-card.wp-block-group {
  background: var(--color-neutral-0) !important;
  border: 1.5px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) !important;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
  position: relative;
  overflow: hidden;
}
.feature-card:hover {
  transform: translateY(-4px);
  border-color: rgba(227,0,67,.3) !important;
  box-shadow: 0 8px 28px rgba(227,0,67,.08);
}
.feature-card .feature-title,
.feature-card .wp-block-heading.feature-title {
  font-family: var(--font-display) !important;
  font-size: 1.2rem !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900) !important;
  margin: 0 0 var(--space-2) !important;
}
.feature-card .feature-text {
  font-size: .9375rem !important;
  color: var(--color-neutral-600) !important;
  line-height: 1.6 !important;
  margin: 0 !important;
}
[data-theme="dark"] .feature-card,
[data-theme="dark"] .feature-card.wp-block-group {
  background: #1a171b !important;
  border-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .feature-card .feature-title { color: #f0eef1 !important; }
[data-theme="dark"] .feature-card .feature-text { color: rgba(255,255,255,.55) !important; }

/* ── STATS BAND : 4 colonnes horizontales ── */
.stats-band {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: var(--space-4) !important;
  background: var(--color-neutral-50);
  border: 1.5px solid var(--color-neutral-200);
  border-radius: var(--radius-xl);
  padding: var(--space-5) var(--space-4);
  margin-top: var(--space-5);
}
@media (max-width: 767px) {
  .stats-band { grid-template-columns: 1fr 1fr !important; }
}
.stats-band__item {
  text-align: center;
  padding: var(--space-2);
}
.stats-band__val {
  font-family: var(--font-display);
  font-size: clamp(2rem, 3vw, 2.75rem);
  font-weight: 400;
  color: var(--color-primary);
  line-height: 1;
  margin-bottom: var(--space-2);
}
.stats-band__label {
  font-size: .875rem;
  color: var(--color-neutral-600);
  line-height: 1.45;
}
[data-theme="dark"] .stats-band {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.08);
}
[data-theme="dark"] .stats-band__label { color: rgba(255,255,255,.55); }

/* ── SWITCHER : pill tabs + thumb ── */
.geiq-switcher {
  display: flex !important;
  align-items: center;
  justify-content: center;
  margin: 0 auto var(--space-6);
  background: var(--color-neutral-100);
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-full);
  padding: 4px;
  width: fit-content;
  position: relative;
  gap: 0;
}
.geiq-switcher__thumb {
  position: absolute; top: 4px; left: 4px;
  height: calc(100% - 8px);
  border-radius: var(--radius-full);
  background: #fff;
  box-shadow: 0 1px 4px rgba(26,23,27,.12);
  transition: transform .28s cubic-bezier(.4,0,.2,1),
              width .28s cubic-bezier(.4,0,.2,1),
              background .2s;
  pointer-events: none;
  z-index: 0;
}
.geiq-switcher__btn {
  position: relative; z-index: 1;
  font-family: var(--font-body);
  font-size: .875rem; font-weight: 600;
  padding: 10px 28px;
  border-radius: var(--radius-full);
  border: none;
  background: transparent;
  color: var(--color-neutral-600);
  cursor: pointer;
  transition: color .2s;
  white-space: nowrap;
}
.geiq-switcher__btn[aria-selected="true"] { color: var(--color-neutral-900); }
.geiq-switcher__btn[data-val="btp"][aria-selected="true"] { color: var(--color-primary); }
.geiq-switcher__btn[data-val="multi"][aria-selected="true"] { color: #fff; }
.geiq-switcher__btn--center { padding: 10px 22px; }
.geiq-switcher[data-active="btp"]  .geiq-switcher__thumb { background: rgba(227,0,67,.08); }
.geiq-switcher[data-active="multi"] .geiq-switcher__thumb { background: #2d2a32; box-shadow: none; }
[data-theme="dark"] .geiq-switcher { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.09); }
[data-theme="dark"] .geiq-switcher__thumb { background: #252028; }
[data-theme="dark"] .geiq-switcher[data-active="btp"] .geiq-switcher__thumb { background: rgba(227,0,67,.2); }
[data-theme="dark"] .geiq-switcher[data-active="multi"] .geiq-switcher__thumb { background: rgba(255,255,255,.08); }
[data-theme="dark"] .geiq-switcher__btn { color: rgba(255,255,255,.4); }
[data-theme="dark"] .geiq-switcher__btn[aria-selected="true"] { color: #f0eef1; }

/* ── GEIQ PANELS : panels avec glassmorphism ── */
.geiq-panels { position: relative; max-width: 960px; margin: 0 auto; }
.geiq-panel {
  display: none;
  border-radius: var(--radius-lg);
  overflow: hidden;
  animation: panel-fade .25s ease;
}
.geiq-panel--active { display: block; }
@keyframes panel-fade {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Panel BTP */
/* Panels BTP + Multi : on ne garde ici que la géométrie + position.
   Background/border/blur pilotés par les tokens --panel-btp-* et
   --panel-multi-* dans le bloc v10.15.18 (fin de fichier). */
.geiq-panel--btp .panel-inner,
.geiq-panel--multi .panel-inner {
  border-width: 1.5px;
  border-style: solid;
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-6);
  align-items: center;
  position: relative;
  overflow: hidden;
}
.geiq-panel--btp .panel-inner::before,
.geiq-panel--multi .panel-inner::before {
  content: ''; position: absolute; bottom: -20%; right: 5%;
  width: 400px; height: 280px;
  background: radial-gradient(ellipse, rgba(227,0,67,.08) 0%, transparent 65%);
  pointer-events: none;
}

/* Stats dans les panels */
.panel-stat {
  background: rgba(255,255,255,.68);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(227,0,67,.13);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}
.panel-stat__val {
  font-family: var(--font-display);
  font-size: 2.25rem;
  color: var(--color-neutral-900);
  line-height: 1;
  margin-bottom: 4px;
}
.panel-stat__val sup {
  font-size: .5em; vertical-align: super;
  color: var(--color-neutral-400);
}
.panel-stat__label {
  font-size: .8125rem; font-weight: 600;
  color: var(--color-neutral-700);
}
.panel-stat__sub {
  font-size: .72rem;
  color: var(--color-neutral-400);
  font-style: italic;
}
.panel-stat--multi {
  background: rgba(255,255,255,.68);
  border: 1px solid rgba(45,42,50,.10);
}
.panel-stat--multi .panel-stat__val em {
  color: var(--color-primary); font-style: normal;
}

/* GEIQ Steps (panel général) */
.geiq-steps {
  display: flex; flex-direction: column;
  min-width: 232px; max-width: 268px;
}
.geiq-step {
  display: flex; gap: 14px; align-items: flex-start;
}
.geiq-step__num-wrap {
  display: flex; flex-direction: column;
  align-items: center; flex-shrink: 0;
}
.geiq-step__num {
  width: 40px; height: 40px; border-radius: 50%;
  background: linear-gradient(135deg, #fff 0%, #fef0f3 100%);
  border: 1.5px solid var(--color-primary);
  color: var(--color-primary);
  font-family: var(--font-display);
  font-size: 1.0625rem; font-weight: 400;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; position: relative; z-index: 1;
}
.geiq-step__body {
  background: rgba(255,255,255,.68);
  border: 1px solid rgba(227,0,67,.12);
  border-radius: var(--radius-md);
  padding: 10px 14px;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  margin-bottom: 8px; flex: 1;
}
.geiq-step:last-child .geiq-step__body { margin-bottom: 0; }
.geiq-step__title {
  font-size: .875rem; font-weight: 700;
  color: var(--color-neutral-900);
  margin-bottom: 2px;
}
.geiq-step__desc {
  font-size: .8125rem;
  color: var(--color-neutral-500);
  line-height: 1.5;
}

/* Responsive : panels BTP/Multi en colonne sur mobile */
@media (max-width: 767px) {
  .geiq-panel--btp .panel-inner,
  .geiq-panel--multi .panel-inner { grid-template-columns: 1fr !important; }
  .geiq-panel--btp .panel-inner > div:first-child,
  .geiq-panel--multi .panel-inner > div:first-child { text-align: center; }
  .geiq-switcher__btn { padding: 8px 14px; font-size: .8125rem; }
}

/* ── MARQUEE PARTENAIRES : défilement horizontal infini ── */
.marquee-wrap {
  overflow: hidden !important;
  mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
  margin-top: var(--space-5);
}
.marquee-track {
  display: flex !important;
  align-items: center !important;
  gap: 0 !important;
  width: max-content !important;
  animation: marquee-scroll 60s linear infinite !important;
}
.marquee-wrap:hover .marquee-track { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) {
  .marquee-track { animation: none !important; }
}
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.partner-logo {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 10px 32px !important;
  border-right: 1px solid var(--color-neutral-200) !important;
  flex-shrink: 0 !important;
  width: auto !important;
  filter: grayscale(1) opacity(.45);
  transition: filter .3s ease, transform .25s ease;
  cursor: default;
}
.partner-logo:hover {
  filter: grayscale(0) opacity(1);
  transform: translateY(-2px);
}
[data-theme="dark"] .partner-logo { border-right-color: rgba(255,255,255,.08) !important; }

/* ── TESTIMONIALS : grid 2 colonnes + cards ── */
.testimonials-grid,
.testimonials-grid.wp-block-group {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: var(--space-4) !important;
  margin-top: var(--space-5);
}
@media (max-width: 767px) {
  .testimonials-grid,
  .testimonials-grid.wp-block-group { grid-template-columns: 1fr !important; }
}
.testimonial,
.testimonial.wp-block-group {
  background: var(--color-neutral-0) !important;
  border: 1.5px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-5) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: var(--space-4) !important;
}
.testimonial__quote {
  font-family: var(--font-display) !important;
  font-size: 1.25rem !important;
  font-style: italic !important;
  font-weight: 400 !important;
  line-height: 1.45 !important;
  color: var(--color-neutral-900) !important;
  margin: 0 !important;
  flex: 1;
}
.testimonial__quote::before { content: '\201C'; color: var(--color-primary); }
.testimonial__quote::after  { content: '\201D'; color: var(--color-primary); }
.testimonial__author {
  display: flex; align-items: center; gap: var(--space-2);
}
.testimonial__avatar {
  width: 44px; height: 44px; border-radius: 50%;
  object-fit: cover; flex-shrink: 0;
  background: var(--color-neutral-100);
}
.testimonial__name { font-weight: 600; font-size: .9375rem; color: var(--color-neutral-900); }
.testimonial__role { font-size: .8125rem; color: var(--color-neutral-600); margin-top: 2px; }
[data-theme="dark"] .testimonial,
[data-theme="dark"] .testimonial.wp-block-group {
  background: #1a171b !important;
  border-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .testimonial__quote { color: #f0eef1 !important; }
[data-theme="dark"] .testimonial__name { color: #f0eef1; }

/* ── CTA DARK : carte centrale ── */
.cta-dark,
.cta-dark.wp-block-group {
  background: rgba(45,42,50,.055) !important;
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1.5px solid rgba(45,42,50,.14) !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-7) var(--space-5) !important;
  text-align: center !important;
  position: relative !important;
  overflow: hidden !important;
}
.cta-dark::after {
  content: '';
  position: absolute; bottom: -20%; left: 50%;
  transform: translateX(-50%);
  width: 600px; height: 400px;
  background: radial-gradient(ellipse at center, rgba(227,0,67,.10) 0%, transparent 65%);
  pointer-events: none;
}
.cta-dark__inner { position: relative; z-index: 1; }
.cta-dark__title {
  font-family: var(--font-display) !important;
  font-size: clamp(1.75rem, 3.5vw, 2.75rem) !important;
  font-weight: 400 !important;
  line-height: 1.15 !important;
  color: var(--color-neutral-900) !important;
  margin: 0 0 var(--space-2) !important;
}
.cta-dark__sub {
  font-size: 1.0625rem !important;
  color: var(--color-neutral-600) !important;
  max-width: 440px !important;
  margin: 0 auto var(--space-5) !important;
  line-height: 1.6 !important;
}
.cta-dark__actions {
  display: flex !important;
  gap: var(--space-3) !important;
  justify-content: center !important;
  flex-wrap: wrap !important;
}
[data-theme="dark"] .cta-dark,
[data-theme="dark"] .cta-dark.wp-block-group {
  background: rgba(255,255,255,.03) !important;
  border-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .cta-dark__title { color: #f0eef1 !important; }
[data-theme="dark"] .cta-dark__sub { color: rgba(255,255,255,.55) !important; }

/* ── HERO : centrage du pill ── */
.hero__content { text-align: center; }
.hero__pill { margin-left: auto; margin-right: auto; }

/* ═══════════════════════════════════════════════════════════════
   PATCH v1.3 — Boutons, titres alignés, spotlight fond sections
   ═══════════════════════════════════════════════════════════════ */

/* ── BOUTONS : les classes `btn-primary`/`btn-outline` sont sur le WRAPPER
      `.wp-block-button`, pas sur le lien. On cible donc les deux cas. */

.wp-block-button.btn,
.wp-block-button.btn-primary,
.wp-block-button.btn-outline,
.wp-block-button.btn-lg {
  border: 0 !important;
  background: transparent !important;
  outline: none !important;
  padding: 0 !important;
}

/* RESET core button padding/radius pour laisser notre règle en place */
.wp-block-button.btn .wp-block-button__link,
.wp-block-button.btn-primary .wp-block-button__link,
.wp-block-button.btn-outline .wp-block-button__link {
  border-radius: var(--radius-md) !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 13px 24px;
  width: auto;
}
.wp-block-button.btn-lg .wp-block-button__link,
.wp-block-button.btn.btn-lg .wp-block-button__link,
.wp-block-button.btn-primary.btn-lg .wp-block-button__link,
.wp-block-button.btn-outline.btn-lg .wp-block-button__link {
  padding: 16px 32px !important;
  font-size: 1.0625rem !important;
  border-radius: 10px !important;
}

/* PRIMARY (rouge plein) */
.wp-block-button.btn-primary .wp-block-button__link,
.wp-block-button.btn-primary .wp-block-button__link.wp-element-button {
  background: var(--color-primary) !important;
  background-color: var(--color-primary) !important;
  color: #fff !important;
  border: 2px solid var(--color-primary) !important;
}
.wp-block-button.btn-primary .wp-block-button__link:hover,
.wp-block-button.btn-primary .wp-block-button__link.wp-element-button:hover {
  background: var(--color-primary-dark) !important;
  background-color: var(--color-primary-dark) !important;
  border-color: var(--color-primary-dark) !important;
  color: #fff !important;
}

/* OUTLINE (fond transparent + bordure neutre) — override Ollie `.is-style-outline` */
.wp-block-button.btn-outline .wp-block-button__link,
.wp-block-button.btn-outline .wp-block-button__link.wp-element-button,
.wp-block-button.is-style-outline.btn-outline .wp-block-button__link {
  background: transparent !important;
  background-color: transparent !important;
  color: var(--color-neutral-900) !important;
  border: 2px solid var(--color-neutral-300, #c4cdd4) !important;
  outline: none !important;
}
.wp-block-button.btn-outline .wp-block-button__link:hover {
  background: var(--color-neutral-50) !important;
  background-color: var(--color-neutral-50) !important;
  border-color: var(--color-neutral-400) !important;
  color: var(--color-neutral-900) !important;
}

/* Section CTA dark : outline version rouge contour */
.cta-dark .wp-block-button.btn-outline .wp-block-button__link {
  background: transparent !important;
  color: var(--color-primary) !important;
  border: 2px solid var(--color-primary) !important;
}
.cta-dark .wp-block-button.btn-outline .wp-block-button__link:hover {
  background: var(--color-primary) !important;
  color: #fff !important;
}

/* Ollie injecte un outline 2px sur les is-style-outline : on le neutralise */
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline .wp-block-button__link {
  outline: none !important;
  outline-offset: 0 !important;
}

/* ═══════════════════════════════════════════════════════════════
   TITRES DE SECTION — alignement unifié (TOUT centré)
   ═══════════════════════════════════════════════════════════════ */

.section-eyebrow,
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 auto var(--space-3);
  padding: 6px 16px;
  font-size: 0.75rem;
  font-weight: var(--fw-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-neutral-700);
  background: var(--color-neutral-0);
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-full);
  box-shadow: 0 2px 6px rgba(26,23,27,.04);
}
.section-eyebrow::before,
.eyebrow::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
}

/* Les wrappers d'en-tête de section centrent leur contenu */
.jobs-section-header,
.switcher-header,
.stats-header,
.partners-header,
.testimonials-header,
.features-header,
.cta-header {
  text-align: center;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
}

/* H2 titre de section — serif + centré */
.section-title,
.jobs-section-header h2,
.switcher-header h2,
.stats-header h2,
.partners-header h2,
.testimonials-header h2,
.features-header h2 {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 2.5vw + 1rem, 2.75rem);
  font-weight: 400;
  line-height: 1.15;
  color: var(--color-neutral-900);
  text-align: center !important;
  margin: 0 auto var(--space-2);
  max-width: 720px;
}

/* Sous-texte éventuel sous le h2 */
.switcher-header p,
.jobs-section-header p,
.stats-header p,
.features-header p,
.testimonials-header p {
  text-align: center !important;
  max-width: 640px;
  margin: 0 auto;
  color: var(--color-neutral-700);
}

/* ═══════════════════════════════════════════════════════════════
   SPOTLIGHT CANVAS (fond sections) — injecté via page-glow.js
   ═══════════════════════════════════════════════════════════════ */

.hero,
.switcher-section,
.features-section,
.stats-section,
.jobs-section,
.partners-section,
.testimonials-section,
.cta-section,
.site-footer {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.glow-canvas {
  position: absolute !important;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;              /* derrière le contenu */
  pointer-events: none;
  /* v10.15.17 — aligné sur l'intensité du footer (radial-gradient CSS).
     Avant : mix-blend-mode:multiply + opacity:0.9 atténuaient le rouge
     d'environ -35% vs footer. Maintenant : opacity 1, pas de blend-mode
     en light → rendu direct, même punch que le gradient footer.
     En dark on garde screen + opacity réduite car sinon le rouge saturé
     brûle sur fond noir. */
  opacity: 1;
}

/* Le contenu des sections passe au-dessus du canvas */
.hero > *:not(.glow-canvas),
.switcher-section > *:not(.glow-canvas),
.features-section > *:not(.glow-canvas),
.stats-section > *:not(.glow-canvas),
.jobs-section > *:not(.glow-canvas),
.partners-section > *:not(.glow-canvas),
.testimonials-section > *:not(.glow-canvas),
.cta-section > *:not(.glow-canvas),
.site-footer > *:not(.glow-canvas) {
  position: relative;
  z-index: 1;
}

/* Cards en glass semi-transparent → le spotlight traverse */
.metric-card,
.feature-card,
.stats-band .stat-item,
.testimonial-card {
  background: rgba(255, 255, 255, 0.78) !important;
  backdrop-filter: blur(12px) saturate(140%);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
}

.job-card {
  background: rgba(255, 255, 255, 0.85) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

/* Dark mode : le canvas doit être plus subtil */
[data-theme="dark"] .glow-canvas {
  mix-blend-mode: screen;
  opacity: 0.6;
}
[data-theme="dark"] .metric-card,
[data-theme="dark"] .feature-card,
[data-theme="dark"] .stats-band .stat-item,
[data-theme="dark"] .testimonial-card {
  background: rgba(35, 32, 38, 0.65) !important;
}

/* Hover subtil sur les cards (lift + bordure primaire) */
.metric-card,
.feature-card,
.job-card,
.testimonial-card {
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.metric-card:hover,
.feature-card:hover,
.job-card:hover,
.testimonial-card:hover {
  transform: translateY(-3px);
  border-color: rgba(227, 0, 67, 0.25);
  box-shadow: 0 12px 32px rgba(26,23,27,.08),
              0 0 0 1px rgba(227, 0, 67, 0.12);
}

/* ──────────────────────────────────────────
   Persona switch (Candidat / Entreprise)
   Toggle en haut du hero — swap du H1/subtitle/CTA
   ────────────────────────────────────────── */
.persona-switch {
  display: inline-flex;
  align-items: center;
  padding: 4px;
  gap: 2px;
  border-radius: 999px;
  background: rgba(26, 23, 27, 0.04);
  border: 1px solid rgba(26, 23, 27, 0.08);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  margin-bottom: 28px;
  font-family: var(--font-sans, Inter, system-ui);
}
[data-theme="dark"] .persona-switch {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.08);
}
.persona-switch__btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--color-text-muted, #6b6b6b);
  background: transparent;
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
  transition: color 220ms ease, background 220ms ease, transform 180ms ease;
}
.persona-switch__btn:hover {
  color: var(--color-text, #1a171b);
}
.persona-switch__btn.is-active {
  background: var(--color-bg, #fff);
  color: var(--color-primary, #e30043);
  box-shadow: 0 1px 2px rgba(26, 23, 27, 0.06),
              0 4px 12px rgba(26, 23, 27, 0.04);
}
[data-theme="dark"] .persona-switch__btn.is-active {
  background: rgba(255,255,255,0.08);
  color: #ff4770;
}
.persona-switch__btn svg {
  opacity: 0.85;
}
.persona-switch__btn.is-active svg {
  opacity: 1;
}

/* ── Views : affichage conditionnel avec fade ── */
.persona-view {
  display: none;
  opacity: 0;
  animation: persona-fade-in 420ms ease-out forwards;
}
html[data-persona="candidate"] .persona-view--candidate,
html[data-persona="company"]   .persona-view--company {
  display: block;
  opacity: 1;
}
/* Surcharge pour .stats-band et .features-grid qui ont leur propre display: grid !important */
.stats-band.persona-view,
.features-grid.persona-view,
.testimonials-grid.persona-view {
  display: none !important;
}
html[data-persona="candidate"] .stats-band.persona-view--candidate,
html[data-persona="company"]   .stats-band.persona-view--company {
  display: grid !important;
}
html[data-persona="candidate"] .features-grid.persona-view--candidate,
html[data-persona="company"]   .features-grid.persona-view--company {
  display: grid !important;
}
html[data-persona="candidate"] .testimonials-grid.persona-view--candidate,
html[data-persona="company"]   .testimonials-grid.persona-view--company {
  display: grid !important;
}
/* v10.15 — hero metrics en persona-view (cartes flex, pas grid) */
.hero__metrics.persona-view {
  display: none !important;
}
html[data-persona="candidate"] .hero__metrics.persona-view--candidate,
html[data-persona="company"]   .hero__metrics.persona-view--company {
  display: flex !important;
}
@keyframes persona-fade-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .persona-view { animation: none; }
}

/* ──────────────────────────────────────────
   Scroll indicator hero
   Injecté par functions.php dans la 1ère section
   ────────────────────────────────────────── */
.hero-scroll-indicator {
  position: absolute;
  left: 50%;
  bottom: 28px;
  transform: translateX(-50%);
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  color: var(--color-text-muted, #6b6b6b);
  text-decoration: none !important;
  font-family: var(--font-sans, Inter, system-ui);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0;
  animation: hero-scroll-fade-in 800ms 1200ms ease-out forwards,
             hero-scroll-bob 2.4s 2000ms ease-in-out infinite;
  transition: opacity 420ms ease, transform 420ms ease;
  z-index: 5;
  pointer-events: auto;
}
.hero-scroll-indicator:hover {
  color: var(--color-primary, #e30043);
}
.hero-scroll-indicator__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 40px;
  border-radius: 14px;
  border: 1px solid currentColor;
  opacity: 0.6;
}
.hero-scroll-indicator__arrow svg {
  display: block;
  opacity: 0.85;
}
.hero-scroll-indicator.is-hidden {
  opacity: 0 !important;
  transform: translate(-50%, 12px) !important;
  pointer-events: none;
  animation: none !important;
}
@keyframes hero-scroll-fade-in {
  from { opacity: 0; transform: translate(-50%, 12px); }
  to   { opacity: 0.9; transform: translate(-50%, 0); }
}
@keyframes hero-scroll-bob {
  0%, 100% { transform: translate(-50%, 0); }
  50%      { transform: translate(-50%, 6px); }
}
@media (prefers-reduced-motion: reduce) {
  .hero-scroll-indicator {
    animation: hero-scroll-fade-in 600ms ease-out forwards;
  }
}
@media (max-width: 640px) {
  .hero-scroll-indicator { bottom: 18px; font-size: 11px; }
}

/* ══════════════════════════════════════════════════════════
   v5.5 — SOCIAL LINKS (header pills LinkedIn/Facebook)
   ══════════════════════════════════════════════════════════ */
.social-links {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0 8px;
}
.social-links__item {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  color: var(--color-text, #1a1a1a);
  text-decoration: none;
  overflow: hidden;
  isolation: isolate;
  transition: color 280ms cubic-bezier(0.4, 0, 0.2, 1), transform 280ms cubic-bezier(0.4, 0, 0.2, 1);
}
.social-links__item::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--social-brand, #1a1a1a);
  transform: scale(0);
  transform-origin: center;
  transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 0;
}
.social-links__item::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 1.5px solid rgba(0,0,0,0.1);
  transition: border-color 280ms ease;
  z-index: 2;
  pointer-events: none;
}
.social-links__item svg {
  position: relative;
  z-index: 1;
  width: 17px;
  height: 17px;
  transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1);
}
.social-links__item:hover {
  color: #fff;
  transform: translateY(-2px);
}
.social-links__item:hover::before { transform: scale(1); }
.social-links__item:hover::after  { border-color: transparent; }
.social-links__item:hover svg     { transform: scale(1.08); }
.social-links__item:focus-visible {
  outline: 2px solid #e23d5b;
  outline-offset: 3px;
}
.social-links__item--linkedin  { --social-brand: #0077B5; }
.social-links__item--facebook  { --social-brand: #1877F2; }
.social-links__item--instagram { --social-brand: #E4405F; }
.social-links__item--tiktok    { --social-brand: #000000; }

[data-theme="dark"] .social-links__item {
  color: rgba(255,255,255,0.85);
}
[data-theme="dark"] .social-links__item::after {
  border-color: rgba(255,255,255,0.12);
}

@media (max-width: 640px) {
  .social-links { gap: 4px; margin: 0 4px; }
  .social-links__item { width: 32px; height: 32px; }
  .social-links__item svg { width: 15px; height: 15px; }
}

/* ══════════════════════════════════════════════════════════
   v5.5 — ACTUS GRID (homepage + archive)
   ══════════════════════════════════════════════════════════ */
.actus-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: var(--space-5, 32px);
}
/* v10.15.5 — centrer + resserrer si exactement 3 cartes (count="3") */
.actus-grid:has(> .actu-card:nth-child(3):last-child) {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  max-width: 960px;
  margin-inline: auto;
}
/* v10.15.5 — idem pour 2 cartes */
.actus-grid:has(> .actu-card:nth-child(2):last-child) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 720px;
  margin-inline: auto;
}
@media (max-width: 1200px) { .actus-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px)  { .actus-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px)  { .actus-grid { grid-template-columns: 1fr; gap: 18px; } }
/* v10.17.51 — Fix actus 1 colonne mobile : on force jusqu'à 768px car
   les wp-block-columns natifs Gutenberg overridaient à 414px (iPhone XR
   gardait 3 colonnes étriquées). */
@media (max-width: 768px) {
  .actus-grid,
  .actus-grid.wp-block-columns,
  .home .actus-grid,
  .section--actus .actus-grid {
    grid-template-columns: 1fr !important;
    display: grid !important;
    gap: 16px !important;
  }
  .actus-grid.wp-block-columns > .wp-block-column {
    flex-basis: 100% !important;
    width: 100% !important;
    min-width: 0 !important;
  }
}

.actu-card {
  position: relative;
  background: var(--color-surface, #fff);
  border: 1px solid rgba(0,0,0,0.06);
  border-radius: 14px;
  overflow: hidden;
  transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1),
              box-shadow 320ms cubic-bezier(0.4, 0, 0.2, 1),
              border-color 320ms ease;
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.actu-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 32px -10px rgba(0,0,0,0.14);
  border-color: rgba(226,61,91,0.22);
}
.actu-card__link {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  height: 100%;
}
.actu-card__cover {
  position: relative;
  aspect-ratio: 16/9;
  overflow: hidden;
  background: #1a1a1a;
}
.actu-card__cover img,
.actu-card__cover .actu-card__svg {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform 520ms cubic-bezier(0.4, 0, 0.2, 1);
}
.actu-card:hover .actu-card__cover img,
.actu-card:hover .actu-card__svg {
  transform: scale(1.05);
}
.actu-card__cat {
  position: absolute;
  top: 12px;
  left: 12px;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  background: rgba(255,255,255,0.96);
  color: #1a1a1a;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  line-height: 1.2;
}
.actu-card__body {
  padding: 18px 20px 22px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
}
.actu-card__date {
  font-size: 11.5px;
  font-weight: 500;
  color: var(--color-text-muted, #6b6b6b);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.actu-card__title {
  font-size: 17px;
  font-weight: 600;
  line-height: 1.32;
  margin: 0;
  color: var(--color-text, #1a1a1a);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.actu-card__excerpt {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--color-text-muted, #555);
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.actu-card__more {
  margin-top: auto;
  padding-top: 10px;
  font-size: 13px;
  font-weight: 600;
  color: #e23d5b;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: gap 280ms ease;
}
.actu-card:hover .actu-card__more { gap: 10px; }

[data-theme="dark"] .actu-card {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
}
[data-theme="dark"] .actu-card:hover {
  border-color: rgba(226,61,91,0.35);
  box-shadow: 0 14px 32px -10px rgba(0,0,0,0.5);
}
[data-theme="dark"] .actu-card__cat {
  background: rgba(20,20,20,0.88);
  color: rgba(255,255,255,0.95);
}
[data-theme="dark"] .actu-card__title {
  color: rgba(255,255,255,0.95);
}
[data-theme="dark"] .actu-card__excerpt {
  color: rgba(255,255,255,0.65);
}

@media (prefers-reduced-motion: reduce) {
  .actu-card, .actu-card__cover img, .actu-card__svg,
  .social-links__item, .social-links__item::before, .social-links__item svg {
    transition: none !important;
  }
}

/* ══════════════════════════════════════════════════════════
   v6.0 — PAGES SPOKE (dispositif / candidats / entreprises / actus / contact / offres)
   ══════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────
   v10.17.17 — Masquer le header « post title » auto-généré par
   Ollie sur les pages Spoke.
   ─────────────────────────────────────────────────────────────
   Ollie (le thème parent) pose automatiquement un bloc
   <div class="wp-block-group alignfull">
     <h1 class="wp-block-post-title">{post_title}</h1>
   </div>
   en tête de chaque page, juste avant .entry-content.

   Sur la home, c'est masqué parce que le hero couvre toute la vue.
   Sur les Spoke (/le-dispositif/, /actus/, /contact/…), ça crée une
   bande blanche en haut avec le nom de la page en doublon du hero
   interne (qui a déjà son titre + eyebrow + sub).

   Le sélecteur `:has(.wp-block-post-title)` cible UNIQUEMENT le
   wrapper qui contient un post title, aucun risque de masquer
   autre chose par accident.
   ──────────────────────────────────────────────────────────── */
body:not(.home) main > .wp-block-group:has(> .wp-block-post-title),
body:not(.home) main > .wp-block-group:has(> .wp-block-heading.wp-block-post-title) {
  display: none;
}

/* ─────────────────────────────────────────────────────────────
   v10.17.18 — UNIFORMISATION LARGEURS Home ↔ Spoke.
   ─────────────────────────────────────────────────────────────
   Symptôme : les sections des pages Spoke (/le-dispositif/, /actus/,
   /contact/, /entreprises/, /candidats/, /geiq-btp/, /geiq-multi/,
   /equipe/, /faq/, etc.) rendent avec une largeur maximale plus
   étroite que les mêmes sections sur la home.

   Cause racine : WordPress FSE utilise deux templates différents :
     - Home : templates/front-page.html (ou variant custom)
       → <main class="site-main"> sans contrainte
       → <div class="entry-content"> sans alignwide ni has-global-padding
       → sections full-width, paddings gérés par la CSS de chaque section
     - Spoke : templates/page.html (hérité d'Ollie parent)
       → <main class="alignwide" style="padding:xx-large">
       → <div class="entry-content alignwide has-global-padding is-layout-constrained">
       → sections contraintes à --wp--style--global--wide-size (≈1200px)
         PLUS padding latéral global PLUS padding vertical xx-large

   Fix non-destructif : on neutralise les contraintes parasites sur
   `<main>` et `.entry-content` des pages Spoke, pour que les sections
   reprennent exactement le comportement full-width de la home. Les
   sections elles-mêmes gardent leur padding interne (--section-gap*)
   et leurs `.container` limitent la largeur du contenu comme sur home.

   Pourquoi CSS plutôt qu'override le template FSE : plus résistant
   aux updates d'Ollie parent, rollback instantané si besoin, zéro
   impact sur la home.
   ──────────────────────────────────────────────────────────── */
body:not(.home) main.wp-block-group,
body:not(.home) main.site-main {
  /* Retire alignwide max-width + padding inline xx-large imposés par Ollie */
  max-width: none !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

body:not(.home) main > .entry-content,
body:not(.home) main > .entry-content.wp-block-post-content {
  /* Retire alignwide max-width + has-global-padding latéral */
  max-width: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
  width: 100%;
}

/* Hero des pages intérieures */
.page-hero {
  padding: calc(var(--space-7, 80px) + 60px) 0 var(--space-6, 56px);
  background: linear-gradient(180deg, rgba(226,61,91,0.04) 0%, rgba(255,255,255,0) 100%);
  position: relative;
  overflow: hidden;
}
.page-hero::before {
  content: "";
  position: absolute;
  top: -80px; right: -80px;
  width: 360px; height: 360px;
  background: radial-gradient(circle at center, rgba(226,61,91,0.10), transparent 70%);
  filter: blur(40px);
  pointer-events: none;
  z-index: 0;
}
.page-hero > .container { position: relative; z-index: 1; }
.page-hero__title {
  font-size: clamp(38px, 6vw, 64px) !important;
  font-weight: 700 !important;
  line-height: 1.05 !important;
  letter-spacing: -0.02em !important;
  margin: 12px 0 18px !important;
  max-width: 820px;
}
.page-hero__title em {
  font-style: normal;
  color: #e23d5b;
  display: inline;
}
.page-hero__sub {
  font-size: clamp(16px, 1.6vw, 19px);
  line-height: 1.55;
  color: var(--color-text-muted, #555);
  max-width: 680px;
  margin: 0 0 28px;
}
[data-theme="dark"] .page-hero {
  background: linear-gradient(180deg, rgba(226,61,91,0.08) 0%, rgba(255,255,255,0) 100%);
}
[data-theme="dark"] .page-hero__sub { color: rgba(255,255,255,0.72); }

/* Variante "entreprise" en teinte bleue discrète */
.page-hero--entreprises::before {
  background: radial-gradient(circle at center, rgba(10,108,201,0.10), transparent 70%);
}

/* Steps parcours (Le dispositif) */
.dispositif-steps.wp-block-columns {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 24px !important;
  margin-top: var(--space-5, 32px);
}
@media (max-width: 900px) {
  .dispositif-steps.wp-block-columns { grid-template-columns: 1fr !important; }
}
.dispositif-step.wp-block-column {
  background: var(--color-surface, #fff);
  border: 1px solid rgba(0,0,0,0.06);
  border-radius: 14px;
  padding: 28px 24px !important;
  position: relative;
  overflow: hidden;
  flex: initial !important;
}
.dispositif-step::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 100%;
  background: linear-gradient(180deg, #e23d5b, #ff7849);
}
.dispositif-step__num {
  font-size: 40px;
  font-weight: 700;
  color: #e23d5b;
  margin: 0 0 8px;
  line-height: 1;
  letter-spacing: -0.02em;
}
.dispositif-step__title {
  font-size: 20px;
  font-weight: 600;
  margin: 0 0 10px;
  line-height: 1.3;
}
.dispositif-step__desc {
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--color-text-muted, #555);
  margin: 0;
}
[data-theme="dark"] .dispositif-step.wp-block-column {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
}
[data-theme="dark"] .dispositif-step__desc { color: rgba(255,255,255,0.65); }

/* Parcours list (Candidats + Entreprises) */
.parcours-list {
  list-style: none !important;
  padding: 0 !important;
  margin: var(--space-5, 32px) 0 0 !important;
  max-width: 820px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.parcours-list li {
  position: relative;
  padding: 16px 20px 16px 52px !important;
  background: var(--color-surface, #fff);
  border: 1px solid rgba(0,0,0,0.06);
  border-radius: 10px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--color-text, #1a1a1a);
  counter-increment: parcours;
}
.parcours-list {
  counter-reset: parcours;
}
.parcours-list li::before {
  content: counter(parcours);
  position: absolute;
  top: 50%;
  left: 16px;
  transform: translateY(-50%);
  width: 26px; height: 26px;
  background: #e23d5b;
  color: #fff;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
}
.parcours-list li strong {
  color: #e23d5b;
  font-weight: 600;
}
[data-theme="dark"] .parcours-list li {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.9);
}

/* Contact cards (Contact) */
.contact-grid.wp-block-columns {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 28px !important;
  margin-top: var(--space-5, 32px);
}
@media (max-width: 820px) {
  .contact-grid.wp-block-columns { grid-template-columns: 1fr !important; }
}
/* v10.17.36 — Refonte contact-card : cohérent avec .feature-card du site.
   Ancien style (barre rouge top + border 1px grise) retiré.
   Nouveau : icône pastille rose pâle, hover lift, border primary .22 subtle. */
.contact-cards-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(16px, 2vw, 24px);
  margin: 0;
}
.contact-card {
  flex: 1 1 240px;
  max-width: 320px;
  background: var(--surface-card-bg, rgba(255,255,255,.96));
  border: 0.5px solid rgba(227, 0, 67, .22);
  border-radius: var(--radius-lg, 16px);
  padding: clamp(24px, 3vw, 32px) !important;
  text-align: center;
  position: relative;
  transition: transform .35s ease, border-color .3s ease, box-shadow .35s ease;
}
.contact-card:hover {
  transform: translateY(-3px);
  border-color: rgba(227, 0, 67, .42);
  box-shadow: 0 10px 32px rgba(227, 0, 67, .12);
}
/* v10.17.37 — contact-card utilise maintenant le bloc .feature-icon
   (rendu par labernik-geiq56/icon variant=feature). On ajuste juste
   le centrage horizontal (flex-column centered pour la card). */
.contact-card .feature-icon {
  margin: 0 auto 14px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
}
.contact-card .feature-icon svg {
  width: 22px;
  height: 22px;
}
.contact-card:hover .feature-icon {
  transform: scale(1.08) rotate(0deg);
}
.contact-card__title {
  font-family: var(--font-display) !important;
  font-size: 1.1rem !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900, #1a171b) !important;
  margin: 0 0 8px !important;
  letter-spacing: -0.01em;
}
.contact-card__value {
  font-size: .9375rem !important;
  line-height: 1.55 !important;
  color: var(--color-neutral-600, #4b575f) !important;
  margin: 0 !important;
  word-break: break-word;
}
[data-theme="dark"] .contact-card {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.08);
}
[data-theme="dark"] .contact-card:hover {
  border-color: rgba(255,255,255,.15);
}
[data-theme="dark"] .contact-card__title { color: #f0eef1 !important; }
[data-theme="dark"] .contact-card__value { color: rgba(255,255,255,.65) !important; }
@media (max-width: 640px) {
  .contact-card { flex-basis: 100%; max-width: 100%; }
}
.contact-card p strong { color: var(--color-text, #1a1a1a); font-weight: 600; }
[data-theme="dark"] .contact-card.wp-block-column {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
}
[data-theme="dark"] .contact-card p { color: rgba(255,255,255,0.72); }
[data-theme="dark"] .contact-card p strong { color: rgba(255,255,255,0.95); }

/* v7.7 — Éléments internes des contact-cards (BEM-like) */
.contact-card__eyebrow {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--color-primary, #e30043) !important;
  margin: 0 0 10px !important;
}
.contact-card--btp  .contact-card__eyebrow { color: #e05c00 !important; }
.contact-card--multi .contact-card__eyebrow { color: #2e9e6e !important; }
.contact-card__title {
  font-family: var(--font-display) !important;
  font-size: 22px !important;
  font-weight: 500 !important;
  line-height: 1.25 !important;
  margin: 0 0 12px !important;
}
.contact-card__sub {
  font-size: 15px !important;
  line-height: 1.55 !important;
  color: var(--color-neutral-600, #4b575f) !important;
  margin: 0 0 18px !important;
}
.contact-card__meta {
  font-size: 14px !important;
  line-height: 1.55 !important;
  color: var(--color-neutral-900, #1a171b) !important;
  margin: 0 0 18px !important;
  padding-top: 14px;
  border-top: 1px solid rgba(0,0,0,0.07);
}
[data-theme="dark"] .contact-card__meta {
  color: rgba(255,255,255,0.9) !important;
  border-top-color: rgba(255,255,255,0.1);
}
.contact-card .wp-block-buttons {
  margin-top: auto;
}
.contact-card .wp-block-button__link {
  width: 100%;
  text-align: center;
}
/* Accent couleur des boutons par carte */
.contact-card--btp .wp-block-button.is-style-fill .wp-block-button__link {
  background-color: #e05c00 !important;
  border-color: #e05c00 !important;
}
.contact-card--multi .wp-block-button.is-style-fill .wp-block-button__link {
  background-color: #2e9e6e !important;
  border-color: #2e9e6e !important;
}
/* Ligne de repli sous les cartes */
.contact-general {
  margin-top: var(--space-4, 28px) !important;
  font-size: 14.5px;
  color: var(--color-neutral-600, #4b575f);
}
.contact-general a {
  color: var(--color-primary, #e30043);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* CTA final sur pages Spoke */
.section--cta-final {
  background: linear-gradient(135deg, rgba(226,61,91,0.04), rgba(10,108,201,0.04));
  padding: var(--section-gap) 0;
  text-align: center;
}
.section--cta-final .section-title { margin-bottom: 14px; }
.section--cta-final .section-sub { max-width: 560px; margin: 0 auto 28px; }
.section--cta-final .wp-block-buttons { justify-content: center !important; }
[data-theme="dark"] .section--cta-final {
  background: linear-gradient(135deg, rgba(226,61,91,0.08), rgba(10,108,201,0.08));
}

/* Actus archive + jobs section : padding cohérent */
.section--actus-archive,
.section--jobs,
.section--contact,
.section--switcher,
.section--partners {
  padding: var(--section-gap) 0;
}



/* =========================================================================
   v6.1 — Pages Spoke (contenu PDF client)
   ========================================================================= */

/* Hero léger pour les pages intérieures */
.hero-spoke {
  background: linear-gradient(180deg, rgba(226,61,91,0.03), transparent 70%);
  border-bottom: 1px solid var(--color-border, #e5e7eb);
}
.hero-spoke__title {
  font-size: clamp(36px, 5vw, 56px) !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em;
  margin: 0 0 18px !important;
}
.hero-spoke__lead {
  font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.55;
  max-width: 720px;
  color: var(--color-text-muted, #555);
}
[data-theme="dark"] .hero-spoke__lead { color: rgba(255,255,255,0.72); }

/* Bandes section alternées */
.section-band { background: var(--color-bg, #fff); }
.section-band--alt { background: var(--color-bg-soft, #fafafa); }
[data-theme="dark"] .section-band { background: var(--color-bg, #0f0f10); }
[data-theme="dark"] .section-band--alt { background: rgba(255,255,255,0.025); }

/* Procédure (liste ordonnée stylisée) */
.procedure-list {
  list-style: none;
  counter-reset: step;
  padding: 0;
  max-width: 800px;
  margin: 0 auto;
}
.procedure-list li {
  counter-increment: step;
  position: relative;
  padding: 18px 18px 18px 68px;
  margin: 0 0 12px;
  border: 1px solid var(--color-border, #e5e7eb);
  border-radius: 12px;
  background: var(--color-bg, #fff);
  line-height: 1.55;
}
.procedure-list li::before {
  content: counter(step);
  position: absolute;
  top: 50%; left: 18px;
  transform: translateY(-50%);
  width: 36px; height: 36px;
  border-radius: 50%;
  background: #e23d5b;
  color: #fff;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
}
[data-theme="dark"] .procedure-list li {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
}

/* FAQ collapsibles (details/summary) */
.faq-item {
  border: 1px solid var(--color-border, #e5e7eb);
  border-radius: 12px;
  margin: 0 0 10px;
  background: var(--color-bg, #fff);
  overflow: hidden;
  transition: border-color 0.2s;
}
.faq-item[open] { border-color: rgba(226,61,91,0.4); }
.faq-item summary {
  padding: 16px 22px;
  cursor: pointer;
  list-style: none;
  position: relative;
  padding-right: 56px;
  font-weight: 500;
  line-height: 1.5;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "+";
  position: absolute;
  right: 22px;
  top: 50%;
  transform: translateY(-50%);
  width: 24px; height: 24px;
  border-radius: 50%;
  background: rgba(226,61,91,0.1);
  color: #e23d5b;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s;
}
.faq-item[open] summary::after { content: "−"; transform: translateY(-50%) rotate(180deg); }
.faq-item p {
  padding: 0 22px 20px;
  margin: 0;
  color: var(--color-text-muted, #555);
  line-height: 1.65;
}
[data-theme="dark"] .faq-item {
  background: rgba(255,255,255,0.025);
  border-color: rgba(255,255,255,0.08);
}
[data-theme="dark"] .faq-item p { color: rgba(255,255,255,0.72); }

/* Témoignages — variante couleur */
.temoignage--btp   { border-left: 4px solid #e05c00; padding-left: 24px; }
.temoignage--multi { border-left: 4px solid #2e9e6e; padding-left: 24px; }
.temoignage cite {
  display: block;
  margin-top: 14px;
  font-style: normal;
  font-weight: 600;
  color: var(--color-text, #1a1a1a);
  font-size: 14px;
}
[data-theme="dark"] .temoignage cite { color: rgba(255,255,255,0.9); }

/* CTA band (bas de page Spoke) */
.cta-band {
  background: linear-gradient(135deg, rgba(226,61,91,0.04), rgba(10,108,201,0.04));
  text-align: center;
}
.cta-band h2 { margin-bottom: 24px !important; }
[data-theme="dark"] .cta-band {
  background: linear-gradient(135deg, rgba(226,61,91,0.08), rgba(10,108,201,0.08));
}

/* =========================================================================
   v7.0 — UNIFICATION HERO SPOKE
   Règles déplacées vers un seul bloc « Hero Spoke consolidated » plus bas.
   Principe : .section--hero-spoke hérite TOUT de .hero__* (base ligne ~485).
   Seules les différences réelles (padding-section, max-width interne) restent.
   Voir /docs/BONNES-PRATIQUES.md pour les règles de modification/extension.
   ========================================================================= */

/* v7.1 — Hero Spoke : padding en UNE SEULE couche, sur la section.
   Avant : .section--hero-spoke (140) + .hero__content (72) = 212 px de vide
           au-dessus du eyebrow. Racine des "bandes fantômes" signalées.
   Après : .section--hero-spoke porte tout, .hero__content ne sert plus qu'à
           contraindre la largeur max (1080 px). Tokens dans global.css. */
.site-main .section--hero-spoke {
  padding-top: var(--section-gap-hero) !important;
  padding-bottom: var(--section-gap-sm) !important;
  position: relative;
}
.site-main .section--hero-spoke .hero__content {
  max-width: 1080px;
  padding-block: 0;
}
.site-main .section--hero-spoke .hero__actions.wp-block-buttons {
  margin-top: 28px;
}
/* splitReveal JS (header.js) wrap chaque mot en <span>, ce qui casse
   background-clip: text sur le <em> → texte invisible. On garde l'italique
   rouge franc, comme sur la homepage via reduced-motion. */
.section--hero-spoke .hero__title em {
  font-style: italic;
  color: var(--color-primary);
  background: none;
  -webkit-text-fill-color: currentColor;
  animation: none;
}
[data-theme="dark"] .section--hero-spoke .hero__subtitle { color: rgba(255, 255, 255, 0.72); }

/* Badge numéroté pour les étapes de procédure (remplace .feature-icon) */
.feature-icon--step {
  width: 48px !important;
  height: 48px !important;
  border-radius: 50% !important;
  background: linear-gradient(135deg, #e23d5b, #c72e48) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: 0 4px 12px rgba(226,61,91,0.25);
}
.feature-icon--step .feature-icon__num {
  color: #fff;
  font-weight: 700;
  font-size: 18px;
  letter-spacing: 0;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.feature-card:hover .feature-icon--step {
  transform: scale(1.08) rotate(-4deg);
  transition: transform 0.25s ease;
}

/* FAQ — enrober l'ensemble pour qu'il respire dans la section */
.section .faq-wrap { max-width: 820px; margin: 0 auto; }
.section--alt .faq-item { background: #fff; }
[data-theme="dark"] .section--alt .faq-item { background: rgba(255,255,255,0.04); }

/* Témoignages — harmoniser avec .testimonial / .testimonial__quote pour que
   le look matche la homepage quand on tombe dans les pages Spoke */
.testimonials-grid .testimonial .testimonial__quote p { margin: 0 0 16px; }
.testimonials-grid .testimonial .testimonial__meta {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

/* Bloc "admins" — grille 3 colonnes compactes, membres simples.
   Matche à la fois :
   - l'ancien markup Gutenberg (wp:columns → .admins-grid.wp-block-columns)
   - le markup du shortcode [geiq56_admins] → simple .admins-grid */
.admins-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: var(--space-4, 20px) !important;
  margin-top: var(--space-4, 24px) !important;
}
.admins-grid--bureau {
  margin-bottom: var(--space-5, 36px) !important;
}
.admins-grid .wp-block-column { padding: 0 !important; }
.admins-grid .admin-card {
  padding: 16px 18px;
  border: 1px solid var(--color-border, #e5e7eb);
  border-radius: 12px;
  background: var(--color-bg, #fff);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.admins-grid .admin-card--bureau {
  border-color: rgba(226, 61, 91, 0.22);
  box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}
.admins-grid .admin-card__role {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-primary, #e23d5b);
  margin: 0 0 4px;
}
.admins-grid .admin-card__name {
  font-weight: 600;
  font-size: 1rem;
  margin: 0;
  color: var(--color-text, #1a1a1a);
}
.admins-grid .admin-card__company {
  font-size: 0.875rem;
  color: var(--color-neutral-600, #666);
  margin: 2px 0 0;
}
.admins-grid .admin-card__company:empty { display: none; }
[data-theme="dark"] .admins-grid .admin-card {
  background: rgba(255,255,255,0.03);
  border-color: rgba(255,255,255,0.08);
}
[data-theme="dark"] .admins-grid .admin-card__name { color: #f0eef1; }
[data-theme="dark"] .admins-grid .admin-card__company { color: rgba(255,255,255,0.55); }
@media (max-width: 900px) { .admins-grid { grid-template-columns: 1fr 1fr !important; } }
@media (max-width: 560px) { .admins-grid { grid-template-columns: 1fr !important; } }


/* =========================================================================
   v6.2 — HARMONISATION PAGES SPOKE AVEC HOMEPAGE
   Largeur pleine, spotlight, glass cohérent, animations fade-in.
   ========================================================================= */

/* ── Pleine largeur extérieure + container interne à 1280px ───────────── */
.site-main .section--hero-spoke,
.site-main .section--why,
.site-main .section--process,
.site-main .section--testimonials,
.site-main .section--faq,
.site-main .section--stats,
.site-main .section--admins,
.site-main .section--adhesion,
.site-main .section--cta-final,
.site-main .section--actus-archive,
.site-main .section--jobs,
.site-main .section--contact,
.site-main .section--dispositif-schema,
.site-main .section--dispositif-intro,
.site-main .section--trio {
  max-width: 100% !important;
  width: 100% !important;
  margin-inline: 0 !important;
  padding-inline: var(--section-gutter) !important;
  padding-block: var(--section-gap);
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
/* section--alt retiré volontairement : c'est une classe partagée avec la
   homepage (section--alt, section--actus). Les sections Spoke qui combinent
   (ex: "section--alt section--process") sont déjà captées via .section--process. */

/* Tous les enfants directs (hors glow-canvas) centrés dans un max-width */
.site-main .section--hero-spoke > *:not(.glow-canvas),
.site-main .section--why > *:not(.glow-canvas),
.site-main .section--process > *:not(.glow-canvas),
.site-main .section--testimonials > *:not(.glow-canvas),
.site-main .section--faq > *:not(.glow-canvas),
.site-main .section--stats > *:not(.glow-canvas),
.site-main .section--admins > *:not(.glow-canvas),
.site-main .section--adhesion > *:not(.glow-canvas),
.site-main .section--cta-final > *:not(.glow-canvas),
.site-main .section--actus-archive > *:not(.glow-canvas),
.site-main .section--jobs > *:not(.glow-canvas),
.site-main .section--contact > *:not(.glow-canvas),
.site-main .section--dispositif-schema > *:not(.glow-canvas),
.site-main .section--dispositif-intro > *:not(.glow-canvas),
.site-main .section--trio > *:not(.glow-canvas) {
  max-width: 1280px;
  margin-inline: auto;
  position: relative;
  z-index: 1;
}

/* Section trio (dispositif) : mêmes règles que les autres sections centrées */
.section--trio { text-align: center; }
.section--trio .features-grid { text-align: left; }
.section--trio .section-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 6px 14px;
  border-radius: 999px;
  border: 1px solid rgba(227,0,67,0.16);
  background: rgba(227,0,67,0.04);
  font-size: 0.8125rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-primary, #e30043);
  font-weight: 600;
  margin: 0 auto 16px;
}
.section--trio .section-title {
  font-family: var(--font-display, "Instrument Serif"), serif !important;
  font-weight: 400 !important;
  letter-spacing: -0.02em;
  line-height: 1.08 !important;
  margin: 0 auto 14px !important;
  max-width: 920px;
}
.section--trio .section-sub {
  max-width: 640px;
  margin: 0 auto clamp(32px, 4vw, 56px);
  color: var(--color-text-muted, #555);
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: 1.55;
}
.section--trio .feature-card {
  background: rgba(255, 255, 255, 0.78) !important;
  -webkit-backdrop-filter: blur(12px) saturate(140%);
  backdrop-filter: blur(12px) saturate(140%);
  border: 1px solid rgba(26, 23, 27, 0.08);
  border-radius: 16px;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.section--trio .feature-card:hover {
  transform: translateY(-3px);
  border-color: rgba(227, 0, 67, 0.25);
  box-shadow: 0 12px 32px rgba(26,23,27,.08),
              0 0 0 1px rgba(227, 0, 67, 0.12);
}
[data-theme="dark"] .section--trio .feature-card {
  background: rgba(35, 32, 38, 0.65) !important;
  border-color: rgba(255,255,255,0.08);
}
/* Fade-in */
.section--trio .section-eyebrow,
.section--trio .section-title,
.section--trio .section-sub,
.section--trio .features-grid {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1);
}
.section--trio .features-grid.is-inview > * {
  animation: geiq-spoke-card-in .55s cubic-bezier(.2,.7,.2,1) both;
}
.section--trio .features-grid.is-inview > *:nth-child(2) { animation-delay: .08s; }
.section--trio .features-grid.is-inview > *:nth-child(3) { animation-delay: .16s; }
@media (prefers-reduced-motion: reduce) {
  .section--trio .section-eyebrow,
  .section--trio .section-title,
  .section--trio .section-sub,
  .section--trio .features-grid { opacity: 1; transform: none; transition: none; }
  .section--trio .features-grid.is-inview > * { animation: none; }
}
@media (max-width: 720px) {
  .site-main .section--trio { padding-inline: 18px !important; padding-block: 48px; }
}

/* =========================================================================
   v6.3.1 — Consolidation Spoke SCOPÉE (body:not(.home))
   --------------------------------------------------------------------------
   La homepage partage des classes (section--actus, section--alt, feature-card,
   testimonial, actu-card, job-card). Toutes les règles ci-dessous sont
   scopées par `body:not(.home)` pour n'impacter QUE les pages Spoke.
   La homepage garde ses styles d'origine intacts.
   ========================================================================= */

/* ── 1. Fallback largeur si une page reste en is-layout-constrained ─── */
body:not(.home) .site-main [class*="section--"].is-layout-constrained
  > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
  max-width: 1280px;
}

/* ── 2. Boutons Spoke (fill + outline) ──────────────────────────────── */
body:not(.home) [class*="section--"] .wp-block-button.is-style-fill > .wp-block-button__link {
  background: var(--color-primary);
  color: #fff;
  border: 2px solid var(--color-primary);
  border-radius: var(--radius-md, 10px);
  padding: 14px 28px;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.9375rem;
  line-height: 1;
  letter-spacing: 0.01em;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  box-shadow: 0 6px 18px rgba(227, 0, 67, 0.18);
  transition: background .2s, border-color .2s, transform .2s, box-shadow .2s;
}
body:not(.home) [class*="section--"] .wp-block-button.is-style-fill > .wp-block-button__link:hover {
  background: var(--color-primary-dark);
  border-color: var(--color-primary-dark);
  transform: translateY(-2px);
  box-shadow: 0 10px 28px rgba(227, 0, 67, 0.30);
}
body:not(.home) [class*="section--"] .wp-block-button.is-style-fill > .wp-block-button__link::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.18) 50%, transparent 70%);
  transform: translateX(-120%);
  transition: transform .5s ease;
  pointer-events: none;
}
body:not(.home) [class*="section--"] .wp-block-button.is-style-fill > .wp-block-button__link:hover::after {
  transform: translateX(120%);
}

body:not(.home) [class*="section--"] .wp-block-button.is-style-outline > .wp-block-button__link {
  background: transparent;
  color: var(--color-neutral-900);
  border: 2px solid var(--color-neutral-300, #c4cdd4);
  border-radius: var(--radius-md, 10px);
  padding: 14px 28px;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.9375rem;
  line-height: 1;
  text-decoration: none;
  transition: background .2s, border-color .2s, transform .2s, color .2s;
}
body:not(.home) [class*="section--"] .wp-block-button.is-style-outline > .wp-block-button__link:hover {
  background: rgba(227, 0, 67, 0.04);
  border-color: var(--color-primary);
  color: var(--color-primary);
  transform: translateY(-2px);
}
[data-theme="dark"] body:not(.home) [class*="section--"] .wp-block-button.is-style-outline > .wp-block-button__link {
  color: #f0eef1;
  border-color: rgba(255, 255, 255, 0.18);
}

body:not(.home) [class*="section--"] .wp-block-buttons { gap: 14px; flex-wrap: wrap; }

/* v7.0 : règles Hero Spoke consolidées en haut du fichier (voir ligne ~3870).
   Plus de duplication ici. */

/* ── 4. Bande alternée (Spoke uniquement) ───────────────────────────── */
body:not(.home) .section--alt { background: var(--color-bg-soft, #fafafa); }
[data-theme="dark"] body:not(.home) .section--alt { background: rgba(255, 255, 255, 0.025); }

/* v6.3.5 : le CTA final Spoke bascule en gris doux pour restaurer
   l'alternance blanc/gris après le bloc "Trois temps" sur /le-dispositif/.
   Sur la homepage il reste en gradient rose-bleu subtil (voir ligne 3701)
   — le sélecteur body:not(.home) protège cette règle d'être appliquée là. */
body:not(.home) .section--cta-final {
  background:
    linear-gradient(135deg, rgba(226, 61, 91, .035), rgba(10, 108, 201, .035)),
    var(--color-bg-soft, #fafafa);
}
[data-theme="dark"] body:not(.home) .section--cta-final {
  background:
    linear-gradient(135deg, rgba(226, 61, 91, .08), rgba(10, 108, 201, .08)),
    rgba(255, 255, 255, .025);
}

/* ── 5. Titres de sections Spoke (hors hero) ────────────────────────── */
/* Pastille eyebrow neutre + dot rouge animé (clone du style homepage).
   v7.0 : on N'APPLIQUE PLUS au .hero__eyebrow — celui-ci hérite de la base
   .hero__eyebrow (ligne ~510) qui est DÉJÀ centrée et animée correctement. */
body:not(.home) [class*="section--"] .section-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.8125rem;
  font-weight: var(--fw-medium, 500);
  color: var(--color-neutral-500);
  border: 1px solid var(--color-neutral-200);
  border-radius: var(--radius-full);
  padding: 6px 16px;
  margin: 0 auto var(--space-4, 16px);
  background: var(--color-neutral-50);
  text-transform: none;
  letter-spacing: 0;
}
body:not(.home) [class*="section--"] .section-eyebrow::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-primary);
  box-shadow: 0 0 8px rgba(227, 0, 67, .7);
  animation: blink 2.5s ease-in-out infinite;
  flex-shrink: 0;
}

/* Titre de section (H2) — taille homepage */
body:not(.home) [class*="section--"] .section-title {
  font-family: var(--font-display);
  font-weight: var(--fw-regular, 400);
  font-size: clamp(2rem, 4.5vw, 3rem);
  color: var(--color-neutral-900);
  letter-spacing: -0.02em;
  line-height: var(--lh-display, 1.1);
  margin: 0 auto 14px;
  max-width: 920px;
  text-align: center;
}
body:not(.home) [class*="section--"] .section-title em {
  font-style: italic;
  color: var(--color-primary);
  background: none;
  -webkit-text-fill-color: currentColor;
  animation: none;
}

/* Garde-fou : certains thèmes parents ajoutent has-text-align-left.
   On force le centrage sur les sections non-hero. */
body:not(.home) [class*="section--"]:not(.section--hero-spoke) > .section-title,
body:not(.home) [class*="section--"]:not(.section--hero-spoke) .wp-block-heading.section-title,
body:not(.home) [class*="section--"]:not(.section--hero-spoke) .section-eyebrow,
body:not(.home) [class*="section--"]:not(.section--hero-spoke) .section-sub {
  text-align: center !important;
}
@media (prefers-reduced-motion: reduce) {
  body:not(.home) [class*="section--"] .section-eyebrow::before { animation: none; }
}

body:not(.home) [class*="section--"] .section-sub {
  max-width: 640px;
  margin: 0 auto clamp(32px, 4vw, 56px);
  color: var(--color-text-muted, var(--color-neutral-500));
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: 1.55;
}

body:not(.home) :is(.section--why, .section--process, .section--testimonials,
    .section--faq, .section--stats, .section--admins, .section--adhesion,
    .section--cta-final, .section--actus-archive, .section--jobs,
    .section--dispositif-intro, .section--dispositif-schema,
    .section--dispositif-switcher, .section--trio) {
  text-align: center;
}
body:not(.home) :is(.section--why .features-grid, .section--trio .features-grid,
    .section--testimonials .testimonials-grid, .section--admins .admins-grid,
    .section--actus-archive .actus-grid, .section--jobs .jobs-grid) {
  text-align: left;
}

/* ── 6. Cards glass (Spoke uniquement) ──────────────────────────────── */
/* v6.3.5 : .feature-card est RETIRÉ de cette règle glass — il reprend désormais
   le style homepage (radial gradient + icon animé + tilt 3D) pour rester cohérent
   avec la home. Voir bloc dédié plus bas (« Feature cards style homepage »). */
body:not(.home) :is(.testimonial, .testimonial-card, .admin-card,
    .job-card, .contact-card, .actu-card, .stats-band .stat-item,
    .procedure-list li, .faq-item) {
  background: rgba(255, 255, 255, 0.78);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
  backdrop-filter: blur(12px) saturate(140%);
  border: 1px solid rgba(26, 23, 27, 0.08);
  border-radius: 16px;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
[data-theme="dark"] body:not(.home) :is(.testimonial, .testimonial-card,
    .admin-card, .job-card, .contact-card, .actu-card,
    .stats-band .stat-item, .procedure-list li, .faq-item) {
  background: rgba(35, 32, 38, 0.65);
  border-color: rgba(255, 255, 255, 0.08);
}
body:not(.home) :is(.testimonial, .admin-card, .job-card, .actu-card):hover {
  transform: translateY(-3px);
  border-color: rgba(227, 0, 67, 0.25);
  box-shadow: 0 12px 32px rgba(26, 23, 27, .08), 0 0 0 1px rgba(227, 0, 67, 0.12);
}

/* ── 6bis. Feature cards — parité visuelle avec la homepage ──────────
   v6.3.5 — Julien a remonté que les feature-cards des pages Spoke étaient
   "trop rectangles", sans l'effet radial + icône animée + tilt 3D de la home.
   On re-applique ici le style homepage (voir ligne ~708) pour le scope Spoke,
   en gardant assez de spécificité pour l'emporter sur l'ancien glass. */
body:not(.home) .feature-card,
body:not(.home) .feature-card.wp-block-column {
  position: relative;
  /* !important pour battre l'ancienne règle flat ligne 2446 (déjà !important).
     On recolle ici au style homepage : radial gradient réactif à la souris,
     border 1.5px neutral, radius XL, padding généreux pour un effet carré. */
  background:
    radial-gradient(circle 120px at var(--mx, 50%) var(--my, 50%), rgba(227, 0, 67, .07) 0%, transparent 100%),
    var(--color-neutral-0, #fff) !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  border: 1.5px solid var(--color-neutral-200, #e5e7eb) !important;
  border-radius: var(--radius-xl, 24px) !important;
  padding: var(--space-5, 32px) var(--space-4, 24px) !important;
  transition: border-color .2s, box-shadow .2s,
              transform .22s cubic-bezier(.4, 0, .2, 1), background .05s !important;
  will-change: transform;
  overflow: visible !important;
}
body:not(.home) .feature-card:hover,
body:not(.home) .feature-card.wp-block-column:hover {
  border-color: rgba(227, 0, 67, .25) !important;
  box-shadow: 0 6px 28px rgba(227, 0, 67, .08),
              0 2px 8px rgba(26, 23, 27, .06) !important;
  transform: translateY(-5px);
}

/* Icon wrapper — carré rouge soft, pulse au hover */
body:not(.home) .feature-card .feature-card__icon {
  width: 40px; height: 40px;
  margin-bottom: var(--space-3, 12px);
  font-size: 1.25rem;
  background: rgba(227, 0, 67, .08);
  border-radius: var(--radius-sm, 8px);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  line-height: 1;
  transition: background .2s, transform .22s;
}
body:not(.home) .feature-card:hover .feature-card__icon {
  background: rgba(227, 0, 67, .14);
  transform: scale(1.1) rotate(-3deg);
}

/* Titre : Instrument Serif, léger — parité homepage */
body:not(.home) .feature-card .feature-card__title,
body:not(.home) .feature-card .wp-block-heading.feature-card__title {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 400;
  color: var(--color-neutral-900);
  margin-bottom: var(--space-2, 8px);
  line-height: 1.3;
}
body:not(.home) .feature-card .feature-card__desc {
  font-size: .9375rem;
  color: var(--color-neutral-600, #6b7280);
  line-height: 1.6;
  margin: 0;
}
[data-theme="dark"] body:not(.home) .feature-card,
[data-theme="dark"] body:not(.home) .feature-card.wp-block-column {
  background: rgba(255, 255, 255, .04);
  border-color: rgba(255, 255, 255, .08);
}
body:not(.home) .procedure-list li:hover {
  transform: translateX(4px);
  border-color: rgba(227, 0, 67, 0.25);
  box-shadow: 0 8px 24px rgba(26, 23, 27, .08);
}
body:not(.home) .faq-item[open] {
  background: rgba(255, 255, 255, 0.92);
  border-color: rgba(227, 0, 67, 0.4);
}
[data-theme="dark"] body:not(.home) .faq-item[open] { background: rgba(35, 32, 38, 0.85); }

/* ── 7. Grilles responsives ─────────────────────────────────────────── */
/* v6.3.5 : on étend max-width de 1040 → 1280px pour retrouver la pleine largeur
   sous le bloc "Trois temps, une même méthode" (Julien : "on retrouve encore
   les petites largeurs après ce bloc"). Les cards feature se répartissent
   alors proprement sur la full width et conservent leur forme carrée. */
body:not(.home) :is(.section--why, .section--trio) .features-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-3, 24px);
  max-width: 1280px;
  margin: 40px auto 0;
}
body:not(.home) .section--testimonials .testimonials-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
  margin-top: 40px;
}
body:not(.home) .section--admins .admins-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px;
  margin-top: 32px;
}
body:not(.home) .section--stats .stats-band {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 20px;
  max-width: 1100px;
  margin: 32px auto 0;
}
body:not(.home) .section--process .procedure-list {
  max-width: 900px;
  margin: 40px auto 0;
}
body:not(.home) .section--faq .faq-wrap {
  max-width: 820px;
  margin: 32px auto 0;
  text-align: left;
}

@media (max-width: 900px) {
  body:not(.home) :is(.section--why, .section--trio) .features-grid,
  body:not(.home) .section--admins .admins-grid,
  body:not(.home) .section--stats .stats-band { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  body:not(.home) :is(.section--why, .section--trio) .features-grid,
  body:not(.home) .section--admins .admins-grid,
  body:not(.home) .section--stats .stats-band,
  body:not(.home) .section--testimonials .testimonials-grid { grid-template-columns: 1fr; }
}

/* ── 8. Internals des cards ─────────────────────────────────────────── */
/* v6.3.5 : on conserve display:flex pour la structure interne (icon → titre → desc),
   mais on laisse le padding/border-radius au bloc §6bis "Feature cards style homepage"
   pour ne pas écraser la forme carrée voulue. */
body:not(.home) .feature-card { display: flex; flex-direction: column; gap: 12px; }
body:not(.home) :is(.testimonial, .testimonial-card) { padding: 28px 26px; }
body:not(.home) .testimonial__quote {
  font-family: var(--font-display);
  font-size: 1.25rem;
  line-height: 1.4;
  margin-bottom: 20px;
  color: var(--color-neutral-900);
}
body:not(.home) .testimonial__name { font-weight: 600; color: var(--color-neutral-900); }
body:not(.home) .testimonial__role { font-size: 0.875rem; color: var(--color-neutral-500, #6b7280); }
[data-theme="dark"] body:not(.home) :is(.testimonial__quote, .testimonial__name) { color: #f0eef1; }

body:not(.home) .admin-card { padding: 22px 20px; }
body:not(.home) .admin-card__role {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  margin-bottom: 8px;
}

body:not(.home) .stats-band .stat-item { padding: 28px 20px; text-align: center; }
body:not(.home) .stats-band__val {
  font-family: var(--font-display);
  font-size: clamp(2.5rem, 5vw, 3.5rem);
  line-height: 1;
  color: var(--color-neutral-900);
  margin: 0;
}
body:not(.home) .stats-band__label {
  font-size: 0.875rem;
  color: var(--color-neutral-500, #6b7280);
  margin-top: 8px;
}
[data-theme="dark"] body:not(.home) .stats-band__val { color: #f0eef1; }

/* ── 9. Fade-in Spoke v6.2 — SUPPRIMÉ EN v10.17.7 ──────────────────────
   Le pattern legacy "body:not(.home) [class*='section--'] :is(…) { opacity:0 }
   puis JS pose .is-inview via IO hardcodé" est abandonné. Il forçait
   toutes les sections Spoke à être invisibles par défaut et comptait
   sur un JS avec liste hardcodée de sélecteurs — chaque nouvelle section
   créait un bug silencieux (texte invisible jusqu'à mise à jour du JS).

   À la place, toutes les pages utilisent maintenant le MÊME squelette
   que la home : sections visibles par défaut, rythme zebra auto
   (:nth-of-type), animations d'entrée réservées aux éléments "stars"
   (metric-card staggered, icônes de hub qui pulsent, etc.).

   Plus futureproof, plus cohérent entre home et pages intérieures. */

/* ============================================================
   v10.17.16 — Schéma « Parcours GEIQ » — TIMELINE VERTICALE
   ────────────────────────────────────────────────────────────
   Refonte complète. On abandonne la timeline horizontale
   (problèmes d'alignement résistants à 4 approches CSS différentes)
   pour une timeline verticale Apple/Stripe-style :
   - Une ligne verticale qui descend
   - Pastilles numérotées accrochées à la ligne
   - Contenu à droite de chaque pastille
   - Pastille méta en bout de ligne à droite

   Avantages :
   - Robuste à n'importe quelle longueur de texte (plus de grille
     à 5 colonnes à maintenir alignée).
   - Mobile-ready gratuit (pattern déjà adapté à la largeur).
   - Sens de lecture naturel = sens du temps (parcours).
   - Plus scalable : 5 ou 7 étapes, aucune différence.

   Structure rendue par [geiq56_parcours] :
     <ol class="dispositif-schema">
       <li class="dispositif-schema__step">
         <div class="dispositif-schema__icon"><svg>…</svg></div>
         <span class="dispositif-schema__num">N</span>
         <h3 class="dispositif-schema__title">…</h3>
         <p class="dispositif-schema__desc">…</p>
         <span class="dispositif-schema__meta">…</span>
       </li>
     </ol>

   Animations :
   - Chaque step apparaît en staggered (opacity + slide-in).
   - La ligne entre N et N+1 se trace au scaleY après le step N.
   - La pastille num fait un "pop" avec easing bouncy à l'apparition,
     puis enchaîne sur un ping infini (effet station/sonar).
   - Un gradient vertical anime la ligne en boucle (effet énergie
     qui circule vers l'étape suivante).
   - Hover : lift subtil sur la pastille + pastille meta intensifiée.
   ============================================================ */

body:not(.home) .dispositif-schema {
  /* v10.17.25 — max-width et margin en !important pour battre la règle
     parente `.section--dispositif-schema > *:not(.glow-canvas) {
     max-width:1280px; margin-inline:auto }` dont la spécificité (0,0,3,0)
     écrase la nôtre (0,0,2,0). Sans ça, la timeline s'étire sur 1280px
     et le contenu (grid aligné à gauche) laisse un vide énorme à droite. */
  list-style: none;
  position: relative;
  max-width: 780px !important;
  margin: clamp(48px, 6vw, 72px) auto 0 !important;
  padding: 24px 0 0;
  counter-reset: geiq-step;
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* ── Step : grid 2 cols (pastille | contenu) + une col auto pour la meta
   ────────────────────────────────────────────────────────────────────
   Layout :
     col 1 = pastille num (56×56)
     col 2 = titre, desc
     col 3 = pastille meta (auto, à droite)
   rows :
     row 1 = icône + meta (side-by-side)
     row 2 = titre
     row 3 = description */
/* v10.17.24 — Grid 2 colonnes (avant : 56/1fr/auto qui poussait la
   pastille meta à l'extrême droite, créant un vide visuel entre le
   contenu et la durée). Le couple titre + pastille est maintenant dans
   un wrapper `.dispositif-schema__head` en flex-row, inline, avec
   flex-wrap en secours si le titre déborde. */
body:not(.home) .dispositif-schema__step {
  position: relative;
  display: grid;
  grid-template-columns: 56px 1fr;
  grid-template-rows: auto auto;
  column-gap: clamp(20px, 3vw, 32px);
  row-gap: 8px;
  padding-bottom: 48px;
  /* Animation d'entrée : glisse + fade */
  opacity: 0;
  transform: translateX(-16px);
  animation: timeline-step-in .7s cubic-bezier(.22, 1, .36, 1) forwards;
}
body:not(.home) .dispositif-schema__step:last-child {
  padding-bottom: 0;
}

/* Delays staggered : le parcours se révèle étape par étape. */
body:not(.home) .dispositif-schema__step:nth-child(1) { animation-delay: .05s; }
body:not(.home) .dispositif-schema__step:nth-child(2) { animation-delay: .25s; }
body:not(.home) .dispositif-schema__step:nth-child(3) { animation-delay: .45s; }
body:not(.home) .dispositif-schema__step:nth-child(4) { animation-delay: .65s; }
body:not(.home) .dispositif-schema__step:nth-child(5) { animation-delay: .85s; }

@keyframes timeline-step-in {
  to { opacity: 1; transform: none; }
}

/* ── La ligne verticale entre pastille N et pastille N+1 ──
   Dessinée via ::before positionné absolu, collé au centre de la
   colonne 1 (pastille 56px → centre = 28px → ligne 2px = left 27px).
   Deux animations :
     1. timeline-line-draw : scaleY 0 → 1 (la ligne apparaît)
     2. timeline-line-flow : gradient qui remonte (énergie qui coule) */
body:not(.home) .dispositif-schema__step:not(:last-child)::before {
  content: "";
  position: absolute;
  left: 27px;
  top: 64px;                      /* bas pastille (56) + 8px respiration */
  bottom: -8px;                   /* recouvre le gap vers le step suivant */
  width: 2px;
  background: linear-gradient(
    to bottom,
    var(--color-primary) 0%,
    rgba(227, 0, 67, .7) 30%,
    rgba(227, 0, 67, .35) 70%,
    var(--color-primary) 100%
  );
  background-size: 100% 200%;
  background-position: 0 0;
  border-radius: 2px;
  transform: scaleY(0);
  transform-origin: top center;
  animation:
    timeline-line-draw .8s cubic-bezier(.22, 1, .36, 1) forwards,
    timeline-line-flow 3.2s linear infinite .8s;
  z-index: 0;
}

body:not(.home) .dispositif-schema__step:nth-child(1):not(:last-child)::before { animation-delay: .35s, 1.15s; }
body:not(.home) .dispositif-schema__step:nth-child(2):not(:last-child)::before { animation-delay: .55s, 1.35s; }
body:not(.home) .dispositif-schema__step:nth-child(3):not(:last-child)::before { animation-delay: .75s, 1.55s; }
body:not(.home) .dispositif-schema__step:nth-child(4):not(:last-child)::before { animation-delay: .95s, 1.75s; }

@keyframes timeline-line-draw {
  to { transform: scaleY(1); }
}
@keyframes timeline-line-flow {
  from { background-position: 0 100%; }
  to   { background-position: 0 -100%; }
}

/* ── Pastille numéro (cercle rouge 56×56) ──
   Col 1, stretch sur les 3 rows du step pour rester collée en haut. */
body:not(.home) .dispositif-schema__num {
  position: relative;
  z-index: 2;
  grid-column: 1;
  grid-row: 1 / span 2;
  align-self: start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
  box-shadow:
    0 4px 18px rgba(227, 0, 67, .3),
    inset 0 1px 0 rgba(255, 255, 255, .28);
  /* Scale pop à l'apparition (bouncy), puis ping infini (sonar). */
  transform: scale(0);
  animation:
    timeline-num-pop .75s cubic-bezier(.34, 1.56, .64, 1) forwards,
    timeline-num-ping 2.8s cubic-bezier(.22, 1, .36, 1) .9s infinite;
  transition:
    transform .45s cubic-bezier(.34, 1.56, .64, 1),
    box-shadow .3s ease;
}

@keyframes timeline-num-pop {
  to { transform: scale(1); }
}
@keyframes timeline-num-ping {
  0%   { box-shadow: 0 4px 18px rgba(227,0,67,.3), 0 0 0 0   rgba(227,0,67,.5), inset 0 1px 0 rgba(255,255,255,.28); }
  60%  { box-shadow: 0 4px 18px rgba(227,0,67,.3), 0 0 0 16px rgba(227,0,67,0),  inset 0 1px 0 rgba(255,255,255,.28); }
  100% { box-shadow: 0 4px 18px rgba(227,0,67,.3), 0 0 0 0   rgba(227,0,67,0),   inset 0 1px 0 rgba(255,255,255,.28); }
}

/* Delays staggered : chaque pastille pop juste avant que son step
   n'apparaisse, puis le ping démarre en cascade. */
body:not(.home) .dispositif-schema__step:nth-child(1) .dispositif-schema__num { animation-delay: .05s, .90s; }
body:not(.home) .dispositif-schema__step:nth-child(2) .dispositif-schema__num { animation-delay: .25s, 1.15s; }
body:not(.home) .dispositif-schema__step:nth-child(3) .dispositif-schema__num { animation-delay: .45s, 1.40s; }
body:not(.home) .dispositif-schema__step:nth-child(4) .dispositif-schema__num { animation-delay: .65s, 1.65s; }
body:not(.home) .dispositif-schema__step:nth-child(5) .dispositif-schema__num { animation-delay: .85s, 1.90s; }

/* ── v10.17.24 — Head wrapper : flex-row qui aligne icon + titre + meta
       sur une seule ligne. flex-wrap permet à la pill de retomber sous
       le titre si celui-ci est trop long. */
body:not(.home) .dispositif-schema__head {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin: 6px 0 0;
}

/* ── Icône (inline dans le head) ── */
body:not(.home) .dispositif-schema__icon {
  display: inline-grid;
  place-items: center;
  width: 26px;
  height: 26px;
  color: var(--color-primary);
  flex-shrink: 0;
  transition: transform .6s cubic-bezier(.34, 1.56, .64, 1);
}
body:not(.home) .dispositif-schema__icon > svg {
  display: block;
  width: 26px;
  height: 26px;
}
body:not(.home) .dispositif-schema__step:hover .dispositif-schema__icon {
  transform: rotate(360deg) scale(1.1);
}

/* ── v10.17.25 — Titre étape aligné sur la norme du site
       (feature-card, actu-card, job-card…) : Instrument Serif,
       1.2rem, weight 400. Avant : 1.375rem/600 = trop gros/gras,
       cassait l'uniformité visuelle des H3 de cartes. */
body:not(.home) .dispositif-schema__title {
  text-align: left;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 400;
  color: var(--color-neutral-900);
  margin: 0;
  letter-spacing: -0.01em;
  line-height: 1.3;
}

/* ── Description (row 2, toute la col 2) ── */
body:not(.home) .dispositif-schema__desc {
  grid-column: 2;
  grid-row: 2;
  text-align: left;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--color-neutral-600);
  margin: 0;
  max-width: 60ch;
}

/* ── v10.17.24 — Pastille meta (Semaine 1 / Mois 1 / Sortie…)
       Inline dans __head, collée au titre. Flex-wrap retombe sous
       le titre si celui-ci est trop long. */
body:not(.home) .dispositif-schema__meta {
  padding: 5px 12px;
  display: inline-block;
  font-size: .75rem;
  font-weight: 600;
  color: var(--color-primary);
  background: rgba(227, 0, 67, .08);
  border: 1px solid rgba(227, 0, 67, .18);
  border-radius: var(--radius-full);
  letter-spacing: .04em;
  text-transform: uppercase;
  white-space: nowrap;
  margin: 0;
  transition:
    background .25s ease,
    border-color .25s ease,
    transform .25s ease;
}

/* ── Hover interactions — subtiles, pro ── */
body:not(.home) .dispositif-schema__step:hover .dispositif-schema__num {
  transform: scale(1.06);
  box-shadow:
    0 6px 26px rgba(227, 0, 67, .45),
    inset 0 1px 0 rgba(255, 255, 255, .35);
}
body:not(.home) .dispositif-schema__step:hover .dispositif-schema__meta {
  background: rgba(227, 0, 67, .14);
  border-color: rgba(227, 0, 67, .32);
  transform: translateY(-1px);
}

/* ── Responsive : mobile ≤ 600px ──
   Pastille 44px, meta passe sous le titre, typo réduite. */
@media (max-width: 600px) {
  body:not(.home) .dispositif-schema {
    max-width: 100%;
    padding: 16px 0 0;
  }
  body:not(.home) .dispositif-schema__step {
    grid-template-columns: 44px 1fr;
    grid-template-rows: auto auto;
    column-gap: 16px;
    row-gap: 6px;
    padding-bottom: 36px;
  }
  body:not(.home) .dispositif-schema__num {
    grid-row: 1 / span 2;
    width: 44px;
    height: 44px;
    font-size: 1.2rem;
  }
  body:not(.home) .dispositif-schema__step:not(:last-child)::before {
    left: 21px;
    top: 52px;
  }
  body:not(.home) .dispositif-schema__head {
    gap: 10px;
  }
  body:not(.home) .dispositif-schema__icon {
    width: 22px;
    height: 22px;
  }
  body:not(.home) .dispositif-schema__icon > svg {
    width: 22px;
    height: 22px;
  }
  body:not(.home) .dispositif-schema__title {
    font-size: 1.0625rem;
  }
  body:not(.home) .dispositif-schema__desc {
    font-size: 0.875rem;
  }
  body:not(.home) .dispositif-schema__meta {
    font-size: .6875rem;
    padding: 4px 10px;
  }
}

/* ── Accessibilité : respect prefers-reduced-motion ── */
@media (prefers-reduced-motion: reduce) {
  body:not(.home) .dispositif-schema__step,
  body:not(.home) .dispositif-schema__step:not(:last-child)::before,
  body:not(.home) .dispositif-schema__num {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
  body:not(.home) .dispositif-schema__step:hover .dispositif-schema__num,
  body:not(.home) .dispositif-schema__step:hover .dispositif-schema__icon,
  body:not(.home) .dispositif-schema__step:hover .dispositif-schema__meta {
    transform: none;
  }
}

/* ============================================================
   v6.3.3 — Section « Choisissez votre GEIQ » (switcher sur Spoke)
   Réutilise le shortcode [geiq56_switcher] de la homepage dans
   /le-dispositif/. Conteneur minimaliste : la section fournit
   juste le rythme (padding, titres) — le switcher garde ses
   panels/couleurs propres.
   ============================================================ */
body:not(.home) .section--dispositif-switcher {
  /* v6.3.6 : padding top conservé, bottom RÉDUIT pour éviter la bande vide
     avant le footer (Julien : "deux bandes qui séparent les sections"). Le
     footer commence directement après, on garde juste un coussin visuel. */
  padding: clamp(48px, 6vw, 96px) clamp(20px, 4vw, 48px) clamp(32px, 4vw, 56px);
  /* v6.3.4 : fond BLANC (et non grey-soft) pour conserver l'alternance
     blanc/gris de la page. Sinon la section fusionne visuellement avec
     la section--alt.section--trio qui la précède → impression de "gros vide". */
  background: #fff;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  margin-bottom: 0;
}
/* v6.3.6 : sur /le-dispositif/, le switcher est la DERNIÈRE section avant
   le footer. On supprime tout margin/padding parasite qui créerait un gap. */
body:not(.home) .section--dispositif-switcher + * {
  margin-top: 0;
}
body:not(.home) .section--dispositif-switcher:last-of-type {
  margin-bottom: 0;
  padding-bottom: clamp(24px, 3vw, 40px);
}
[data-theme="dark"] body:not(.home) .section--dispositif-switcher {
  background: transparent;
}
body:not(.home) .section--dispositif-switcher::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 40% at 20% 0%, rgba(227, 0, 67, 0.04), transparent 60%),
    radial-gradient(ellipse 60% 40% at 80% 100%, rgba(10, 108, 201, 0.04), transparent 60%);
  pointer-events: none;
  z-index: 0;
}
body:not(.home) .section--dispositif-switcher > * { position: relative; z-index: 1; }

/* Le switcher + les panels sont centrés dans la section */
body:not(.home) .section--dispositif-switcher .geiq-switcher {
  margin: 24px auto 32px;
}
body:not(.home) .section--dispositif-switcher .geiq-panels {
  max-width: 1040px;
  margin: 0 auto;
}

/* Empêcher le glass Spoke (règle §6) de repeindre les .feature-card */
/* à l'intérieur des panels — ils n'existent pas ici, mais au cas où. */
body:not(.home) .section--dispositif-switcher :is(.geiq-panel, .panel-inner, .panel-gen__grid) {
  background: inherit;
}
/* v6.3.4 : la règle dark-mode est déjà positionnée juste après le bloc
   .section--dispositif-switcher ci-dessus. */


/* =========================================================================
   v7.1.1 — FINITIONS HOMEPAGE (2026-04-22)
   -------------------------------------------------------------------------
   9 points de polish remontés par Julien après v7.1. Tout est regroupé ici
   pour un rollback rapide. Rien n'est touché hors homepage (sélecteurs
   body.home ou classes exclusives home).

   1. Eyebrow d'une section toujours centré, même sans .section-header
   2. Hero déjà condensé (édité ligne ~480)
   3. Toggle thème sticky → pill glass 2 positions
   4. Stats-band « Notre impact » → glass au lieu de gris plat
   5. Testimonials → cards même hauteur, plus de border hover
   6. Partners « Ils nous font confiance » → titre + eyebrow centrés
   7. CTA « Prêts à vous lancer » → glass plus marqué + gradient
   8. Actus → titre centré + bouton « Voir toutes les actus » visible
   9. Footer → plus de gap + spotlight visible sur colonnes extrêmes
   ========================================================================= */


/* ── 1. Eyebrow + title auto-centrés (filet de sécurité) ─────────────────
   Certaines sections (partners, actus) n'ont pas de .section-header et le
   .section-eyebrow tombe en text-align:left. On force le centrage quand
   l'eyebrow est enfant direct d'un .container. */
.site-main .section > .container > .section-eyebrow,
.site-main .section > .container > .section-title,
.site-main [class*="section--"] > .container > .section-eyebrow,
.site-main [class*="section--"] > .container > .section-title {
  text-align: center !important;
  margin-inline: auto !important;
}
/* Eyebrow = pill inline, donc on wrap avec un block-level center */
.site-main .section > .container > .section-eyebrow,
.site-main [class*="section--"] > .container > .section-eyebrow {
  display: table;            /* collapse à son contenu, mais respecte margin auto */
  margin-inline: auto !important;
  margin-bottom: var(--space-2);
}


/* ── 3. THEME TOGGLE STICKY → pill glass (remplacement) ─────────────────
   Avant : bouton rond noir plein.
   Après : pill glass 2 positions (soleil / lune), style unifié avec le
   persona-switch + geiq-switcher. Le JS header.js continue de toggle
   data-theme sur <html> — on synchronise juste .is-active depuis le CSS. */
.theme-toggle-sticky {
  position: fixed;
  right: clamp(14px, 2vw, 28px);
  bottom: clamp(14px, 2vw, 28px);
  z-index: 300;
  /* Reset ancien cercle noir */
  width: auto;
  height: auto;
  background: var(--glass-light-bg);
  color: var(--color-neutral-900);
  border: 1px solid var(--glass-light-border);
  border-radius: var(--radius-full);
  padding: 5px;
  cursor: pointer;
  -webkit-backdrop-filter: var(--glass-light-blur);
  backdrop-filter: var(--glass-light-blur);
  box-shadow: var(--glass-light-shadow);
  display: inline-flex;
  align-items: center;
  gap: 2px;
  transition: box-shadow .25s var(--ease-out), transform .2s var(--ease-out);
}
.theme-toggle-sticky:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(26,23,27,.14), 0 0 0 1px rgba(255,255,255,.6) inset;
  background: var(--glass-light-bg);   /* override ancienne règle rouge */
}
/* Dans le markup PHP actuel, les SVGs portent DIRECTEMENT les classes
   .icon-sun / .icon-moon (pas de wrapper span). On les transforme en
   "thumbs" via padding + background, en gardant leur viewBox intact. */
.theme-toggle-sticky .icon-sun,
.theme-toggle-sticky .icon-moon {
  width: 18px !important;
  height: 18px !important;
  padding: 8px;
  box-sizing: content-box;
  border-radius: var(--radius-full);
  color: var(--color-neutral-500);
  display: inline-block !important;   /* force override de l'ancien display:none */
  transition: background .22s var(--ease-out), color .22s var(--ease-out);
}
/* Thumb : icône active = fond blanc (contexte clair) */
html:not([data-theme="dark"]) .theme-toggle-sticky .icon-sun {
  background: var(--color-neutral-0);
  color: var(--color-primary);
  box-shadow: 0 1px 3px rgba(26,23,27,.1);
}
[data-theme="dark"] .theme-toggle-sticky {
  background: var(--glass-dark-bg);
  border-color: var(--glass-dark-border);
  box-shadow: var(--glass-dark-shadow);
  -webkit-backdrop-filter: var(--glass-dark-blur);
  backdrop-filter: var(--glass-dark-blur);
  color: #f0eef1;
}
[data-theme="dark"] .theme-toggle-sticky .icon-sun,
[data-theme="dark"] .theme-toggle-sticky .icon-moon {
  color: rgba(255,255,255,.55);
}
[data-theme="dark"] .theme-toggle-sticky .icon-moon {
  background: rgba(255,255,255,.1);
  color: #f0eef1;
}
[data-theme="dark"] .theme-toggle-sticky:hover {
  background: var(--glass-dark-bg);
  box-shadow: 0 8px 24px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.1) inset;
}
@media (prefers-reduced-motion: reduce) {
  .theme-toggle-sticky { transition: none; }
  .theme-toggle-sticky:hover { transform: none; }
}


/* ── 4. STATS BAND « Notre impact » → glass ─────────────────────────────
   Avant : fond gris plat (--color-neutral-200) + items blancs plein.
   Après : conteneur verre, items verre plus translucide, bord doux.       */
.site-main .stats-band.wp-block-group {
  background: var(--glass-light-bg) !important;
  border: 1px solid var(--glass-light-border) !important;
  box-shadow: var(--glass-light-shadow) !important;
  -webkit-backdrop-filter: var(--glass-light-blur) !important;
  backdrop-filter: var(--glass-light-blur) !important;
  gap: 0 !important;                         /* on passe à des séparateurs verticaux */
}
.site-main .stats-band__item.wp-block-group {
  background: transparent !important;        /* hérite du verre parent */
  border-right: 1px solid rgba(26,23,27,.08) !important;
  padding: clamp(22px, 3vw, 36px) clamp(18px, 2.5vw, 28px) !important;
}
.site-main .stats-band__item.wp-block-group:last-child { border-right: 0 !important; }
[data-theme="dark"] .site-main .stats-band.wp-block-group {
  background: var(--glass-dark-bg) !important;
  border-color: var(--glass-dark-border) !important;
  box-shadow: var(--glass-dark-shadow) !important;
}
[data-theme="dark"] .site-main .stats-band__item.wp-block-group {
  background: transparent !important;
  border-right-color: rgba(255,255,255,.08) !important;
}
@media (max-width: 767px) {
  .site-main .stats-band__item.wp-block-group {
    border-right: 0 !important;
    border-bottom: 1px solid rgba(26,23,27,.08) !important;
  }
  .site-main .stats-band__item.wp-block-group:nth-last-child(-n+2) { border-bottom: 0 !important; }
}


/* ── 5. TESTIMONIALS → cards uniformes, sans hover border rouge ─────────
   Avant : hover ajoutait un liseré rouge parasite + cards de tailles
   différentes selon le quote.
   Après : grid stretch, min-height, hover shadow uniquement.              */
body.home .testimonials-grid.wp-block-columns,
body.home .testimonials-grid.wp-block-group {
  align-items: stretch !important;
  grid-auto-rows: 1fr !important;
}
body.home .testimonial.wp-block-column,
body.home .testimonial.wp-block-group {
  min-height: 280px;
  height: 100%;
}
body.home .testimonial.wp-block-column:hover,
body.home .testimonial.wp-block-group:hover {
  /* Plus de border color shift rouge : juste une élévation + shadow */
  border-color: var(--color-neutral-200) !important;
  box-shadow: 0 14px 40px rgba(26,23,27,.10) !important;
  transform: translateY(-3px);
}
[data-theme="dark"] body.home .testimonial.wp-block-column:hover,
[data-theme="dark"] body.home .testimonial.wp-block-group:hover {
  border-color: rgba(255,255,255,.08) !important;
  box-shadow: 0 14px 40px rgba(0,0,0,.4) !important;
}


/* ── 7. CTA FINAL « Prêts à vous lancer » → glass + gradient ───────────
   Avant : carte centrale gris clair transparente.
   Après : verre renforcé + halo radial + micro-grain via border interne. */
body.home .cta-dark,
body.home .cta-dark.wp-block-group {
  background:
    radial-gradient(ellipse 80% 60% at 0% 0%, rgba(227,0,67,.09), transparent 60%),
    radial-gradient(ellipse 80% 60% at 100% 100%, rgba(10,108,201,.06), transparent 60%),
    var(--glass-light-bg) !important;
  border: 1px solid var(--glass-light-border) !important;
  box-shadow: var(--glass-light-shadow), 0 24px 60px -20px rgba(227,0,67,.12) !important;
  -webkit-backdrop-filter: var(--glass-light-blur) !important;
  backdrop-filter: var(--glass-light-blur) !important;
  padding: clamp(36px, 5vw, 72px) clamp(24px, 4vw, 56px) !important;
  transition: box-shadow .3s var(--ease-out), transform .3s var(--ease-out);
}
body.home .cta-dark:hover {
  transform: translateY(-2px);
  box-shadow: var(--glass-light-shadow), 0 32px 72px -18px rgba(227,0,67,.18) !important;
}
[data-theme="dark"] body.home .cta-dark,
[data-theme="dark"] body.home .cta-dark.wp-block-group {
  background:
    radial-gradient(ellipse 80% 60% at 0% 0%, rgba(227,0,67,.18), transparent 60%),
    radial-gradient(ellipse 80% 60% at 100% 100%, rgba(10,108,201,.12), transparent 60%),
    var(--glass-dark-bg) !important;
  border-color: var(--glass-dark-border) !important;
  box-shadow: var(--glass-dark-shadow), 0 24px 60px -20px rgba(0,0,0,.4) !important;
}


/* ── 8. ACTUS HOMEPAGE → titre centré + bouton visible ─────────────────
   Point 8a : .section-head n'est pas un .section-header, le texte reste à
   gauche. On centre tout le groupe.
   Point 8b : le lien « Voir toutes les actus » tombait en lien blanc sur
   blanc. On le stylise en bouton outline rouge.                           */
body.home .section--actus .section-head {
  text-align: center;
  max-width: 720px;
  margin-inline: auto;
  margin-bottom: clamp(28px, 3vw, 48px);
}
body.home .section--actus .section-eyebrow {
  display: inline-flex !important;
  margin-inline: auto !important;
  margin-bottom: var(--space-2) !important;
}
body.home .section--actus .section-title {
  text-align: center;
  margin-inline: auto;
}
/* Bouton « Voir toutes les actualités » — le markup WP est .section-foot
   (wp-block-buttons) > .wp-block-button.is-style-outline > a.wp-block-button__link.
   On vient écraser le style outline par défaut pour qu'il soit bien visible. */
body.home .section--actus .section-foot.wp-block-buttons {
  justify-content: center !important;
  margin-top: clamp(28px, 3vw, 44px) !important;
}
body.home .section--actus .section-foot .wp-block-button__link,
body.home .section--actus .section-foot.wp-block-buttons .wp-block-button.is-style-outline > .wp-block-button__link {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 13px 28px !important;
  border-radius: var(--radius-md) !important;
  border: 2px solid var(--color-primary) !important;
  color: var(--color-primary) !important;
  background: transparent !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  font-size: 0.9375rem !important;
  text-decoration: none !important;
  box-shadow: none !important;
  transition: background .2s var(--ease-out), color .2s var(--ease-out),
              transform .2s var(--ease-out), box-shadow .2s var(--ease-out) !important;
}
body.home .section--actus .section-foot .wp-block-button__link:hover,
body.home .section--actus .section-foot.wp-block-buttons .wp-block-button.is-style-outline > .wp-block-button__link:hover {
  background: var(--color-primary) !important;
  color: #fff !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(227,0,67,.2) !important;
}
[data-theme="dark"] body.home .section--actus .section-foot .wp-block-button__link {
  color: #ff6b8a !important;
  border-color: #ff6b8a !important;
}
[data-theme="dark"] body.home .section--actus .section-foot .wp-block-button__link:hover {
  background: #ff6b8a !important;
  color: #111018 !important;
}


/* ── 9. FOOTER → spotlight visible sur les 4 colonnes ──────────────────
   Avant : padding-inline 32 + wide-width 1200 → colonnes extrêmes au bord,
   le spotlight canvas est tronqué et on ne sent plus le hover.
   Après : on ramène le grid à l'intérieur avec un gutter plus large, et
   on s'assure qu'aucun enfant ne déborde côté hover.                      */
.site-footer .footer__grid {
  padding-inline: clamp(24px, 5vw, 64px);
  gap: clamp(24px, 4vw, 56px);
  max-width: min(1240px, 96vw);
}
.site-footer .footer__bottom {
  padding-inline: clamp(24px, 5vw, 64px);
  max-width: min(1240px, 96vw);
}
/* Le spotlight canvas dans le footer hérite de .glow-canvas (inset 0).
   On garantit qu'il ne soit pas coupé côté extrêmes : overflow clip
   horizontal mais layer plus large que le grid. */
.site-footer { overflow: clip; }
.site-footer .glow-canvas {
  inset: -40px -60px !important;      /* déborde volontairement hors viewport */
  width: calc(100% + 120px) !important;
  height: calc(100% + 80px) !important;
}
@media (max-width: 1023px) {
  .site-footer .footer__grid { gap: var(--space-4); }
}

/* ═══════════════════════════════════════════════════════════════════
   v7.2.1 — Polish homepage (5 points)
   ═══════════════════════════════════════════════════════════════════ */

/* ─ (1) Toggle persona passait sous le menu sticky ─
   Le header sticky fait ~72 px. On garantit un dégagement franc. */
body.home .hero { padding-top: clamp(108px, 11vw, 148px); }
.persona-switch { margin-top: 4px; }
@media (max-width: 860px) {
  body.home .hero { padding-top: clamp(96px, 16vw, 128px); }
}

/* ─ (2) Cards features même hauteur ─
   Les 3 colonnes features sont des .wp-block-column : on force le même
   rythme vertical, sinon la carte "Recrutement externalisé" écrase les voisines. */
.features-grid.wp-block-columns {
  grid-auto-rows: 1fr !important;
  align-items: stretch !important;
}
.features-grid.wp-block-columns > .feature-card.wp-block-column {
  height: 100% !important;
  display: flex !important;
  flex-direction: column !important;
}
/* le CTA "Candidats / Entreprises" du bas reste collé au bas */
.feature-card.wp-block-column .feature-card__cta,
.feature-card.wp-block-column > :last-child { margin-top: auto !important; }

/* ─ (3a) Logo dans le switcher ─
   Utilise l'image custom-logo WP si présente, sinon fallback texte. */
.geiq-switcher__logo-img {
  display: block;
  height: 22px;
  width: auto;
  max-width: 96px;
  object-fit: contain;
  transition: filter .2s ease, opacity .2s ease;
  opacity: .78;
}
.geiq-switcher__btn--center[aria-selected="true"] .geiq-switcher__logo-img {
  opacity: 1;
}
@media (max-width: 480px) {
  .geiq-switcher__logo-img { height: 18px; max-width: 80px; }
}

/* ─ (3b) Thumb (pastille mobile du switcher) ─
   Quand Multi est actif, on veut plus de contraste / un brin brandé.
   On garde le thumb blanc par défaut ; on adoucit juste le shadow et
   on pousse un liseré bas-droite pour qu'il soit visible sur fond gris. */
.geiq-switcher__thumb {
  box-shadow:
    0 1px 2px rgba(26,23,27,.08),
    0 4px 14px rgba(26,23,27,.10),
    0 0 0 1px rgba(26,23,27,.04) !important;
}
/* Active Multi = liseré primary léger pour "localiser" la sélection */
.geiq-switcher[data-active="multi"] .geiq-switcher__thumb,
.geiq-switcher[data-active="btp"]   .geiq-switcher__thumb {
  box-shadow:
    0 1px 2px rgba(26,23,27,.10),
    0 6px 18px rgba(227,0,67,.12),
    0 0 0 1px rgba(227,0,67,.10) !important;
}

/* ─ (4) Spotlight sur sections blanches homepage ─
   Le DOM homepage pose `.section` / `.section--alt` / `.section--actus`,
   pas les anciennes classes sémantiques (.switcher-section, etc.).
   On permet au JS `page-glow.js` d'attraper ces sections via une
   classe helper `.has-spotlight` posée côté JS. Ici on assure juste
   que .section a un stacking context compatible avec le canvas z-index:-1. */
body.home .section.has-spotlight,
body.home .section--actus.has-spotlight {
  position: relative;
  z-index: 0;
  overflow: hidden;
}

/* ─ (5) Typo titres cartes Actus ─
   17px → 15.5px pour alléger et éviter la sensation d'écrasement
   (le line-clamp à 3 lignes laisse de la respiration). */
.actu-card__title {
  font-size: 15.5px;
  line-height: 1.38;
}
@media (max-width: 640px) {
  .actu-card__title { font-size: 15px; }
}

/* ═══════════════════════════════════════════════════════════════════
   v7.2.3 — KILL TOTAL du block-gap Gutenberg (32px)
   ───────────────────────────────────────────────────────────────────
   v7.2.2 neutralisait en douceur. Insuffisant.
   Ici on assassine la variable CSS `--wp--style--block-gap` et on force
   `margin-block-start: 0 !important` sur TOUT `is-layout-flow` dans le
   <main>. Seul notre CSS explicite dicte le rythme vertical ensuite.
   ═══════════════════════════════════════════════════════════════════ */

/* 1) Assassinat de la variable block-gap partout dans le main */
.site-main .is-layout-flow,
.site-main .wp-block-group-is-layout-flow,
.site-main .wp-block-group.is-layout-flow,
.site-main [class*="section--"],
.site-main .wp-block-group.section,
.site-main .wp-block-group.container,
.site-main .wp-block-group.hero {
  --wp--style--block-gap: 0 !important;
}

/* 2) Kill absolu des margins injectés par Gutenberg entre siblings */
.site-main .is-layout-flow > * + *,
.site-main .wp-block-group-is-layout-flow > * + *,
.site-main .wp-block-group.is-layout-flow > * + *,
.site-main .wp-block-group.is-layout-flow > *,
.site-main [class*="section--"] > *,
.site-main .wp-block-group.section > *,
.site-main .wp-block-group.container > * {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
}

/* 3) Rythme vertical REPRIS sous notre contrôle, uniquement là où c'est
      nécessaire pour la lisibilité. Valeurs sobres, pas de gros vides. */

/* a. Entre le head d'une section (eyebrow+title) et le contenu principal */
.site-main .section .container > .section-header,
.site-main .section .container > .section-head,
.site-main .section .container > .jobs-section-header,
.site-main .section .container > .partners-section-header,
.site-main .section .container > .features-section-header,
.site-main .section .container > .testimonials-section-header,
.site-main .section .container > .actus-section-header,
.site-main .section .container > [class$="-section-header"],
.site-main [class*="section--"] .container > .section-header,
.site-main [class*="section--"] .container > .section-head,
.site-main [class*="section--"] .container > [class$="-section-header"] {
  margin-bottom: clamp(20px, 2.4vw, 36px) !important;
}

/* b. Avant un CTA de fin de section */
.site-main .section .container > .wp-block-buttons,
.site-main .section .container > [class$="section-foot"],
.site-main .section .container > [class*="section-foot"],
.site-main [class*="section--"] .container > .wp-block-buttons,
.site-main [class*="section--"] .container > [class*="section-foot"] {
  margin-top: clamp(20px, 2.5vw, 36px) !important;
}

/* c. À l'intérieur du head (eyebrow → title) : petit filet pour que
      le titre ne colle pas à l'eyebrow (h2 a des margins navigateur qu'on
      vient d'écraser à 0). */
.site-main .jobs-section-header > .section-title,
.site-main .partners-section-header > .section-title,
.site-main .features-section-header > .section-title,
.site-main .testimonials-section-header > .section-title,
.site-main .actus-section-header > .section-title,
.site-main [class*="-section-header"] > .section-title,
.site-main .section-header > .section-title,
.site-main .section-head > .section-title {
  margin-top: clamp(6px, 0.8vw, 12px) !important;
}

/* ═══════════════════════════════════════════════════════════════════
   v7.2.4 — Footer fix propre
   ───────────────────────────────────────────────────────────────────
   Problèmes réglés d'un coup :
   1. Double <footer> imbriqué (wrapper template-part + notre footer)
   2. has-global-padding qui double le padding-inline
   3. Logo trop petit (60px → 120px)
   4. Margins Gutenberg par défaut partout (wp-block-site-logo,
      wp-block-social-links, wp-block-list, wp-block-heading)
   5. Les colonnes en flex-vertical reçoivent un gap parasite
   ═══════════════════════════════════════════════════════════════════ */

/* 1) Le wrapper extérieur <footer class="wp-block-template-part"> est
      injecté par WordPress automatiquement. On le rend transparent côté
      layout pour éviter la double imbrication et tout espace parasite. */
footer.wp-block-template-part {
  display: contents !important;
}

/* 2) Root footer : on reprend le contrôle du padding et on neutralise
      has-global-padding qui s'ajoute sur l'élément. */
.site-footer {
  padding: clamp(48px, 5vw, 72px) 0 var(--space-4) !important;
  margin: 0 !important;
}
.site-footer.has-global-padding {
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.site-footer .footer__grid.has-global-padding {
  padding-left: clamp(24px, 5vw, 64px) !important;
  padding-right: clamp(24px, 5vw, 64px) !important;
}

/* 3) Kill total des margins injectés dans le footer (variable block-gap + *)*/
.site-footer,
.site-footer .wp-block-group,
.site-footer .is-layout-flow,
.site-footer .is-layout-flex,
.site-footer .is-layout-constrained {
  --wp--style--block-gap: 0 !important;
}
.site-footer .wp-block-group > * + *,
.site-footer .wp-block-group > * {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
}

/* 4) Logo footer — 120 px, pas 60 */
.site-footer .footer__logo.wp-block-site-logo {
  margin: 0 0 14px !important;
  width: auto !important;
  max-width: 120px !important;
}
.site-footer .footer__logo img,
.site-footer .footer__logo a,
.site-footer .footer__logo a img {
  width: 120px !important;
  height: auto !important;
  max-width: 120px !important;
  display: block;
}

/* 5) Tagline — espacement contrôlé avant socials */
.site-footer .footer__tagline {
  margin: 0 0 16px !important;
  color: var(--color-neutral-600);
  line-height: 1.55;
  max-width: 320px;
}

/* 6) Colonnes (4 colonnes du grid) : flex vertical bien ordonné,
      sans gap parasite — on contrôle les margins à l'enfant. */
.site-footer .footer__grid > .wp-block-group {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 0 !important;
}

/* 7) Titres de colonne → liens */
.site-footer .footer__col-title {
  margin: 0 0 14px !important;
  font-size: .78rem;
  font-weight: var(--fw-semibold);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--color-neutral-900);
}
.site-footer .footer__links {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.site-footer .footer__links li {
  margin: 0 !important;
  padding: 0 !important;
}
.site-footer .footer__links a {
  color: var(--color-neutral-600);
  text-decoration: none;
  font-size: .9rem;
  transition: color .15s;
}
.site-footer .footer__links a:hover { color: var(--color-primary); }

/* 8) Social links — icônes propres, carrées, hover primary
      v7.2.5 : fond semi-transparent pour laisser passer le spotlight */
.site-footer .footer__socials {
  list-style: none !important;
  padding: 0 !important;
  margin: 4px 0 0 !important;
  display: flex !important;
  gap: 10px !important;
  align-items: center;
}
.site-footer .footer__socials .wp-social-link {
  width: 34px !important;
  height: 34px !important;
  margin: 0 !important;
  padding: 0 !important;
  background: rgba(255, 255, 255, 0.55) !important;
  border: 1px solid rgba(26, 23, 27, 0.08) !important;
  border-radius: var(--radius-md, 8px) !important;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, border-color .15s, transform .15s;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.site-footer .footer__socials .wp-social-link:hover {
  background: var(--color-primary) !important;
  border-color: var(--color-primary) !important;
  transform: translateY(-2px);
}
.site-footer .footer__socials .wp-social-link a,
.site-footer .footer__socials .wp-block-social-link-anchor {
  width: 100%;
  height: 100%;
  padding: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.site-footer .footer__socials .wp-social-link svg {
  width: 16px;
  height: 16px;
  fill: var(--color-neutral-600) !important;
  transition: fill .15s;
}
.site-footer .footer__socials .wp-social-link:hover svg {
  fill: #fff !important;
}

/* 9) Barre du bas : padding-top pour le border, et paragraphes propres */
.site-footer .footer__bottom {
  margin-top: clamp(32px, 4vw, 48px) !important;
  padding-top: 20px !important;
  border-top: 1px solid rgba(227, 0, 67, .08);
}
.site-footer .footer__bottom p {
  margin: 0 !important;
}

/* 10) Responsive — mobile propre */
@media (max-width: 860px) {
  .site-footer .footer__grid {
    grid-template-columns: 1fr 1fr !important;
    gap: clamp(24px, 4vw, 40px) !important;
  }
}
@media (max-width: 560px) {
  .site-footer .footer__grid {
    grid-template-columns: 1fr !important;
    gap: 28px !important;
  }
  .site-footer .footer__bottom {
    flex-direction: column !important;
    text-align: center;
    align-items: center !important;
    gap: 8px;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   v7.2.8 — Spotlight footer OFF par défaut
   ───────────────────────────────────────────────────────────────────
   Décision : le footer actuel a un fond gris, donc le spotlight rouge
   n'a pas sa place ici (il est réservé aux fonds blancs pour garder
   la charte cohérente). Tout le dispositif radial-gradient reste
   codé et opérationnel — il se réactive en ajoutant la classe
   `.glow-enabled` sur `.site-footer` (HTML ou JS). Le JS ne poussera
   les variables `--glow-mx/my/a` que dans ce cas.

   Quand le footer repassera en blanc : ajouter `glow-enabled` sur
   le <footer> dans parts/footer.html et ce bloc fera le reste.
   ═══════════════════════════════════════════════════════════════════ */
.site-footer {
  /* Kill de tout résidu spotlight */
  background: rgba(249, 250, 251, 0.96) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
[data-theme="dark"] .site-footer {
  background: rgba(26, 23, 27, 0.96) !important;
}
/* Canvas éventuellement injecté par l'ancienne version : on le masque */
.site-footer > .glow-canvas { display: none !important; }

/* v7.2.7 bloc doublon retiré en v10.15.16 — le spotlight du footer
   est géré par le bloc v10.15.14 en fin de fichier (source de vérité
   unique, avec le multiplicateur --footer-glow-a). */


/* ═══════════════════════════════════════════════════════════════════
   v7.2.9 — POLISH HOMEPAGE
   ───────────────────────────────────────────────────────────────────
   1. Toggle switcher : quand "Multi" est actif, le pouce bascule
      sur la droite en dark gris. Le texte "Multi" était rendu en
      gris foncé sur fond dark → illisible. On force le blanc.
      Note : le JS (header.js) pose la classe .is-active, pas
      [aria-selected] → l'ancienne règle ligne 2568 ne matchait pas.
   2. Carrousel partenaires : logos agrandis (28 → 36 px) pour plus
      de lisibilité + écartement avec le titre de la section.
   ═══════════════════════════════════════════════════════════════════ */

/* ── 1. Toggle Multi : texte blanc quand actif ── */
.geiq-switcher__btn[data-val="multi"].is-active,
.geiq-switcher__btn[data-val="multi"].is-active span,
.geiq-switcher__btn[data-val="multi"][aria-selected="true"] {
  color: #fff !important;
}
/* Cohérence : "BTP" actif déjà en rouge (ligne 1741), on laisse */

/* ── 2. Partenaires : logos plus grands + espace avant carrousel ── */
.partner-logo__icon {
  width: 36px !important;
  height: 36px !important;
}
.partner-logo__name {
  font-size: 0.95rem !important;
  letter-spacing: .005em;
}
/* Espace respirable entre "X entreprises adhérentes" et le marquee */
.partners-section .marquee-wrap,
.partners-section__marquee,
.section--partners .marquee-wrap {
  margin-top: clamp(32px, 4vw, 56px) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v7.3.0 — APERÇU BLOCS GEIQ56 DANS L'ÉDITEUR GUTENBERG
   ───────────────────────────────────────────────────────────────────
   Wrapper rendu par ServerSideRender dans l'éditeur. Donne un léger
   cadre + fond pour que le client comprenne qu'il s'agit d'un bloc
   dynamique (contenu généré par WordPress, non éditable texte à
   texte dans ce cadre-là — il faut passer par les menus dédiés).
   ═══════════════════════════════════════════════════════════════════ */
.geiq56-block-preview {
  position: relative;
  border: 1px dashed #dadde2;
  border-radius: 6px;
  padding: 10px 12px;
  background: #fafbfc;
}
.geiq56-block-preview::before {
  content: "Aperçu — contenu dynamique GEIQ56";
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: #6c727a;
  text-transform: uppercase;
  letter-spacing: .08em;
  margin-bottom: 6px;
}


/* ═══════════════════════════════════════════════════════════════════
   v7.3.2 — Polish homepage (6 points)
   ═══════════════════════════════════════════════════════════════════ */

/* ── (1) Hero : espace CTA ↔ cartes métriques — v10.15.2
   Ce bloc imposait avant un rotate d'origine. v10.15+ : plus de rotate,
   cartes droites. On garde juste la margin-top de sécurité.            */
/* [géré par le bloc v10.15.2 en fin de fichier, plus de règle ici] */


/* ── (2) Stats-band : recentrage vertical des chiffres
   Le pattern déclare layout:flex + verticalAlignment:center, mais WP
   ne génère pas toujours le justify-content adapté. On force le flex
   column + centrage sur l'axe principal pour équilibrer haut/bas.    */
.stats-band__item,
.stats-band__item.wp-block-group {
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  align-items: center !important;
  padding: var(--space-4) var(--space-3) !important;
  min-height: 128px;
}
.stats-band__item .stats-band__val {
  margin-bottom: 4px !important;
}


/* ── (3) Eyebrow : espaces entre mots + point rouge lisible
   letter-spacing 0.12em + uppercase écrasaient l'espace naturel entre
   les mots → "ILSNOUSFONTCONFIANCE". On ajoute un word-spacing, on
   élargit le gap avec le point rouge, et on grossit un peu le point. */
.section-eyebrow,
.eyebrow {
  gap: 10px !important;
  word-spacing: 0.18em !important;
  padding: 6px 18px !important;
}
.section-eyebrow::before,
.eyebrow::before {
  width: 7px !important;
  height: 7px !important;
  flex-shrink: 0;
}


/* ── (5a) Header : glass plus transparent
   Avant : .78 → trop opaque, on ne voyait plus la parallaxe de la home.
   Après : .55 au repos, .62 au scroll (lisibilité sur les sections blanches). */
.site-header__inner.wp-block-group {
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(22px) saturate(1.6) !important;
  -webkit-backdrop-filter: blur(22px) saturate(1.6) !important;
  box-shadow:
    0 2px 18px rgba(26,23,27,.06),
    0 0 0 1px rgba(255,255,255,.45),
    inset 0 1px 0 rgba(255,255,255,.75) !important;
}
.site-header.is-scrolled .site-header__inner.wp-block-group {
  background: rgba(255,255,255,.62) !important;
  backdrop-filter: blur(26px) saturate(1.8) !important;
  -webkit-backdrop-filter: blur(26px) saturate(1.8) !important;
}


/* ── (5b) Header : "Voir les offres" = vrai bouton pill rouge
   [geiq56_header_cta] rend <a class="nav-cta">. Les styles existants
   ciblaient .wp-block-navigation-item.nav-cta (jamais matché). On crée
   un vrai bouton pill comme dans la maquette.                         */
.site-header__inner a.nav-cta,
.header-cta-wrap a.nav-cta {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 9px 18px !important;
  background: var(--color-primary) !important;
  color: #fff !important;
  font-family: var(--font-body) !important;
  font-size: var(--font-body-sm-size) !important;
  font-weight: var(--fw-semibold) !important;
  text-decoration: none !important;
  border-radius: var(--radius-full) !important;
  box-shadow: 0 2px 10px rgba(227,0,67,.22), 0 0 0 1px rgba(227,0,67,.12) !important;
  transition: background .18s, box-shadow .18s, transform .18s !important;
  white-space: nowrap !important;
}
.site-header__inner a.nav-cta:hover,
.header-cta-wrap a.nav-cta:hover {
  background: var(--color-primary-dark, #b8003a) !important;
  color: #fff !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(227,0,67,.28), 0 0 0 1px rgba(227,0,67,.18) !important;
}
.site-header__inner a.nav-cta span[aria-hidden] {
  font-size: 1em;
  line-height: 1;
  transition: transform .18s;
}
.site-header__inner a.nav-cta:hover span[aria-hidden] {
  transform: translateX(2px);
}


/* ── (5c) Header : social icons simples + rouge au survol
   Avant : fond coloré (brand) rempli au hover (LinkedIn bleu, FB bleu…).
   Après : icône seule en neutre → rouge GEIQ56 au survol, cohérent
   avec la ligne graphique du site (et avec le footer).                */
.site-header__inner .social-links__item {
  border: none !important;
  background: transparent !important;
  color: var(--color-neutral-600) !important;
}
.site-header__inner .social-links__item::before {
  display: none !important;   /* on retire le remplissage coloré brand */
}
.site-header__inner .social-links__item::after {
  display: none !important;   /* on retire l'anneau autour */
}
.site-header__inner .social-links__item:hover {
  color: var(--color-primary) !important;
  background: transparent !important;
  transform: translateY(-1px);
}
.site-header__inner .social-links__item:hover svg {
  transform: scale(1.1);
}
[data-theme="dark"] .site-header__inner .social-links__item {
  color: rgba(255,255,255,.75) !important;
}
[data-theme="dark"] .site-header__inner .social-links__item:hover {
  color: #ff6b8a !important;
}


/* ── (6) Newsletter : bloc dédié, look glass + primary
   Rendu par le shortcode [geiq56_newsletter]. Section pleine largeur
   avec carte centrée (max-width 760px), fond primary dégradé, input
   + bouton inline sur desktop, stacked sur mobile.                     */
.section--newsletter {
  padding-block: clamp(48px, 6vw, 88px);
}
.newsletter-card {
  position: relative;
  max-width: 760px;
  margin-inline: auto;
  padding: clamp(28px, 4vw, 48px) clamp(24px, 4vw, 56px);
  border-radius: var(--radius-xl);
  background:
    radial-gradient(ellipse at top left, rgba(255,255,255,.18), transparent 60%),
    linear-gradient(135deg, #e30043 0%, #c20038 100%);
  color: #fff;
  box-shadow: 0 12px 36px rgba(227,0,67,.22), inset 0 1px 0 rgba(255,255,255,.18);
  overflow: hidden;
}
.newsletter-card::before {
  content: '';
  position: absolute;
  top: -40%; right: -20%;
  width: 60%; aspect-ratio: 1;
  background: radial-gradient(circle, rgba(255,255,255,.08) 0%, transparent 60%);
  pointer-events: none;
}
.newsletter-card__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
  padding: 5px 14px;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #fff;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.28);
  border-radius: var(--radius-full);
  word-spacing: .15em;
}
.newsletter-card__eyebrow::before {
  content: '';
  width: 6px; height: 6px; border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 8px rgba(255,255,255,.6);
}
.newsletter-card__title {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 3vw, 2.4rem);
  line-height: 1.1;
  font-weight: 400;
  margin: 0 0 .5em;
  color: #fff;
}
.newsletter-card__sub {
  font-size: 1rem;
  line-height: 1.55;
  color: rgba(255,255,255,.85);
  margin: 0 0 clamp(18px, 2.5vw, 28px);
  max-width: 56ch;
}
.newsletter-form {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: stretch;
}
.newsletter-form__input {
  flex: 1 1 260px;
  min-width: 0;
  padding: 14px 18px;
  font-size: 1rem;
  font-family: inherit;
  color: var(--color-neutral-900);
  background: #fff;
  border: 1.5px solid transparent;
  border-radius: var(--radius-md);
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  transition: box-shadow .2s, border-color .2s;
}
.newsletter-form__input::placeholder {
  color: var(--color-neutral-400);
}
.newsletter-form__input:focus {
  outline: none;
  border-color: #ffd2df;
  box-shadow: 0 0 0 4px rgba(255,255,255,.25), 0 2px 8px rgba(0,0,0,.08);
}
.newsletter-form__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 24px;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-primary);
  background: #fff;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0,0,0,.12);
  transition: transform .18s, box-shadow .18s, background .18s, color .18s;
}
.newsletter-form__btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0,0,0,.18);
  background: var(--color-neutral-900);
  color: #fff;
}
.newsletter-form__btn:active { transform: translateY(0); }
.newsletter-form__btn span { transition: transform .18s; }
.newsletter-form__btn:hover span { transform: translateX(2px); }
.newsletter-card__legal {
  margin: 14px 0 0;
  font-size: .8125rem;
  color: rgba(255,255,255,.7);
  line-height: 1.4;
}
.newsletter-card__legal a {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.newsletter-card__feedback {
  margin: 14px 0 0;
  padding: 10px 14px;
  font-size: .9375rem;
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.28);
  border-radius: var(--radius-md);
  color: #fff;
}
.newsletter-card__feedback--error {
  background: rgba(0,0,0,.24);
  border-color: rgba(255,255,255,.35);
}
@media (max-width: 560px) {
  .newsletter-form { flex-direction: column; }
  .newsletter-form__btn { justify-content: center; }
}
[data-theme="dark"] .newsletter-card {
  box-shadow: 0 12px 36px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.18);
}


/* ═══════════════════════════════════════════════════════════════════
   v7.3.3 — Polish homepage (round 2, retours Julien)
   ───────────────────────────────────────────────────────────────────
   (a) Cartes hero : encore +10px pour ne plus jamais toucher les CTA
   (b) Header "Voir les offres" rétrécit au scroll (ne déborde plus)
   (c) Header glass ENCORE plus transparent (.55 → .32 au repos)
   (d) Section-eyebrows = copie EXACTE du hero eyebrow (dot rouge
       lumineux + animation blink). Règle unifiée.
   (e) Newsletter card → look GLASSY LIGHT (verre, pas rose)
   (f) Section--newsletter = fond gris (reprend l'alternance)
   (g) Footer repasse en blanc + spotlight souris RÉACTIVÉ
       (la classe glow-enabled est ajoutée dans parts/footer.html)
   ═══════════════════════════════════════════════════════════════════ */

/* ── (a) Hero metrics — règle déplacée en v10.15.2 (bloc unique en fin
   de fichier pour éviter les cascades contradictoires). */


/* ── (b) Header CTA : rétrécit quand le header scroll-shrink */
.site-header.is-scrolled .site-header__inner a.nav-cta,
.site-header.is-scrolled .header-cta-wrap a.nav-cta {
  padding: 6px 14px !important;
  font-size: .8125rem !important;
  gap: 4px !important;
}
/* Sécurité viewport étroit : jamais de débordement */
@media (max-width: 1100px) {
  .site-header__inner a.nav-cta,
  .header-cta-wrap a.nav-cta {
    padding: 7px 14px !important;
    font-size: .8125rem !important;
  }
}
@media (max-width: 860px) {
  .site-header__inner a.nav-cta,
  .header-cta-wrap a.nav-cta {
    padding: 6px 12px !important;
    font-size: .78rem !important;
  }
  .site-header__inner a.nav-cta span[aria-hidden] { display: none !important; }
}


/* ── (c) Header glass : passe encore plus discret */
.site-header__inner.wp-block-group {
  background: rgba(255,255,255,.32) !important;
  backdrop-filter: blur(24px) saturate(1.7) !important;
  -webkit-backdrop-filter: blur(24px) saturate(1.7) !important;
  box-shadow:
    0 2px 14px rgba(26,23,27,.05),
    0 0 0 1px rgba(255,255,255,.35),
    inset 0 1px 0 rgba(255,255,255,.55) !important;
}
.site-header.is-scrolled .site-header__inner.wp-block-group {
  background: rgba(255,255,255,.48) !important;
  backdrop-filter: blur(28px) saturate(1.9) !important;
  -webkit-backdrop-filter: blur(28px) saturate(1.9) !important;
}


/* ── (d) Section eyebrow = jumeau du hero eyebrow
   Rappel : hero__eyebrow a un dot rouge brillant + animation blink.
   Les section-eyebrows n'avaient qu'un petit point terne à opacity .7
   sans halo. On aligne intégralement la déco pour que TOUS les
   titres de section aient exactement le même rendu. */
.section-eyebrow,
.eyebrow {
  gap: 10px !important;
  word-spacing: .18em !important;
  padding: 6px 18px !important;
}
.section-eyebrow::before,
.eyebrow::before {
  width: 6px !important;
  height: 6px !important;
  /* v7.4.1 — opacity retirée : `opacity: 1 !important` battait la
     keyframe `blink` (cascade CSS : !important prime sur animation).
     Résultat : dot figé au lieu de respirer. */
  background: var(--color-primary) !important;
  box-shadow: 0 0 8px rgba(227,0,67,.7) !important;
  animation: blink 2.5s ease-in-out infinite !important;
  flex-shrink: 0;
}
@media (prefers-reduced-motion: reduce) {
  .section-eyebrow::before,
  .eyebrow::before { animation: none !important; }
}


/* ── (e) Newsletter card : look glassy light (verre transparent)
   On jette le dégradé rouge plein et on passe à un verre crème/rosé
   très subtil, posé sur le fond gris de la section. Typo et CTA
   restent dans la gamme rouge pour garder l'ancrage brand.          */
.newsletter-card {
  /* Reset du gradient rouge : on part d'un vrai verre */
  background:
    radial-gradient(ellipse at top left,
      rgba(255,255,255,.55) 0%, transparent 55%),
    linear-gradient(135deg,
      rgba(255,255,255,.85) 0%,
      rgba(255,229,236,.78) 100%) !important;
  color: var(--color-neutral-900) !important;
  border: 1px solid rgba(227,0,67,.12) !important;
  backdrop-filter: blur(18px) saturate(1.4) !important;
  -webkit-backdrop-filter: blur(18px) saturate(1.4) !important;
  box-shadow:
    0 18px 48px rgba(26,23,27,.08),
    0 0 0 1px rgba(255,255,255,.65),
    inset 0 1px 0 rgba(255,255,255,.85) !important;
}
.newsletter-card::before {
  background: radial-gradient(circle,
    rgba(227,0,67,.08) 0%, transparent 60%) !important;
}
.newsletter-card__eyebrow {
  color: var(--color-primary) !important;
  background: rgba(227,0,67,.08) !important;
  border-color: rgba(227,0,67,.22) !important;
}
.newsletter-card__eyebrow::before {
  background: var(--color-primary) !important;
  box-shadow: 0 0 8px rgba(227,0,67,.7) !important;
}
.newsletter-card__title {
  color: var(--color-neutral-900) !important;
}
.newsletter-card__title em,
.newsletter-card__title strong {
  color: var(--color-primary) !important;
}
.newsletter-card__sub {
  color: var(--color-neutral-600) !important;
}
.newsletter-form__input {
  background: #fff !important;
  border: 1.5px solid rgba(227,0,67,.18) !important;
  color: var(--color-neutral-900) !important;
}
.newsletter-form__input:focus {
  border-color: var(--color-primary) !important;
  box-shadow: 0 0 0 4px rgba(227,0,67,.15), 0 2px 8px rgba(0,0,0,.06) !important;
}
.newsletter-form__btn {
  background: var(--color-primary) !important;
  color: #fff !important;
  box-shadow: 0 2px 10px rgba(227,0,67,.25) !important;
}
.newsletter-form__btn:hover {
  background: var(--color-neutral-900) !important;
  color: #fff !important;
  box-shadow: 0 6px 18px rgba(26,23,27,.25) !important;
}
.newsletter-card__legal {
  color: var(--color-neutral-500) !important;
}
.newsletter-card__legal a {
  color: var(--color-primary) !important;
}
.newsletter-card__feedback {
  background: rgba(255,255,255,.7) !important;
  border: 1px solid rgba(227,0,67,.2) !important;
  color: var(--color-neutral-900) !important;
}
.newsletter-card__feedback--error {
  background: rgba(255,229,236,.9) !important;
  border-color: rgba(227,0,67,.35) !important;
  color: #8b0024 !important;
}


/* ── (f) Section newsletter = fond gris (comme les autres sections alternées) */
.section--newsletter,
.wp-block-group.section--newsletter {
  background: var(--color-neutral-50) !important;
}
[data-theme="dark"] .section--newsletter,
[data-theme="dark"] .wp-block-group.section--newsletter {
  background: rgba(26,23,27,.6) !important;
}


/* ── (g) Footer : retour en blanc pur + spotlight souris ON
   On override la règle v7.2.8 qui forçait le gris. La classe
   glow-enabled (ajoutée dans parts/footer.html) active le dégradé
   radial qui suit --glow-mx/my/a poussées par page-glow.js. */
/* v10.15.14 — Footer bg + glow refactorés pour utiliser --footer-bg
   et --footer-glow-a (au lieu de couleurs hardcodées). Permet au
   bloc :has() v10.15.13 de piloter à la fois :
     · le fond (blanc ou gris)
     · l'intensité du spotlight (1 ou 0)
   en une seule source de vérité, via des variables CSS. */
.site-footer,
.site-footer.glow-enabled {
  background: var(--footer-bg) !important;
}
.site-footer.glow-enabled {
  background:
    radial-gradient(
      circle at var(--glow-mx, 50%) var(--glow-my, 50%),
      rgba(227, 0, 67, calc(var(--glow-a, 0) * var(--footer-glow-a, 1) * 0.22)) 0%,
      rgba(227, 0, 67, calc(var(--glow-a, 0) * var(--footer-glow-a, 1) * 0.12)) 18%,
      rgba(227, 0, 67, calc(var(--glow-a, 0) * var(--footer-glow-a, 1) * 0.04)) 42%,
      rgba(227, 0, 67, 0) 68%
    ),
    var(--footer-bg) !important;
  transition: background .15s ease-out;
}
[data-theme="dark"] .site-footer.glow-enabled {
  background:
    radial-gradient(
      circle at var(--glow-mx, 50%) var(--glow-my, 50%),
      rgba(227, 0, 67, calc(var(--glow-a, 0) * var(--footer-glow-a, 1) * 0.28)) 0%,
      rgba(227, 0, 67, calc(var(--glow-a, 0) * var(--footer-glow-a, 1) * 0.14)) 20%,
      rgba(227, 0, 67, calc(var(--glow-a, 0) * var(--footer-glow-a, 1) * 0.04)) 44%,
      rgba(227, 0, 67, 0) 70%
    ),
    var(--footer-bg) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v7.3.4 — HOTFIX retours Ju : trois vraies causes identifiées
   ───────────────────────────────────────────────────────────────────
   (1) Cartes hero qui touchent les CTA = règles d'origine 1480-1483
       qui posent translateY(-6px) sur la carte 2 EN PERMANENCE, pas
       seulement au hover. On neutralise le translateY d'origine.
   (2) Eyebrow "Nos partenaires" collé au dot = WordPress applique
       display:block au <p class="has-text-align-center">, ce qui tue
       le flex gap. Fix : display:inline-flex !important + larger dot.
   (3) Newsletter "rubis transparent" = on garde le ROUGE mais en
       mode gemme translucide (rgba + blur + reflets), pas dégradé.
   ═══════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════
   v10.15.3 — CARTES HERO : bloc de vérité unique
   ───────────────────────────────────────────────────────────────────
   Objectifs :
     · AUCUN rotate/tilt (décision client : effet "clown" jugé non
       conforme à un site clean).
     · Animation d'entrée staggered (fade + monte) classe, unique,
       qui ne vient pas polluer la position au repos.
     · Les 4 cartes ont TOUTES la même largeur (peu importe la taille
       du chiffre). En flex : width fixe + flex-grow:0 + flex-shrink:0.
     · Desktop : 4 cartes en ligne, même largeur.
     · ≤ 767 px : 1 COLONNE (pas 2x2 — décision client).
     · Vraie respiration CTA ↔ cartes : margin-block-start redondant
       sur .hero__metrics-wrap ET .hero__metrics (au cas où le
       post_content est recomposé sans le wrap).
   Règles d'or :
     · Ne jamais remettre `transform: rotate(...)` ailleurs.
     · Ne jamais déclarer un autre margin-top sur .hero__metrics.
     · Voir docs/GUIDE-CARTES-HERO.md avant toute modif.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Espace vertical CTA ↔ cartes (source de vérité unique) ──
   IMPORTANT : on utilise padding-block-start (PAS margin-top), parce
   que :
     1) le post_content live contient l'ancien HTML du pattern, donc
        le <div class="hero__metrics-wrap"> n'existe pas dans le DOM ;
     2) le parent `.hero` est `is-layout-flex`, et WordPress injecte
        automatiquement un reset `.is-layout-flex > * { margin-block-
        start: 0 }` qui tuerait un margin-top. Le padding, lui, n'est
        JAMAIS affecté par ces resets block-supports. Il fonctionne
        quel que soit le mode d'affichage du parent. */
.hero__metrics,
.hero__metrics.wp-block-group,
.hero .hero__metrics,
.hero .hero__metrics.wp-block-group {
  padding-block-start: clamp(72px, 10vw, 140px) !important;
  margin-block-start: 0 !important;
}
/* Si on remet un jour le .hero__metrics-wrap dans le rendu (pattern
   + shortcode régénérés dans le post_content), on porte le padding
   sur le wrap et on neutralise celui des enfants → zéro double. */
.hero__metrics-wrap,
.hero .hero__metrics-wrap {
  padding-block-start: clamp(72px, 10vw, 140px) !important;
  margin-block-start: 0 !important;
}
.hero__metrics-wrap .hero__metrics,
.hero__metrics-wrap .hero__metrics.wp-block-group {
  padding-block-start: 0 !important;
}

/* ── Transform reset total (tue toutes les cascades historiques) ── */
.metric-card,
.metric-card.wp-block-group,
.hero__metrics .metric-card,
.hero__metrics .metric-card.wp-block-group,
.metric-card--1, .metric-card--2, .metric-card--3, .metric-card--4,
.hero__metrics .metric-card--1,
.hero__metrics .metric-card--2,
.hero__metrics .metric-card--3,
.hero__metrics .metric-card--4 {
  transform: none;
}

/* ── Pastille quand elle contient un SVG (v10.15.5) ──
   Le stroke du SVG hérite de currentColor, donc la couleur est celle
   définie par .metric-card__icon--red/green/dark/blue. On uniformise
   juste la mise en forme pour que le SVG soit parfaitement centré,
   sans héritage de font-size (qui n'a aucun effet sur un SVG mais peut
   créer du line-height parasite). */
.metric-card__icon.metric-card__icon--svg {
  font-size: 0 !important;
  line-height: 0 !important;
  padding: 0 !important;
}
.metric-card__icon.metric-card__icon--svg svg {
  display: block;
  width: 22px;
  height: 22px;
}

/* ── Largeur uniforme des 4 cartes ── */
.hero__metrics {
  align-items: stretch !important;       /* hauteur auto = même hauteur */
  justify-content: center !important;
  gap: clamp(12px, 1.4vw, 20px) !important;
  flex-wrap: wrap;
}
.hero__metrics .metric-card,
.hero__metrics .metric-card.wp-block-group {
  flex: 0 0 clamp(170px, 18vw, 210px) !important;
  width: clamp(170px, 18vw, 210px) !important;
  max-width: clamp(170px, 18vw, 210px) !important;
  min-width: 0 !important;
}

/* ── Animation d'entrée staggered (classe, pas clown) ──
   Chaque carte apparaît décalée : fade-in + montée de 14px + léger
   scale. Aucun rotate. Dure ~650 ms / carte. Respecte prefers-
   reduced-motion. */
@keyframes geiq-metric-enter {
  from {
    opacity: 0;
    transform: translateY(14px) scale(.985);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.hero__metrics .metric-card {
  opacity: 0;
  animation: geiq-metric-enter .65s cubic-bezier(.22, 1, .36, 1) forwards;
  animation-delay: calc(120ms * var(--metric-index, 0));
  transition: transform .35s cubic-bezier(.22, 1, .36, 1),
              box-shadow .35s ease,
              border-color .25s ease;
}
.hero__metrics .metric-card--1 { --metric-index: 0; }
.hero__metrics .metric-card--2 { --metric-index: 1; }
.hero__metrics .metric-card--3 { --metric-index: 2; }
.hero__metrics .metric-card--4 { --metric-index: 3; }

/* Hover : lift propre (pas de rotation) + accentuation de l'ombre */
.metric-card:hover,
.metric-card.wp-block-group:hover,
.hero__metrics .metric-card:hover,
.hero__metrics .metric-card.wp-block-group:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 36px rgba(26,23,27,.10),
              0 0 0 1.5px rgba(196,30,58,.18);
  border-color: rgba(196,30,58,.28);
}

/* ── Responsive ────────────────────────────────────────────── */
@media (max-width: 1023px) {
  .hero__metrics .metric-card,
  .hero__metrics .metric-card.wp-block-group {
    flex: 0 0 clamp(160px, 22vw, 200px) !important;
    width: clamp(160px, 22vw, 200px) !important;
    max-width: clamp(160px, 22vw, 200px) !important;
  }
}
@media (max-width: 767px) {
  /* 1 COLONNE pleine largeur, pas 2x2 — demande client */
  html[data-persona="candidate"] .hero__metrics.persona-view--candidate,
  html[data-persona="company"]   .hero__metrics.persona-view--company {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: unset !important;
    align-items: center !important;
  }
  .hero__metrics {
    gap: 12px !important;
  }
  .hero__metrics .metric-card,
  .hero__metrics .metric-card.wp-block-group {
    flex: 0 0 auto !important;
    width: min(92%, 420px) !important;
    max-width: 420px !important;
    /* sur mobile on garde la disposition verticale "icône dessus" */
    flex-direction: column !important;
    text-align: left !important;
    padding: 16px 20px !important;
  }
  .hero__metrics-wrap,
  .hero .hero__metrics-wrap {
    margin-block-start: clamp(56px, 10vw, 96px) !important;
  }
}
@media (max-width: 479px) {
  /* même logique, juste padding et largeur ajustés */
  html[data-persona="candidate"] .hero__metrics.persona-view--candidate,
  html[data-persona="company"]   .hero__metrics.persona-view--company {
    grid-template-columns: unset !important;
  }
  .hero__metrics .metric-card,
  .hero__metrics .metric-card.wp-block-group {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ── Reduced motion : on tue l'animation d'entrée ── */
@media (prefers-reduced-motion: reduce) {
  .hero__metrics .metric-card,
  .hero__metrics .metric-card.wp-block-group {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}


/* ── (2) Section eyebrow : forcer le inline-flex que WP casse ────────
   WordPress sérialise <p class="section-eyebrow"> avec alignement
   centré en ajoutant has-text-align-center qui force display:block.
   On réécrit le sélecteur au cas où, avec !important partout pour
   gagner toutes les cascades (builder, thème Ollie, patches v6/v7). */
p.section-eyebrow,
.section-eyebrow,
.section-header > .section-eyebrow,
.section-eyebrow.has-text-align-center,
p.section-eyebrow.has-text-align-center {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  padding: 6px 18px !important;
  word-spacing: .18em !important;
  text-align: center !important;
}
p.section-eyebrow::before,
.section-eyebrow::before,
.section-header > .section-eyebrow::before,
.section-eyebrow.has-text-align-center::before,
p.section-eyebrow.has-text-align-center::before {
  content: '' !important;
  display: inline-block !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: var(--color-primary) !important;
  box-shadow: 0 0 8px rgba(227,0,67,.7) !important;
  animation: blink 2.5s ease-in-out infinite !important;
  /* v7.4.1 — opacity 1 !important supprimée : elle tuait l'animation blink. */
  flex-shrink: 0 !important;
  margin: 0 !important;
}
@media (prefers-reduced-motion: reduce) {
  p.section-eyebrow::before,
  .section-eyebrow::before { animation: none !important; }
}


/* ── (3) Newsletter "rubis transparent" : rouge translucide + blur ──
   On revient sur un fond ROUGE (demande Ju) mais en mode gemme :
   rgba + backdrop-filter pour voir le fond gris de la section à
   travers, reflets blancs en haut-gauche, bordure subtile.         */
/* ═══════════════════════════════════════════════════════════════════
   v10.15.7 — Newsletter card : VERRE POLI (décision Ju 23/04)
   ───────────────────────────────────────────────────────────────────
   Avant : gros bloc rouge criard qui cassait le ton "hyper clean" du
   site. Après : frosted glass presque blanc, bordure fine blanche,
   backdrop-filter pour laisser passer le fond de la section.
   Le seul accent rouge reste le bouton CTA (primary) pour guider
   l'œil vers l'action.
   Dark mode géré via variables CSS — pas de guerre de spécificité.
   ═══════════════════════════════════════════════════════════════════ */
:root {
  --newsletter-bg:        rgba(255, 255, 255, 0.58);
  --newsletter-border:    rgba(255, 255, 255, 0.72);
  --newsletter-shadow:    0 24px 60px rgba(26, 23, 27, 0.08),
                          0 8px 24px rgba(26, 23, 27, 0.04),
                          inset 0 1px 0 rgba(255, 255, 255, 0.85);
  --newsletter-highlight: rgba(196, 30, 58, 0.06);
  --newsletter-text:      var(--color-neutral-900, #1a171b);
  --newsletter-text-soft: var(--color-neutral-500, #696573);
  --newsletter-input-bg:  rgba(255, 255, 255, 0.85);
  --newsletter-input-bd:  rgba(26, 23, 27, 0.10);
}
[data-theme="dark"] {
  --newsletter-bg:        rgba(255, 255, 255, 0.06);
  --newsletter-border:    rgba(255, 255, 255, 0.12);
  --newsletter-shadow:    0 24px 60px rgba(0, 0, 0, 0.35),
                          0 8px 24px rgba(0, 0, 0, 0.18),
                          inset 0 1px 0 rgba(255, 255, 255, 0.08);
  --newsletter-highlight: rgba(196, 30, 58, 0.10);
  --newsletter-text:      #f0eef1;
  --newsletter-text-soft: rgba(255, 255, 255, 0.55);
  --newsletter-input-bg:  rgba(255, 255, 255, 0.04);
  --newsletter-input-bd:  rgba(255, 255, 255, 0.10);
}

.newsletter-card {
  background:
    radial-gradient(ellipse 60% 40% at 85% 90%,
      var(--newsletter-highlight) 0%,
      transparent 70%),
    var(--newsletter-bg) !important;
  backdrop-filter: blur(28px) saturate(1.6) !important;
  -webkit-backdrop-filter: blur(28px) saturate(1.6) !important;
  color: var(--newsletter-text) !important;
  border: 1px solid var(--newsletter-border) !important;
  box-shadow: var(--newsletter-shadow) !important;
}
.newsletter-card::before {
  background: radial-gradient(circle,
    rgba(196, 30, 58, 0.08) 0%, transparent 65%) !important;
  opacity: .7 !important;
}
/* Eyebrow : pill neutre, dot accent pour signaler "newsletter" */
.newsletter-card__eyebrow {
  color: var(--newsletter-text) !important;
  background: rgba(255, 255, 255, 0.5) !important;
  border: 1px solid rgba(26, 23, 27, 0.08) !important;
}
[data-theme="dark"] .newsletter-card__eyebrow {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.08) !important;
}
.newsletter-card__eyebrow::before {
  background: var(--color-primary) !important;
  box-shadow: 0 0 10px rgba(196, 30, 58, 0.55) !important;
}
/* Typo : couleur selon thème, accent primary sur <em>/<strong> */
.newsletter-card__title {
  color: var(--newsletter-text) !important;
}
.newsletter-card__title em,
.newsletter-card__title strong {
  color: var(--color-primary) !important;
  font-style: normal !important;
}
.newsletter-card__sub {
  color: var(--newsletter-text-soft) !important;
}
/* Input : glass aussi, bordure subtile, focus = accent primary */
.newsletter-form__input {
  background: var(--newsletter-input-bg) !important;
  border: 1.5px solid var(--newsletter-input-bd) !important;
  color: var(--newsletter-text) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.newsletter-form__input::placeholder {
  color: var(--newsletter-text-soft) !important;
  opacity: .7;
}
.newsletter-form__input:focus {
  border-color: var(--color-primary) !important;
  box-shadow: 0 0 0 4px rgba(196, 30, 58, 0.15),
              0 2px 8px rgba(26, 23, 27, 0.06) !important;
  background: rgba(255, 255, 255, 0.92) !important;
}
[data-theme="dark"] .newsletter-form__input:focus {
  background: rgba(255, 255, 255, 0.08) !important;
}
/* Bouton CTA : seul accent rouge de la carte, reste cohérent avec
   les autres btn-primary du site (variable --color-primary = #c41e3a) */
.newsletter-form__btn {
  background: var(--color-primary) !important;
  color: #fff !important;
  box-shadow: 0 6px 18px rgba(196, 30, 58, 0.22),
              0 0 0 1px rgba(196, 30, 58, 0.15) !important;
  border: none !important;
}
.newsletter-form__btn:hover {
  background: var(--color-primary-dark, #8b1228) !important;
  color: #fff !important;
  box-shadow: 0 10px 24px rgba(196, 30, 58, 0.32),
              0 0 0 1px rgba(196, 30, 58, 0.25) !important;
}
.newsletter-card__legal {
  color: var(--newsletter-text-soft) !important;
}
.newsletter-card__legal a {
  color: var(--color-primary) !important;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.newsletter-card__legal a:hover {
  color: var(--color-primary-dark, #8b1228) !important;
}
.newsletter-card__feedback {
  background: rgba(255, 255, 255, 0.55) !important;
  border: 1px solid rgba(26, 23, 27, 0.08) !important;
  color: var(--newsletter-text) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
[data-theme="dark"] .newsletter-card__feedback {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.1) !important;
}
.newsletter-card__feedback--error {
  background: rgba(196, 30, 58, 0.08) !important;
  border-color: rgba(196, 30, 58, 0.25) !important;
  color: var(--color-primary) !important;
}
[data-theme="dark"] .newsletter-card__feedback--error {
  background: rgba(196, 30, 58, 0.12) !important;
  color: #ff8fa8 !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v7.3.5 — HOTFIX 2 : cartes plus basses + eyebrows = clone hero__pill
   ───────────────────────────────────────────────────────────────────
   Vraie source des eyebrows différents : bloc "TITRES DE SECTION
   alignement unifié" ligne 2960 du CSS live qui force :
     - text-transform: uppercase
     - letter-spacing: 0.12em
     - font-size: .75rem
     - box-shadow (en plus de la bordure → rendu "bouton")
     - dot SANS halo et SANS animation
   → d'où l'apparence "NOS PARTENAIRES" en bloc compressé.

   Le hero__pill est en casse normale, gris moyen, pill nette, dot
   rouge avec halo + animation blink. On clone ces propriétés sur
   .section-eyebrow avec max de spécificité + !important.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Cartes hero : encore plus bas (Ju : "descends le cadre") ── */
.hero__metrics {
  margin-top: clamp(100px, 10vw, 140px) !important;
}
/* Padding-bottom sur la section hero pour que les cartes aient de
   l'air en-dessous aussi, qu'elles ne collent pas au switcher. */
.hero,
.section--hero,
body.home .hero {
  padding-bottom: clamp(48px, 6vw, 96px) !important;
}


/* ── Eyebrows : clone 1:1 de .hero__pill ───────────────────────────
   v7.4.0 — Fix centrage "Nos partenaires" : bascule en display:flex
   (block-level) + margin-inline:auto + width:fit-content. Sur
   block-level, margin:auto centre horizontalement (vs inline-flex).
   Cibles exhaustives + !important pour écraser la règle 2960.        */
p.section-eyebrow,
.section-eyebrow,
.section-eyebrow.has-text-align-center,
p.section-eyebrow.has-text-align-center,
.section-header > .section-eyebrow,
.eyebrow {
  /* Layout : pill block-level centrée — margin-inline:auto fonctionne */
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  padding: 6px 16px !important;
  width: fit-content !important;
  max-width: 100% !important;
  margin-block: 0 var(--space-4) !important;
  margin-inline: auto !important;

  /* Typo : EXACT hero__pill (casse normale, pas uppercase !) */
  font-family: var(--font-body) !important;
  font-size: .8125rem !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  word-spacing: normal !important;
  line-height: 1 !important;

  /* Couleurs : EXACT hero__pill */
  color: var(--color-neutral-500) !important;
  background: var(--color-neutral-50) !important;
  border: 1px solid var(--color-neutral-200) !important;
  border-radius: var(--radius-full) !important;
  box-shadow: none !important;
  text-align: center !important;
}

/* Exception : dans le switcher BTP/GEIQ/Multi, les eyebrows doivent
   rester alignées à gauche (pas centrées) car le panel est en flex
   column avec alignement left. */
.geiq-panel .section-eyebrow,
.geiq-panel__content > .section-eyebrow {
  margin-inline: 0 !important;
}

/* Dot rouge : EXACT hero__pill::before
   v7.4.0 — Retrait de opacity:1 !important qui tuait l'animation blink.
   L'animation module l'opacité entre 1 et .4 ; sans ce retrait, le dot
   restait figé à opacity:1 (pas de halo pulsant). */
p.section-eyebrow::before,
.section-eyebrow::before,
.section-eyebrow.has-text-align-center::before,
p.section-eyebrow.has-text-align-center::before,
.section-header > .section-eyebrow::before,
.eyebrow::before {
  content: '' !important;
  display: inline-block !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: var(--color-primary) !important;
  box-shadow: 0 0 8px rgba(227,0,67,.7) !important;
  animation: blink 2.5s ease-in-out infinite !important;
  flex-shrink: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
}
@media (prefers-reduced-motion: reduce) {
  p.section-eyebrow::before,
  .section-eyebrow::before,
  .eyebrow::before { animation: none !important; }
}

/* Dark mode : adaptation couleurs */
[data-theme="dark"] p.section-eyebrow,
[data-theme="dark"] .section-eyebrow,
[data-theme="dark"] .eyebrow {
  color: rgba(255,255,255,.6) !important;
  background: rgba(255,255,255,.04) !important;
  border-color: rgba(255,255,255,.12) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v7.4.2 — Polish round 3 (feedback Ju 22/04)
   ───────────────────────────────────────────────────────────────────
   (1) Hero metric cards : trop d'air en-dessous par rapport aux autres
       bas-de-section. On rapproche le switcher sans toucher au top.
   (2) Footer : le fond est (re)passé en gris v7.3.3+, donc le spot-
       light radial rouge n'a plus de sens → on le kill définitivement
       (et on laisse la classe glow-enabled si elle existe encore dans
       le markup pour la neutraliser CSS-side, plus besoin d'éditer
       parts/footer.html).
   ═══════════════════════════════════════════════════════════════════ */

/* ── (1) Hero bottom — v10.17.47.
   Anciennement (v7.4.0+) le padding-bottom était mis à 0 avec le
   raisonnement "les cartes ont leur margin-top, le switcher a sa
   marge, inutile d'en rajouter". Mais aujourd'hui ce 0 fait que les
   metric-cards touchent le bord bas de la section hero (pas d'air
   avant la section suivante). On restaure un padding-bottom cohérent
   avec les autres sections du site (clamp 48-96 px). */
.hero,
.section--hero,
body.home .hero {
  padding-bottom: clamp(48px, 6vw, 96px) !important;
}
/* Et on compacte le padding interne du conteneur .hero__metrics : le
   padding-bottom devient 0, on garde 16-24px en haut pour que la carte
   qui remonte (translateY(-6px)) ne frôle pas le CTA du hero. */
.hero__metrics {
  padding: var(--space-3) var(--space-4) 0 !important;
}

/* ── (2) Footer : kill total du spotlight + dark mode propre (v10.15.6)
   ──────────────────────────────────────────────────────────────────
   Bug historique (signalé Ju 23/04) : sur la home, le footer restait
   en blanc même en [data-theme="dark"] parce que la règle
   `body.home .site-footer` (spécificité 0,2,1) battait la règle
   `[data-theme="dark"] .site-footer` (0,1,1) — le sélecteur dark n'était
   jamais assez fort pour override.
   ───────────────────────────────────────────────────────────────────
   Fix propre : on passe par une CSS custom property `--footer-bg`
   définie au niveau :root (light) et overridée au niveau
   [data-theme="dark"]. La cascade se joue au niveau de la variable,
   pas du sélecteur → plus de guerre de spécificité, le sélecteur
   `body.home .site-footer` lit toujours la valeur courante, qui
   bascule automatiquement selon le thème. */
:root {
  --footer-bg: rgba(249, 250, 251, 0.96);
}
[data-theme="dark"] {
  --footer-bg: rgba(26, 23, 27, 0.96);
}
/* v10.15.6 — ancienne règle .site-footer { background: var(--footer-bg) }
   supprimée en v10.15.16 : elle écrasait le radial-gradient du bloc
   v10.15.14 (spec 0,3,0 avec body.home gagnait sur spec 0,2,0 du bloc
   glow-enabled). Résultat : fond plat, pas de spotlight même quand
   la souris survolait le footer. Le fond est maintenant entièrement
   géré par le bloc v10.15.14 — qui lit aussi var(--footer-bg) et
   applique le radial-gradient en layering au-dessus. */
.site-footer {
  transition: background .15s ease-out !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v7.4.3 — Header polish (feedback Ju 22/04)
   ───────────────────────────────────────────────────────────────────
   (1) Bouton CTA "Voir les offres" : version v7.4.0 trop épaisse /
       grossière. On réduit padding, font-size et ombre pour un pill
       plus fin, à la ligne de la nav.
   (2) Dropdown "Nos GEIQ" : le submenu-icon chevron est OK, on ajoute
       juste un padding horizontal un poil plus serré sur l'item parent
       pour éviter qu'il prenne trop de place vs les autres liens.
   ═══════════════════════════════════════════════════════════════════ */

/* ── (1) CTA header : plus fin & plus discret */
.site-header__inner a.nav-cta,
.header-cta-wrap a.nav-cta {
  padding: 6px 14px !important;         /* 9/18 → 6/14  : -33% */
  font-size: 13px !important;            /* ~0.8125rem, tight */
  letter-spacing: 0 !important;
  box-shadow: 0 1px 4px rgba(227,0,67,.18), 0 0 0 1px rgba(227,0,67,.08) !important;
}
.site-header__inner a.nav-cta:hover,
.header-cta-wrap a.nav-cta:hover {
  box-shadow: 0 3px 10px rgba(227,0,67,.22), 0 0 0 1px rgba(227,0,67,.12) !important;
}
.site-header__inner a.nav-cta span[aria-hidden] {
  font-size: .95em !important;
  opacity: .9;
}

/* ── (2) Dropdown parent : léger espace pour le chevron sans alourdir */
.site-header__inner .wp-block-navigation-item.nav-dropdown > .wp-block-navigation-item__content {
  padding-right: 6px !important;
}

/* ── (3) Mobile : sur petit écran, le bouton garde un padding confortable
   (touch target) mais on coupe la font à 12px et le span flèche */
@media (max-width: 640px) {
  .site-header__inner a.nav-cta,
  .header-cta-wrap a.nav-cta {
    padding: 7px 12px !important;
    font-size: 12px !important;
  }
  .site-header__inner a.nav-cta span[aria-hidden] {
    display: none !important;          /* flèche superflue en mobile */
  }
}


/* ═══════════════════════════════════════════════════════════════════
   v7.4.4 — CTA header encore trop gros (feedback Ju 22/04)
   ───────────────────────────────────────────────────────────────────
   Problème : 2 blocs précédents (v7.2.9 + v7.4.3) se chevauchent sur
   les breakpoints tablette + sur .is-scrolled → certains états restent
   à 7/14 ou 13px. On consolide TOUT ici en dernier (source unique de
   vérité), avec padding et typo plus serrés à chaque état.

   Règle finale :
   • base desktop large  : 4px 12px / 12px          ← avant 6/14/13
   • scroll shrink       : 3px 11px / 11.5px        ← avant 6/14/13
   • tablet (<1100px)    : 4px 11px / 12px
   • compact (<860px)    : 4px 10px / 11.5px, flèche off
   • mobile (<640px)     : 5px 10px / 11.5px, flèche off
   ═══════════════════════════════════════════════════════════════════ */

.site-header__inner a.nav-cta,
.header-cta-wrap a.nav-cta {
  padding: 4px 12px !important;
  font-size: 12px !important;
  line-height: 1.35 !important;
  gap: 4px !important;
  box-shadow: 0 1px 3px rgba(227,0,67,.16), 0 0 0 1px rgba(227,0,67,.08) !important;
}
.site-header__inner a.nav-cta span[aria-hidden] {
  font-size: .9em !important;
  margin-left: 1px !important;
}

/* Scrolled header : encore un cran plus tight pour s'aligner sur la
   hauteur réduite du header (logo 26px) */
.site-header.is-scrolled .site-header__inner a.nav-cta,
.site-header.is-scrolled .header-cta-wrap a.nav-cta {
  padding: 3px 11px !important;
  font-size: 11.5px !important;
  box-shadow: 0 1px 2px rgba(227,0,67,.14), 0 0 0 1px rgba(227,0,67,.08) !important;
}

@media (max-width: 1100px) {
  .site-header__inner a.nav-cta,
  .header-cta-wrap a.nav-cta {
    padding: 4px 11px !important;
    font-size: 12px !important;
  }
}
@media (max-width: 860px) {
  .site-header__inner a.nav-cta,
  .header-cta-wrap a.nav-cta {
    padding: 4px 10px !important;
    font-size: 11.5px !important;
  }
  .site-header__inner a.nav-cta span[aria-hidden] { display: none !important; }
}
@media (max-width: 640px) {
  .site-header__inner a.nav-cta,
  .header-cta-wrap a.nav-cta {
    padding: 5px 10px !important;
    font-size: 11.5px !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   12. BURGER MENU v7.8 — glass prononcé + néon rouge animé
   ═══════════════════════════════════════════════════════════════════
   overlayMenu:"always" → WordPress expose le bouton .wp-block-navigation__
   responsive-container-open SUR DESKTOP ET MOBILE. Les anciens styles
   de nav inline (138-370 de ce fichier) ne s'appliquent plus à l'état
   normal (fermé), seulement à l'intérieur de l'overlay.

   Architecture :
   - Burger pill (glass + ring néon qui tourne au hover/ouvert)
   - Fullscreen overlay (backdrop-filter lourd + grille flex-center)
   - Liens en Instrument Serif larges (desktop-like, marchent au mobile)
   - Sous-menus en accordéon avec pulse néon à l'expansion
   - Close button X en haut à droite, même néon
   ═══════════════════════════════════════════════════════════════════ */

/* @property pour animer proprement l'angle du conic-gradient.
   Support : Chrome/Edge 85+, Safari 16.4+, Firefox 128+.
   Fallback : animation ne tourne pas mais le néon reste visible (static). */
@property --geiq-neon-angle {
  syntax: '<angle>';
  inherits: false;
  initial-value: 0deg;
}

@keyframes geiq-neon-spin {
  to { --geiq-neon-angle: 360deg; }
}

@keyframes geiq-neon-flash {
  0%   { opacity: 0;   transform: scale(.96); }
  30%  { opacity: 1;   transform: scale(1.05); }
  100% { opacity: 1;   transform: scale(1); }
}

@keyframes geiq-overlay-fade {
  from { opacity: 0; backdrop-filter: blur(0) saturate(1); }
  to   { opacity: 1; }
}

@keyframes geiq-click-pulse {
  0%, 100% { transform: translateY(0) scale(1); }
  50%      { transform: translateY(-1px) scale(1.09); }
}

@keyframes geiq-menu-item-in {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}


/* ───────────────────────────────────────────────────────────────────
   BURGER BUTTON (toujours visible, desktop + mobile)
   ─────────────────────────────────────────────────────────────────── */

body .site-header__inner .wp-block-navigation__responsive-container-open {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  position: relative !important;
  width: 44px !important;
  height: 44px !important;
  padding: 0 !important;
  margin: 0 0 0 8px !important;
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(14px) saturate(1.6) !important;
  -webkit-backdrop-filter: blur(14px) saturate(1.6) !important;
  border: 1px solid rgba(255,255,255,.55) !important;
  border-radius: 999px !important;
  color: var(--color-neutral-900) !important;
  cursor: pointer !important;
  transition: background .22s ease, border-color .22s ease, transform .22s var(--ease-spring), box-shadow .22s ease !important;
  isolation: isolate;
  outline: none !important;
  font-size: 0 !important; /* neutralise label Gutenberg éventuel */
}

body .site-header__inner .wp-block-navigation__responsive-container-open:hover {
  background: rgba(255,255,255,.8) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 22px rgba(227,0,67,.14), 0 0 0 1px rgba(227,0,67,.25) !important;
}

/* Flash pulse au clic (classe temp. injectée par header.js) */
body .site-header__inner .wp-block-navigation__responsive-container-open.geiq-neon-flash {
  animation: geiq-click-pulse .5s var(--ease-out);
}

/* Neon ring — tourne autour du burger en PERMANENCE (v9.0.2 : plus
   besoin de hover/click pour attirer l'œil, le néon vit toujours). */
body .site-header__inner .wp-block-navigation__responsive-container-open::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  padding: 2px;
  background: conic-gradient(
    from var(--geiq-neon-angle, 0deg),
    transparent 0deg,
    transparent 220deg,
    rgba(227, 0, 67, .18) 255deg,
    #ff1e52 295deg,
    #ffb1c4 315deg,
    #ff1e52 335deg,
    rgba(227, 0, 67, .18) 350deg,
    transparent 360deg
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
  opacity: 1;                                  /* v9.0.2 — always on */
  transition: opacity .28s ease;
  animation: geiq-neon-spin 2.6s linear infinite;
  z-index: 0;
}

/* Glow flou derrière (halo néon) — également permanent mais plus
   discret au repos (.55) ; montre à 0.9 au hover / menu ouvert. */
body .site-header__inner .wp-block-navigation__responsive-container-open::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: inherit;
  background: conic-gradient(
    from var(--geiq-neon-angle, 0deg),
    transparent 0deg,
    transparent 240deg,
    rgba(255, 30, 82, .55) 295deg,
    transparent 360deg
  );
  filter: blur(10px);
  opacity: .55;                                /* v9.0.2 — always on, dim */
  transition: opacity .28s ease;
  animation: geiq-neon-spin 2.6s linear infinite;
  pointer-events: none;
  z-index: -1;
}

/* Boost du halo au hover / focus / menu ouvert (le ring reste à 1) */
body .site-header__inner .wp-block-navigation__responsive-container-open:hover::after,
body .site-header__inner .wp-block-navigation__responsive-container-open:focus-visible::after,
body.geiq-menu-open .site-header__inner .wp-block-navigation__responsive-container-open::after,
body .site-header__inner .wp-block-navigation__responsive-container-open[aria-expanded="true"]::after {
  opacity: .9;
}

/* Icône hamburger — on garde le SVG de Gutenberg, on le style */
body .site-header__inner .wp-block-navigation__responsive-container-open svg {
  width: 20px !important;
  height: 20px !important;
  fill: currentColor !important;
  position: relative;
  z-index: 2;
  transition: transform .25s var(--ease-spring);
}
body.geiq-menu-open .site-header__inner .wp-block-navigation__responsive-container-open svg {
  transform: rotate(90deg) scale(.94);
}

/* Dark mode burger */
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container-open,
[data-theme="dark"] .site-header__inner .wp-block-navigation__responsive-container-open {
  background: rgba(28, 24, 32, .6) !important;
  border-color: rgba(255,255,255,.12) !important;
  color: #f0eef1 !important;
}
[data-theme="dark"] .site-header__inner .wp-block-navigation__responsive-container-open:hover {
  background: rgba(28, 24, 32, .85) !important;
}


/* ───────────────────────────────────────────────────────────────────
   RESET : sur desktop, on MASQUE la nav inline (elle n'existait plus
   qu'en mobile avant). Maintenant overlayMenu="always" → WP cache
   déjà le <ul> hors overlay, mais on sécurise le cas où le thème
   parent la rend tout de même.
   ─────────────────────────────────────────────────────────────────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
  display: none !important;
}


/* ───────────────────────────────────────────────────────────────────
   OVERLAY FULLSCREEN — glass prononcé
   ─────────────────────────────────────────────────────────────────── */

body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open {
  display: flex !important;
  position: fixed !important;
  inset: 0 !important;
  z-index: 9999 !important;
  padding: 0 !important;
  margin: 0 !important;
  /* Glass lourd */
  background:
    radial-gradient(ellipse at 75% 15%, rgba(255, 30, 82, .12), transparent 55%),
    radial-gradient(ellipse at 15% 85%, rgba(255, 30, 82, .08), transparent 55%),
    rgba(252, 250, 251, .82) !important;
  backdrop-filter: blur(36px) saturate(1.75) !important;
  -webkit-backdrop-filter: blur(36px) saturate(1.75) !important;
  animation: geiq-overlay-fade .35s var(--ease-out) both;
  /* v8.0.1 — scroll interne, jamais le body. -webkit-overflow-scrolling
     pour inertie iOS. overscroll-behavior évite que le scroll fuite sur
     le document derrière. */
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  align-items: stretch !important;
  justify-content: stretch !important;
}

[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open {
  background:
    radial-gradient(ellipse at 75% 15%, rgba(255, 30, 82, .18), transparent 55%),
    radial-gradient(ellipse at 15% 85%, rgba(255, 30, 82, .10), transparent 55%),
    rgba(18, 14, 22, .86) !important;
}

/* Dialog inner
   v8.0.1 — Fix mobile scroll :
   • `100dvh` au lieu de `100vh` → tient compte de la barre d'URL iOS/Android.
   • `justify-content: safe center` → centre QUAND ça rentre ; sinon
     bascule sur `flex-start` (pas de top clippé).
   • `height: auto` + `min-height: 100dvh` → le contenu peut dépasser
     la hauteur viewport et l'overlay scrolle naturellement. */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-content {
  width: 100% !important;
  max-width: 960px !important;
  margin: 0 auto !important;
  padding: clamp(72px, 10vh, 120px) clamp(24px, 6vw, 64px) clamp(40px, 8vh, 80px) !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: safe center !important;
  gap: clamp(14px, 2.4vh, 32px) !important;
  height: auto !important;
  min-height: 100dvh !important;
  /* Fallback pour navigateurs qui ne supportent pas dvh (avant Chrome 108) */
  min-height: 100vh !important;
  min-height: 100dvh !important;
  box-sizing: border-box !important;
}


/* ───────────────────────────────────────────────────────────────────
   CLOSE BUTTON (X en haut-droite) — même néon que le burger
   ─────────────────────────────────────────────────────────────────── */

body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close {
  position: fixed !important;
  top: clamp(14px, 2.5vh, 28px) !important;
  right: clamp(14px, 2vw, 32px) !important;
  width: 48px !important;
  height: 48px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  background: rgba(255,255,255,.78) !important;
  backdrop-filter: blur(14px) saturate(1.6) !important;
  -webkit-backdrop-filter: blur(14px) saturate(1.6) !important;
  border: 1px solid rgba(255,255,255,.65) !important;
  border-radius: 999px !important;
  color: var(--color-neutral-900) !important;
  cursor: pointer !important;
  z-index: 10000 !important;
  isolation: isolate;
  transition: transform .2s ease, background .2s ease, box-shadow .2s ease;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  padding: 2px;
  background: conic-gradient(
    from var(--geiq-neon-angle, 0deg),
    transparent 0deg, transparent 220deg,
    rgba(227,0,67,.22) 255deg,
    #ff1e52 295deg,
    #ffb1c4 315deg,
    #ff1e52 335deg,
    rgba(227,0,67,.22) 350deg,
    transparent 360deg
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  animation: geiq-neon-spin 2.6s linear infinite;
  pointer-events: none;
  opacity: .92;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close:hover {
  transform: translateY(-1px) rotate(90deg) !important;
  background: rgba(255,255,255,.92) !important;
  box-shadow: 0 6px 22px rgba(227,0,67,.22) !important;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close svg {
  width: 18px !important; height: 18px !important;
  fill: currentColor !important;
  position: relative; z-index: 2;
}

[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close {
  background: rgba(28, 24, 32, .72) !important;
  border-color: rgba(255,255,255,.14) !important;
  color: #f0eef1 !important;
}


/* ───────────────────────────────────────────────────────────────────
   LISTE DES LIENS dans l'overlay
   ─────────────────────────────────────────────────────────────────── */

body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: clamp(6px, 1.2vh, 14px) !important;
  width: 100% !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Item principal */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item {
  list-style: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  position: relative;
  opacity: 0;
  animation: geiq-menu-item-in .55s var(--ease-spring) forwards;
}
/* Stagger les entrées */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(1)  { animation-delay: .08s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(2)  { animation-delay: .14s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(3)  { animation-delay: .20s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(4)  { animation-delay: .26s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(5)  { animation-delay: .32s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(6)  { animation-delay: .38s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(7)  { animation-delay: .44s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(n+8){ animation-delay: .50s; }

/* Le lien lui-même */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content {
  display: inline-flex !important;
  align-items: center !important;
  gap: 14px !important;
  position: relative !important;
  padding: 14px 22px !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: var(--color-neutral-900) !important;
  font-family: var(--font-display) !important;
  font-weight: 400 !important;
  font-size: clamp(1.6rem, 4.2vw, 2.4rem) !important;
  line-height: 1.1 !important;
  letter-spacing: -0.01em !important;
  text-decoration: none !important;
  transition: color .2s ease, transform .22s var(--ease-spring), padding-left .22s ease !important;
  isolation: isolate;
}


/* Hover state : texte + padding */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content:hover,
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content {
  color: var(--color-primary) !important;
  padding-left: 28px !important;
}

/* Dark mode overlay text */
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content {
  color: #f0eef1 !important;
}
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content:hover,
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content {
  color: #ff6b8a !important;
}


/* ───────────────────────────────────────────────────────────────────
   SOUS-MENUS — accordéon dans l'overlay, même néon
   ─────────────────────────────────────────────────────────────────── */

body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-icon {
  display: inline-flex !important;
  align-items: center;
  margin-left: 6px !important;
  opacity: .7 !important;
  transition: transform .3s var(--ease-spring) !important;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-icon svg {
  width: 14px; height: 14px;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.has-child .wp-block-navigation-item__content[aria-expanded="true"]
  .wp-block-navigation__submenu-icon {
  transform: rotate(180deg);
}

/* Conteneur submenu — pas de positioning absolute en mode overlay,
   on le flue sous le parent. */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container {
  position: static !important;
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: none !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 0 0 20px !important;
  margin: 0 !important;
  list-style: none !important;
  transform: none !important;
  overflow: hidden !important;
  /* v9.0.3 — État fermé blindé : on cumule 4 props pour qu'aucun style
     natif Ollie/Gutenberg (position absolute, opacity forcée, etc.) ne
     puisse rendre les sous-items visibles tant que aria-expanded=false.
     Avant : seul max-height:0 → les items fuyaient parfois en overlay
     flottant (screen Ju : GEIQ BTP + GEIQ Multi visibles en pâle
     autour de "Candidats"). */
  max-height: 0 !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transition:
    max-height .45s var(--ease-out),
    opacity .25s ease,
    padding-top .35s ease,
    visibility 0s linear .35s;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.has-child .wp-block-navigation-item__content[aria-expanded="true"]
  + .wp-block-navigation__submenu-container,
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.has-child.is-menu-open > .wp-block-navigation__submenu-container,
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.has-child.geiq-submenu-open > .wp-block-navigation__submenu-container {
  max-height: 600px !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  padding-top: 10px !important;
  transition:
    max-height .45s var(--ease-out),
    opacity .3s ease .05s,
    padding-top .35s ease,
    visibility 0s linear 0s;
}

/* Items du sous-menu */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item {
  list-style: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 10px 18px !important;
  font-family: var(--font-body) !important;
  font-size: clamp(1rem, 2.2vw, 1.25rem) !important;
  font-weight: 500 !important;
  color: var(--color-neutral-600) !important;
  letter-spacing: 0 !important;
}

body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  color: var(--color-primary) !important;
  padding-left: 26px !important;
}

[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  color: rgba(255,255,255,.65) !important;
}
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  color: #ff6b8a !important;
}


/* ───────────────────────────────────────────────────────────────────
   QUAND LE MENU EST OUVERT : on bloque le scroll body
   ─────────────────────────────────────────────────────────────────── */

body.geiq-menu-open {
  overflow: hidden;
  /* v8.0.1 — iOS ≤16 n'honore pas toujours `overflow:hidden` sur body.
     `position:fixed`+`width:100%` fige le scroll underlay de façon fiable. */
  position: fixed;
  width: 100%;
}

/* ───────────────────────────────────────────────────────────────────
   v9.0.3 — Pictos SVG à gauche de chaque item du menu burger
   Les SVG sont injectés par header.js (injectMenuIcons) via la
   classe .geiq-menu-icon, en premier enfant de .wp-block-navigation-
   item__content. L'animation ne joue que quand le menu est ouvert
   (.is-menu-open) — elle se rejoue donc à chaque ouverture.
   ─────────────────────────────────────────────────────────────────── */
.geiq-menu-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex-shrink: 0;
  color: var(--color-neutral-500, #8b8590);
  opacity: 0;
  transform: translateX(-10px) scale(.6) rotate(-15deg);
  transition: color .25s ease, transform .35s var(--ease-spring);
  pointer-events: none;
}
.geiq-menu-icon svg {
  width: 100%;
  height: 100%;
  display: block;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
}
/* Couleur au hover / actif : prend la couleur primary */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content:hover .geiq-menu-icon,
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content .geiq-menu-icon {
  color: var(--color-primary, #e30043);
  transform: translateX(0) scale(1.1) rotate(0deg) !important;
}

/* Taille un chouïa plus petite sur les sous-items */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .geiq-menu-icon {
  width: 18px;
  height: 18px;
}

/* Animation : joue UNIQUEMENT quand le menu est ouvert (la classe
   is-menu-open est toggle sur le container → ré-injection de
   l'animation à chaque ouverture). Stagger synchro avec les items. */
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .geiq-menu-icon {
  animation: geiq-menu-icon-in .65s cubic-bezier(.16,1.2,.3,1) forwards;
}
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(1) .geiq-menu-icon  { animation-delay: .18s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(2) .geiq-menu-icon  { animation-delay: .24s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(3) .geiq-menu-icon  { animation-delay: .30s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(4) .geiq-menu-icon  { animation-delay: .36s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(5) .geiq-menu-icon  { animation-delay: .42s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(6) .geiq-menu-icon  { animation-delay: .48s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(7) .geiq-menu-icon  { animation-delay: .54s; }
body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item:nth-child(n+8) .geiq-menu-icon { animation-delay: .60s; }

@keyframes geiq-menu-icon-in {
  0%   { opacity: 0; transform: translateX(-12px) scale(.55) rotate(-18deg); }
  55%  { opacity: 1; transform: translateX(2px) scale(1.18) rotate(6deg); }
  100% { opacity: 1; transform: translateX(0) scale(1) rotate(0); }
}

/* Dark mode : couleur au repos plus claire pour lisibilité */
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .geiq-menu-icon {
  color: rgba(240, 238, 241, .55);
}
[data-theme="dark"] body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content:hover .geiq-menu-icon {
  color: #ff6b8a;
}


/* ───────────────────────────────────────────────────────────────────
   v9.0.1 — Fix overlay burger clippé dans la pill header (mobile)
   Le bug : `.site-header__inner` a `backdrop-filter: blur(...)` pour
   le glass de la pill flottante. Per CSS spec, un ancêtre avec
   backdrop-filter (ou filter/transform/perspective) devient le
   containing block pour tous ses descendants `position: fixed`.
   → L'overlay du menu, qui est enfant de la pill dans le DOM, se
   retrouvait positionné relativement à la pill (62 px de haut) au
   lieu du viewport. Symptôme : "le menu se déroule mais est caché".
   Le fix : retirer le backdrop-filter de la pill SEULEMENT quand le
   menu est ouvert. Comme l'overlay couvre tout l'écran, le flou
   derrière la pill ne sert à rien pendant l'ouverture — zéro
   régression visuelle, la containing block redevient le viewport.
   ─────────────────────────────────────────────────────────────────── */
body.geiq-menu-open .site-header__inner.wp-block-group,
body.geiq-menu-open .site-header.is-scrolled .site-header__inner.wp-block-group {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}


/* ───────────────────────────────────────────────────────────────────
   MOBILE — menu compact v8.0.1
   À ≤640px on réduit la typo + le padding des items pour que les
   8 entrées (+ le sous-menu "Nos GEIQ" déplié) tiennent dans le
   viewport sans overflow cache-misère.
   ─────────────────────────────────────────────────────────────────── */

/* v9.0.2 — Menu mobile : typo plus sobre (Instrument Serif reste,
   mais taille raisonnable), items bien espacés pour éviter la
   superposition visuelle au hover (le ring néon ::after débordait
   sur l'item voisin quand les items étaient collés).
   - font-size descend de ~1.7rem → 1.15rem (≤640) et 1.05rem (≤420)
   - gap container passe de 2px → 8px (aération)
   - line-height explicite 1.2 pour tuer toute marge parasite
   - padding serré vertical (6-7px) pour compactage sans superposition */
@media (max-width: 640px) {
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__responsive-container-content {
    /* On colle en haut plutôt que centrer : lecture naturelle. */
    justify-content: flex-start !important;
    padding: clamp(80px, 12vh, 110px) 22px clamp(40px, 8vh, 60px) !important;
    gap: 10px !important;
  }

  /* Items principaux — compacts, classe, pas de chevauchement */
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation-item__content {
    font-size: 1.15rem !important;
    line-height: 1.2 !important;
    padding: 7px 16px !important;
    letter-spacing: -0.005em !important;
  }

  /* Items sous-menu */
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
    font-size: 1rem !important;
    line-height: 1.2 !important;
    padding: 6px 14px !important;
  }

  /* Container : gap qui respire entre items (fini le ::after qui
     dépasse visuellement sur l'item suivant). */
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__container {
    gap: 8px !important;
  }

  /* Sous-menu : gap interne resserré, reste logique */
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__submenu-container {
    gap: 4px !important;
    padding-left: 16px !important;
  }

  /* Close button légèrement plus petit */
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__responsive-container-close {
    width: 44px !important;
    height: 44px !important;
    top: 14px !important;
    right: 14px !important;
  }
}

@media (max-width: 420px) {
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation-item__content {
    font-size: 1.05rem !important;
    padding: 6px 14px !important;
  }

  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
    font-size: .92rem !important;
    padding: 5px 12px !important;
  }
}


/* ───────────────────────────────────────────────────────────────────
   RESPONSIVE : le cluster header__right reste lisible (social / CTA
   rétrécissent pour laisser place au burger sur les petits écrans).
   ─────────────────────────────────────────────────────────────────── */

@media (max-width: 640px) {
  /* Social icons : on retire pour libérer l'espace */
  body .site-header__inner .site-header__right .social-links {
    display: none !important;
  }
  /* Burger plus compact */
  body .site-header__inner .wp-block-navigation__responsive-container-open {
    width: 40px !important;
    height: 40px !important;
    margin-left: 6px !important;
  }
}

@media (max-width: 460px) {
  /* Ultra-mobile : on masque le CTA header aussi, il y aura un CTA
     dans le menu overlay — un lien vers /offres/ y est déjà. */
  body .site-header__inner .header-cta-wrap {
    display: none !important;
  }
}


/* ───────────────────────────────────────────────────────────────────
   FALLBACK @property non supporté : animation tourne pas mais néon
   reste visible (opacity) pour les navigateurs pré-2024.
   ─────────────────────────────────────────────────────────────────── */

@supports not (background: conic-gradient(from 0deg, red, blue)) {
  body .site-header__inner .wp-block-navigation__responsive-container-open::before,
  body .site-header__inner .wp-block-navigation__responsive-container-open::after,
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::after {
    background: linear-gradient(135deg, transparent 40%, #ff1e52 50%, transparent 60%) !important;
    animation: none !important;
  }
}

/* Reduced motion : rotation néon off, mais présence visuelle conservée */
@media (prefers-reduced-motion: reduce) {
  body .site-header__inner .wp-block-navigation__responsive-container-open::before,
  body .site-header__inner .wp-block-navigation__responsive-container-open::after,
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation-item__content::after,
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__responsive-container-close::before {
    animation: none !important;
  }
  body .site-header__inner .wp-block-navigation__responsive-container.is-menu-open
    .wp-block-navigation__container > .wp-block-navigation-item {
    animation: none !important;
    opacity: 1 !important;
  }
}



/* ╔══════════════════════════════════════════════════════════════════════╗
   ║  v10.5.0 — MENU DRAWER (CONSOLIDATION CLEAN)                          ║
   ║  ─────────────────────────────────────────────────────────────────── ║
   ║  Les 4 passes v10.4.x ont été supprimées (patches empilés + conflits).║
   ║  Ici UN SEUL bloc, basé sur la VRAIE structure DOM inspectée en live :║
   ║                                                                       ║
   ║    <nav class="geiq56-burger-nav">                                    ║
   ║      <button class="...responsive-container-open">burger</button>     ║
   ║      <div class="...responsive-container">                            ║
   ║        <div class="...responsive-close">                              ║
   ║          <div class="...responsive-dialog">                           ║
   ║            <button class="...responsive-container-close">×</button>   ║
   ║            <div class="...responsive-container-content">              ║
   ║              <ul class="...container">                                ║
   ║                <li class="...item">                                   ║
   ║                  <a class="...item__content">                         ║
   ║                    <span class="...item__label">Accueil</span>        ║
   ║                <li class="...item has-child">                         ║
   ║                  <button class="...item__content ...submenu__toggle"> ║
   ║                    <span class="...item__label">Nos GEIQ</span>       ║
   ║                  <span class="...submenu-icon">▾</span>  ← SIBLING !  ║
   ║                  <ul class="...submenu-container">                    ║
   ║                                                                       ║
   ║  UX choisie : submenu toujours ouvert, chevron caché, "Nos GEIQ"      ║
   ║  devient label de section en petit-caps gris (non-cliquable).         ║
   ║                                                                       ║
   ║  Scoping : `.geiq56-burger-nav` partout pour ne pas dépendre de       ║
   ║  `.is-menu-open` (posée par l'Interactivity API WP au runtime).       ║
   ║  Le néon permanent du BOUTON burger lui-même (L6826+ de ce fichier)   ║
   ║  est CONSERVÉ intact.                                                ║
   ╚══════════════════════════════════════════════════════════════════════╝ */


/* ─── 1. CONTAINER OVERLAY : fixed fullscreen, fade backdrop ────────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container {
  position: fixed !important;
  inset: 0 !important;
  z-index: 1000 !important;
  background: transparent !important;
  padding: 0 !important;
  /* Masqué par défaut (Gutenberg pose .hidden-by-default) */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .25s ease, visibility 0s linear .25s;
}
/* État ouvert — la classe is-menu-open est posée par l'Interactivity API */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container.is-menu-open,
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container.has-modal-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity .25s ease, visibility 0s linear 0s;
}

/* Backdrop (pseudo-element full-screen flouté) */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(26, 23, 27, 0.42);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  will-change: opacity;
  z-index: 0;
}


/* ─── 2. WRAPPER INTERMÉDIAIRE : le `responsive-close` est en fait un
       wrapper conteneur (pas un bouton ×). Il englobe le dialog. ──── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-close {
  position: absolute;
  inset: 0;
  padding: 0 !important;
  background: transparent !important;
  display: block !important;
}


/* ─── 3. DIALOG : le vrai drawer 380px slide depuis la droite ────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-dialog {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 380px;
  max-width: 92vw;
  background: #ffffff;
  border-left: 1px solid rgba(26,23,27,.06);
  box-shadow: -20px 0 40px -10px rgba(26,23,27,.15), -2px 0 8px rgba(26,23,27,.08);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  z-index: 1;
  padding: 0 !important;
  margin: 0 !important;
  /* Slide-in animation */
  transform: translateX(100%);
  transition: transform .35s cubic-bezier(.2, .8, .2, 1);
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
  transform: translateX(0);
}


/* ─── 4. BOUTON CLOSE × — rond en haut-droite ────────────────────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container-close {
  position: absolute !important;
  top: 18px;
  right: 18px;
  z-index: 10;
  width: 36px;
  height: 36px;
  padding: 0 !important;
  margin: 0 !important;
  border: 1px solid rgba(26,23,27,.12) !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: #2a2528 !important;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container-close:hover {
  background: rgba(227,0,67,.08) !important;
  border-color: var(--color-primary) !important;
  color: var(--color-primary) !important;
  transform: rotate(90deg);
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container-close svg {
  width: 16px !important;
  height: 16px !important;
  fill: currentColor !important;
}


/* ─── 5. CONTAINER CONTENT : le wrapper au-dessus de l'<ul> ────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container-content {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  overflow: hidden !important;
  padding: 0 !important;
  margin: 0 !important;
}


/* ─── 6. LISTE DES ITEMS (<ul class="container">) ─────────────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  padding: 72px 0 20px !important; /* 72 = espace pour close en top-right */
  list-style: none !important;
  gap: 2px;
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* Scrollbar custom discrète */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container::-webkit-scrollbar {
  width: 6px;
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container::-webkit-scrollbar-track {
  background: transparent;
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container::-webkit-scrollbar-thumb {
  background: rgba(26,23,27,.12);
  border-radius: 3px;
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container::-webkit-scrollbar-thumb:hover {
  background: rgba(26,23,27,.22);
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container {
  scrollbar-width: thin;
  scrollbar-color: rgba(26,23,27,.12) transparent;
}

/* Bullets hors-jeu sur tous les <ul> et <li> du drawer */
body .site-header__inner .geiq56-burger-nav ul,
body .site-header__inner .geiq56-burger-nav li {
  list-style: none !important;
  list-style-type: none !important;
  padding-inline-start: 0 !important;
}
body .site-header__inner .geiq56-burger-nav li::marker {
  content: none !important;
  font-size: 0 !important;
}


/* ─── 7. ITEMS : <li> wrapper + <a>/<button> content ────────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item {
  width: 100%;
  margin: 0;
  padding: 0 12px;
  /* Pour que le chevron sibling et le submenu-container sibling
     s'alignent correctement dans le <li> */
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}

body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__content {
  display: flex !important;
  flex: 1 1 auto !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 14px !important;
  width: auto !important;
  min-width: 0 !important;
  padding: 12px 16px !important;
  border: none !important;
  border-radius: 10px !important;
  font-family: 'Inter', system-ui, -apple-system, sans-serif !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  color: #2a2528 !important;
  background: transparent !important;
  cursor: pointer !important;
  text-decoration: none !important;
  letter-spacing: 0 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  position: relative !important;
  box-shadow: none !important;
  outline: none !important;
  will-change: background-color, color;
  transition: background-color .18s ease, color .18s ease !important;
}
/* Le span label à l'intérieur : ne pas le styler, laisser flex gap gérer */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__label {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Hover / focus */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__content:hover,
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__content:focus-visible {
  background: rgba(227, 0, 67, 0.06) !important;
  color: var(--color-primary) !important;
}

/* Current item : fond saturé + trait rouge vertical à gauche */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content,
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.current-page-parent > .wp-block-navigation-item__content,
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.current-menu-parent > .wp-block-navigation-item__content {
  background: rgba(227, 0, 67, 0.10) !important;
  color: var(--color-primary) !important;
  font-weight: 600 !important;
}


/* ─── 8. ICÔNE à gauche de chaque item du menu burger ───────────
   v10.17.33 — Bloc RETIRÉ d'ici. Les icônes du drawer sont
   désormais définies UNE SEULE FOIS dans drawer-override.css
   (injecté inline dans <head> via wp_head priorité 999 depuis
   functions.php). Avoir les mêmes règles dans les deux fichiers
   créait un rendu dédoublé sur certains navigateurs (side-effect
   de layering mask-image + background-color:currentColor).
   Fichier canonique : assets/css/drawer-override.css §9. */

/* ─── 9. CHEVRON CACHÉ + SUBMENU TOUJOURS OUVERT (has-child) ──────
   Le chevron est SIBLING de .__content dans le <li>. On le cache
   complètement — l'UX choisie est submenu toujours ouvert + parent
   en label de section. ─────────────────────────────────────────── */

body .site-header__inner .geiq56-burger-nav .wp-block-navigation__submenu-icon {
  display: none !important;
}

/* Parent "Nos GEIQ" = button qui n'est plus interactif → label section */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.has-child > .wp-block-navigation-item__content {
  pointer-events: none !important;
  cursor: default !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: .08em !important;
  color: #8b7c82 !important;
  padding: 22px 16px 6px !important;
  background: transparent !important;
  gap: 0 !important;
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.has-child > .wp-block-navigation-item__content:hover {
  background: transparent !important;
  color: #8b7c82 !important;
}
/* Cacher l'icône ::before pour le label de section (plus propre) */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.has-child > .wp-block-navigation-item__content::before {
  display: none !important;
}

/* Submenu container : toujours ouvert, pas d'animation */
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__submenu-container {
  position: static !important;
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  gap: 2px !important;
  list-style: none !important;
  transform: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  max-height: none !important;
  overflow: visible !important;
  transition: none !important;
  flex: 1 0 100% !important; /* force passage à la ligne sous le parent */
}
body .site-header__inner .geiq56-burger-nav .wp-block-navigation__submenu-container .wp-block-navigation-item {
  padding: 0 12px !important;
}


/* ─── 10. MODE SOMBRE ────────────────────────────────────────── */

[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container::before {
  background: rgba(0,0,0,0.55);
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-dialog {
  background: #1a151a;
  border-left-color: rgba(255,255,255,.06);
  box-shadow: -20px 0 40px -10px rgba(0,0,0,.45), -2px 0 8px rgba(0,0,0,.25);
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__content {
  color: rgba(255,255,255,.82) !important;
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__content:hover {
  background: rgba(227,0,67,0.18) !important;
  color: #ff6b8a !important;
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content {
  background: rgba(227,0,67,0.26) !important;
  color: #ff6b8a !important;
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item.has-child > .wp-block-navigation-item__content {
  color: rgba(255,255,255,.42) !important;
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container-close {
  color: rgba(255,255,255,.7) !important;
  border-color: rgba(255,255,255,.15) !important;
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-container-close:hover {
  background: rgba(227,0,67,.2) !important;
  border-color: #ff6b8a !important;
  color: #ff6b8a !important;
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,.15);
}
[data-theme="dark"] body .site-header__inner .geiq56-burger-nav .wp-block-navigation__container {
  scrollbar-color: rgba(255,255,255,.15) transparent;
}


/* ─── 11. RESPONSIVE mobile ≤ 640px : drawer full-width ─────── */

@media (max-width: 640px) {
  body .site-header__inner .geiq56-burger-nav .wp-block-navigation__responsive-dialog {
    width: 100vw;
    max-width: 100vw;
    border-left: none;
  }
  body .site-header__inner .geiq56-burger-nav .wp-block-navigation-item__content {
    font-size: 16px !important;
    padding: 14px 18px !important;
  }
}


/* ─── 12. REDUCED MOTION ───────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  body .site-header__inner .geiq56-burger-nav *,
  body .site-header__inner .geiq56-burger-nav *::before,
  body .site-header__inner .geiq56-burger-nav *::after {
    transition: none !important;
    animation: none !important;
  }
}


/* ╔══════════════════════════════════════════════════════════════════════╗
   ║  v10.6.0 — CHROMA GRID : équipe en cards webapp (ReactBits-inspired)  ║
   ║  ─────────────────────────────────────────────────────────────────── ║
   ║  Rendu du shortcode [geiq56_admins layout="chroma"].                  ║
   ║  Cards grayscale au repos, colorées sous le spotlight de la souris    ║
   ║  via mask radial-gradient piloté par --x/--y (GSAP).                  ║
   ╚══════════════════════════════════════════════════════════════════════╝ */

/* Wrapper de section dark qui héberge un chroma-grid */
.section--equipe-chroma,
.section--equipe-chroma.section {
  background: #111;
  padding: var(--section-gap, 96px) 0;
  position: relative;
  overflow: hidden;
}
.section--equipe-chroma.section--alt {
  background: #0d0b10;
  border-top: 1px solid rgba(255,255,255,.05);
}
.section--equipe-chroma .section-eyebrow,
.section--equipe-chroma .section-title,
.section--equipe-chroma .section-sub,
.section--equipe-chroma .section-lead {
  color: #fff;
}
.section--equipe-chroma .section-eyebrow {
  color: var(--color-primary, #e30043);
}
.section--equipe-chroma .section-sub,
.section--equipe-chroma .section-lead {
  color: rgba(255,255,255,.55);
}

/* Message empty (pas encore de membres côté client) */
.chroma-empty {
  max-width: 560px;
  margin: 0 auto;
  padding: 1.5em 1.2em;
  background: rgba(255,255,255,.04);
  border: 1px dashed rgba(255,255,255,.15);
  border-radius: 12px;
  color: rgba(255,255,255,.6);
  text-align: center;
  font-size: .925rem;
  line-height: 1.6;
}
.chroma-empty a {
  color: #ff6b8a;
  text-decoration: underline;
}

/* Grille principale + variables dynamiques --x / --y / --r */
.chroma-grid {
  position: relative;
  width: 100%;
  display: grid;
  grid-template-columns: repeat(var(--cols, 3), 320px);
  grid-auto-rows: auto;
  justify-content: center;
  gap: .75rem;
  max-width: 1200px;
  margin: 0 auto;
  padding: .5rem 24px 24px;
  box-sizing: border-box;
  --x: 50%;
  --y: 50%;
  --r: 300px;
}
@media (max-width: 1100px) {
  .chroma-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 320px)); }
}
@media (max-width: 680px) {
  .chroma-grid { grid-template-columns: 1fr; }
}

/* Cards individuelles */
.chroma-card {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 320px;
  border-radius: 20px;
  overflow: hidden;
  border: 1px solid #333;
  transition: border-color .3s ease;
  background: var(--card-gradient, linear-gradient(150deg,#1a1a1a,#0e0e0e));
  cursor: default;
  --mouse-x: 50%;
  --mouse-y: 50%;
  --spotlight-color: rgba(255,255,255,.25);
}
.chroma-card:hover { border-color: var(--card-border, #e30043); }
.chroma-card::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(circle at var(--mouse-x) var(--mouse-y), var(--spotlight-color), transparent 70%);
  pointer-events: none;
  opacity: 0;
  transition: opacity .5s ease;
  z-index: 2;
}
.chroma-card:hover::before { opacity: 1; }

/* Image wrapper + avatar fallback */
.chroma-img-wrapper {
  position: relative;
  z-index: 1;
  padding: 10px;
  box-sizing: border-box;
  aspect-ratio: 1 / 1;
}
.chroma-img-wrapper img,
.chroma-img-wrapper .chroma-img {
  width: 100%; height: 100%;
  object-fit: cover;
  border-radius: 10px;
  display: block;
}
.chroma-avatar {
  width: 100%; height: 100%;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-display, 'Instrument Serif', serif);
  font-size: 4rem;
  color: rgba(255,255,255,.9);
  background: linear-gradient(135deg, rgba(255,255,255,.08), rgba(255,255,255,.02));
  border: 1px solid rgba(255,255,255,.08);
  letter-spacing: -.02em;
}

/* Infos pied de carte */
.chroma-info {
  position: relative;
  z-index: 1;
  padding: .75rem 1rem 1rem;
  color: #fff;
  font-family: var(--font-body, 'Inter', sans-serif);
  display: grid;
  grid-template-columns: 1fr auto;
  row-gap: .2rem;
  column-gap: .75rem;
}
.chroma-info .name {
  font-size: .9375rem;
  font-weight: 700;
  letter-spacing: -.01em;
  grid-column: 1;
  margin: 0;
  line-height: 1.2;
}
.chroma-info .handle {
  font-size: .75rem;
  color: rgba(255,255,255,.45);
  grid-column: 2;
  grid-row: 1;
  text-align: right;
  align-self: center;
  font-weight: 500;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.chroma-info .role {
  font-size: .8125rem;
  color: rgba(255,255,255,.6);
  grid-column: 1 / -1;
  margin: 0;
  line-height: 1.45;
}
.chroma-info .company {
  font-size: .75rem;
  color: rgba(255,255,255,.38);
  grid-column: 1 / -1;
  margin: 0;
  font-style: italic;
}

/* Les 2 couches magiques : overlay grayscale + fade au repos
   Pilotées par --x/--y/--r définis sur le parent .chroma-grid */
.chroma-overlay {
  position: absolute; inset: 0;
  pointer-events: none;
  z-index: 3;
  backdrop-filter: grayscale(1) brightness(.72);
  -webkit-backdrop-filter: grayscale(1) brightness(.72);
  background: rgba(0,0,0,.001);
  mask-image: radial-gradient(
    circle var(--r) at var(--x) var(--y),
    transparent 0%, transparent 15%,
    rgba(0,0,0,.10) 30%, rgba(0,0,0,.22) 45%,
    rgba(0,0,0,.35) 60%, rgba(0,0,0,.50) 75%,
    rgba(0,0,0,.68) 88%, black 100%
  );
  -webkit-mask-image: radial-gradient(
    circle var(--r) at var(--x) var(--y),
    transparent 0%, transparent 15%,
    rgba(0,0,0,.10) 30%, rgba(0,0,0,.22) 45%,
    rgba(0,0,0,.35) 60%, rgba(0,0,0,.50) 75%,
    rgba(0,0,0,.68) 88%, black 100%
  );
}
.chroma-fade {
  position: absolute; inset: 0;
  pointer-events: none;
  z-index: 4;
  backdrop-filter: grayscale(1) brightness(.72);
  -webkit-backdrop-filter: grayscale(1) brightness(.72);
  background: rgba(0,0,0,.001);
  mask-image: radial-gradient(
    circle var(--r) at var(--x) var(--y),
    white 0%, white 15%,
    rgba(255,255,255,.9) 30%, rgba(255,255,255,.78) 45%,
    rgba(255,255,255,.65) 60%, rgba(255,255,255,.5) 75%,
    rgba(255,255,255,.32) 88%, transparent 100%
  );
  -webkit-mask-image: radial-gradient(
    circle var(--r) at var(--x) var(--y),
    white 0%, white 15%,
    rgba(255,255,255,.9) 30%, rgba(255,255,255,.78) 45%,
    rgba(255,255,255,.65) 60%, rgba(255,255,255,.5) 75%,
    rgba(255,255,255,.32) 88%, transparent 100%
  );
  opacity: 1;
  transition: opacity .25s ease;
}

/* Fallback si pas de JS — grille en couleur permanente */
.chroma-grid:not([data-chroma-init]) .chroma-overlay,
.chroma-grid:not([data-chroma-init]) .chroma-fade {
  opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
  .chroma-fade { opacity: 0; }
  .chroma-overlay { display: none; }
  .chroma-card::before { transition: none; }
}


/* ╔══════════════════════════════════════════════════════════════════════╗
   ║  v10.7.0 — Formulaires CF7 + système de TABS CSS pur (:checked)       ║
   ║  ─────────────────────────────────────────────────────────────────── ║
   ║  Page /contact/ : 3 onglets (Général / BTP / Multi) qui switchent    ║
   ║  entre 3 formulaires CF7 sans JavaScript (pattern radio:checked).    ║
   ╚══════════════════════════════════════════════════════════════════════╝ */

/* ─── Bloc container des tabs ─── */
.contact-tabs {
  max-width: 880px;
  margin: 0 auto;
  padding: 0 clamp(16px, 4vw, 32px);
}

/* Les 3 radios cachés pilotent l'état des panels */
.contact-tabs input[type="radio"][name="contact-tab"] {
  position: absolute;
  left: -9999px;
  opacity: 0;
  pointer-events: none;
}

/* Row des labels/tabs */
.contact-tabs__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 0;
  border-bottom: 2px solid rgba(26,23,27,.08);
  padding: 0;
}
.contact-tabs__nav label {
  flex: 1 1 auto;
  text-align: center;
  padding: 14px 20px;
  margin-bottom: -2px;
  font-family: var(--font-body, 'Inter', system-ui, sans-serif);
  font-size: 14px;
  font-weight: 600;
  color: var(--color-neutral-600, #54494d);
  border: 2px solid transparent;
  border-bottom: 2px solid transparent;
  border-radius: 10px 10px 0 0;
  cursor: pointer;
  transition: color .2s ease, background .2s ease, border-color .2s ease;
  user-select: none;
  white-space: nowrap;
}
.contact-tabs__nav label:hover {
  color: var(--color-primary, #e30043);
  background: rgba(227,0,67,.04);
}

/* Active state par radio:checked */
.contact-tabs__radio--general:checked ~ .contact-tabs__nav label[for="contact-tab-general"],
.contact-tabs__radio--btp:checked ~ .contact-tabs__nav label[for="contact-tab-btp"],
.contact-tabs__radio--multi:checked ~ .contact-tabs__nav label[for="contact-tab-multi"] {
  color: var(--color-primary, #e30043);
  background: #fff;
  border-color: rgba(26,23,27,.08);
  border-bottom-color: #fff;
}

/* Panels — masqués par défaut */
.contact-tabs__panel {
  display: none;
  padding: 32px clamp(20px, 4vw, 40px);
  background: #fff;
  border: 2px solid rgba(26,23,27,.08);
  border-top: none;
  border-radius: 0 10px 10px 10px;
}
/* Panel visible selon radio:checked */
.contact-tabs__radio--general:checked ~ #contact-panel-general,
.contact-tabs__radio--btp:checked     ~ #contact-panel-btp,
.contact-tabs__radio--multi:checked   ~ #contact-panel-multi {
  display: block;
}

/* Intro sous chaque panel */
.contact-tabs__intro {
  font-size: 15px;
  color: var(--color-neutral-600, #54494d);
  margin-bottom: 20px;
  line-height: 1.6;
}
.contact-tabs__intro strong {
  color: var(--color-neutral-900, #1a171b);
}


/* ─── Styles des champs CF7 ─── */
.cf7-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
  margin-bottom: 14px;
}
.cf7-field {
  display: block;
  margin-bottom: 14px;
}
.cf7-field--full {
  grid-column: 1 / -1;
}
.cf7-label {
  display: block;
  font-family: var(--font-body, 'Inter', system-ui, sans-serif);
  font-size: 13px;
  font-weight: 600;
  color: var(--color-neutral-900, #1a171b);
  margin-bottom: 6px;
}
.cf7-req {
  color: var(--color-primary, #e30043);
  font-weight: 700;
}
.cf7-input,
.wpcf7-form input[type="text"].cf7-input,
.wpcf7-form input[type="email"].cf7-input,
.wpcf7-form input[type="tel"].cf7-input,
.wpcf7-form select.cf7-input,
.wpcf7-form textarea.cf7-input {
  width: 100%;
  padding: 11px 14px;
  font-family: var(--font-body, 'Inter', system-ui, sans-serif);
  font-size: 15px;
  line-height: 1.5;
  color: var(--color-neutral-900, #1a171b);
  background: #fff;
  border: 1.5px solid rgba(26,23,27,.15);
  border-radius: 8px;
  transition: border-color .2s ease, box-shadow .2s ease;
  box-sizing: border-box;
  -webkit-appearance: none;
  appearance: none;
}
.cf7-input:focus,
.wpcf7-form .cf7-input:focus {
  outline: none;
  border-color: var(--color-primary, #e30043);
  box-shadow: 0 0 0 4px rgba(227,0,67,.08);
}
.wpcf7-form textarea.cf7-input {
  min-height: 120px;
  resize: vertical;
  font-family: inherit;
}
.wpcf7-form select.cf7-input {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2354494d'><path d='M5.5 7.5l4.5 4.5 4.5-4.5z'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 20px 20px;
  padding-right: 40px;
  cursor: pointer;
}

/* Checkbox RGPD */
.cf7-consent {
  margin: 22px 0 18px;
  padding: 14px 16px;
  background: rgba(26,23,27,.03);
  border-radius: 8px;
  border-left: 3px solid var(--color-primary, #e30043);
}
.wpcf7-form .wpcf7-acceptance {
  display: block;
}
.wpcf7-form .wpcf7-acceptance label {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--color-neutral-600, #54494d);
  cursor: pointer;
}
.wpcf7-form .wpcf7-acceptance input[type="checkbox"] {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--color-primary, #e30043);
  cursor: pointer;
}
.wpcf7-form .wpcf7-acceptance a {
  color: var(--color-primary, #e30043);
  text-decoration: underline;
}

/* Submit button */
.cf7-submit {
  margin-top: 18px;
  text-align: center;
}
.wpcf7-form input[type="submit"].btn,
.wpcf7-form input[type="submit"] {
  background: var(--color-primary, #e30043);
  color: #fff;
  border: none;
  padding: 14px 28px;
  font-size: 15px;
  font-weight: 600;
  font-family: var(--font-body, 'Inter', system-ui, sans-serif);
  border-radius: 10px;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease, box-shadow .2s ease;
  min-width: 200px;
  -webkit-appearance: none;
  appearance: none;
}
.wpcf7-form input[type="submit"]:hover:not(:disabled) {
  background: #c10038;
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(227,0,67,.25);
}
.wpcf7-form input[type="submit"]:disabled {
  opacity: .55;
  cursor: wait;
}

/* Spinner CF7 pendant envoi */
.wpcf7-form .wpcf7-spinner {
  margin-left: 10px;
  vertical-align: middle;
}

/* Messages CF7 (succès / erreur) */
.wpcf7-form .wpcf7-response-output {
  margin: 20px 0 0;
  padding: 14px 18px;
  border-radius: 8px;
  font-size: 14px;
  line-height: 1.55;
  border: none;
}
.wpcf7 form.sent .wpcf7-response-output {
  background: rgba(16,185,129,.08);
  color: #047857;
  border-left: 3px solid #10b981;
}
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output {
  background: rgba(227,0,67,.06);
  color: #991b3a;
  border-left: 3px solid var(--color-primary, #e30043);
}
.wpcf7-form .wpcf7-not-valid-tip {
  font-size: 12px;
  color: var(--color-primary, #e30043);
  margin-top: 4px;
  display: block;
}
.wpcf7-form .wpcf7-not-valid {
  border-color: var(--color-primary, #e30043) !important;
  background: rgba(227,0,67,.04);
}

/* Responsive mobile */
@media (max-width: 640px) {
  .contact-tabs__nav label {
    font-size: 12px;
    padding: 12px 12px;
  }
  .contact-tabs__panel {
    padding: 24px 18px;
  }
}

/* Dark mode */
[data-theme="dark"] .contact-tabs__nav {
  border-bottom-color: rgba(255,255,255,.08);
}
[data-theme="dark"] .contact-tabs__nav label {
  color: rgba(255,255,255,.6);
}
[data-theme="dark"] .contact-tabs__nav label:hover {
  color: #ff6b8a;
  background: rgba(227,0,67,.12);
}
[data-theme="dark"] .contact-tabs__radio--general:checked ~ .contact-tabs__nav label[for="contact-tab-general"],
[data-theme="dark"] .contact-tabs__radio--btp:checked ~ .contact-tabs__nav label[for="contact-tab-btp"],
[data-theme="dark"] .contact-tabs__radio--multi:checked ~ .contact-tabs__nav label[for="contact-tab-multi"] {
  color: #ff6b8a;
  background: #1a151a;
  border-color: rgba(255,255,255,.08);
  border-bottom-color: #1a151a;
}
[data-theme="dark"] .contact-tabs__panel {
  background: #1a151a;
  border-color: rgba(255,255,255,.08);
}
[data-theme="dark"] .cf7-label {
  color: rgba(255,255,255,.88);
}
[data-theme="dark"] .wpcf7-form .cf7-input {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.12);
  color: rgba(255,255,255,.92);
}
[data-theme="dark"] .wpcf7-form select.cf7-input {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='rgba(255,255,255,0.6)'><path d='M5.5 7.5l4.5 4.5 4.5-4.5z'/></svg>");
}
[data-theme="dark"] .cf7-consent {
  background: rgba(255,255,255,.04);
}
[data-theme="dark"] .wpcf7-form .wpcf7-acceptance label {
  color: rgba(255,255,255,.7);
}


/* ╔══════════════════════════════════════════════════════════════════════╗
   ║  v10.8.0 — Jobs board : barre de filtres pills + grid + animations   ║
   ║  ─────────────────────────────────────────────────────────────────── ║
   ║  Shortcode [geiq56_jobs_board] : page /offres/.                       ║
   ║  Filtres cliquables par type/métier/lieu/contrat — filtrage live JS.  ║
   ╚══════════════════════════════════════════════════════════════════════╝ */

.jobs-board {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 clamp(16px, 4vw, 32px);
}

/* ── Barre de filtres (top) ─────────────────────────────────────── */
.jobs-board__filters {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 20px 22px;
  margin-bottom: 28px;
  background: rgba(26,23,27,.025);
  border: 1px solid rgba(26,23,27,.08);
  border-radius: 16px;
  backdrop-filter: blur(8px);
}

.jobs-filter-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
}
.jobs-filter-group__label {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--color-neutral-500, #8b7c82);
  min-width: 60px;
  flex-shrink: 0;
}
.jobs-filter-group__pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.jobs-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-neutral-700, #4b575f);
  background: #fff;
  border: 1.5px solid rgba(26,23,27,.12);
  border-radius: 999px;
  cursor: pointer;
  transition: all .18s ease;
  white-space: nowrap;
}
.jobs-pill:hover {
  border-color: var(--color-primary, #c41e3a);
  color: var(--color-primary, #c41e3a);
  transform: translateY(-1px);
}
.jobs-pill.is-active {
  background: var(--color-primary, #c41e3a);
  border-color: var(--color-primary, #c41e3a);
  color: #fff;
  box-shadow: 0 4px 12px -2px rgba(196,30,58,.3);
}
.jobs-pill.is-active:hover {
  background: var(--color-primary-dark, #8b1228);
  border-color: var(--color-primary-dark, #8b1228);
  color: #fff;
}
.jobs-pill__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 18px;
  padding: 0 6px;
  font-size: 11px;
  font-weight: 600;
  color: var(--color-neutral-500, #8b7c82);
  background: rgba(26,23,27,.06);
  border-radius: 999px;
  margin-left: 4px;
}
.jobs-pill.is-active .jobs-pill__count {
  color: rgba(255,255,255,.92);
  background: rgba(255,255,255,.18);
}

/* ── Stats bar (right side of filters) ─────────────────────────── */
.jobs-board__stats {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 14px;
  margin-top: 4px;
  border-top: 1px solid rgba(26,23,27,.06);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  color: var(--color-neutral-600, #4b575f);
}
.jobs-board__count strong {
  color: var(--color-primary, #c41e3a);
  font-weight: 700;
  font-size: 15px;
}
.jobs-board__reset,
.jobs-board__reset-inline {
  padding: 6px 14px;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-neutral-600, #4b575f);
  background: transparent;
  border: 1px solid rgba(26,23,27,.12);
  border-radius: 8px;
  cursor: pointer;
  transition: all .15s ease;
}
.jobs-board__reset:hover,
.jobs-board__reset-inline:hover {
  border-color: var(--color-primary, #c41e3a);
  color: var(--color-primary, #c41e3a);
  background: rgba(196,30,58,.04);
}

/* ── Empty state (pas de résultat après filtres) ─────────────── */
.jobs-board__empty {
  text-align: center;
  padding: 40px 20px;
  background: rgba(26,23,27,.02);
  border: 1px dashed rgba(26,23,27,.12);
  border-radius: 12px;
  margin-bottom: 20px;
}
.jobs-board__empty p {
  color: var(--color-neutral-500, #8b7c82);
  margin-bottom: 12px;
  font-size: 14px;
}

/* Responsive mobile */
@media (max-width: 740px) {
  .jobs-board__filters { padding: 16px; }
  .jobs-filter-group { flex-direction: column; align-items: stretch; gap: 8px; }
  .jobs-filter-group__label { min-width: 0; }
  .jobs-filter-group__pills { overflow-x: auto; padding-bottom: 4px; flex-wrap: nowrap; }
  .jobs-pill { flex-shrink: 0; }
  .jobs-board__stats { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* Dark mode */
[data-theme="dark"] .jobs-board__filters {
  background: rgba(255,255,255,.03);
  border-color: rgba(255,255,255,.08);
}
[data-theme="dark"] .jobs-pill {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.12);
  color: rgba(255,255,255,.82);
}
[data-theme="dark"] .jobs-pill:hover {
  border-color: #ff6b8a;
  color: #ff6b8a;
}
[data-theme="dark"] .jobs-pill__count {
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.58);
}
[data-theme="dark"] .jobs-board__stats {
  border-top-color: rgba(255,255,255,.08);
  color: rgba(255,255,255,.62);
}


/* ═══════════════════════════════════════════════════════════════════
   v10.15.8 — UNIFICATION CARTES CHIFFRES (bloc de vérité final)
   ───────────────────────────────────────────────────────────────────
   Décision Ju : toutes les cartes de stats du site (hero, stats-band
   "Notre impact", panel-stat switcher BTP/Multi, bilans sectoriels
   sur les pages GEIQ) doivent partager le MÊME design que les cartes
   du hero homepage.
   ─ Règles d'or :
     · Un seul endroit dans le CSS où ce design est défini (ICI).
     · Pas de `rotate`, jamais (décision client v10.15.2).
     · Hover = translateY(-4px) + scale(1.02) + shadow accentuée.
     · Chiffres animés via [data-counter] géré par header.js (déjà
       branché sur IntersectionObserver, threshold 0.4, easeOutCubic).
   Doc : docs/GUIDE-CARTES-HERO.md §11 (à jour v10.15.8).
   ═══════════════════════════════════════════════════════════════════ */

/* ── Tokens partagés (pour pouvoir ajuster en 1 endroit) ── */
:root {
  --stat-card-bg:            rgba(255, 255, 255, 0.96);
  --stat-card-border:        var(--color-neutral-200, #e6e3e9);
  --stat-card-border-hover:  rgba(196, 30, 58, 0.26);
  --stat-card-radius:        var(--radius-lg, 16px);
  --stat-card-shadow:        0 4px 16px rgba(26, 23, 27, 0.05),
                             0 1px 2px rgba(26, 23, 27, 0.03);
  --stat-card-shadow-hover:  0 18px 36px rgba(26, 23, 27, 0.10),
                             0 0 0 1.5px rgba(196, 30, 58, 0.18);
  --stat-card-padding:       20px 24px;
  --stat-val-color:          var(--color-neutral-900, #1a171b);
  --stat-label-color:        var(--color-neutral-500, #696573);
}
[data-theme="dark"] {
  --stat-card-bg:            rgba(255, 255, 255, 0.04);
  --stat-card-border:        rgba(255, 255, 255, 0.08);
  --stat-card-border-hover:  rgba(255, 143, 168, 0.28);
  --stat-card-shadow:        0 4px 16px rgba(0, 0, 0, 0.25),
                             0 1px 2px rgba(0, 0, 0, 0.18);
  --stat-card-shadow-hover:  0 18px 36px rgba(0, 0, 0, 0.45),
                             0 0 0 1.5px rgba(255, 143, 168, 0.22);
  --stat-val-color:          #f0eef1;
  --stat-label-color:        rgba(255, 255, 255, 0.5);
}

/* ── Base card — s'applique aux 3 familles ── */
.metric-card,
.metric-card.wp-block-group,
.stats-band__item,
.stats-band__item.wp-block-group,
.panel-stat,
.panel-stat.wp-block-group {
  background: var(--stat-card-bg) !important;
  border: 1.5px solid var(--stat-card-border) !important;
  border-radius: var(--stat-card-radius) !important;
  padding: var(--stat-card-padding) !important;
  box-shadow: var(--stat-card-shadow) !important;
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
  transition:
    transform .35s cubic-bezier(.22, 1, .36, 1),
    box-shadow .35s ease,
    border-color .25s ease !important;
  will-change: transform;
}

/* ── Hover uniforme : lift + scale 1.02 + accent bordure + shadow ── */
.metric-card:hover,
.metric-card.wp-block-group:hover,
.hero__metrics .metric-card:hover,
.hero__metrics .metric-card.wp-block-group:hover,
.stats-band__item:hover,
.stats-band__item.wp-block-group:hover,
.panel-stat:hover,
.panel-stat.wp-block-group:hover {
  transform: translateY(-4px) scale(1.02) !important;
  box-shadow: var(--stat-card-shadow-hover) !important;
  border-color: var(--stat-card-border-hover) !important;
}

/* ── Valeurs (.val) — typo unifiée sur les 3 familles ── */
.metric-card__val,
.stats-band__val,
.panel-stat__val {
  font-family: var(--font-display) !important;
  font-size: clamp(1.75rem, 2.4vw, 2.25rem) !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  color: var(--stat-val-color) !important;
  margin: 0 !important;
}

/* ── Labels — même couleur neutral-500, même taille ── */
.metric-card__label,
.stats-band__label,
.panel-stat__label {
  font-size: 0.8125rem !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  color: var(--stat-label-color) !important;
  margin: 6px 0 0 !important;
}
/* Sub-label (panel-stat seulement) — plus petit, opacity réduite */
.panel-stat__sub {
  font-size: 0.6875rem !important;
  color: var(--stat-label-color) !important;
  opacity: .7 !important;
  margin: 4px 0 0 !important;
}

/* ── Stats-band : réagencement horizontal uni, plus de bordure gris
      entre items (v7 imposait une fine séparation grise, incohérent
      avec le design unifié) ── */
.stats-band,
.stats-band.wp-block-group {
  gap: clamp(12px, 1.4vw, 20px) !important;
  background: transparent !important;
  border: 0 !important;
  overflow: visible !important;
}
.stats-band__item,
.stats-band__item.wp-block-group {
  gap: 6px !important;
  align-items: flex-start !important;
  text-align: left !important;
}

/* ── Panel-stat dans les panels BTP/Multi du switcher ──
      Le fond des panels est déjà rouge/gris foncé, donc la carte
      utilise un bg rgba plus opaque pour ressortir. Dark-hoisted via
      plus de traitement différencié .panel-stat--multi depuis v10.15.15 :
      avant, les panels Multi étaient sur fond rouge/sombre (fond clair
      avec textes blancs = piège d'illisibilité quand on a basculé en
      fond pâle). Maintenant ils utilisent exactement la même surface
      que les autres cartes via les tokens --stat-card-* / --surface-
      card-*. Un seul traitement pour toutes les panel-stat, quel que
      soit le panel parent. */
.panel-stat,
.panel-stat.wp-block-group {
  background: var(--stat-card-bg) !important;
  border-color: var(--stat-card-border) !important;
  color: var(--stat-card-text, var(--surface-card-text)) !important;
}

/* ── Reduced motion : pas de transform au hover ── */
@media (prefers-reduced-motion: reduce) {
  .metric-card:hover,
  .stats-band__item:hover,
  .panel-stat:hover {
    transform: none !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   v10.15.9 — UNIFICATION DES PASTILLES D'ICÔNES (light + dark)
   ───────────────────────────────────────────────────────────────────
   Décision Ju (23/04) : "j'aime le rendu des icônes du hero en dark
   mode (translucide, rose néon sur fond noir), je veux ce comportement
   sur TOUTES les pastilles d'icônes du site."
   ───────────────────────────────────────────────────────────────────
   Stratégie token-based (pas de guerre de spécificité) :
     :root → valeurs light (rouge carmin 8% opacity, stroke primary)
     [data-theme="dark"] → valeurs dark (rose néon 12% opacity,
       stroke #ff8fa8 pour visibilité sur fond noir)
   ─ Les metric-card gardent leurs 4 variantes (red/green/dark/blue)
     mais reçoivent des overrides dark mode (translucence accentuée)
     pour un rendu cohérent sur fond noir.
   ═══════════════════════════════════════════════════════════════════ */

:root {
  --icon-pill-bg:         rgba(196, 30, 58, 0.08);
  --icon-pill-bg-hover:   rgba(196, 30, 58, 0.14);
  --icon-pill-color:      var(--color-primary, #c41e3a);
  --icon-pill-border:     transparent;
}
[data-theme="dark"] {
  --icon-pill-bg:         rgba(255, 143, 168, 0.12);
  --icon-pill-bg-hover:   rgba(255, 143, 168, 0.20);
  --icon-pill-color:      #ff8fa8;
  --icon-pill-border:     rgba(255, 143, 168, 0.18);
}

/* ── Application sur toutes les pastilles rouge de cartes du site ── */
.feature-icon,
.feature-card__icon,
.feature-icon--step,
.step-icon,
.card-icon,
.admin-member__icon,
.kpi-card__icon,
.topic-icon,
.faq-card__icon {
  background: var(--icon-pill-bg) !important;
  color: var(--icon-pill-color) !important;
  border: 1px solid var(--icon-pill-border) !important;
  transition:
    background .25s ease,
    color .25s ease,
    border-color .25s ease,
    transform .25s cubic-bezier(.34, 1.56, .64, 1) !important;
}
/* Hover = on augmente l'opacité du fond pour signaler la carte active */
.feature-card:hover .feature-icon,
.feature-card:hover .feature-card__icon,
.feature-card:hover .feature-icon--step,
.feature-card:hover .step-icon,
.feature-card:hover .card-icon,
.kpi-card:hover .kpi-card__icon,
.topic-card:hover .topic-icon,
.admin-member:hover .admin-member__icon,
.faq-card:hover .faq-card__icon {
  background: var(--icon-pill-bg-hover) !important;
}

/* ── Overrides dark-mode des 4 variantes metric-card__icon pour un
      rendu cohérent sur fond noir (opacité montée de .08 → .14, stroke
      rehaussé d'un cran de luminosité pour mieux se détacher) ── */
[data-theme="dark"] .metric-card__icon--red {
  background: rgba(255, 143, 168, 0.14) !important;
  color: #ff8fa8 !important;
  border: 1px solid rgba(255, 143, 168, 0.18) !important;
}
[data-theme="dark"] .metric-card__icon--green {
  background: rgba(34, 197, 94, 0.14) !important;
  color: #4ade80 !important;
  border: 1px solid rgba(74, 222, 128, 0.18) !important;
}
[data-theme="dark"] .metric-card__icon--dark {
  background: rgba(255, 255, 255, 0.08) !important;
  color: rgba(255, 255, 255, 0.85) !important;
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
}
[data-theme="dark"] .metric-card__icon--blue {
  background: rgba(96, 165, 250, 0.14) !important;
  color: #93c5fd !important;
  border: 1px solid rgba(147, 197, 253, 0.18) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v10.15.11 — SURFACES DE CARTES : bloc robuste & futureproof
   ───────────────────────────────────────────────────────────────────
   Historique : v10.15.10 listait les classes en light ET dark et
   écrasait les traitements existants. Certaines cartes (geiq-step__body,
   faq-item .section--alt) n'étaient pas dans la liste → fond blanc
   résiduel en dark mode.
   ───────────────────────────────────────────────────────────────────
   v10.15.11 = nouvelle stratégie plus sûre :
     1. Les règles LIGHT MODE restent inchangées dans tout le fichier
        (bg blanc/clair spécifiques selon la carte, c'est voulu).
     2. En DARK MODE on applique un override qui bat toutes les
        règles hardcodées grâce à `!important`, via une LISTE EXHAUSTIVE
        des classes de cartes connues.
     3. Sélecteur = `[data-theme="dark"] :where(liste) {…}` :
          · `[data-theme="dark"]` = spec (0,1,0)
          · `:where(…)` = spec 0 (par définition CSS)
          · total = (0,1,0) + !important → bat toutes les règles
            hardcodées sans !important, même les `.foo.wp-block-group`.
     4. Exclusions explicites via `:not()` pour garder les traitements
        spéciaux (panel-stat--multi sombre sur fond rouge, newsletter
        glass, metric-card icons colorées).
     5. Ajouter une nouvelle carte dans le futur = 1 ligne dans la
        liste ci-dessous. Pas de cascade à débugger.
   Voir docs/GUIDE-CARTES-HERO.md §12 pour la procédure.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Tokens (light + dark) ── */
:root {
  --surface-card-bg:      rgba(255, 255, 255, 0.96);
  --surface-card-hover:   rgba(255, 255, 255, 1);
  --surface-card-border:  var(--color-neutral-200, #e6e3e9);
  --surface-card-text:    var(--color-neutral-900, #1a171b);
  --surface-card-muted:   var(--color-neutral-500, #696573);
}
[data-theme="dark"] {
  --surface-card-bg:      rgba(255, 255, 255, 0.04);
  --surface-card-hover:   rgba(255, 255, 255, 0.07);
  --surface-card-border:  rgba(255, 255, 255, 0.08);
  --surface-card-text:    #f0eef1;
  --surface-card-muted:   rgba(255, 255, 255, 0.55);
}

/* ── DARK MODE ONLY — override unifié des surfaces de cartes ──
   Liste exhaustive (voir §12 du guide pour étendre). */
[data-theme="dark"] :where(
  .feature-card,
  .feature-card.wp-block-column,
  .feature-card.wp-block-group,
  .actu-card,
  .job-card,
  .testimonial,
  .testimonial.wp-block-column,
  .testimonial.wp-block-group,
  .testimonial-card,
  .faq-item,
  .admin-member,
  .kpi-card,
  .topic-card,
  .panel-stat,
  .panel-stat.wp-block-group,
  .metric-card,
  .metric-card.wp-block-group,
  .stats-band__item,
  .stats-band__item.wp-block-group,
  .geiq-step__body,
  .geiq-step__body.wp-block-group
):not(.newsletter-card) {
  background: var(--surface-card-bg) !important;
  border-color: var(--surface-card-border) !important;
  color: var(--surface-card-text) !important;
}

/* ── Textes des mêmes cartes en dark — titres / sub-labels ── */
[data-theme="dark"] :where(
  .feature-card .feature-title,
  .actu-card .actu-card__title,
  .job-card .job-card__title,
  .testimonial .testimonial__quote,
  .testimonial .testimonial__name,
  .faq-item summary,
  .admin-member .admin-member__name,
  .kpi-card .kpi-card__val,
  .topic-card .topic-card__title,
  .panel-stat .panel-stat__val,
  .metric-card__val,
  .stats-band__val,
  .geiq-step__body .geiq-step__title
) {
  color: var(--surface-card-text) !important;
}
[data-theme="dark"] :where(
  .feature-card .feature-text,
  .actu-card .actu-card__excerpt,
  .actu-card .actu-card__meta,
  .job-card .job-card__meta,
  .testimonial .testimonial__meta,
  .testimonial .testimonial__role,
  .faq-item p,
  .faq-item .faq-answer,
  .admin-member .admin-member__role,
  .kpi-card .kpi-card__sub,
  .topic-card .topic-card__sub,
  .panel-stat .panel-stat__sub,
  .panel-stat .panel-stat__label,
  .metric-card__label,
  .stats-band__label,
  .geiq-step__body .geiq-step__desc
) {
  color: var(--surface-card-muted) !important;
}

/* ── Hover dark — surface un poil plus opaque ── */
[data-theme="dark"] :where(
  .feature-card:hover,
  .actu-card:hover,
  .job-card:hover,
  .testimonial:hover,
  .faq-item[open],
  .faq-item:hover,
  .admin-member:hover,
  .kpi-card:hover,
  .topic-card:hover,
  .panel-stat:hover,
  .metric-card:hover,
  .stats-band__item:hover,
  .geiq-step__body:hover
) {
  background: var(--surface-card-hover) !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v10.15.12 — RYTHME AUTO DES SECTIONS (zebra + spotlight)
   ───────────────────────────────────────────────────────────────────
   Décision Ju : "hero blanc avec spotlight, bloc d'en dessous gris
   sans spotlight, puis ça se répète. Je veux que ce soit automatique,
   pas besoin de tagger section--alt à la main à chaque nouveau bloc."
   ───────────────────────────────────────────────────────────────────
   Stratégie : on pilote le rythme par la POSITION de la section dans
   le <main>, pas par sa classe.
     · Section 1  = hero      → blanc + spotlight (traitement propre)
     · Section 2  = pair      → gris   sans spotlight
     · Section 3  = impair    → blanc  avec spotlight
     · Section 4  = pair      → gris   sans spotlight
     · Section 5  = impair    → blanc  avec spotlight
     · ... etc automatiquement
     · Footer     = hors main → blanc + spotlight (sa propre règle)
   Ajouter une section au milieu du post_content = le reste décale et
   le rythme se recale tout seul. Aucun `section--alt` à poser à la main.
   ───────────────────────────────────────────────────────────────────
   Exclusion volontaire : le hero (section 1, impair) a sa propre
   identité (transparent, hauteur vh, gradient) — on ne touche pas.
   ═══════════════════════════════════════════════════════════════════ */

:root {
  --section-neutral-bg: var(--color-neutral-0, #ffffff);
  --section-alt-bg:     var(--color-neutral-50, #f9fafb);
}
[data-theme="dark"] {
  --section-neutral-bg: #1a171b;
  --section-alt-bg:     #141114;
}

/* ── Le vrai conteneur parent des sections est .entry-content
      (wrapper Gutenberg injecté automatiquement entre <main> et les
      <section>). On cible donc `.entry-content > section` pour que
      :nth-of-type() compte les sections dans le bon contexte. ── */

/* Sections paires (2, 4, 6, …) : gris + pas de spotlight */
.entry-content > section:nth-of-type(even),
.entry-content > section.wp-block-group:nth-of-type(even),
.site-main > section:nth-of-type(even) {
  background: var(--section-alt-bg) !important;
}
.entry-content > section:nth-of-type(even) > .glow-canvas,
.entry-content > section:nth-of-type(even) .glow-canvas,
.site-main > section:nth-of-type(even) .glow-canvas {
  display: none !important;
}

/* Sections impaires (3, 5, 7, …) : blanc + spotlight actif
   Le hero (section 1) est exclu — il a son traitement dédié. */
.entry-content > section:nth-of-type(odd):not(.hero),
.entry-content > section.wp-block-group:nth-of-type(odd):not(.hero),
.site-main > section:nth-of-type(odd):not(.hero) {
  background: var(--section-neutral-bg) !important;
}
.entry-content > section:nth-of-type(odd):not(.hero) > .glow-canvas,
.site-main > section:nth-of-type(odd):not(.hero) > .glow-canvas {
  display: block !important;
}

/* ── Backward-compat : les classes historiques .section--alt /
      .section--newsletter / .section--actus continuent de marcher
      exactement pareil en cas de décalage de rythme voulu ponctuel.
      Elles ne sont PLUS nécessaires mais ne cassent rien. ── */

/* ── Overrides ponctuels : si tu veux FORCER un style spécifique
      sur une section sans compter sur sa position pair/impair.
      Le fond ET le spotlight sont liés ensemble via le MÊME sélecteur,
      donc impossible de les désynchroniser. ── */
.section--force-alt,
section.section--force-alt {
  background: var(--section-alt-bg) !important;
}
.section--force-alt .glow-canvas,
section.section--force-alt .glow-canvas {
  display: none !important;
}
.section--force-neutral,
section.section--force-neutral {
  background: var(--section-neutral-bg) !important;
}
.section--force-neutral .glow-canvas,
section.section--force-neutral .glow-canvas {
  display: block !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v10.15.13 — FOOTER : miroir inversé de la dernière section du main
   ───────────────────────────────────────────────────────────────────
   Décision Ju : "le footer doit suivre la logique d'alternance de la
   page. Si au-dessus de lui bloc gris → footer blanc + spotlight.
   Si au-dessus blanc + spotlight → footer gris sans spotlight."
   ───────────────────────────────────────────────────────────────────
   Implémentation via CSS `:has()` (Chrome 105+, Safari 15.4+, Firefox
   121+ — largement supporté en 2026). Le <body> regarde la parité de
   la dernière <section> de .entry-content, et propage la règle au
   footer qui est pourtant hors .entry-content.
   ───────────────────────────────────────────────────────────────────
   Règle d'or : le fond ET le spotlight sont TOUJOURS liés au même
   sélecteur :has(). Impossible de les désynchroniser, même quand
   tu ajoutes/retires une section dans le post_content — la parité
   change et tout suit automatiquement.
   ─ Footer hors main (site-footer direct enfant du body) : le
     sélecteur body:has(…) .site-footer cible bien.
   ═══════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════
   v10.15.18 — PANELS DU SWITCHER : tokens unifiés (gen / btp / multi)
   ───────────────────────────────────────────────────────────────────
   Décision Ju : "le panel général (gris) doit avoir une chouille de
   transparence pour se différencier visuellement du multi, sans aller
   jusqu'au niveau multi (qui est très transparent)."
   ───────────────────────────────────────────────────────────────────
   Stratégie token-based comme pour les autres systèmes du site :
     · --panel-gen-*    : gris avec léger alpha (~82% d'opacité)
     · --panel-btp-*    : rouge teinté transparent (accent BTP)
     · --panel-multi-*  : gris foncé très transparent (fond qui respire)
   ─ Chaque panel du switcher tire son style d'UN seul groupe de 3
     tokens (bg / border / blur). Futureproof : ajouter un 4e panel
     = 3 lignes à rajouter dans :root + [data-theme="dark"] + un
     sélecteur en bas.
   ─ Appliqué sur la home (switcher principal) et sur /le-dispositif/
     (même shortcode [geiq56_switcher]) + toute page future qui
     l'utilisera.
   ═══════════════════════════════════════════════════════════════════ */

:root {
  /* Panel GÉNÉRAL — transparence marquée (~67% opacité)
     v10.15.20 : -10 points supplémentaires (Ju). Le panel gen
     garde sa différence vs le multi (0.055) tout en laissant
     bien respirer le fond de section derrière. */
  --panel-gen-bg:     rgba(249, 250, 251, 0.67);
  --panel-gen-border: rgba(26, 23, 27, 0.08);
  --panel-gen-blur:   14px;

  /* Panel BTP — accent rouge teinté */
  --panel-btp-bg:     rgba(227, 0, 67, 0.055);
  --panel-btp-border: rgba(227, 0, 67, 0.18);
  --panel-btp-blur:   10px;

  /* Panel MULTI — très transparent (fond qui respire le plus) */
  --panel-multi-bg:     rgba(45, 42, 50, 0.055);
  --panel-multi-border: rgba(45, 42, 50, 0.14);
  --panel-multi-blur:   10px;
}
[data-theme="dark"] {
  --panel-gen-bg:     rgba(255, 255, 255, 0.03);
  --panel-gen-border: rgba(255, 255, 255, 0.09);
  --panel-gen-blur:   14px;

  --panel-btp-bg:     rgba(227, 0, 67, 0.08);
  --panel-btp-border: rgba(255, 143, 168, 0.18);
  --panel-btp-blur:   12px;

  --panel-multi-bg:     rgba(255, 255, 255, 0.03);
  --panel-multi-border: rgba(255, 255, 255, 0.08);
  --panel-multi-blur:   12px;
}

/* Application — les sélecteurs matchent toutes les instances du site */
.geiq-panel--gen .panel-inner--gen {
  background: var(--panel-gen-bg);
  border-color: var(--panel-gen-border);
  backdrop-filter: blur(var(--panel-gen-blur));
  -webkit-backdrop-filter: blur(var(--panel-gen-blur));
}
.geiq-panel--btp .panel-inner {
  background: var(--panel-btp-bg);
  border-color: var(--panel-btp-border);
  backdrop-filter: blur(var(--panel-btp-blur));
  -webkit-backdrop-filter: blur(var(--panel-btp-blur));
}
.geiq-panel--multi .panel-inner {
  background: var(--panel-multi-bg);
  border-color: var(--panel-multi-border);
  backdrop-filter: blur(var(--panel-multi-blur));
  -webkit-backdrop-filter: blur(var(--panel-multi-blur));
}


/* ── Défaut : le footer a son spotlight CSS-radial-gradient activé
      (piloté par page-glow.js via --glow-mx/my/a). --footer-glow-a = 1
      signifie "spotlight visible quand la souris est dedans". ── */
:root {
  --footer-glow-a: 1;
}

/* ── Cas 1 : dernière section du main = PAIRE (donc grise, pas de
      spotlight). Le footer fait le miroir : BLANC + spotlight ACTIF.
      --footer-glow-a: 1 (= intensité max du gradient). */
body:has(.entry-content > section:last-of-type:nth-of-type(even)) .site-footer {
  --footer-bg: var(--section-neutral-bg);
  --footer-glow-a: 1;
}

/* ── Cas 2 : dernière section du main = IMPAIRE (blanc + spotlight).
      Le footer fait le miroir : GRIS + spotlight DÉSACTIVÉ.
      --footer-glow-a: 0 (= gradient invisible quelle que soit la
      position de la souris). Le JS continue à tourner dans le vide,
      le CSS tue simplement le rendu du spotlight. */
body:has(.entry-content > section:last-of-type:nth-of-type(odd)) .site-footer {
  --footer-bg: var(--section-alt-bg);
  --footer-glow-a: 0;
}

/* ── Fallback pour navigateurs ne supportant pas :has() ──
      Zéro --footer-glow-a = fond gris sans spotlight (v10.15.6). */
@supports not (selector(:has(*))) {
  .site-footer { --footer-glow-a: 0; }
}


/* ═══════════════════════════════════════════════════════════════════
   v10.17.0 — /le-dispositif/ : schéma GEIQ trio + vidéo + label
   ───────────────────────────────────────────────────────────────────
   Design : moderne, animé, responsive. Désaturé en dark mode pour
   éviter le rouge brûlant. Tokens partagés --primary / --primary-dark.
   ═══════════════════════════════════════════════════════════════════ */

/* ── (1) Schéma trio GEIQ au centre ───────────────────────────── */
.geiq-schema-trio {
  max-width: 1040px;
  margin: 0 auto;
  padding: clamp(24px, 4vw, 48px) clamp(16px, 3vw, 32px);
}
.geiq-schema-trio__inner {
  /* v10.17.28 — aspect-ratio 1040/640 au lieu de min-height fixe.
     Permet au SVG (viewBox 0 0 1040 640) de matcher parfaitement
     le container, sans distorsion, quelle que soit la largeur. Les
     positions % des acteurs scalent avec le container. */
  position: relative;
  aspect-ratio: 1040 / 640;
  width: 100%;
  display: block;
  color: var(--color-neutral-400);
}
[data-theme="dark"] .geiq-schema-trio__inner { color: rgba(255,255,255,.35); }

/* Lignes SVG dash-animées */
.geiq-schema-trio__lines {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  pointer-events: none;
  z-index: 0;
}
/* v10.17.27 — Flux divergent infini.
   Deux animations parallèles :
     - trio-line-appear : fade-in initial (0 → .55 opacity)
     - trio-line-flow   : stroke-dashoffset en boucle, direction
                          hub → acteur (divergent = le GEIQ rayonne).
   Les négative-delays sur lignes 2 et 3 déphasent la circulation
   pour éviter que les 3 lignes battent à l'unisson (effet clignotant). */
.trio-line {
  stroke-dasharray: 5 9;
  stroke-linecap: round;
  stroke-dashoffset: 0;
  opacity: 0;
  animation:
    trio-line-appear .9s cubic-bezier(.22,1,.36,1) forwards,
    trio-line-flow 2.4s linear infinite;
}
.trio-line--1 { animation-delay: .35s, 0s; }
.trio-line--2 { animation-delay: .55s, -0.8s; }
.trio-line--3 { animation-delay: .75s, -1.6s; }
@keyframes trio-line-appear {
  from { opacity: 0; }
  to   { opacity: .55; }
}
@keyframes trio-line-flow {
  to { stroke-dashoffset: -14; }
}
@media (prefers-reduced-motion: reduce) {
  .trio-line {
    animation: trio-line-appear .9s cubic-bezier(.22,1,.36,1) forwards;
  }
}

/* Hub central : cercle GEIQ avec pulsations.
   top: 50% + translate(-50%, -50%) = centre vertical du container.
   Avec min-height 720px → centre à 360px. Hub 180-200px → s'étend de
   260 à 460 px, ce qui laisse 250px pour l'acteur 1 au-dessus et
   ~250px pour les acteurs 2/3 en-dessous. Zéro chevauchement possible. */
.trio-hub {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: clamp(150px, 17vw, 190px);  /* légèrement réduit pour aérer */
  aspect-ratio: 1;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  opacity: 0;
  animation: trio-hub-in .9s cubic-bezier(.22,1,.36,1) .15s forwards;
}
@keyframes trio-hub-in {
  from { opacity: 0; transform: translate(-50%, -50%) scale(.8); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.trio-hub__core {
  position: relative;
  z-index: 2;
  width: 100%; height: 100%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 30% 30%, rgba(255,255,255,.25), transparent 60%),
    linear-gradient(135deg, var(--color-primary, #c41e3a) 0%, var(--color-primary-dark, #8b1228) 100%);
  color: #fff;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px;
  box-shadow:
    0 0 0 6px rgba(196,30,58,.08),
    0 0 0 14px rgba(196,30,58,.04),
    0 20px 60px rgba(196,30,58,.25),
    inset 0 2px 0 rgba(255,255,255,.3);
}
.trio-hub__label {
  font-family: var(--font-display, 'Instrument Serif', serif);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  line-height: 1;
  letter-spacing: -0.02em;
}
.trio-hub__num {
  font-family: var(--font-display, 'Instrument Serif', serif);
  font-style: italic;
  font-size: clamp(1rem, 1.6vw, 1.4rem);
  line-height: 1;
  opacity: .85;
}
.trio-hub__sub {
  margin: 14px 0 0;
  font-size: .78rem;
  font-weight: 500;
  color: var(--color-neutral-500, #696573);
  max-width: 220px;
  line-height: 1.35;
}
[data-theme="dark"] .trio-hub__sub { color: rgba(255,255,255,.55); }

/* Pulsations concentriques */
.trio-hub__pulse {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(196,30,58,.18);
  z-index: 1;
  animation: trio-pulse 3.5s cubic-bezier(.22,1,.36,1) infinite;
  pointer-events: none;
}
.trio-hub__pulse--2 { animation-delay: 1.75s; }
@keyframes trio-pulse {
  0%   { transform: scale(1);   opacity: .35; }
  80%  { transform: scale(1.6); opacity: 0;   }
  100% { transform: scale(1.6); opacity: 0;   }
}
@media (prefers-reduced-motion: reduce) {
  .trio-hub__pulse { animation: none; opacity: 0; }
}

/* Acteurs autour du hub */
.trio-actor {
  position: absolute;
  width: clamp(170px, 22vw, 240px);
  text-align: center;
  opacity: 0;
  transform: translateY(16px);
  animation: trio-actor-in .65s cubic-bezier(.22,1,.36,1) forwards;
  z-index: 3;
}
/* v10.17.28 — Positions calibrées pour que l'icône top-center de
   chaque card arrive pile sur le endpoint de sa ligne SVG.
   - Salarié  : icon target (520, 24) → top:0, centré horizontalement
   - Entreprise: icon target (264, 468) → top:69.4% (444/640), left:13.8% (144/1040)
   - Formation : symétrique, right:13.8%
   Toutes les positions en % → scale avec le container via aspect-ratio. */
.trio-actor--1 { top: 0;     left: 50%; transform: translate(-50%, 0); animation-delay: .45s; }
.trio-actor--2 { top: 69.4%; left: 13.8%;  animation-delay: .65s; }
.trio-actor--3 { top: 69.4%; right: 13.8%; animation-delay: .85s; }
@keyframes trio-actor-in {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* .trio-actor--1 a un transform complexe (centrage horizontal) :
   on surcharge sa keyframe de sortie */
.trio-actor--1 {
  animation-name: trio-actor-1-in;
}
@keyframes trio-actor-1-in {
  from { opacity: 0; transform: translate(-50%, -16px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

.trio-actor__icon {
  display: inline-flex;
  align-items: center; justify-content: center;
  width: 48px; height: 48px;
  border-radius: 50%;
  background: var(--icon-pill-bg, rgba(196,30,58,.08));
  color: var(--icon-pill-color, var(--color-primary));
  margin-bottom: 10px;
  border: 1px solid var(--icon-pill-border, transparent);
  transition: transform .3s cubic-bezier(.22,1,.36,1), background .25s ease;
}
.trio-actor:hover .trio-actor__icon {
  transform: scale(1.1);
  background: var(--icon-pill-bg-hover, rgba(196,30,58,.14));
}
.trio-actor__title {
  font-family: var(--font-display);
  font-size: clamp(1.1rem, 1.4vw, 1.3rem);
  font-weight: 400;
  margin: 0 0 6px;
  color: var(--color-neutral-900, #1a171b);
}
[data-theme="dark"] .trio-actor__title { color: #f0eef1; }
.trio-actor__desc {
  font-size: .8125rem;
  line-height: 1.45;
  color: var(--color-neutral-500, #696573);
  margin: 0;
}
[data-theme="dark"] .trio-actor__desc { color: rgba(255,255,255,.55); }
/* v10.17.1 — trio-actor__edge supprimés : labels sur connecteurs
   chevauchaient les cartes sur desktop. Les cartes acteurs
   (titre + description) expliquent déjà les relations. */

.geiq-schema-trio__lead {
  max-width: 640px;
  margin: clamp(32px, 5vw, 64px) auto 0;
  text-align: center;
  font-size: clamp(1rem, 1.4vw, 1.125rem);
  line-height: 1.55;
  color: var(--color-neutral-600, #4a454f);
}
[data-theme="dark"] .geiq-schema-trio__lead { color: rgba(255,255,255,.72); }
.geiq-schema-trio__lead em {
  font-style: italic;
  color: var(--color-primary);
}

/* v10.17.27 — Bridge "Au pivot de" : visible uniquement en mobile.
   Caché par défaut sur desktop où le schéma radial porte déjà
   la narration "GEIQ pivot". */
.trio-bridge { display: none; }

/* ── Responsive mobile : stack vertical + fil rouge pointillé ──── */
@media (max-width: 899px) {
  /* Layout : hub centré + libellé bridge + 3 cards stack connectées
     par un fil rouge pointillé sur la gauche. Zéro SVG, zéro calcul
     géométrique — pérenne, responsive sans retouche. */
  .geiq-schema-trio__inner {
    /* v10.17.54 — Reset explicite de l'aspect-ratio 1040/640 hérité
       du desktop (v28). Sans ça, le container force une hauteur
       width×(640/1040), le flex column hub + 3 cards déborde et le
       rendu mobile est cassé. */
    aspect-ratio: auto !important;
    min-height: auto !important;
    height: auto !important;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    padding: 12px 0 0;
  }
  .geiq-schema-trio__lines { display: none; }

  /* Hub centré (inchangé). v10.17.56 — Animation override car
     trio-hub-in (desktop) terminait sur transform: translate(-50%,-50%)
     ce qui décalait le hub en mobile. On utilise une keyframe dédiée
     mobile qui ne fait que opacity + scale, pas de translate. */
  .trio-hub {
    position: static !important;
    width: 130px !important;
    margin: 0 auto 16px !important;
    animation: trio-hub-in-mobile .9s cubic-bezier(.22,1,.36,1) .1s forwards !important;
    opacity: 0;
  }
  @keyframes trio-hub-in-mobile {
    from { opacity: 0; transform: scale(.85); }
    to   { opacity: 1; transform: scale(1); }
  }
  .trio-hub__core { box-shadow:
    0 0 0 5px rgba(196,30,58,.08),
    0 15px 40px rgba(196,30,58,.20),
    inset 0 2px 0 rgba(255,255,255,.3);
  }
  .trio-hub__sub { display: none; /* masqué mobile : le bridge remplace */ }

  /* Libellé bridge entre hub et cards */
  .trio-bridge {
    display: block;
    font-size: .7rem;
    font-weight: 500;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--color-neutral-500, #696573);
    margin: 0 0 14px;
  }
  [data-theme="dark"] .trio-bridge { color: rgba(255,255,255,.5); }

  /* Wrapper pour les 3 acteurs : padding-left pour loger le fil,
     position relative pour ancrer le fil pointillé global. */
  .trio-actor,
  .trio-actor--1,
  .trio-actor--2,
  .trio-actor--3 {
    /* v10.17.55 — Reset des top/left/right hérités du desktop (positionnement
       absolu). Sans ça, en `position: relative !important` ces propriétés
       continuent de décaler les cards horizontalement → effet cascade. */
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    width: 100% !important;
    max-width: 360px !important;
    margin: 0 auto !important;
    padding: 14px 14px 14px 52px !important;
    background: var(--surface-card-bg, rgba(255,255,255,.96));
    border: 0.5px solid rgba(227, 0, 67, .22);
    border-radius: var(--radius-md, 12px);
    transform: none !important;
    text-align: left;
    box-sizing: border-box;
  }
  .trio-actor + .trio-actor { margin-top: 14px !important; }

  /* Fil rouge pointillé entre chaque card */
  .trio-actor:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 26px;
    top: calc(100% + 1px);
    height: 13px;
    width: 2px;
    background: repeating-linear-gradient(
      to bottom,
      rgba(227, 0, 67, .4) 0 4px,
      transparent 4px 8px
    );
  }

  /* Icône en pastille collée à gauche, reliée visuellement au fil */
  .trio-actor__icon {
    position: absolute !important;
    top: 14px;
    left: 14px;
    width: 26px !important;
    height: 26px !important;
    margin: 0 !important;
    background: var(--icon-pill-bg, rgba(227,0,67,.08));
    border: 0.5px solid rgba(227, 0, 67, .22);
  }
  .trio-actor__icon svg { width: 14px; height: 14px; }

  .trio-actor__title {
    margin: 0 0 4px;
    font-size: 1rem;
    line-height: 1.25;
  }
  .trio-actor__desc {
    font-size: .8125rem;
    line-height: 1.45;
  }

  /* Animation d'entrée staggered (conservée) */
  .trio-actor--1, .trio-actor--2, .trio-actor--3 {
    animation-name: trio-actor-m-in;
  }
  @keyframes trio-actor-m-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .trio-actor__edge { display: none !important; }
}


/* ── (2) Vidéo embed responsive ───────────────────────────────── */
.geiq-video {
  max-width: 920px;
  margin: 0 auto;
  padding: 0 clamp(16px, 3vw, 32px);
}
.geiq-video__wrap {
  position: relative;
  aspect-ratio: 16 / 9;
  border-radius: clamp(12px, 1.2vw, 20px);
  overflow: hidden;
  background: var(--color-neutral-900, #1a171b);
  box-shadow:
    0 20px 60px rgba(26,23,27,.14),
    0 8px 24px rgba(26,23,27,.06);
}
.geiq-video__wrap iframe {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  border: 0;
}
.geiq-video__wrap--empty {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 12px;
  color: rgba(255,255,255,.6);
  background: linear-gradient(135deg, #2a262e 0%, #1a171b 100%);
}
.geiq-video__empty-text {
  font-size: .9375rem;
  color: rgba(255,255,255,.7);
  text-align: center;
  max-width: 280px;
  margin: 0;
}


/* ── (3) Label GEIQ — cachet officiel + 3 critères ────────────── */

.geiq-label-badge {
  max-width: 1040px;
  margin: clamp(32px, 4vw, 56px) auto 0;
  padding: 0 clamp(16px, 3vw, 32px);
}
.geiq-label-badge__grid {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: clamp(32px, 5vw, 64px);
  align-items: center;
}

/* Le cachet : double cercle + texte circulaire */
.geiq-label-badge__seal {
  position: relative;
  width: 220px; height: 220px;
  margin: 0 auto;
}
.seal-ring {
  position: relative;
  width: 100%; height: 100%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 30% 30%, rgba(255,255,255,.15), transparent 60%),
    linear-gradient(135deg, var(--color-primary, #c41e3a) 0%, var(--color-primary-dark, #8b1228) 100%);
  display: flex; align-items: center; justify-content: center;
  box-shadow:
    0 0 0 6px rgba(196,30,58,.08),
    0 20px 50px rgba(196,30,58,.28),
    inset 0 2px 0 rgba(255,255,255,.25);
  animation: seal-in 1s cubic-bezier(.22,1,.36,1) both;
}
@keyframes seal-in {
  from { opacity: 0; transform: scale(.85) rotate(-8deg); }
  to   { opacity: 1; transform: scale(1) rotate(0); }
}
.seal-circle-text {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  /* v10.17.29 — Animation de rotation continue (30s).
     transform-origin center = centre du viewBox 220×220. */
  transform-origin: center;
  animation: seal-rotate 30s linear infinite;
}
@keyframes seal-rotate {
  to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .seal-circle-text { animation: none; }
}
.seal-text {
  fill: rgba(255,255,255,.85);
  font-family: var(--font-sans, 'Inter', sans-serif);
  font-weight: 700;
  text-transform: uppercase;
}
.seal-core {
  position: relative;
  text-align: center;
  color: #fff;
  padding: 22px 8px;
}
.seal-core__label {
  display: block;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .15em;
  opacity: .85;
  font-weight: 600;
}
.seal-core__brand {
  display: block;
  font-family: var(--font-display, 'Instrument Serif', serif);
  font-size: 2.4rem;
  line-height: 1;
  letter-spacing: -.02em;
  margin: 4px 0;
}
.seal-core__year {
  display: block;
  font-size: .72rem;
  opacity: .78;
  font-style: italic;
  letter-spacing: .05em;
}

/* Contenu texte + critères */
.geiq-label-badge__lead {
  font-size: clamp(1rem, 1.3vw, 1.125rem);
  line-height: 1.55;
  color: var(--color-neutral-700, #33313a);
  margin: 0 0 20px;
}
[data-theme="dark"] .geiq-label-badge__lead { color: rgba(255,255,255,.7); }
.geiq-label-badge__lead strong { color: var(--color-primary); font-weight: 600; }

.geiq-label-badge__criteria {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
/* v10.17.23 — Cards critères : bordure rouge statique + padding forcé.
   L'aurora border animée a été abandonnée (trop flashy, pas cohérent).
   On unifie light + dark avec une bordure rouge discrète, hover lift.

   Padding en !important : une règle générique héritée (core-list.css
   ou Ollie parent) `.entry-content li:first-child { padding-top: 0 }`
   écrasait le padding-top de la card "Insertion" (première de la liste).
   C'est LA cause du décalage vertical qui faisait passer l'icône
   "trop haute" pendant plusieurs itérations — rien à voir avec le SVG.
   Leçon : avant de modifier un SVG, toujours checker en DevTools si
   le computed style matche ce qu'on écrit. */
.geiq-label-badge__criteria > li {
  position: relative;
  display: flex; flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  padding: 18px !important;
  border-radius: var(--radius-md, 12px);
  background: var(--surface-card-bg, rgba(255,255,255,.96));
  border: 1px solid rgba(227, 0, 67, .22);
  transition:
    transform .35s ease,
    border-color .3s ease,
    box-shadow .35s ease;
}

.geiq-label-badge__criteria > li:hover {
  transform: translateY(-2px);
  border-color: rgba(227, 0, 67, .42);
  box-shadow: 0 8px 24px rgba(227, 0, 67, .12);
}

/* v10.17.20 — Icon pill 40×40 avec SVG 22×22 centré (taille native).
   Le padding CSS est retiré : SVG garde ses dimensions HTML 22×22 et
   le flex center le positionne au pixel au centre du 40×40 container.
   Avec les rayons de la cible ramenés à 9/5.5/2 (dans le pattern PHP),
   les 3 icônes ont désormais la même proportion visuelle dans leurs
   pills respectives. */
.criteria-icon {
  display: inline-flex;
  width: 40px; height: 40px;
  align-items: center; justify-content: center;
  background: var(--icon-pill-bg);
  color: var(--icon-pill-color);
  border: 1px solid var(--icon-pill-border, transparent);
  border-radius: 10px;
  box-sizing: border-box;
}
.criteria-icon > svg {
  display: block;
  /* Pas de width/height en CSS : on garde les 22×22 de l'attribut HTML,
     le SVG est centré dans le 40×40 par le flex parent. */
}
.criteria-title {
  font-family: var(--font-display);
  font-size: 1.05rem;
  color: var(--color-neutral-900);
}
[data-theme="dark"] .criteria-title { color: #f0eef1; }
.criteria-desc {
  font-size: .75rem;
  line-height: 1.4;
  color: var(--color-neutral-500);
}
[data-theme="dark"] .criteria-desc { color: rgba(255,255,255,.55); }

/* Responsive mobile */
@media (max-width: 767px) {
  .geiq-label-badge__grid {
    grid-template-columns: 1fr;
    gap: 32px;
    text-align: center;
  }
  .geiq-label-badge__lead { text-align: left; }
  .geiq-label-badge__criteria {
    grid-template-columns: 1fr;
  }
  .geiq-label-badge__criteria > li { text-align: left; }
}

/* v10.17.22 — Dark mode : on garde la même bordure rouge.
   Seule différence : le background hérite de --surface-card-bg qui
   est sombre en dark, donc la lecture du badge reste propre sans
   retoucher les opacités rouges. */
[data-theme="dark"] .geiq-label-badge__criteria > li {
  background: var(--surface-card-bg);
}

/* Respect prefers-reduced-motion : neutralise le lift du hover. */
@media (prefers-reduced-motion: reduce) {
  .geiq-label-badge__criteria > li:hover {
    transform: none;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   v10.17.31 — Témoignage hero (variant "single feature" du composant
   .testimonial existant, utilisé sur /geiq-btp/ et /geiq-multi/).
   Un seul témoignage mis en valeur, centré, format éditorial propre.
   Réutilise les tokens existants (--surface-card-bg, --radius-lg,
   --color-primary) pour garantir la cohérence avec le reste du site.
   ═══════════════════════════════════════════════════════════════════ */
.testimonial.testimonial--hero {
  max-width: 720px;
  margin: 0 auto !important;
  padding: clamp(28px, 4vw, 48px) !important;
  background: var(--surface-card-bg, rgba(255,255,255,.96)) !important;
  border: 0.5px solid rgba(227, 0, 67, .22) !important;
  border-radius: var(--radius-lg, 16px) !important;
  box-shadow: 0 10px 40px rgba(0,0,0,.04);
  text-align: center;
}
.testimonial.testimonial--hero .testimonial__quote.wp-block-quote {
  font-family: var(--font-display) !important;
  font-size: clamp(1.125rem, 1.8vw, 1.4rem) !important;
  font-style: italic !important;
  line-height: 1.55 !important;
  color: var(--color-neutral-800, #33313a) !important;
  margin: 0 0 clamp(20px, 3vw, 32px) !important;
  padding: 0 !important;
  border-left: none !important;
  text-align: center;
}
.testimonial.testimonial--hero .testimonial__quote.wp-block-quote p {
  margin: 0;
}
.testimonial.testimonial--hero .testimonial__author {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 2px !important;
  justify-content: center !important;
}
.testimonial.testimonial--hero .testimonial__meta {
  text-align: center !important;
}
.testimonial.testimonial--hero .testimonial__name {
  font-family: var(--font-display) !important;
  font-size: 1.125rem !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900, #1a171b) !important;
  margin: 0 !important;
}
.testimonial.testimonial--hero .testimonial__role {
  font-size: .875rem !important;
  color: var(--color-neutral-500, #696573) !important;
  margin: 0 !important;
}
[data-theme="dark"] .testimonial.testimonial--hero {
  background: rgba(255,255,255,.04) !important;
  border-color: rgba(255,255,255,.12) !important;
}
[data-theme="dark"] .testimonial.testimonial--hero .testimonial__quote.wp-block-quote { color: #f0eef1 !important; }
[data-theme="dark"] .testimonial.testimonial--hero .testimonial__name { color: #f0eef1 !important; }
[data-theme="dark"] .testimonial.testimonial--hero .testimonial__role { color: rgba(255,255,255,.55) !important; }


/* ═══════════════════════════════════════════════════════════════════
   v10.17.39 — Centrage du toggle [geiq56_persona_switch] dans le hero
   sur les pages /geiq-btp/ et /geiq-multi/. Le wrapper .persona-switch-
   wrap a été posé en post_content pour contenir le toggle ; on le force
   en flex centré horizontalement.
   ═══════════════════════════════════════════════════════════════════ */
.section--hero-spoke .persona-switch-wrap {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  width: 100% !important;
  margin: 0 auto clamp(20px, 3vw, 32px) !important;
}
.section--hero-spoke .persona-switch-wrap .persona-switch {
  margin: 0 auto;
}


/* ═══════════════════════════════════════════════════════════════════
   v10.17.42 — Block styles testimonials sur core/quote.
   ═══════════════════════════════════════════════════════════════════ */

.wp-block-quote.is-style-testimonial-hero {
  max-width: 720px;
  margin: 0 auto !important;
  padding: clamp(28px, 4vw, 48px) !important;
  background: var(--surface-card-bg, rgba(255,255,255,.96)) !important;
  border: 0.5px solid rgba(227, 0, 67, .22) !important;
  border-left: 0.5px solid rgba(227, 0, 67, .22) !important;
  border-radius: var(--radius-lg, 16px) !important;
  box-shadow: 0 10px 40px rgba(0,0,0,.04);
  text-align: center;
}
.wp-block-quote.is-style-testimonial-hero p {
  font-family: var(--font-display) !important;
  font-size: clamp(1.125rem, 1.8vw, 1.4rem) !important;
  font-style: italic !important;
  line-height: 1.55 !important;
  color: var(--color-neutral-800, #33313a) !important;
  margin: 0 0 clamp(20px, 3vw, 32px) !important;
  text-align: center;
}
.wp-block-quote.is-style-testimonial-hero p::before {
  content: '\201C';
  color: var(--color-primary);
  font-family: var(--font-display);
  font-size: 1.2em;
  margin-right: 0.1em;
}
.wp-block-quote.is-style-testimonial-hero p::after {
  content: '\201D';
  color: var(--color-primary);
  font-family: var(--font-display);
  font-size: 1.2em;
  margin-left: 0.1em;
}
.wp-block-quote.is-style-testimonial-hero cite {
  display: block;
  font-style: normal !important;
  font-family: var(--font-display) !important;
  font-size: 1.125rem !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900, #1a171b) !important;
  margin: 0 !important;
  line-height: 1.4;
}
[data-theme="dark"] .wp-block-quote.is-style-testimonial-hero {
  background: rgba(255,255,255,.04) !important;
  border-color: rgba(255,255,255,.12) !important;
}
[data-theme="dark"] .wp-block-quote.is-style-testimonial-hero p { color: #f0eef1 !important; }
[data-theme="dark"] .wp-block-quote.is-style-testimonial-hero cite { color: #f0eef1 !important; }

.wp-block-quote.is-style-testimonial-card {
  background: var(--surface-card-bg, rgba(255,255,255,.96)) !important;
  border: 0.5px solid rgba(0, 0, 0, .08) !important;
  border-left: 0.5px solid rgba(0, 0, 0, .08) !important;
  border-radius: var(--radius-md, 12px) !important;
  padding: clamp(20px, 2.5vw, 32px) !important;
  margin: 0 !important;
  transition: transform .35s ease, border-color .3s ease, box-shadow .35s ease;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.wp-block-quote.is-style-testimonial-card:hover {
  transform: translateY(-2px);
  border-color: rgba(227, 0, 67, .22);
  box-shadow: 0 12px 32px rgba(0,0,0,.06);
}
.wp-block-quote.is-style-testimonial-card p {
  font-size: clamp(.95rem, 1.2vw, 1.0625rem) !important;
  line-height: 1.55 !important;
  color: var(--color-neutral-700, #4b575f) !important;
  margin: 0 0 18px !important;
  flex: 1;
  position: relative;
  padding-left: 14px;
}
.wp-block-quote.is-style-testimonial-card p::before {
  content: '\201C';
  position: absolute;
  left: -2px;
  top: -8px;
  font-family: var(--font-display);
  font-size: 1.8em;
  color: var(--color-primary);
  line-height: 1;
}
.wp-block-quote.is-style-testimonial-card cite {
  display: block;
  font-style: normal !important;
  font-family: var(--font-sans) !important;
  font-size: .875rem !important;
  font-weight: 500 !important;
  color: var(--color-neutral-900, #1a171b) !important;
  margin: 0 !important;
  padding-top: 14px;
  border-top: 0.5px solid rgba(0,0,0,.08);
}
[data-theme="dark"] .wp-block-quote.is-style-testimonial-card {
  background: rgba(255,255,255,.04) !important;
  border-color: rgba(255,255,255,.08) !important;
}
[data-theme="dark"] .wp-block-quote.is-style-testimonial-card p { color: rgba(255,255,255,.72) !important; }
[data-theme="dark"] .wp-block-quote.is-style-testimonial-card cite {
  color: #f0eef1 !important;
  border-top-color: rgba(255,255,255,.08);
}


/* ═══════════════════════════════════════════════════════════════════
   v10.17.49 — Bande newsletter dans le footer global (mode LIGHT).
   Refonte du v48 qui partait sur du dark mais le footer GEIQ56 est en
   light. Encart sobre, bordure rouge subtle, layout flex 1 ligne
   desktop / stack mobile. Compatible avec l'encart custom actuel
   .newsletter-form--compact (rendu shortcode [geiq56_newsletter
   compact="1"]) ET avec un futur shortcode Brevo officiel quand le
   client aura créé son form.
   ═══════════════════════════════════════════════════════════════════ */
.site-footer .footer__newsletter {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: clamp(20px, 3vw, 40px);
  padding: clamp(24px, 3vw, 36px) clamp(24px, 3vw, 40px);
  margin: 0 auto clamp(32px, 4vw, 56px) !important;
  max-width: var(--wide-width, 1280px);
  background: rgba(0, 0, 0, .02);
  border: 0.5px solid rgba(227, 0, 67, .18);
  border-radius: var(--radius-lg, 16px);
  box-sizing: border-box;
}

/* Bloc texte à gauche */
.site-footer .footer__newsletter-text {
  flex: 1 1 320px;
  min-width: 0;
}
.site-footer .footer__newsletter-eyebrow {
  /* v10.17.50 — Pattern eyebrow site : pastille + dot rouge animé.
     Identique aux .section-eyebrow du reste du site, juste plus
     compact (font 11.5px). Plus d'emoji 📬 hors-style. */
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  font-size: .7rem !important;
  font-weight: 500 !important;
  color: var(--color-neutral-500, #696573) !important;
  border: 1px solid var(--color-neutral-200, #e6e3e9);
  border-radius: var(--radius-full, 999px);
  padding: 4px 12px;
  background: var(--color-neutral-50, #faf8f3);
  letter-spacing: 0;
  margin: 0 0 8px !important;
  text-transform: none;
  width: fit-content;
}
.site-footer .footer__newsletter-eyebrow::before {
  content: '';
  display: inline-block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--color-primary, #e30043);
  box-shadow: 0 0 8px rgba(227, 0, 67, .7);
  animation: blink 2.5s ease-in-out infinite;
  flex-shrink: 0;
}
@media (prefers-reduced-motion: reduce) {
  .site-footer .footer__newsletter-eyebrow::before { animation: none; }
}
[data-theme="dark"] .site-footer .footer__newsletter-eyebrow {
  color: rgba(255, 255, 255, .55) !important;
  border-color: rgba(255, 255, 255, .12);
  background: rgba(255, 255, 255, .04);
}
.site-footer .footer__newsletter-title {
  font-family: var(--font-display, 'Instrument Serif', serif) !important;
  font-size: clamp(1.25rem, 2vw, 1.5rem) !important;
  font-weight: 400 !important;
  color: var(--color-neutral-900, #1a171b) !important;
  margin: 0 0 4px !important;
  letter-spacing: -.01em;
  line-height: 1.25;
}
.site-footer .footer__newsletter-title strong {
  color: var(--color-primary, #e30043);
  font-weight: 400;
}
.site-footer .footer__newsletter-sub {
  font-size: .8125rem !important;
  color: var(--color-neutral-600, #696573) !important;
  margin: 0 !important;
  line-height: 1.5;
  max-width: 480px;
}

/* Form compact à droite — fake Brevo lookalike */
.site-footer .footer__newsletter form,
.site-footer .footer__newsletter .newsletter-form--compact {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 1 auto;
  min-width: 280px;
  margin: 0 !important;
}

.site-footer .footer__newsletter input[type="email"] {
  background: #fff !important;
  border: 0.5px solid rgba(0, 0, 0, .15) !important;
  color: var(--color-neutral-900, #1a171b) !important;
  padding: 10px 14px !important;
  border-radius: 8px !important;
  font-size: .875rem !important;
  font-family: var(--font-sans, 'Inter', sans-serif) !important;
  min-width: 220px;
  flex: 1;
  transition: border-color .25s ease, box-shadow .25s ease;
}
.site-footer .footer__newsletter input[type="email"]::placeholder {
  color: rgba(0, 0, 0, .35) !important;
}
.site-footer .footer__newsletter input[type="email"]:focus {
  border-color: var(--color-primary, #e30043) !important;
  box-shadow: 0 0 0 3px rgba(227, 0, 67, .1) !important;
  outline: none !important;
}
.site-footer .footer__newsletter button[type="submit"],
.site-footer .footer__newsletter input[type="submit"],
.site-footer .footer__newsletter .newsletter-form__btn {
  background: var(--color-primary, #e30043) !important;
  border: none !important;
  color: #fff !important;
  padding: 10px 20px !important;
  border-radius: 8px !important;
  font-size: .875rem !important;
  font-weight: 500 !important;
  font-family: var(--font-sans, 'Inter', sans-serif) !important;
  cursor: pointer;
  white-space: nowrap;
  transition: background .25s ease, transform .25s ease;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.site-footer .footer__newsletter button[type="submit"]:hover,
.site-footer .footer__newsletter input[type="submit"]:hover,
.site-footer .footer__newsletter .newsletter-form__btn:hover {
  background: var(--color-primary-dark, #b80037) !important;
  transform: translateY(-1px);
}

/* Honeypot anti-bot (label en position absolute), feedback msg, etc. — masquer si présent */
.site-footer .footer__newsletter form > label[style*="-9999px"] { display: none !important; }
.site-footer .footer__newsletter .newsletter-card__feedback {
  flex-basis: 100%;
  margin: 8px 0 0 !important;
  font-size: .8125rem;
  color: var(--color-primary, #e30043);
}

/* Dark mode : adapter */
[data-theme="dark"] .site-footer .footer__newsletter {
  background: rgba(255, 255, 255, .04);
  border-color: rgba(255, 255, 255, .12);
}
[data-theme="dark"] .site-footer .footer__newsletter-title { color: #f0eef1 !important; }
[data-theme="dark"] .site-footer .footer__newsletter-sub { color: rgba(255,255,255,.55) !important; }
[data-theme="dark"] .site-footer .footer__newsletter input[type="email"] {
  background: rgba(255,255,255,.05) !important;
  border-color: rgba(255,255,255,.15) !important;
  color: #fff !important;
}

/* v10.17.51 — Newsletter mobile compacte. Le rendu v50 laissait un
   énorme espace blanc autour. On serre le padding, on aligne propre,
   on garde la hiérarchie eyebrow → titre → sub → form lisible. */
@media (max-width: 720px) {
  .site-footer .footer__newsletter {
    flex-direction: column;
    align-items: stretch;
    padding: 18px 16px !important;
    margin: 0 16px clamp(24px, 4vw, 40px) !important;
    gap: 14px !important;
  }
  .site-footer .footer__newsletter-text { flex: 1 1 auto; }
  .site-footer .footer__newsletter-eyebrow {
    font-size: .65rem !important;
    padding: 3px 10px;
    margin: 0 0 6px !important;
  }
  .site-footer .footer__newsletter-title {
    font-size: 1.125rem !important;
    margin: 0 0 4px !important;
    line-height: 1.25 !important;
  }
  .site-footer .footer__newsletter-sub {
    font-size: .75rem !important;
    line-height: 1.45 !important;
    margin: 0 !important;
  }
  .site-footer .footer__newsletter form,
  .site-footer .footer__newsletter .newsletter-form--compact {
    flex-direction: column;
    width: 100%;
    min-width: 0;
    gap: 8px !important;
    margin: 0 !important;
  }
  .site-footer .footer__newsletter input[type="email"] {
    min-width: 0;
    width: 100% !important;
    padding: 10px 12px !important;
    font-size: .875rem !important;
  }
  .site-footer .footer__newsletter button[type="submit"],
  .site-footer .footer__newsletter input[type="submit"],
  .site-footer .footer__newsletter .newsletter-form__btn {
    width: 100% !important;
    justify-content: center !important;
    padding: 10px 16px !important;
    font-size: .875rem !important;
  }
}


/* v10.17.52 — Neutralisation des <br> et inputs hidden parasites dans
   le form newsletter footer. WordPress wpautop ajoute des <br> entre
   les <input type="hidden"> consécutifs (nonce, action, redirect_to,
   referer, honeypot), ce qui crée 100-150px d'espace blanc fantôme
   visible avant l'input email sur mobile.
   Solution : display:none sur tous ces éléments invisibles. */
.site-footer .footer__newsletter form br,
.site-footer .footer__newsletter .newsletter-form--compact br {
  display: none !important;
}
.site-footer .footer__newsletter form input[type="hidden"],
.site-footer .footer__newsletter .newsletter-form--compact input[type="hidden"] {
  display: none !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}
.site-footer .footer__newsletter form > label[style*="-9999px"],
.site-footer .footer__newsletter .newsletter-form--compact > label[style*="-9999px"] {
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden;
  margin: 0 !important;
  padding: 0 !important;
}


/* ═══════════════════════════════════════════════════════════════════
   v10.17.53 — Largeurs mobile pages Spoke (hors homepage).
   Avant : padding section (20px) + padding container (32px) = 52px
   total mais souvent le contenu touchait les bords car certaines
   sections n'ont pas de container OU les cards stretch full-width.
   Maintenant : padding-inline UNIFIÉ 24-32px sur mobile, le container
   interne neutralisé pour ne pas doubler. Plus d'air autour des cards
   et titres. Homepage exclue (a son propre rythme).
   ═══════════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  /* Pages Spoke : padding-inline cohérent sur toutes les sections */
  body:not(.home) .site-main [class*="section--"] {
    padding-inline: clamp(20px, 5vw, 32px) !important;
    box-sizing: border-box;
  }
  /* Container interne : neutralisé pour éviter le double padding */
  body:not(.home) .site-main [class*="section--"] .container.wp-block-group,
  body:not(.home) .site-main [class*="section--"] > .container,
  body:not(.home) .site-main [class*="section--"] > .wp-block-group.container {
    padding-inline: 0 !important;
    max-width: 100% !important;
  }
  /* Hero spoke : padding-inline restauré (était à 0 !important) */
  body:not(.home) .site-main .section--hero-spoke,
  body:not(.home) .site-main .section--hero-spoke.wp-block-group {
    padding-inline: clamp(20px, 5vw, 32px) !important;
  }
  body:not(.home) .site-main .section--hero-spoke .hero__content {
    padding-inline: 0 !important;
  }
  /* Cards / grilles : pas de padding-inline supplémentaire qui décalerait */
  body:not(.home) .features-grid.wp-block-columns,
  body:not(.home) .testimonials-grid.wp-block-columns,
  body:not(.home) .actus-grid.wp-block-columns,
  body:not(.home) .jobs-grid {
    padding-inline: 0 !important;
    margin-inline: 0 !important;
  }
}
