/* ══════════════════════════════════════════════════════════════
   Ouest-Digit — Animations (Buildex-inspired)
   Scroll reveal · Stagger · Counter · Parallax · Hover FX
   ══════════════════════════════════════════════════════════════ */

/* ── État initial : éléments invisibles avant animation ── */
[data-anim] {
  opacity: 0;
  transition: opacity 0.65s cubic-bezier(.22,.61,.36,1),
              transform 0.65s cubic-bezier(.22,.61,.36,1);
}
[data-anim].is-visible {
  opacity: 1;
  transform: none !important;
}

/* ── Types d'animation ── */
[data-anim="fade-up"]   { transform: translateY(48px); }
[data-anim="fade-down"] { transform: translateY(-32px); }
[data-anim="fade-left"] { transform: translateX(-48px); }
[data-anim="fade-right"]{ transform: translateX(48px); }
[data-anim="scale"]     { transform: scale(0.88); }
[data-anim="fade"]      { transform: none; }

/* ── Délais de stagger ── */
[data-delay="1"] { transition-delay: 0.08s; }
[data-delay="2"] { transition-delay: 0.16s; }
[data-delay="3"] { transition-delay: 0.24s; }
[data-delay="4"] { transition-delay: 0.32s; }
[data-delay="5"] { transition-delay: 0.40s; }
[data-delay="6"] { transition-delay: 0.48s; }
[data-delay="7"] { transition-delay: 0.56s; }
[data-delay="8"] { transition-delay: 0.64s; }

/* ── Ligne de révélation (bandeau réassurance) ── */
.od-reassurance__inner {
  overflow: hidden;
}
.od-reassurance__item,
.od-reassurance__sep {
  display: inline-flex;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.od-reassurance.is-visible .od-reassurance__item,
.od-reassurance.is-visible .od-reassurance__sep {
  opacity: 1;
  transform: none;
}
.od-reassurance.is-visible .od-reassurance__item:nth-child(1)  { transition-delay: 0.05s; }
.od-reassurance.is-visible .od-reassurance__sep:nth-child(2)   { transition-delay: 0.10s; }
.od-reassurance.is-visible .od-reassurance__item:nth-child(3)  { transition-delay: 0.15s; }
.od-reassurance.is-visible .od-reassurance__sep:nth-child(4)   { transition-delay: 0.20s; }
.od-reassurance.is-visible .od-reassurance__item:nth-child(5)  { transition-delay: 0.25s; }
.od-reassurance.is-visible .od-reassurance__sep:nth-child(6)   { transition-delay: 0.30s; }
.od-reassurance.is-visible .od-reassurance__item:nth-child(7)  { transition-delay: 0.35s; }
.od-reassurance.is-visible .od-reassurance__sep:nth-child(8)   { transition-delay: 0.40s; }
.od-reassurance.is-visible .od-reassurance__item:nth-child(9)  { transition-delay: 0.45s; }

/* ── Compteurs stats ── */
.od-stat__num {
  display: inline-block;
  transition: transform 0.3s ease;
}
.od-stat.is-counting .od-stat__num {
  animation: countPop 0.4s cubic-bezier(.22,.61,.36,1);
}
@keyframes countPop {
  0%   { transform: scale(0.85); opacity: 0.6; }
  100% { transform: scale(1);    opacity: 1; }
}

/* ── Hero — apparition titre ligne par ligne ── */
.od-hero__inner .od-hero__eyebrow,
.od-hero__inner .od-hero__title,
.od-hero__inner .od-hero__desc,
.od-hero__inner .od-hero__badges,
.od-hero__inner .od-hero__ctas,
.od-hero__inner .od-trust-badge {
  opacity: 0;
  transform: translateY(28px);
  animation: heroSlideUp 0.7s cubic-bezier(.22,.61,.36,1) forwards;
}
.od-hero__inner .od-hero__eyebrow  { animation-delay: 0.15s; }
.od-hero__inner .od-hero__title    { animation-delay: 0.30s; }
.od-hero__inner .od-hero__desc     { animation-delay: 0.48s; }
.od-hero__inner .od-hero__badges   { animation-delay: 0.60s; }
.od-hero__inner .od-hero__ctas     { animation-delay: 0.72s; }
.od-hero__inner .od-trust-badge    { animation-delay: 0.84s; }

@keyframes heroSlideUp {
  to { opacity: 1; transform: none; }
}

/* ── Parallax hero image ── */
.od-hero__bg {
  will-change: transform;
  transition: transform 0.1s linear;
}

/* ── Hover lift sur les cartes (amplifié) ── */
.od-service-card,
.od-diff-card,
.od-profile-card,
.od-stat {
  transition: transform 0.3s cubic-bezier(.22,.61,.36,1),
              box-shadow 0.3s cubic-bezier(.22,.61,.36,1),
              border-color 0.3s ease;
  will-change: transform;
}

/* ── Ligne de séparation animée sous les titres ── */
.od-section__head h2::after,
.od-diff__title::after,
.od-stats__title::after {
  content: '';
  display: block;
  width: 48px;
  height: 3px;
  background: var(--od-amber-500);
  border-radius: 2px;
  margin-top: 14px;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.8s cubic-bezier(.22,.61,.36,1) 0.3s;
}
.od-section__head.is-visible h2::after,
.is-visible .od-diff__title::after,
.is-visible .od-stats__title::after {
  transform: scaleX(1);
}

/* ── Process steps — numéros apparaissent à l'entrée ── */
.od-process-step.is-visible .od-process-step__num,
.od-process__step.is-visible .od-process__num {
  animation: numPulse 0.5s cubic-bezier(.22,.61,.36,1) forwards;
}
@keyframes numPulse {
  0%   { transform: scale(0.7); opacity: 0.4; }
  100% { transform: scale(1);   opacity: 1; }
}

/* ── Images réalisations — overlay révèle ── */
.od-realisation {
  overflow: hidden;
  border-radius: var(--od-radius-md, 10px);
}
.od-realisation img {
  transition: transform 0.6s cubic-bezier(.22,.61,.36,1),
              filter 0.6s ease;
  filter: brightness(0.9);
}
.od-realisation:hover img {
  transform: scale(1.06);
  filter: brightness(1.05);
}
.od-realisation[data-anim] img {
  transform: scale(1.08);
}
.od-realisation.is-visible img {
  transform: scale(1);
}

/* ── Tableau comparatif — lignes glissent ── */
.od-compare tbody tr,
.od-comparatif__table tbody tr {
  opacity: 0;
  transform: translateX(-16px);
  transition: opacity 0.4s ease, transform 0.4s ease;
}
.od-compare.is-visible tbody tr,
.od-comparatif__table.is-visible tbody tr {
  opacity: 1;
  transform: none;
}
.od-compare.is-visible tbody tr:nth-child(1),
.od-comparatif__table.is-visible tbody tr:nth-child(1) { transition-delay: 0.05s; }
.od-compare.is-visible tbody tr:nth-child(2),
.od-comparatif__table.is-visible tbody tr:nth-child(2) { transition-delay: 0.12s; }
.od-compare.is-visible tbody tr:nth-child(3),
.od-comparatif__table.is-visible tbody tr:nth-child(3) { transition-delay: 0.19s; }
.od-compare.is-visible tbody tr:nth-child(4),
.od-comparatif__table.is-visible tbody tr:nth-child(4) { transition-delay: 0.26s; }
.od-compare.is-visible tbody tr:nth-child(5),
.od-comparatif__table.is-visible tbody tr:nth-child(5) { transition-delay: 0.33s; }
.od-compare.is-visible tbody tr:nth-child(6),
.od-comparatif__table.is-visible tbody tr:nth-child(6) { transition-delay: 0.40s; }
.od-compare.is-visible tbody tr:nth-child(7),
.od-comparatif__table.is-visible tbody tr:nth-child(7) { transition-delay: 0.47s; }
.od-compare.is-visible tbody tr:nth-child(8),
.od-comparatif__table.is-visible tbody tr:nth-child(8) { transition-delay: 0.54s; }

/* ── Respect prefers-reduced-motion ── */
@media (prefers-reduced-motion: reduce) {
  [data-anim],
  .od-reassurance__item,
  .od-reassurance__sep,
  .od-hero__inner > *,
  .od-compare tbody tr,
  .od-comparatif__table tbody tr {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}
