.stage__grid {
  position: absolute;
  inset: -80px;
  opacity: .5;
  background-image:
    linear-gradient(var(--grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid) 1px, transparent 1px);
  background-size: 60px 60px;
  animation: drift 26s linear infinite;
}

.stage__vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse at 50% 45%, transparent 30%, rgba(10, 13, 16, .82) 78%);
}

.stage__scope {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
}

.scope {
  width: var(--scope-size);
  height: var(--scope-size);
  max-width: 96vw;
  opacity: .85;
}

.scope__sweep {
  transform-origin: 300px 300px;
  animation: sweep 8s linear infinite;
}

.scope__contact {
  animation: blip 8s linear infinite;
}

.boot {
  animation: rise .7s var(--boot-delay, 0ms) ease-out both;
}

@keyframes sweep {
  0% {
    transform: rotate(0);
  }

  100% {
    transform: rotate(360deg);
  }
}

@keyframes blip {
  0% {
    opacity: 0;
  }

  6% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

@keyframes caret {
  0%,
  49% {
    opacity: 1;
  }

  50%,
  100% {
    opacity: 0;
  }
}

@keyframes drift {
  0% {
    transform: translate3d(0, 0, 0);
  }

  100% {
    transform: translate3d(-60px, -40px, 0);
  }
}

@keyframes rise {
  0% {
    opacity: 0;
    transform: translateY(14px);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .stage__grid,
  .scope__sweep,
  .scope__contact,
  .typed__caret,
  .boot {
    animation: none;
  }

  .scope__contact {
    opacity: .7;
  }
}
