@keyframes ocean-drift { to { transform: translate3d(2%, 1%, 0) scale(1.04); } }
@keyframes light-breathe { 50% { opacity: .5; transform: rotate(11deg) translateX(3%); } }
@keyframes particle-rise { to { transform: translateY(-83px); } }
@keyframes cue-travel { from { transform: translateX(-110%); } to { transform: translateX(220%); } }
@keyframes marquee-drift { to { transform: translateX(-50%); } }
@keyframes orb-drift { 50% { transform: translate3d(-2%, 2%, 0) scale(1.025); } }
@keyframes reel-turn { to { transform: rotate(1turn); } }

.hero__ocean { animation: ocean-drift 14s ease-in-out infinite alternate; }
.hero__light { animation: light-breathe 7s ease-in-out infinite; }
.hero__particles { animation: particle-rise 14s linear infinite; }
.scroll-cue i::after { animation: cue-travel 2s ease-in-out infinite; }
.depth-visual__water { animation: ocean-drift 16s ease-in-out infinite alternate-reverse; }
.depth-visual__beam { animation: light-breathe 8s ease-in-out infinite; }
.depth-visual__warning span { animation: warning-pulse 2.2s ease-in-out infinite; }
.project-card__media--depth::before { animation: particle-rise 15s linear infinite; }
.project-card__depth-light { animation: light-breathe 9s ease-in-out infinite; }
.manifesto__orb { animation: orb-drift 10s ease-in-out infinite; }
.manifesto__marquee { animation: marquee-drift 22s linear infinite; }
.reel::before { animation: reel-turn 45s linear infinite; }
.contact__glow { animation: orb-drift 9s ease-in-out infinite reverse; }

@keyframes warning-pulse { 50% { opacity: .35; box-shadow: 0 0 4px rgba(184,47,50,.45); } }

.js.motion-ready .reveal { opacity: 0; transform: translateY(28px); }
.js.motion-ready .hero.is-ready .reveal { opacity: 1; transform: none; transition: opacity .9s var(--ease-out), transform .9s var(--ease-out); }
.js.motion-ready .hero.is-ready .reveal:nth-child(2) { transition-delay: 90ms; }
.js.motion-ready .hero.is-ready .reveal:nth-child(3) { transition-delay: 180ms; }
.js.motion-ready .hero.is-ready .reveal:nth-child(4) { transition-delay: 250ms; }
.js.motion-ready .hero.is-ready .reveal:nth-child(5) { transition-delay: 320ms; }
.js.motion-ready .scroll-reveal { opacity: 0; transform: translateY(40px); transition: opacity .9s var(--ease-out), transform .9s var(--ease-out); }
.js.motion-ready .scroll-reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .js.motion-ready .reveal, .js.motion-ready .scroll-reveal { opacity: 1; transform: none; }
}
