/* ── FADE IN UP ── */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInLeft {
  from { opacity: 0; transform: translateX(-30px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes fadeInRight {
  from { opacity: 0; transform: translateX(30px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.85); }
  to { opacity: 1; transform: scale(1); }
}
@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
@keyframes shimmer {
  0% { background-position: -200% center; }
  100% { background-position: 200% center; }
}
@keyframes countUp {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Hero entry animations */
.hero-left { animation: fadeInLeft 0.8s ease both; }
.hero-right { animation: fadeInRight 0.8s ease 0.2s both; }
.badge { animation: scaleIn 0.6s ease 0.1s both; }
.hero h1 { animation: fadeInUp 0.7s ease 0.2s both; }
.hero-subtitle { animation: fadeInUp 0.7s ease 0.35s both; }
.hero-stats { animation: fadeInUp 0.7s ease 0.5s both; }
.hero-ctas { animation: fadeInUp 0.7s ease 0.65s both; }
.enquiry-card { animation: fadeInRight 0.8s ease 0.3s both; }

/* ── SCROLL REVEAL ── */
.reveal {
  opacity: 0; transform: translateY(32px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-left {
  opacity: 0; transform: translateX(-32px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal-left.visible { opacity: 1; transform: translateX(0); }
.reveal-right {
  opacity: 0; transform: translateX(32px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal-right.visible { opacity: 1; transform: translateX(0); }
.reveal-scale {
  opacity: 0; transform: scale(0.88);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal-scale.visible { opacity: 1; transform: scale(1); }

/* stagger */
.stagger-1 { transition-delay: 0.05s !important; }
.stagger-2 { transition-delay: 0.12s !important; }
.stagger-3 { transition-delay: 0.19s !important; }
.stagger-4 { transition-delay: 0.26s !important; }
.stagger-5 { transition-delay: 0.33s !important; }
.stagger-6 { transition-delay: 0.40s !important; }
.stagger-7 { transition-delay: 0.47s !important; }
.stagger-8 { transition-delay: 0.54s !important; }
.stagger-9 { transition-delay: 0.61s !important; }

/* ── LOADING SPINNER ── */
.spinner {
  width: 20px; height: 20px; border: 2px solid rgba(255,255,255,0.3);
  border-top-color: var(--white); border-radius: 50%;
  animation: spin 0.8s linear infinite; display: inline-block;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ── CARD HOVER GLOW ── */
.course-card:hover { box-shadow: 0 20px 50px rgba(43,43,155,0.18); }
.feature-card:hover { box-shadow: 0 20px 50px rgba(43,43,155,0.15); }

/* ── GOLD GRADIENT TEXT ── */
.text-gold {
  background: linear-gradient(135deg, var(--accent-gold), var(--accent-gold-light));
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}

/* ── FLOAT ANIMATION on enquiry card ── */
.enquiry-card { animation: floatY 4s ease-in-out 1s infinite; }
.enquiry-card:hover { animation-play-state: paused; }

/* ── NOTICE BAR PAUSE ON HOVER ── */
.notice-ticker:hover { animation-play-state: paused; }

/* smooth scroll */
html { scroll-behavior: smooth; }

/* ── STAT NUMBER COUNTER ── */
.stats-number { display: inline-block; animation: countUp 0.5s ease; }

/* ── PAGE TRANSITIONS ── */
.page-fade { animation: fadeInUp 0.5s ease both; }
