/* --- floating-cards-cloud --- */
  /* ==== Flottement "nuage" sur les floating cards ==== */
  .floating_card {
    will-change: transform;
    animation: floatCard 7s ease-in-out infinite;
  }
  @keyframes floatCard {
    0% {
      transform: translate3d(0, 0, 0) rotate(0deg);
    }
    25% {
      transform: translate3d(3px, -9px, 0) rotate(0.5deg);
    }
    50% {
      transform: translate3d(0, -15px, 0) rotate(0deg);
    }
    75% {
      transform: translate3d(-3px, -7px, 0) rotate(-0.5deg);
    }
    100% {
      transform: translate3d(0, 0, 0) rotate(0deg);
    }
  }
  @keyframes floatCardCentered {
    0% {
      transform: translateX(-50%) translate3d(0, 0, 0) rotate(0deg);
    }
    25% {
      transform: translateX(-50%) translate3d(3px, -9px, 0) rotate(0.5deg);
    }
    50% {
      transform: translateX(-50%) translate3d(0, -15px, 0) rotate(0deg);
    }
    75% {
      transform: translateX(-50%) translate3d(-3px, -7px, 0) rotate(-0.5deg);
    }
    100% {
      transform: translateX(-50%) translate3d(0, 0, 0) rotate(0deg);
    }
  }
  .floating_card.is-left {
    animation-duration: 6.5s;
    animation-delay: -0.7s;
  }
  .floating_card.is-right {
    animation-duration: 7.8s;
    animation-delay: -5.6s;
  }
  .floating_card.is-bottom {
    animation-name: floatCardCentered;
    animation-duration: 6s;
    animation-delay: -2.5s;
  }
  .facts_wrap > p {
    white-space: normal !important;
    text-wrap: wrap !important;
  }
  @media (prefers-reduced-motion: reduce) {
    .floating_card {
      animation: none;
    }
  }

/* --- button-secondary-hover --- */
.u-button-secondary {
  position: relative;
  z-index: 0;
  overflow: hidden;
  transition: color 0.25s ease;
}
.u-button-secondary::before {
  content: "";
  position: absolute;
  top: -3px;
  left: -3px;
  right: -3px;
  bottom: -3px;
  background: var(--swatch--brand-primary);
  border-radius: inherit;
  transform: translateY(-115%);
  transition: transform 0.32s cubic-bezier(.4, 0, .2, 1);
  z-index: -1;
  will-change: transform;
}
.u-button-secondary:hover {
  color: var(--swatch--text-color-white);
}
.u-button-secondary:hover::before {
  transform: translateY(0);
}
/* Couleur de la flèche */
.u-button-secondary .svg_wrap svg path {
  stroke: currentColor;
  transition: stroke 0.25s ease;
}
/* Animation de la flèche au hover */
.u-button-secondary:hover .svg_wrap {
  animation: arrow-bounce 0.65s ease-in-out infinite;
}
@keyframes arrow-bounce {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(4px);
  }
}

/* --- map-pulse-pop-mobile --- */
  @keyframes map-dot-pulse {
    from {
      transform: scale(1);
      opacity: 0.75;
    }
    to {
      transform: scale(4.5);
      opacity: 0;
    }
  }
  .map_marker {
    --pulse-offset: 0s;
  }
  .map_marker.is-2 {
    --pulse-offset: -0.7s;
  }
  .map_marker.is-3 {
    --pulse-offset: -1.5s;
  }
  .map_marker.is-4 {
    --pulse-offset: -2s;
  }
  .map_dot_pulse {
    animation: map-dot-pulse 2.4s cubic-bezier(0.2, 0.6, 0.35, 1) infinite;
    animation-delay: var(--pulse-offset, 0s);
  }
  .map_dot_pulse.is-delay {
    animation-delay: calc(var(--pulse-offset, 0s) - 1.2s);
  }
  /* --- Entrée : pop depuis le dot (desktop uniquement) --- */
  @media (min-width: 992px) and (prefers-reduced-motion: no-preference) {
    .map_wrap[data-map-pop] .map_dot {
      transform-origin: 50% 50%;
      transition: transform 0.4s cubic-bezier(0.34, 1.8, 0.64, 1);
      transition-delay: calc(var(--pop-i, 0) * 0.12s);
    }
    .map_wrap[data-map-pop] .map_card {
      transform-origin: 50% 132%;
      transition:
        opacity 0.35s ease-out,
        transform 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
      transition-delay: calc(0.15s + var(--pop-i, 0) * 0.12s);
    }
    .map_wrap[data-map-pop='ready'] .map_dot {
      transform: scale(0);
    }
    .map_wrap[data-map-pop='ready'] .map_card {
      opacity: 0;
      transform: translateY(10px) scale(0.4);
    }
    .map_wrap[data-map-pop='in'] .map_dot {
      transform: scale(1);
    }
    .map_wrap[data-map-pop='in'] .map_card {
      opacity: 1;
      transform: none;
    }
  }
  /* --- Tablette et mobile --- */
  @media (max-width: 991px) {
    .map_users_wrap {
      position: static;
      inset: auto;
      width: -moz-fit-content;
      width: fit-content;
      margin: 1rem auto 0;
    }
    /* la carte glisse pour centrer le pin actif */
    .map_stage {
      will-change: transform;
      transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
    }
    .map_cards {
      scrollbar-width: none;
      -ms-overflow-style: none;
      overscroll-behavior-x: contain;
      -webkit-overflow-scrolling: touch;
    }
    .map_cards::-webkit-scrollbar {
      display: none;
    }
    /* glisser à la souris */
    .map_card_wrap {
      cursor: grab;
    }
    .map_cards.is-dragging .map_card_wrap {
      cursor: grabbing;
    }
    .map_cards.is-dragging {
      scroll-snap-type: none;
      scroll-behavior: auto;
    }
    .map_card,
    .map_card img {
      user-select: none;
      -webkit-user-drag: none;
    }
    .map_dot_pulse {
      background-color: rgba(255, 255, 255, 0.8);
    }
    .map_marker .map_dot {
      transition:
        background-color 0.25s ease,
        transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
    }
    .map_marker.is-active .map_dot {
      background-color: #d46d28;
      transform: scale(1.7);
    }
    .map_marker.is-active .map_dot_pulse {
      background-color: rgba(212, 109, 40, 0.6);
    }
    .map_stage {
      transform-origin: left bottom;
      will-change: transform;
      transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
    }
    .map_marker {
      scale: var(--marker-scale, 1);
      transform-origin: center;
      overflow: visible;
    }
    .map_dot {
      overflow: visible;
    }
    .map_marker.is-active {
      z-index: 20;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .map_dot_pulse {
      animation: none;
      opacity: 0;
    }
    .map_stage {
      transition: none;
    }
  }

/* --- offer-list-icons --- */
  .offer_list.is-orange {
    list-style: none;
    padding-left: 0;
  }
  .offer_list.is-orange li {
    position: relative;
    padding-left: 1.75rem;
  }
  .offer_list.is-orange li::before {
    content: '';
    position: absolute;
    top: 0.4em;
    left: 0;
    width: 20px;
    height: 20px;
    background: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 0C4.5 0 0 4.5 0 10C0 15.5 4.5 20 10 20C15.5 20 20 15.5 20 10C20 4.5 15.5 0 10 0ZM14.2 8.3L9.4 13.1C9 13.5 8.4 13.5 8 13.1L5.8 10.9C5.4 10.5 5.4 9.9 5.8 9.5C6.2 9.1 6.8 9.1 7.2 9.5L8.7 11L12.8 6.9C13.2 6.5 13.8 6.5 14.2 6.9C14.6 7.3 14.6 7.9 14.2 8.3Z' fill='%23D46D28'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  .offer_list.is-green {
    list-style: none;
    padding-left: 0;
  }
  .offer_list.is-green li {
    position: relative;
    padding-left: 1.75rem;
  }
  .offer_list.is-green li::before {
    content: '';
    position: absolute;
    top: 0em;
    left: 0;
    width: 20px;
    height: 20px;
    background: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 0C4.5 0 0 4.5 0 10C0 15.5 4.5 20 10 20C15.5 20 20 15.5 20 10C20 4.5 15.5 0 10 0ZM14.2 8.3L9.4 13.1C9 13.5 8.4 13.5 8 13.1L5.8 10.9C5.4 10.5 5.4 9.9 5.8 9.5C6.2 9.1 6.8 9.1 7.2 9.5L8.7 11L12.8 6.9C13.2 6.5 13.8 6.5 14.2 6.9C14.6 7.3 14.6 7.9 14.2 8.3Z' fill='%235F6B29'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  .offer_list.is-white {
    list-style: none;
    padding-left: 0;
  }
  .offer_list.is-white li {
    position: relative;
    padding-left: 1.75rem;
  }
  .offer_list.is-white li::before {
    content: '';
    position: absolute;
    top: 0em;
    left: 0;
    width: 20px;
    height: 20px;
    background: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 0C4.5 0 0 4.5 0 10C0 15.5 4.5 20 10 20C15.5 20 20 15.5 20 10C20 4.5 15.5 0 10 0ZM14.2 8.3L9.4 13.1C9 13.5 8.4 13.5 8 13.1L5.8 10.9C5.4 10.5 5.4 9.9 5.8 9.5C6.2 9.1 6.8 9.1 7.2 9.5L8.7 11L12.8 6.9C13.2 6.5 13.8 6.5 14.2 6.9C14.6 7.3 14.6 7.9 14.2 8.3Z' fill='%23FFFDFA'/%3E%3C/svg%3E")
      center / contain no-repeat;
  }

/* --- story-reveal --- */
  .history-line-mask {
    overflow: clip;
  }

/* --- press-hover --- */
  .press_wrap > .grid_inner .link_divider {
    width: 0%;
    transition: width 0.3s ease-out;
  }
  .press_wrap > .grid_inner .svg_wrap {
    transform: rotate(0deg);
    transform-origin: center;
    transition: transform 0.3s ease-out;
  }
  .press_wrap > .grid_inner:hover .link_divider {
    width: 100%;
  }
  .press_wrap > .grid_inner:hover .svg_wrap {
    transform: rotate(-45deg);
  }

/* --- faq-divider --- */
  .faq_body_wrap > .faq_card:not(:last-child) {
    border-bottom: 0.063rem solid #E4DBCEB2;
  }
  @media (max-width: 1128px) {
    .u-container.is-faq {
      padding-left: 5%;
      padding-right: 5%;
    }
  }

/* --- marquee --- */
  .marquee {
  --marquee-gap: 3rem;
  --marquee-duration: 30s;
  width: 100%;
  overflow: hidden;
}
.marquee_track {
  display: flex;
  width: max-content;
  will-change: transform;
  animation: marquee-scroll var(--marquee-duration) linear infinite;
}
.marquee_group {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: var(--marquee-gap);
  padding-right: var(--marquee-gap);
}
.marquee_item {
  flex-shrink: 0;
  white-space: nowrap;
}
/* Pause facultative au survol */
.marquee:hover .marquee_track {
  animation-play-state: paused;
}
@keyframes marquee-scroll {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(-50%, 0, 0);
  }
}
/* Accessibilité */
@media (prefers-reduced-motion: reduce) {
  .marquee_track {
    animation-play-state: paused;
  }
}
/* --- Ils parlent de Leaf : logos cliquables --- */
a.featured_logo_wrap {
  display: block;
  transition: transform 0.2s ease, opacity 0.2s ease;
}
a.featured_logo_wrap:hover {
  transform: scale(1.05);
}
a.featured_logo_wrap:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}
.press-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(0, 0, 0, 0.8);
}
.press-modal[hidden] {
  display: none;
}
.press-modal video {
  width: 100%;
  max-width: 960px;
  max-height: 85vh;
  background: #000;
}
.press-modal_close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 2.5rem;
  height: 2.5rem;
  border: 0;
  background: none;
  color: #fff;
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
}
