/* GCETT Alumni Reunion — Animations CSS */

@keyframes slideInRight { from { opacity:0; transform:translateX(40px); } to { opacity:1; transform:translateX(0); } }
@keyframes slideInUp    { from { opacity:0; transform:translateY(40px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn       { from { opacity:0; } to { opacity:1; } }
@keyframes ticker       { 0% { transform:translateX(0); } 100% { transform:translateX(-50%); } }
@keyframes sponsorScroll{ 0% { transform:translateX(0); } 100% { transform:translateX(-50%); } }
@keyframes scrollWheelAnim { 0%{transform:translateY(0);opacity:1} 100%{transform:translateY(12px);opacity:0} }
@keyframes bounce       { 0%,100%{transform:translateX(-50%) translateY(0)} 50%{transform:translateX(-50%) translateY(-8px)} }
@keyframes particleDrift{ 0%{transform:translateY(0) rotate(0deg);opacity:.6} 100%{transform:translateY(-100vh) rotate(360deg);opacity:0} }
@keyframes pulse        { 0%,100%{opacity:1} 50%{opacity:.4} }
@keyframes shimmer      { 0%{background-position:-800px 0} 100%{background-position:800px 0} }
@keyframes float        { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)} }
@keyframes glow         { 0%,100%{box-shadow:0 0 20px var(--gold-glow)} 50%{box-shadow:0 0 40px rgba(200,162,50,.5)} }
@keyframes borderPulse  { 0%,100%{border-color:var(--border-gold)} 50%{border-color:var(--gold)} }

/* REVEAL ON SCROLL */
.reveal-up {
  opacity:0; transform:translateY(50px);
  transition:opacity .7s cubic-bezier(.4,0,.2,1), transform .7s cubic-bezier(.4,0,.2,1);
}
.reveal-up.revealed  { opacity:1; transform:translateY(0); }
.reveal-left  { opacity:0; transform:translateX(-50px); transition:opacity .7s, transform .7s; }
.reveal-left.revealed { opacity:1; transform:translateX(0); }
.reveal-scale { opacity:0; transform:scale(.88); transition:opacity .6s, transform .6s; }
.reveal-scale.revealed { opacity:1; transform:scale(1); }

.delay-1 { transition-delay:.1s !important; }
.delay-2 { transition-delay:.2s !important; }
.delay-3 { transition-delay:.3s !important; }
.delay-4 { transition-delay:.4s !important; }
.delay-5 { transition-delay:.5s !important; }

/* HERO PARTICLES */
.hero-particles { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.particle {
  position:absolute; border-radius:50%; opacity:.5;
  animation:particleDrift linear infinite;
}

/* SKELETON LOADER */
.skeleton {
  background:linear-gradient(90deg,var(--card) 25%,rgba(255,255,255,.05) 50%,var(--card) 75%);
  background-size:800px 100%; animation:shimmer 2s infinite; border-radius:var(--r);
}

/* FLOATING */
.floating { animation:float 6s ease-in-out infinite; }

/* HERO SCROLL INDICATOR */
.hero-scroll { animation:bounce 2.2s infinite; }

/* STAGGER */
.stagger > * { opacity:0; transform:translateY(28px); transition:opacity .5s, transform .5s; }
.stagger.revealed > *:nth-child(1){opacity:1;transform:none;transition-delay:.05s}
.stagger.revealed > *:nth-child(2){opacity:1;transform:none;transition-delay:.1s}
.stagger.revealed > *:nth-child(3){opacity:1;transform:none;transition-delay:.15s}
.stagger.revealed > *:nth-child(4){opacity:1;transform:none;transition-delay:.2s}
.stagger.revealed > *:nth-child(5){opacity:1;transform:none;transition-delay:.25s}
.stagger.revealed > *:nth-child(6){opacity:1;transform:none;transition-delay:.3s}

/* ADMIN FADE IN */
@keyframes adminFadeUp { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:none} }
.admin-stat-card { animation:adminFadeUp .4s ease both; }
.admin-stat-card:nth-child(1){animation-delay:.05s}
.admin-stat-card:nth-child(2){animation-delay:.1s}
.admin-stat-card:nth-child(3){animation-delay:.15s}
.admin-stat-card:nth-child(4){animation-delay:.2s}
.admin-stat-card:nth-child(5){animation-delay:.25s}
.admin-stat-card:nth-child(6){animation-delay:.3s}

/* FLASH AUTO-DISMISS */
.flash { animation:slideInRight .3s ease; }
