/* =====================================================================
   EMAACOBEL — Animations & motion
   ===================================================================== */

@keyframes wa-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(37,211,102,.5); }
  70%  { box-shadow: 0 0 0 18px rgba(37,211,102,0); }
  100% { box-shadow: 0 0 0 0 rgba(37,211,102,0); }
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(34px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes zoomIn { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: scale(1); } }
@keyframes slideLeft { from { opacity: 0; transform: translateX(40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes slideRight { from { opacity: 0; transform: translateX(-40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }

/* Reveal-on-scroll (toggled by main.js via .in-view) */
[data-reveal] { opacity: 0; will-change: transform, opacity; }
[data-reveal].in-view { animation: fadeUp .8s cubic-bezier(.2,.7,.2,1) forwards; }
[data-reveal="zoom"].in-view { animation: zoomIn .8s cubic-bezier(.2,.7,.2,1) forwards; }
[data-reveal="left"].in-view { animation: slideLeft .8s cubic-bezier(.2,.7,.2,1) forwards; }
[data-reveal="right"].in-view { animation: slideRight .8s cubic-bezier(.2,.7,.2,1) forwards; }
[data-reveal-delay="1"] { animation-delay: .12s; }
[data-reveal-delay="2"] { animation-delay: .24s; }
[data-reveal-delay="3"] { animation-delay: .36s; }
[data-reveal-delay="4"] { animation-delay: .48s; }

/* Hero caption entrance */
.hero .carousel-item.active .eyebrow { animation: fadeUp .7s .1s both; }
.hero .carousel-item.active h1 { animation: fadeUp .7s .25s both; }
.hero .carousel-item.active .lead { animation: fadeUp .7s .4s both; }
.hero .carousel-item.active .hero-actions { animation: fadeUp .7s .55s both; }

/* Loader */
.page-loader { position: fixed; inset: 0; background: var(--grad-dark); z-index: 3000; display: grid; place-items: center;
  transition: opacity .5s ease, visibility .5s ease; }
.page-loader.hidden { opacity: 0; visibility: hidden; }
.page-loader .spinner { width: 58px; height: 58px; border: 5px solid rgba(255,255,255,.15);
  border-top-color: var(--brand-accent); border-radius: 50%; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.hover-float:hover { animation: float 2.5s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important;
    transition-duration: .001ms !important; scroll-behavior: auto !important; }
  [data-reveal] { opacity: 1 !important; }
}
