/* ===========================================================
   Animations
   =========================================================== */

/* Hero entrance */
.reveal-hero > *{
  opacity:0; transform:translateY(28px);
  animation:hero-rise 1s var(--ease) forwards;
}
.hero-title{
  animation: smoke-in 2.2s var(--ease) .2s forwards;
  font-family: var(--font-display);
  letter-spacing:.06em;
  word-spacing:normal;
  white-space:nowrap;
}
.hero-subtitle{ animation-delay:.46s; }
.hero-tagline{ animation-delay:.62s; }
.hero-cta{ animation-delay:.82s; }

@keyframes hero-rise{
  to{ opacity:1; transform:translateY(0); }
}
@keyframes smoke-in{
  0%{
    opacity:0;
    filter:blur(18px);
    transform:translateY(10px) scale(1.04);
    letter-spacing:.15em;
  }
  60%{
    opacity:1;
    filter:blur(4px);
  }
  100%{
    opacity:1;
    filter:blur(0);
    transform:translateY(0) scale(1);
    letter-spacing:.06em;
  }
}

.hero-tagline span{
  opacity:0; transform:translateY(10px);
  animation:tag-word .7s var(--ease) forwards;
}
.hero-tagline span:nth-child(1){ animation-delay:.75s; }
.hero-tagline span:nth-child(2){ animation-delay:.88s; }
.hero-tagline span:nth-child(3){ animation-delay:1.01s; }
.hero-tagline span:nth-child(4){ animation-delay:1.14s; }
@keyframes tag-word{ to{ opacity:1; transform:translateY(0); } }

/* Hero decorative rings float */
.hero-rings{ animation:rings-breathe 8s ease-in-out infinite; }
@keyframes rings-breathe{
  0%,100%{ transform:translate(-50%,-50%) scale(1); }
  50%{ transform:translate(-50%,-50%) scale(1.035); }
}

/* Scroll indicator */
@keyframes scroll-drip{
  0%{ top:-100%; }
  60%{ top:100%; }
  100%{ top:100%; }
}

/* Reveal on scroll (JS toggles .in-view) */
.reveal-on-scroll{
  opacity:0; transform:translateY(36px);
  transition:opacity .9s var(--ease), transform .9s var(--ease);
}
.reveal-on-scroll.in-view{ opacity:1; transform:translateY(0); }

/* Staggered children within a revealed grid */
.course-grid .course-card.in-view,
.schedule-grid .schedule-card.in-view,
.why-grid .why-card.in-view,
.testimonial-grid .testimonial-card.in-view,
.masonry .masonry-item.in-view{
  transition-delay:calc(var(--stagger, 0) * 90ms);
}

/* Floating ambient motion for hero logo */
.hero-logo{
  animation: hero-rise 1s var(--ease) .1s forwards, float-soft 6s ease-in-out 1.2s infinite;
}
@keyframes float-soft{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-10px); }
}

/* Course icon subtle idle pulse on hover already handled via transform in style.css */

/* Fade-up utility (generic) */
.fade-up{ opacity:0; transform:translateY(24px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.fade-up.in-view{ opacity:1; transform:translateY(0); }
