/* =====================================================
   Expertifies — Animations
   ===================================================== */

@keyframes spin { to { transform: rotate(360deg); } }

@keyframes floatY { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-18px); } }
.hero-shape.s1 { animation: floatY 9s ease-in-out infinite; }
.hero-shape.s2 { animation: floatY 7s ease-in-out infinite; }
.hero-shape.s3 { animation: floatY 11s ease-in-out infinite; }

@keyframes floatCard { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
.glass-card.top { animation: floatCard 6s ease-in-out infinite; }
.glass-card.bottom { animation: floatCard 7.5s ease-in-out infinite; }

/* Reveal-on-scroll */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

.stat.is-counting .stat-number { animation: popIn .5s ease; }
@keyframes popIn { from { transform: scale(.9); opacity:.6; } to { transform: scale(1); opacity:1; } }

/* Animated underline */
.animated-underline { position: relative; }
.animated-underline::after { content:""; position:absolute; left:0; bottom:-2px; width:0; height:2px; background: var(--brand); transition: width .25s ease; }
.animated-underline:hover::after { width:100%; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .hero-shape, .glass-card { animation: none !important; }
  .hero-media .img-frame { transform: none !important; }
}
