:root {
  color-scheme: dark;
  background: #010403;
}

* { box-sizing: border-box; }

html,
body {
  width: 100%;
  min-height: 100%;
  margin: 0;
  overflow: hidden;
  background: #010403;
}

body {
  display: grid;
  place-items: center;
  font-family: system-ui, sans-serif;
}

.poster {
  position: relative;
  height: 100svh;
  aspect-ratio: 2 / 3;
  overflow: hidden;
  isolation: isolate;
  background: #020805;
  box-shadow: 0 0 90px rgb(22 108 70 / 16%);
}

.poster__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  user-select: none;
  -webkit-user-drag: none;
}

.poster__vignette {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 52% 33%, transparent 15%, rgb(0 8 5 / 7%) 55%, rgb(0 0 0 / 31%) 100%),
    linear-gradient(180deg, transparent 65%, rgb(0 7 4 / 10%));
  pointer-events: none;
}

.eye {
  position: absolute;
  top: 29.45%;
  width: 3.6%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle, rgb(224 255 223 / 90%) 0 8%, rgb(82 255 117 / 78%) 18%, rgb(0 255 102 / 24%) 45%, transparent 72%);
  filter: blur(.2px);
  mix-blend-mode: screen;
  opacity: .38;
  animation: awaken 5.5s ease-in-out infinite;
  pointer-events: none;
}

.eye--left { left: 37.35%; }
.eye--right { left: 64.35%; animation-delay: .16s; }

.scan {
  position: absolute;
  inset: -30% 0 auto;
  height: 22%;
  background: linear-gradient(180deg, transparent, rgb(92 255 151 / 2.5%), transparent);
  mix-blend-mode: screen;
  animation: scan 12s linear infinite;
  pointer-events: none;
}

@keyframes awaken {
  0%, 22%, 100% { opacity: .23; transform: scale(.92); filter: blur(.4px); }
  43%, 62% { opacity: .8; transform: scale(1.18); filter: blur(0); }
  72% { opacity: .34; transform: scale(.98); }
}

@keyframes scan {
  0%, 18% { transform: translateY(-10%); opacity: 0; }
  25% { opacity: .7; }
  60% { opacity: .34; }
  74%, 100% { transform: translateY(680%); opacity: 0; }
}

@media (max-aspect-ratio: 2 / 3) {
  .poster {
    width: 100vw;
    height: auto;
    min-height: 100svh;
  }
}

@media (prefers-reduced-motion: reduce) {
  .eye { animation: none; opacity: .44; }
  .scan { display: none; }
}
