/* ============================================================
   animations.css — keyframes + reveal/entrance animations
   ============================================================ */
@keyframes ae-marquee { to { transform: translateX(-50%); } }
@keyframes ae-float   { 0%,100%{ transform: translateY(0);} 50%{ transform: translateY(-14px);} }
@keyframes ae-spin    { to { transform: rotate(360deg); } }
@keyframes ae-pulse   { 0%,100%{ opacity:.4;} 50%{ opacity:1;} }
@keyframes ae-grid    { to { background-position: 0 -56px; } }
@keyframes ae-fade    { from{ opacity:0; transform: translateY(18px);} to{ opacity:1; transform:none;} }
@keyframes ae-rise    { from{ transform: translateY(110%);} to{ transform: translateY(0);} }
@keyframes ae-count-pop { 0%{transform:scale(1);} 40%{transform:scale(1.15);} 70%{transform:scale(0.97);} 100%{transform:scale(1);} }

.ae-pop    { animation: ae-fade .5s var(--ease) both; }
.ae-fadeup { animation: ae-fade .9s var(--ease) both; }

/* hero headline rise */
#top h1 .ae-line   { display:inline-block; overflow:hidden; }
#top h1 .ae-line>* { display:inline-block; }
#top h1 .ae-line   { animation: ae-rise 1.05s var(--ease) both; }
#top h1 .ae-line-2 { animation-delay:.12s; }

@media (prefers-reduced-motion: reduce){
  .ae-fadeup, .ae-pop { animation: none !important; }
}
