/* ─── ANDROMEDA ANIMATIONS ─────────────────────────────────────── */

/* CONTAINER SCROLL REVEAL — 3D tilt on scroll */
.scroll-reveal {
  transform-origin: center center;
  will-change: transform, opacity;
}

/* FADE UP — sezioni on scroll */
.anim-fade {
  opacity: 0;
  transform: translateY(28px);
}
.anim-fade.is-visible {
  opacity: 1;
  transform: none;
  transition: opacity .6s cubic-bezier(.4,0,.2,1), transform .6s cubic-bezier(.4,0,.2,1);
}
.anim-fade.is-visible.d1 { transition-delay: .08s }
.anim-fade.is-visible.d2 { transition-delay: .16s }
.anim-fade.is-visible.d3 { transition-delay: .24s }
.anim-fade.is-visible.d4 { transition-delay: .32s }

/* HERO — reveal al caricamento */
@keyframes hero-up {
  from { opacity: 0; transform: translateY(36px); }
  to   { opacity: 1; transform: none; }
}
.h-anim-1 { animation: hero-up .7s cubic-bezier(.4,0,.2,1) .05s both }
.h-anim-2 { animation: hero-up .7s cubic-bezier(.4,0,.2,1) .2s  both }
.h-anim-3 { animation: hero-up .7s cubic-bezier(.4,0,.2,1) .35s both }
.h-anim-4 { animation: hero-up .7s cubic-bezier(.4,0,.2,1) .48s both }

/* SHIMMER sul gradient text principale */
@keyframes grad-shimmer {
  0%   { background-position: 200% center }
  100% { background-position: -200% center }
}
.shimmer-run {
  background-size: 200% auto !important;
  animation: grad-shimmer 2s ease .4s both;
}

/* TIMELINE — nodi che appaiono in sequenza */
.tl-node {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .45s ease, transform .45s ease;
}
.tl-node.tl-visible {
  opacity: 1;
  transform: none;
}

/* BRAND / STAT STRIP — celle in cascata */
.stat-block,
.brand-item,
.closing-cell {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .45s ease, transform .45s ease;
}
.stat-block.is-visible,
.brand-item.is-visible,
.closing-cell.is-visible {
  opacity: 1;
  transform: none;
}
