@keyframes grain-drift { 0% { transform: translate3d(0,0,0); } 50% { transform: translate3d(-1%, 1%, 0); } 100% { transform: translate3d(1%, -1%, 0); } }
@keyframes hero-in { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }

.site-noise { animation: grain-drift 60s linear infinite alternate; }
body.paused *, body.paused *::before, body.paused *::after { animation-play-state: paused !important; }

@media (prefers-reduced-motion: reduce) { .site-noise { animation: none; } }
