/* ============================================
   IAF Modular — section service réutilisable
   Grille 6 colonnes : col 1-2 = titre + icône, col 3-6 = texte + contenu additionnel.
   ============================================ */

:root {
  --iaf-modular-max-width: 1440px;
  --iaf-modular-padding-inline: 64px;
  --iaf-modular-padding-block: 120px;
  --iaf-modular-grid-gap: 32px;
  --iaf-modular-title-gap: 16px;
  --iaf-modular-text-paragraph-gap: 28px;
  --iaf-modular-additional-gap: 140px;
  --iaf-modular-col-gap: 48px;
  --iaf-modular-col-separator-pad: 24px;
  --iaf-modular-cross-gap: 0px;
  --iaf-modular-cross-cell-pad: 32px;
  --iaf-modular-toggles-gap: 24px;
  --iaf-modular-toggle-head-gap: 8px;
  --iaf-modular-toggle-intro-gap: 12px;
  --iaf-modular-toggle-trigger-gap: 10px;
  --iaf-modular-toggle-panel-gap: 12px;
  --iaf-modular-toggle-footer-gap: 10px;
  --iaf-modular-toggle-fade-duration: 800ms;
  --iaf-modular-toggle-fade-duration-reduced: 200ms;
  --iaf-modular-toggle-divider: rgba(17, 78, 109, 0.35);
  /* Offset sous le header fixe (Services — titres de section sticky) */
  --iaf-modular-sticky-top: 60px;
  --iaf-modular-nav-picto-fade: 0.38s;
  --iaf-modular-toggle-reveal-step: 100ms;
  --iaf-modular-col-icon-fade-duration: 80ms;
  --iaf-modular-col-icon-size: 24px;
  --iaf-modular-col-icon-title-gap: 12px;
}

.iaf-modular {
  width: 100%;
  box-sizing: border-box;
  padding-bottom: var(--iaf-modular-padding-block);
  padding-inline: var(--iaf-modular-padding-inline);
  background-color: transparent;
  display: flex;
  justify-content: center;
}

/* Ancres Services (#strategic-advisory, etc.) : laisser de l’air sous le header. */
.iaf-modular[id] {
  scroll-margin-top: calc(var(--iaf-modular-sticky-top, 60px) + 56px);
}

.iaf-ext-spacing:not(.iaf-ext-spacing--has-top-divider) > .iaf-modular {
  padding-top: var(--iaf-modular-padding-block);
}

.iaf-ext-spacing--has-top-divider > .iaf-modular,
.iaf-ext-spacing--has-bottom-divider + .iaf-ext-spacing > .iaf-modular {
  padding-top: 0;
}

.iaf-modular__inner {
  width: 100%;
  max-width: calc(var(--iaf-modular-max-width) - (var(--iaf-modular-padding-inline) * 2));
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  column-gap: var(--iaf-modular-grid-gap);
  align-items: start;
}

/* -------- Colonne gauche : picto + titre (col 1-2) -------- */

.iaf-modular__title-col {
  grid-column: 1 / span 2;
  align-self: start;
}

.iaf-modular__title-wrap {
  display: flex;
  flex-direction: column;
  gap: var(--iaf-modular-title-gap);
}

/* Desktop : picto + titre sticky dans chaque section (scroll page, limite = la section).
   La colonne titre doit occuper toute la hauteur de la ligne (contenu à droite) :
   avec align-items:start sur la grille, title-col ne s’étire pas → sticky sans marge. */
@media (min-width: 1024px) {
  section.iaf-modular.iaf-ext {
    overflow: visible;
    contain: none;
  }

  .iaf-modular__inner {
    overflow: visible;
    contain: none;
    align-items: stretch;
  }

  .iaf-modular__title-col,
  .iaf-modular__content-wrap {
    grid-row: 1;
  }

  .iaf-modular__title-col {
    align-self: stretch;
    min-height: 0;
  }

  .iaf-modular__title-wrap {
    position: sticky;
    top: var(--iaf-modular-sticky-top);
    z-index: 2;
  }
}

.iaf-modular__picto-wrap {
  display: flex;
  align-items: flex-start;
  opacity: 1;
  transition: opacity var(--iaf-modular-nav-picto-fade) var(--iaf-reveal-ease-out, ease);
}

.iaf-modular__picto-wrap.is-picto-hidden-for-nav {
  opacity: 1;
}

.iaf-modular__title {
  margin: 0;
  color: var(--iaf-canvas-heading);
  text-wrap: balance;
}

/* Toggles : cascade plus serrée que les modules (même système iaf-reveal__cell) */
.iaf-modular__toggles .iaf-reveal__cell {
  transition-delay: 0ms;
}

.iaf-modular.iaf-reveal--stagger.is-revealed .iaf-modular__toggles .iaf-reveal__cell {
  transition-delay: calc(var(--iaf-stagger) * var(--iaf-modular-toggle-reveal-step));
}

/* -------- Colonne droite : texte + contenu additionnel (col 3-6) -------- */

.iaf-modular__content-wrap {
  grid-column: 3 / span 4;
  display: flex;
  flex-direction: column;
}

/* Per-module vertical spacing (admin presets → CSS vars on wrapper) */
.iaf-modular__module {
  margin-top: var(--iaf-mod-spacing-before, 120px);
  margin-bottom: var(--iaf-mod-spacing-after, 120px);
}

.iaf-modular__module--first,
.iaf-modular__module:first-child {
  margin-top: 0;
}

.iaf-modular__module:last-child {
  margin-bottom: var(--iaf-mod-spacing-after, 120px);
}

.iaf-modular__module > .iaf-modular__toggles,
.iaf-modular__module > .iaf-modular__additional {
  margin-top: 0;
}

/* Internal Separator module — 60px before line, 0 after (flex column, no margin collapse). */
:root {
  --iaf-modular-separator-gap-before: 60px;
  --iaf-modular-separator-gap-after: 0px;
  --iaf-modular-separator-to-label-gap: 60px;
}

.iaf-modular__module:has(+ .iaf-modular__module--separator) {
  --iaf-mod-spacing-after: 0;
}

.iaf-modular__module--separator {
  --iaf-mod-spacing-before: var(--iaf-modular-separator-gap-before);
  --iaf-mod-spacing-after: var(--iaf-modular-separator-gap-after);
}

.iaf-modular__module--separator + .iaf-modular__module {
  --iaf-mod-spacing-before: var(--iaf-modular-separator-to-label-gap);
}

.iaf-modular__module--separator + .iaf-modular__module--eyebrow {
  margin-top: var(--iaf-modular-separator-to-label-gap) !important;
  margin-bottom: var(--iaf-modular-separator-to-label-gap) !important;
}

.iaf-modular__module--eyebrow + .iaf-modular__module > .iaf-modular__toggles {
  margin-top: 0;
}

/* Quand pas de titre de section : le contenu prend toute la largeur */
.iaf-modular__inner:not(:has(.iaf-modular__title-col)) .iaf-modular__content-wrap {
  grid-column: 1 / -1;
}

/* -------- Texte principal — GT America H3 Regular, noir -------- */

.iaf-modular__text {
  color: var(--iaf-canvas-text);
  text-wrap: pretty;
}

.iaf-modular__text p {
  margin: 0;
}

.iaf-modular__text.iaf-rich-content p + p,
.iaf-modular__text p + p {
  margin-top: var(--iaf-modular-text-paragraph-gap);
}

.iaf-modular__text em {
  font-style: italic;
}

/* -------- Services toggles (accordion) -------- */

.iaf-modular__toggles {
  margin-top: var(--iaf-modular-toggles-gap);
  display: flex;
  flex-direction: column;
}

  .iaf-modular__toggle {
    display: flex;
    flex-direction: column;
    border-bottom: 1px solid var(--iaf-modular-toggle-divider);
    padding-bottom: var(--iaf-modular-toggles-gap);
    margin-bottom: var(--iaf-modular-toggles-gap);
  }

.iaf-modular__toggle--expandable {
  cursor: pointer;
}

.iaf-modular__toggle:last-child {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 0;
}

.iaf-modular__toggle-body {
  display: flex;
  flex-direction: column;
  gap: var(--iaf-modular-toggle-head-gap);
}

.iaf-modular__toggle-headline {
  margin: 0;
  color: var(--iaf-canvas-text);
  max-width: 52em;
}

.iaf-modular__toggle-intro {
  color: var(--iaf-canvas-text);
  max-width: 52em;
}

.iaf-modular__toggle-intro p {
  margin: 0;
}

.iaf-modular__toggle-intro p + p {
  margin-top: var(--iaf-modular-toggle-intro-gap);
}

.iaf-modular__toggle-trigger {
  display: inline-flex;
  align-items: center;
  gap: var(--iaf-modular-toggle-trigger-gap);
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  color: var(--iaf-primary-1, #2398ff);
  align-self: flex-start;
}

.iaf-modular__toggle-trigger:hover,
.iaf-modular__toggle-trigger:focus-visible {
  color: var(--iaf-primary-2, #114e6d);
  outline: none;
}

.iaf-modular__toggle-footer {
  max-width: 52em;
  width: 100%;
}

.iaf-modular__toggle-footer--closed {
  margin-top: calc(var(--iaf-modular-toggle-footer-gap) - var(--iaf-modular-toggle-head-gap));
}

.iaf-modular__toggle.is-open .iaf-modular__toggle-footer--closed {
  margin-top: 0;
  max-height: 0;
  overflow: hidden;
}

.iaf-modular__toggle-footer--open {
  display: inline-flex;
  align-items: center;
  margin-top: 0;
  opacity: 0;
  pointer-events: none;
  transform: translateX(0);
  transition:
    opacity var(--iaf-modular-toggle-fade-duration) var(--iaf-interaction-hover-easing),
    transform var(--iaf-interaction-hover-duration) var(--iaf-interaction-hover-easing);
}

:where(
  .iaf-modular__toggle.is-open .iaf-modular__toggle-footer--open:hover,
  .iaf-modular__toggle.is-open:hover .iaf-modular__toggle-footer--open
) {
  transform: translateX(var(--iaf-interaction-hover-shift));
}

.iaf-modular__toggle.is-open .iaf-modular__toggle-footer--open {
  margin-top: calc(var(--iaf-modular-toggle-panel-gap) - var(--iaf-modular-toggle-head-gap));
  opacity: 1;
}

.iaf-modular__toggle-read,
.iaf-modular__toggle-chevron--closed,
.iaf-modular__toggle-chevron--open {
  transition: opacity var(--iaf-modular-toggle-fade-duration) var(--iaf-interaction-hover-easing);
}

.iaf-modular__toggle-read {
  opacity: 1;
}

.iaf-modular__toggle.is-open .iaf-modular__toggle-read,
.iaf-modular__toggle.is-open .iaf-modular__toggle-chevron--closed {
  opacity: 0;
  pointer-events: none;
}

.iaf-modular__toggle-chevron {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 10px;
  height: 10px;
  flex-shrink: 0;
  color: var(--iaf-primary-1, #2398ff);
}

.iaf-modular__toggle-chevron svg {
  display: block;
}

.iaf-modular__toggle-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--iaf-interaction-hover-duration) var(--iaf-interaction-hover-easing);
}

.iaf-modular__toggle-panel.is-open {
  grid-template-rows: 1fr;
}

.iaf-modular__toggle-panel-inner {
  overflow: hidden;
  min-height: 0;
}

.iaf-modular__toggle-panel.is-open .iaf-modular__toggle-panel-inner {
  padding-top: var(--iaf-modular-toggle-panel-gap);
}

.iaf-modular__toggle-full {
  color: var(--iaf-canvas-text);
  max-width: 52em;
}

.iaf-modular__toggle-full p {
  margin: 0;
}

.iaf-modular__toggle-full p + p {
  margin-top: 8px;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --iaf-modular-toggle-fade-duration: var(--iaf-modular-toggle-fade-duration-reduced);
    --iaf-modular-nav-picto-fade: 0.01s;
    --iaf-modular-toggle-reveal-step: 0ms;
  }

  .iaf-modular__toggle-panel {
    transition: none;
  }

  .iaf-modular__toggle-footer--open,
  .iaf-modular__toggle-read,
  .iaf-modular__toggle-chevron--closed,
  .iaf-modular__toggle-chevron--open {
    transition-duration: var(--iaf-modular-toggle-fade-duration-reduced);
  }

  .iaf-modular__picto-wrap.is-picto-hidden-for-nav {
    opacity: 1 !important;
    transition: none !important;
  }

  .iaf-modular__columns .iaf-modular__col-icon--scroll-fade {
    opacity: 1 !important;
    transition: none !important;
    will-change: auto;
  }
}

/* -------- Séparateur Lottie entre piliers Services (×2 : gauche + droite 180°) -------- */

/* Moins d’air entre le bas du contenu d’un pilier et le séparateur Lottie suivant. */
.iaf-ext-spacing:has(> .iaf-modular):has(+ .iaf-services-lottie-sep) > .iaf-modular {
  padding-bottom: 32px;
}

.iaf-services-lottie-sep {
  --iaf-services-lottie-sep-cell-size: 120px;
  --iaf-services-lottie-sep-cell-gap: 0;
  width: 100%;
  padding: 0 var(--iaf-layout-padding-inline) var(--iaf-ext-divider-gap);
  pointer-events: none;
  box-sizing: border-box;
  line-height: 0;
}

.iaf-services-lottie-sep__anim {
  display: grid;
  grid-template-columns: repeat(2, var(--iaf-services-lottie-sep-cell-size));
  grid-template-rows: var(--iaf-services-lottie-sep-cell-size);
  gap: var(--iaf-services-lottie-sep-cell-gap);
  width: fit-content;
  max-width: 100%;
  margin: 0 auto;
  line-height: 0;
}

.iaf-services-lottie-sep__cell {
  width: var(--iaf-services-lottie-sep-cell-size);
  height: var(--iaf-services-lottie-sep-cell-size);
  overflow: hidden;
  line-height: 0;
  margin: 0;
  padding: 0;
}

.iaf-services-lottie-sep__cell svg,
.iaf-services-lottie-sep__video {
  display: block;
  width: 100%;
  height: 100%;
  vertical-align: top;
}

.iaf-services-lottie-sep__video {
  object-fit: cover;
  object-position: center;
  border: 0;
  background: transparent;
}

.iaf-services-lottie-sep__cell--b {
  transform: rotate(180deg);
  transform-origin: center center;
}

/* Mobile : une seule cellule, alignée à gauche (pas de doublon miroir). */
@media (max-width: 1023px) {
  .iaf-services-lottie-sep__anim {
    grid-template-columns: var(--iaf-services-lottie-sep-cell-size);
    margin: 0;
  }

  .iaf-services-lottie-sep__cell--b {
    display: none;
  }
}


/* -------- Contenu additionnel -------- */

.iaf-modular__additional {
  margin-top: var(--iaf-modular-additional-gap);
}

/* -------- Columns module (1–4) -------- */

.iaf-modular__columns {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: var(--iaf-modular-col-gap);
  align-items: start;
}

.iaf-modular__columns--count-1 {
  grid-template-columns: 1fr;
}

.iaf-modular__columns--count-2 {
  grid-template-columns: repeat(2, 1fr);
}

.iaf-modular__columns--count-3 {
  grid-template-columns: repeat(3, 1fr);
}

.iaf-modular__columns--count-4 {
  grid-template-columns: repeat(4, 1fr);
}

.iaf-modular__col {
  display: flex;
  flex-direction: column;
  border-left: 1px solid var(--iaf-canvas-border-strong);
  padding-left: var(--iaf-modular-col-separator-pad);
  box-sizing: border-box;
}

.iaf-modular__col-icon {
  margin: 0 0 var(--iaf-modular-col-icon-title-gap);
  line-height: 0;
  flex-shrink: 0;
}

/* Opacity is driven per-frame by `iaf-columns-icons.js` (continuous mapping
   to viewport position). The short transition just smooths between rAF
   frames without lagging behind scroll. */
.iaf-modular__columns .iaf-modular__col-icon--scroll-fade {
  opacity: 0;
  transition: opacity var(--iaf-modular-col-icon-fade-duration) linear;
  will-change: opacity;
}

.iaf-modular__columns .iaf-modular__col-icon-img {
  display: block;
  width: var(--iaf-modular-col-icon-size);
  height: var(--iaf-modular-col-icon-size);
  max-width: var(--iaf-modular-col-icon-size);
  max-height: var(--iaf-modular-col-icon-size);
  object-fit: contain;
}

.iaf-modular__col-headline {
  margin: 0 0 40px;
  color: var(--iaf-canvas-accent);
}

.iaf-modular__col-body {
  color: var(--iaf-canvas-text);
}

.iaf-modular__col-body p {
  margin: 0;
}

.iaf-modular__col-body p + p {
  margin-top: 16px;
}

/* -------- Image module -------- */

.iaf-modular__additional--image .iaf-modular__figure {
  margin: 0;
}

.iaf-modular__image-frame {
  overflow: hidden;
  width: 100%;
}

.iaf-modular__img {
  display: block;
  width: 100%;
  max-width: 100%;
}

.iaf-modular__image--cover .iaf-modular__image-frame {
  position: relative;
  aspect-ratio: 3 / 2;
}

.iaf-modular__image--cover .iaf-modular__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.iaf-modular__image--contain .iaf-modular__img {
  height: auto;
  object-fit: contain;
}

.iaf-modular__image-caption {
  margin: 12px 0 0;
  padding: 0;
  text-align: left;
  color: var(--iaf-canvas-text);
}

.iaf-modular__image-caption-text,
.iaf-modular__image-credit {
  margin: 0;
}

.iaf-modular__image-caption-text + .iaf-modular__image-credit {
  margin-top: 4px;
}

.iaf-modular__image--parallax .iaf-modular__image-frame {
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .iaf-modular__image--parallax .iaf-modular__img {
    transform: none !important;
  }
}

/* -------- Option : Image carousel (one slide visible) -------- */

.iaf-modular__additional--carousel {
  --iaf-modular-carousel-height: 480px;
  --iaf-modular-carousel-duration: 1500ms;
  /* Décélération franche, sans dépassement (pas d'aller-retour gauche/droite). */
  --iaf-modular-carousel-easing: cubic-bezier(0.4, 0, 0.2, 1);
  --iaf-modular-carousel-edge: 100px;
  --iaf-modular-carousel-lead-gap: 80px;
  --iaf-modular-carousel-head-gap: 40px;
  margin-top: 0;
  padding-top: var(--iaf-modular-carousel-lead-gap);
  overflow: visible;
}

.iaf-modular__carousel-intro {
  margin: 0 0 var(--iaf-modular-carousel-head-gap);
  width: 100%;
  max-width: 100%;
}

.iaf-modular__carousel-headline {
  margin: 0 0 16px;
  color: var(--iaf-canvas-heading, #114e6d);
}

.iaf-modular__carousel-sublines {
  margin: 0;
  color: var(--iaf-canvas-text);
}

.iaf-modular__carousel-sublines > * + * {
  margin-top: var(--iaf-modular-text-paragraph-gap);
}

.iaf-modular__module:has(.iaf-modular__additional--carousel),
.iaf-modular__content-wrap:has(.iaf-modular__additional--carousel) {
  overflow: visible;
}

/* Ruban full viewport ; fenêtre décalée = bord gauche image aligné texte au repos.
   Slides 100vw : en sortie l’image traverse la bande [0, inset] jusqu’au bord page. */
.iaf-modular__image-carousel {
  width: 100%;
  --iaf-modular-carousel-inset-left: 0px;
}

.iaf-modular:has(.iaf-modular__additional--carousel) {
  overflow: visible;
}

.iaf-modular__image-carousel-ribbon {
  position: relative;
  z-index: 1;
  width: 100vw;
  max-width: none;
  margin-left: calc(-1 * var(--iaf-modular-carousel-inset-left, 0px));
  overflow: hidden;
}

.iaf-modular__image-carousel-viewport {
  /* Pas de clip ici : l'image sortante doit traverser jusqu'au bord gauche (0vw).
     Le ruban (100vw, overflow:hidden) reste le seul à couper, aux bords du viewport.
     La marge conserve la position de repos de l'image active (aligné au contenu). */
  overflow: visible;
  width: calc(100vw - var(--iaf-modular-carousel-inset-left, 0px));
  margin-left: var(--iaf-modular-carousel-inset-left, 0px);
}

.iaf-modular__carousel-edge-overlay {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  width: 100vw;
  height: 100%;
  pointer-events: none;
}

.iaf-modular__carousel-edge {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 0;
  width: var(--iaf-modular-carousel-edge);
  max-width: min(20vw, 120px);
  height: 100%;
  pointer-events: none;
}

.iaf-modular__carousel-edge--left {
  left: 0;
}

.iaf-modular__carousel-edge--right {
  right: 0;
}

.iaf-modular__carousel-edge-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(1) {
  backdrop-filter: blur(0.5px);
  -webkit-backdrop-filter: blur(0.5px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 18%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 18%);
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(2) {
  backdrop-filter: blur(1px);
  -webkit-backdrop-filter: blur(1px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 26%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 26%);
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(3) {
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 34%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 34%);
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(4) {
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 44%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 44%);
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(5) {
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 60%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 60%);
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(6) {
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 78%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 78%);
}

.iaf-modular__carousel-edge--left .iaf-modular__carousel-edge-layer:nth-child(7) {
  backdrop-filter: blur(32px);
  -webkit-backdrop-filter: blur(32px);
  mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 100%);
  -webkit-mask: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 100%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(1) {
  backdrop-filter: blur(0.5px);
  -webkit-backdrop-filter: blur(0.5px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 18%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 18%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(2) {
  backdrop-filter: blur(1px);
  -webkit-backdrop-filter: blur(1px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 26%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 26%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(3) {
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 34%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 34%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(4) {
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 44%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 44%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(5) {
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 60%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 60%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(6) {
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 78%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 78%);
}

.iaf-modular__carousel-edge--right .iaf-modular__carousel-edge-layer:nth-child(7) {
  backdrop-filter: blur(32px);
  -webkit-backdrop-filter: blur(32px);
  mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 100%);
  -webkit-mask: linear-gradient(to left, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 100%);
}

.iaf-modular__image-carousel-track {
  display: flex;
  width: 100%;
  transform: translate3d(0, 0, 0);
  transition: transform var(--iaf-modular-carousel-duration) var(--iaf-modular-carousel-easing);
  will-change: transform;
}

.iaf-modular__image-carousel-track.is-instant {
  transition: none !important;
}

.iaf-modular__image-carousel-item {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  flex: 0 0 100vw;
  width: 100vw;
  min-width: 0;
  margin: 0;
  padding: 0;
}

.iaf-modular__image-carousel-item .iaf-modular__image--cover,
.iaf-modular__image-carousel-item .iaf-modular__image--contain {
  width: 100%;
  align-self: stretch;
}

.iaf-modular__additional--carousel .iaf-modular__image-frame {
  position: relative;
  height: var(--iaf-modular-carousel-height);
  aspect-ratio: auto;
}

.iaf-modular__additional--carousel .iaf-modular__image--cover .iaf-modular__img,
.iaf-modular__additional--carousel .iaf-modular__image--contain .iaf-modular__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.iaf-modular__additional--carousel .iaf-modular__image--cover .iaf-modular__img {
  object-fit: cover;
}

.iaf-modular__additional--carousel .iaf-modular__image--contain .iaf-modular__img {
  object-fit: contain;
  object-position: left center;
}

.iaf-modular__carousel-caption {
  margin: 12px 0 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
  text-align: left;
  color: var(--iaf-canvas-text);
  font-family: var(--font-martina);
  font-style: italic;
  font-size: var(--mp-caption-size, 16px);
  line-height: var(--mp-caption-lh, 20px);
  letter-spacing: 0;
}

.iaf-modular__carousel-meta {
  width: 100%;
}

.iaf-modular__carousel-caption-text {
  margin: 0;
  text-align: left;
}

/* Crédit de curation — fixe sous les captions, au-dessus des flèches.
   Hors du track : ne défile jamais avec les slides. */
.iaf-modular__carousel-curation {
  margin: 12px 0 0;
  padding: 0;
  width: 100%;
  text-align: left;
  color: var(--iaf-canvas-text);
  font-family: var(--font-martina);
  font-style: italic;
  font-size: var(--mp-caption-size, 16px);
  line-height: var(--mp-caption-lh, 20px);
  letter-spacing: 0;
}

.iaf-modular__carousel-controls {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 16px;
}

.iaf-modular__carousel-btn {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 4px 0;
  margin: 0;
  color: var(--iaf-canvas-accent);
  cursor: pointer;
  line-height: 0;
  transition: color var(--iaf-interaction-hover-duration, 1200ms) var(--iaf-interaction-hover-easing, cubic-bezier(0.25, 0.8, 0.25, 1));
}

.iaf-modular__carousel-btn.is-busy {
  pointer-events: none;
  opacity: 0.45;
}

.iaf-modular__carousel-btn:hover,
.iaf-modular__carousel-btn:focus-visible {
  color: var(--iaf-canvas-heading);
  outline: none;
}

.iaf-modular__carousel-btn-icon svg {
  display: block;
  width: 22px;
  height: 11px;
}

@media (max-width: 900px) {
  .iaf-modular__additional--carousel {
    --iaf-modular-carousel-height: 320px;
    --iaf-modular-carousel-lead-gap: 48px;
    --iaf-modular-carousel-head-gap: 28px;
  }

  .iaf-modular__carousel-edge-overlay,
  .iaf-modular__carousel-edge--left,
  .iaf-modular__carousel-edge--right {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .iaf-modular__image-carousel-track {
    transition-duration: 120ms;
  }
}

/* -------- Option : Cross layout 2×2 -------- */

.iaf-modular__additional--cross {
  width: 100%;
}

.iaf-modular__cross-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  width: 100%;
  gap: var(--iaf-modular-cross-gap);
}

.iaf-modular__cross-cell {
  padding: var(--iaf-modular-cross-cell-pad);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

/* Filet vertical central (entre col 1 et col 2) */
.iaf-modular__cross-cell--0,
.iaf-modular__cross-cell--2 {
  border-right: 1px solid var(--iaf-canvas-border-strong);
}

/* Filet horizontal central (entre ligne 1 et ligne 2) */
.iaf-modular__cross-cell--0,
.iaf-modular__cross-cell--1 {
  border-bottom: 1px solid var(--iaf-canvas-border-strong);
}

.iaf-modular__cross-cell--0 {
  padding-top: 0;
  padding-left: 0;
}

.iaf-modular__cross-cell--1 {
  padding-top: 0;
  padding-right: 0;
}

.iaf-modular__cross-cell--2 {
  padding-bottom: 0;
  padding-left: 0;
}

.iaf-modular__cross-cell--3 {
  padding-bottom: 0;
  padding-right: 0;
}

.iaf-modular__cross-title {
  margin: 0 0 12px;
  color: var(--iaf-canvas-accent);
  text-wrap: balance;
}

.iaf-modular__cross-title:last-child {
  margin-bottom: 0;
}

.iaf-modular__cross-text {
  color: var(--iaf-canvas-text);
}

.iaf-modular__cross-text p {
  margin: 0;
}

.iaf-modular__cross-text p + p {
  margin-top: 14px;
}

/* --- Responsive --- */
@media (max-width: 1023px) {
  :root {
    --iaf-modular-padding-block: var(--iaf-layout-padding-block-tablet, 64px);
    --iaf-modular-padding-inline: var(--iaf-layout-padding-inline-tablet, 24px);
    --iaf-modular-additional-gap: var(--iaf-mobile-module-gap, 48px);
    --iaf-modular-col-gap: var(--iaf-mobile-stack-gap, 24px);
    --iaf-modular-mobile-eyebrow-after-gap: 16px;
    --iaf-modular-mobile-ext-gap: 64px;
  }

  .iaf-modular[id] {
    scroll-margin-top: calc(72px + 48px);
  }

  .iaf-modular__inner {
    grid-template-columns: 1fr;
    column-gap: 0;
  }

  .iaf-modular__title-col,
  .iaf-modular__content-wrap {
    grid-column: 1 / -1;
    grid-row: auto;
  }

  .iaf-modular__title-col {
    margin-bottom: var(--iaf-mobile-stack-gap, 24px);
  }

  .iaf-modular__title-wrap {
    position: static;
    top: auto;
    flex-direction: row;
    align-items: center;
    gap: 12px;
  }

  .iaf-modular__picto-wrap {
    flex: 0 0 auto;
  }

  .iaf-modular__title {
    flex: 1 1 auto;
    min-width: 0;
  }

  .iaf-modular__module {
    margin-top: var(--iaf-mobile-module-gap, 48px);
    margin-bottom: var(--iaf-mobile-module-gap, 48px);
  }

  /* Eyebrow / label juste sous un filet (ex. « WE ADVISE ON ») — 16px, pas 48px. */
  .iaf-modular__module--separator {
    --iaf-mod-spacing-before: var(--iaf-ext-divider-gap-before, 32px);
    margin-bottom: 0;
  }

  .iaf-modular__module--separator + .iaf-modular__module {
    margin-top: var(--iaf-ext-item-divider-gap, 16px);
  }

  /* Eyebrow (ex. « WE ADVISE ON ») → contenu en dessous : moins d’air. */
  .iaf-modular__module--eyebrow {
    margin-bottom: 0;
  }

  .iaf-modular__module--eyebrow + .iaf-modular__module {
    margin-top: var(--iaf-modular-mobile-eyebrow-after-gap);
  }

  /* Plus d’air entre deux extensions Modular sur la page. */
  .iaf-ext-spacing:has(> .iaf-modular) + .iaf-ext-spacing--has-top-divider:has(> .iaf-modular)::before {
    margin-top: var(--iaf-modular-mobile-ext-gap);
  }

  .iaf-modular__additional {
    margin-top: var(--iaf-mobile-module-gap, 48px);
  }

  .iaf-modular__text.iaf-rich-content p + p,
  .iaf-modular__text p + p {
    margin-top: 20px;
  }

  .iaf-modular__columns--count-2,
  .iaf-modular__columns--count-3,
  .iaf-modular__columns--count-4 {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .iaf-modular__col {
    border-left: none;
    padding-left: 0;
    padding-top: 0;
    border-top: none;
    margin-top: 0;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-rows: auto auto;
    column-gap: 12px;
    row-gap: 12px;
    align-items: center;
  }

  .iaf-modular__col-icon {
    grid-column: 1;
    grid-row: 1;
    margin: 0;
    align-self: center;
  }

  .iaf-modular__col-headline {
    grid-column: 2;
    grid-row: 1;
    margin-bottom: 0;
  }

  .iaf-modular__col-body {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  .iaf-modular__col:not(:has(.iaf-modular__col-icon)) .iaf-modular__col-headline {
    grid-column: 1 / -1;
  }

  /* Pas de fade/blur scroll sur mobile — icônes toujours nettes. */
  .iaf-modular__columns .iaf-modular__col-icon--scroll-fade {
    opacity: 1 !important;
    transition: none !important;
    will-change: auto;
  }

  .iaf-modular__col + .iaf-modular__col {
    margin-top: var(--iaf-ext-divider-gap-before, 32px);
    padding-top: var(--iaf-ext-item-divider-gap, 16px);
    border-top: 1px solid var(--iaf-canvas-border-strong);
  }

  /* Accordion Services / toggles : 32px avant le filet, 16px filet → titre suivant. */
  .iaf-modular__toggle:not(:last-child) {
    padding-bottom: var(--iaf-ext-divider-gap-before, 32px);
    margin-bottom: var(--iaf-ext-item-divider-gap, 16px);
  }

  .iaf-modular__cross-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }

  .iaf-modular__cross-cell--0,
  .iaf-modular__cross-cell--1,
  .iaf-modular__cross-cell--2,
  .iaf-modular__cross-cell--3 {
    border-right: none;
    border-bottom: 1px solid var(--iaf-canvas-border-strong);
    padding: var(--iaf-modular-cross-cell-pad) 0;
  }

  .iaf-modular__cross-cell--3 {
    border-bottom: none;
  }

  .iaf-modular__image-caption {
    margin-top: 10px;
  }

  .iaf-modular__image--cover .iaf-modular__image-frame {
    aspect-ratio: 4 / 3;
  }
}

@media (max-width: 768px) {
  :root {
    --iaf-modular-padding-block: var(--iaf-layout-padding-block-phone, 56px);
    --iaf-modular-padding-inline: var(--iaf-layout-padding-inline-phone, 20px);
    --iaf-modular-additional-gap: 80px;
    --iaf-modular-col-gap: 32px;
    --iaf-modular-cross-cell-pad: 20px;
    --iaf-modular-toggles-gap: 16px;
  }

  .iaf-modular__columns {
    grid-template-columns: 1fr;
  }

  .iaf-modular__cross-grid {
    grid-template-columns: 1fr;
  }

  .iaf-modular__cross-cell--0,
  .iaf-modular__cross-cell--2 {
    border-right: none;
  }

  .iaf-modular__cross-cell--0,
  .iaf-modular__cross-cell--1,
  .iaf-modular__cross-cell--2 {
    border-bottom: 1px solid var(--iaf-canvas-border-strong);
  }

  .iaf-modular__cross-cell--3 {
    border-bottom: none;
  }

  .iaf-modular__cross-cell {
    padding-left: 0;
    padding-right: 0;
  }
}
