/* ================================================
   SCROLL REVEAL — base state (hidden)
================================================ */
.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity var(--tr-slow), transform var(--tr-slow);
}
.reveal.reveal--left  { transform: translateX(-50px); }
.reveal.reveal--right { transform: translateX(50px); }
.reveal.reveal--scale { transform: scale(0.9); }

.reveal.is-visible {
  opacity: 1;
  transform: translate(0) scale(1);
}

/* Stagger children */
.reveal-group > * {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity var(--tr-slow), transform var(--tr-slow);
}
.reveal-group.is-visible > *:nth-child(1)  { transition-delay: 0s;    opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(2)  { transition-delay: 0.1s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(3)  { transition-delay: 0.2s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(4)  { transition-delay: 0.3s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(5)  { transition-delay: 0.4s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(6)  { transition-delay: 0.5s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(7)  { transition-delay: 0.6s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(8)  { transition-delay: 0.7s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(9)  { transition-delay: 0.8s;  opacity: 1; transform: none; }
.reveal-group.is-visible > *:nth-child(10) { transition-delay: 0.9s;  opacity: 1; transform: none; }

/* ================================================
   HERO ENTRANCE
================================================ */
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}
.hero__tagline   { animation: heroFadeUp 0.9s 0.3s both ease; }
.hero__title     { animation: heroFadeUp 0.9s 0.5s both ease; }
.hero__subtitle  { animation: heroFadeUp 0.9s 0.75s both ease; }
.hero__ctas      { animation: heroFadeUp 0.9s 0.95s both ease; }
.hero__scroll    { animation: heroFadeUp 0.9s 1.2s both ease; }

/* Scroll indicator pulse */
@keyframes scrollBounce {
  0%, 100% { transform: translateX(-50%) translateY(0); opacity: 0.7; }
  50%       { transform: translateX(-50%) translateY(8px); opacity: 1; }
}

/* ================================================
   COUNTDOWN FLIP
================================================ */
@keyframes flipIn {
  from { transform: rotateX(-90deg); opacity: 0; }
  to   { transform: rotateX(0); opacity: 1; }
}
.countdown__number.flip {
  animation: flipIn 0.3s ease forwards;
}

/* ================================================
   TIMELINE ENTRIES
================================================ */
.timeline__item {
  opacity: 0;
  transform: translateX(30px);
  transition: opacity 0.6s ease, transform 0.6s ease;
  will-change: transform, opacity;
}
.timeline__item:nth-child(even) {
  transform: translateX(-30px);
}
.timeline__item.is-visible {
  opacity: 1;
  transform: translateX(0);
}

/* ================================================
   GALLERY HOVER
================================================ */
@keyframes overlayIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ================================================
   PULSE (WhatsApp button)
================================================ */
@keyframes pulse {
  0%   { box-shadow: 0 0 0 0 rgba(37,211,102,0.5); }
  70%  { box-shadow: 0 0 0 14px rgba(37,211,102,0); }
  100% { box-shadow: 0 0 0 0 rgba(37,211,102,0); }
}

/* ================================================
   NAVBAR LOGO FADE
================================================ */
@keyframes navLogoIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ================================================
   COUNTER NUMBER
================================================ */
@keyframes countUp {
  from { transform: translateY(8px); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}

/* ================================================
   PARALLAX HELPER
================================================ */
.parallax-bg {
  will-change: transform;
}

/* ================================================
   FEATURE ICON DRAW (SVG stroke)
================================================ */
@keyframes strokeDraw {
  from { stroke-dashoffset: 200; }
  to   { stroke-dashoffset: 0; }
}
.icon-animate .icon-path {
  stroke-dasharray: 200;
  stroke-dashoffset: 200;
  transition: stroke-dashoffset 1.2s ease;
}
.icon-animate.is-visible .icon-path {
  stroke-dashoffset: 0;
}
