/* ============================================
   ANIMATIONS — Keyframes & Scroll Reveals
   ============================================ */
@keyframes fadeUp   { from{opacity:0;transform:translateY(30px)} to{opacity:1;transform:translateY(0)} }
@keyframes fadeIn   { from{opacity:0} to{opacity:1} }
@keyframes scaleIn  { from{opacity:0;transform:scale(.95)} to{opacity:1;transform:scale(1)} }
@keyframes slideRight { from{opacity:0;transform:translateX(-20px)} to{opacity:1;transform:translateX(0)} }
@keyframes float    { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
@keyframes pulse    { 0%,100%{opacity:1} 50%{opacity:.4} }
@keyframes marquee  { from{transform:translateX(0)} to{transform:translateX(-50%)} }
@keyframes statusPulse { 0%,100%{box-shadow:0 0 0 0 rgba(16,185,129,.5)} 50%{box-shadow:0 0 0 6px rgba(16,185,129,0)} }
@keyframes borderGlow { 0%,100%{border-color:rgba(16,185,129,.15)} 50%{border-color:rgba(16,185,129,.4)} }
@keyframes glowPulse { 0%,100%{box-shadow:0 0 12px rgba(34,197,94,.3),0 0 4px rgba(34,197,94,.2)} 50%{box-shadow:0 0 20px rgba(34,197,94,.45),0 0 8px rgba(34,197,94,.3)} }

/* Scroll reveal */
.reveal { opacity:0; transform:translateY(24px); transition: opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out); }
.reveal.visible { opacity:1; transform:translateY(0); }

.reveal-scale { opacity:0; transform:scale(.96); transition: opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out); }
.reveal-scale.visible { opacity:1; transform:scale(1); }

/* Stagger */
.stagger > .reveal:nth-child(1) { transition-delay:0s }
.stagger > .reveal:nth-child(2) { transition-delay:.08s }
.stagger > .reveal:nth-child(3) { transition-delay:.16s }
.stagger > .reveal:nth-child(4) { transition-delay:.24s }
.stagger > .reveal:nth-child(5) { transition-delay:.32s }
.stagger > .reveal:nth-child(6) { transition-delay:.4s }
.stagger > .reveal:nth-child(7) { transition-delay:.48s }
.stagger > .reveal:nth-child(8) { transition-delay:.56s }

/* Hover lift */
.hover-lift { transition: transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out); }
.hover-lift:hover { transform:translateY(-3px); box-shadow: var(--shadow-lg); }

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
  .reveal,.reveal-scale { opacity:1; transform:none; }
}
