.noise {
  overflow: hidden;
  pointer-events: none;
}

@keyframes noiseAnimation {
  0% {
    transform: translate(0);
  }

  10% {
    transform: translate(-5%, -5%);
  }

  20% {
    transform: translate(-10%, 5%);
  }

  30% {
    transform: translate(5%, -10%);
  }

  40% {
    transform: translate(-5%, 15%);
  }

  50% {
    transform: translate(-10%, 5%);
  }

  60% {
    transform: translate(15%);
  }

  70% {
    transform: translateY(10%);
  }

  80% {
    transform: translate(-15%);
  }

  90% {
    transform: translate(10%, 5%);
  }

  to {
    transform: translate(5%);
  }
}

.noise::after {
  content: "";
  pointer-events: none;
  will-change: transform;
  animation: noiseAnimation 1s steps(4) infinite;
  opacity: 0.5;
  background-image: url("/assets/noise.png");
  width: 200%;
  height: 200%;
  display: block;
  position: absolute;
  top: -50%;
  left: -50%;
}

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