/* ==========================================================================
   CELESTARR SERVICES — ANIMATIONS & MOTION STATES
   ========================================================================== */

@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; transform:none !important; }
}

/* Page transition veil */
.page-transition{
  position:fixed; inset:0; z-index:500;
  background:var(--bg-0);
  transform:translateY(0);
  pointer-events:none;
}
.page-transition.enter{ animation:veil-out .7s var(--ease-in-out) forwards; }
@keyframes veil-out{ from{ transform:translateY(0); } to{ transform:translateY(-100%); } }

/* Fade / slide / scale utility classes for JS-driven reveals */
.fx-fade{ opacity:0; transition:opacity var(--dur-slow) var(--ease-out); }
.fx-fade.in{ opacity:1; }
.fx-slide-up{ opacity:0; transform:translateY(40px); transition:all var(--dur-slow) var(--ease-out); }
.fx-slide-up.in{ opacity:1; transform:translateY(0); }
.fx-scale{ opacity:0; transform:scale(.9); transition:all var(--dur-slow) var(--ease-out); }
.fx-scale.in{ opacity:1; transform:scale(1); }

/* Marquee-style ticker (used sparingly on About stats strip) */
@keyframes float-y{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-14px); }
}
.float{ animation:float-y 6s ease-in-out infinite; }

/* Mobile nav menu */
.mobile-menu{
  position:fixed; inset:0; z-index:150;
  background:rgba(8,8,8,.92);
  backdrop-filter:blur(24px);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.6rem;
  transform:translateY(-100%);
  transition:transform .5s var(--ease-in-out);
}
.mobile-menu.open{ transform:translateY(0); }
.mobile-menu a{ font-family:var(--font-display); font-size:1.6rem; color:#fff; }
.mobile-menu .btn{ margin-top:1rem; }
.mobile-menu-close{ position:absolute; top:1.6rem; right:1.6rem; }

/* Nav hover underline sweep for non-active links */
.nav-links a{ overflow:hidden; }

/* Spinner */
.spin{ animation:spin 1s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* Card entrance stagger helper (JS assigns --i) */
[data-stagger]{ transition-delay:calc(var(--i, 0) * 70ms); }

/* Glow pulse for hud tags */
@keyframes tag-pulse{
  0%,100%{ opacity:.7; }
  50%{ opacity:1; }
}
.pulse{ animation:tag-pulse 2.4s ease-in-out infinite; }
