/**
 * Origin X Digital (OXD) - Motion System & Animation Helpers
 * GPU acceleration, text reveal clip-masks, and WCAG prefers-reduced-motion overrides.
 * Strictly NO marquee or continuously sliding text.
 */

/* ==========================================================================
   1. Hardware Acceleration & Will-Change Helpers
   ========================================================================== */
.gpu-layer {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}

.will-transform {
  will-change: transform, opacity;
}

/* ==========================================================================
   2. Kinetic Typography & Mask Containers
   ========================================================================== */
.text-mask-wrapper {
  overflow: hidden;
  display: block;
}

.text-reveal-item {
  display: block;
  transform: translateY(115%);
  opacity: 0;
  transition: transform 1.1s var(--ease-out-expo), opacity 0.9s ease-out;
}

.text-reveal-item.is-revealed {
  transform: translateY(0%);
  opacity: 1;
}

/* Scroll-triggered reveal state baseline */
.motion-reveal {
  opacity: 0;
  transform: translateY(28px);
}

/* ==========================================================================
   3. Ambient Light Drift Animations (Calm & Low CPU)
   ========================================================================== */
@keyframes ambientDriftA {
  0% {
    transform: translate3d(0, 0, 0) scale(1);
  }
  50% {
    transform: translate3d(3vw, 4vh, 0) scale(1.05);
  }
  100% {
    transform: translate3d(-2vw, 2vh, 0) scale(0.97);
  }
}

@keyframes ambientDriftB {
  0% {
    transform: translate3d(0, 0, 0) scale(1);
  }
  50% {
    transform: translate3d(-4vw, -3vh, 0) scale(1.06);
  }
  100% {
    transform: translate3d(2vw, -2vh, 0) scale(0.96);
  }
}

.ambient-orb-wine {
  animation: ambientDriftA 28s ease-in-out infinite alternate;
}

.ambient-orb-sapphire {
  animation: ambientDriftB 32s ease-in-out infinite alternate;
}

/* Pulse for Scroll Indicator */
@keyframes scrollPulse {
  0%, 100% {
    opacity: 0.3;
    transform: scaleY(0.6);
    transform-origin: top;
  }
  50% {
    opacity: 1;
    transform: scaleY(1);
    transform-origin: top;
  }
}

.scroll-indicator-line {
  animation: scrollPulse 2.4s ease-in-out infinite;
}

/* ==========================================================================
   4. Universal Accessibility: Reduced Motion Overrides
   ========================================================================== */
@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;
  }

  .ambient-orb-wine,
  .ambient-orb-sapphire,
  .scroll-indicator-line {
    animation: none !important;
  }

  .motion-reveal,
  .text-reveal-item {
    opacity: 1 !important;
    transform: none !important;
  }

  .custom-cursor-follower {
    display: none !important;
  }
}
