/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.7s cubic-bezier(0.4,0,0.2,1),
              transform 0.7s cubic-bezier(0.4,0,0.2,1);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }

/* 3D card tilt */
.card-3d {
  transform-style: preserve-3d;
  transition: transform var(--transition-normal), box-shadow var(--transition-normal);
  will-change: transform;
}
.card-3d:hover {
  box-shadow: var(--shadow-raised);
}

/* Counter animation */
.counter { display: inline-block; }

/* Gradient text */
.text-gradient {
  background: linear-gradient(135deg, var(--accent-coral) 0%, var(--accent-gold) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* Live pulse dot */
.live-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #5FCF60;
  animation: pulse-live 2s ease-in-out infinite;
}
@keyframes pulse-live {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(0.85); }
}

/* Stagger children */
.stagger > * { opacity: 0; transform: translateY(20px); }
.stagger.visible > *:nth-child(1) { animation: fadeUp 0.6s 0.0s forwards; }
.stagger.visible > *:nth-child(2) { animation: fadeUp 0.6s 0.1s forwards; }
.stagger.visible > *:nth-child(3) { animation: fadeUp 0.6s 0.2s forwards; }
.stagger.visible > *:nth-child(4) { animation: fadeUp 0.6s 0.3s forwards; }
.stagger.visible > *:nth-child(5) { animation: fadeUp 0.6s 0.4s forwards; }
.stagger.visible > *:nth-child(6) { animation: fadeUp 0.6s 0.5s forwards; }
@keyframes fadeUp {
  to { opacity: 1; transform: translateY(0); }
}

/* Fallback: if GSAP fails, show content after delay */
@keyframes showContent {
  to { opacity: 1; transform: none; }
}
.hero-animate {
  animation: showContent 0.8s 1.2s forwards;
}
.program-card {
  animation: showContent 0.6s 0.3s forwards;
}
