@keyframes grain-shift {
  0% {
    transform: translate(0, 0);
  }
  50% {
    transform: translate(-1.5%, 1%);
  }
  100% {
    transform: translate(1%, -1.5%);
  }
}

@keyframes scroll-pulse {
  0% {
    transform: scaleY(0.35);
    opacity: 0.2;
    transform-origin: top;
  }
  40% {
    transform: scaleY(1);
    opacity: 1;
    transform-origin: top;
  }
  100% {
    transform: scaleY(0.35);
    opacity: 0.15;
    transform-origin: bottom;
  }
}

@keyframes loader-tick {
  0% {
    transform: translate(-10%, -50%) rotate(0deg);
  }
  100% {
    transform: translate(-10%, -50%) rotate(360deg);
  }
}

.loader__symbol::after {
  animation: loader-tick 8s linear infinite;
}

html.is-reduced-motion .loader__symbol::after,
html.is-reduced-motion .chapter__scroll-hint span,
html.is-reduced-motion .atmosphere__grain {
  animation: none !important;
}

.experience.is-ready .experience__pin {
  animation: none;
}

.reveal-ready {
  opacity: 1;
}
