/* ============================================================
   YVRMUN — Motion
   Reveals, splits, marquee, cursor physics, timeline, parallax.
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---------- SCROLL REVEAL ---------- */
[data-reveal] {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s var(--ease-out),
              transform 0.7s var(--ease-out);
  will-change: opacity, transform;
}

[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

[data-reveal][data-delay="1"] { transition-delay: 0.1s; }
[data-reveal][data-delay="2"] { transition-delay: 0.2s; }
[data-reveal][data-delay="3"] { transition-delay: 0.3s; }
[data-reveal][data-delay="4"] { transition-delay: 0.4s; }

/* ---------- WORD SPLIT ---------- */
.split-word {
  display: inline-block;
  overflow: hidden;
  vertical-align: top;
  line-height: 1;
}

.split-word__inner {
  display: inline-block;
  transform: translateY(105%);
  opacity: 0;
  animation: split-rise 1s var(--ease-out) forwards;
}

@keyframes split-rise {
  to { transform: translateY(0); opacity: 1; }
}

/* ---------- LOCKSCREEN ENTRANCE ---------- */
[data-lock-reveal] {
  opacity: 0;
  transform: translateY(12px);
  animation: lock-fade 0.9s var(--ease-out) forwards;
}

[data-lock-reveal]:nth-child(1) { animation-delay: 0.1s; }
[data-lock-reveal]:nth-child(2) { animation-delay: 0.3s; }
[data-lock-reveal]:nth-child(3) { animation-delay: 0.5s; }
[data-lock-reveal]:nth-child(4) { animation-delay: 0.7s; }
[data-lock-reveal]:nth-child(5) { animation-delay: 0.9s; }

@keyframes lock-fade {
  to { opacity: 1; transform: translateY(0); }
}

.lockscreen.is-exiting {
  animation: lock-exit 0.75s var(--ease-in-out) forwards;
  pointer-events: none;
}

@keyframes lock-exit {
  0%   { opacity: 1; filter: blur(0); transform: scale(1); }
  100% { opacity: 0; filter: blur(16px); transform: scale(1.06); }
}

/* ---------- MARQUEE ---------- */
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ---------- STAT COUNT PULSE ---------- */
.stat.is-counting .stat__value,
.dash-tile.is-counting .dash-tile__value,
.staff-cta.is-counting .staff-cta__number {
  animation: stat-pulse 0.4s var(--ease-out);
}

@keyframes stat-pulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.06); }
  100% { transform: scale(1); }
}

/* ---------- REDUCED MOTION ---------- */
@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-lock-reveal] {
    opacity: 1; transform: none; animation: none;
  }
  .split-word__inner {
    transform: none; opacity: 1; animation: none;
  }
  .cursor-dot, .cursor-ring, .cursor-corners { display: none; }
  body, a, button { cursor: auto; }
  .lockscreen__grid { animation: none; }
  .art-orbit { animation: none; }
}