.hero {
  isolation: isolate;
  background: #0a0b0a;
}

.hero > video {
  z-index: 0;
  filter: blur(.55px) saturate(.9) contrast(1.055) brightness(.94);
  transform: scale(1.009);
}

.hero .shade {
  z-index: 1;
  background:
    linear-gradient(180deg, #0008 0%, transparent 32%, #0001 58%, #000c 100%),
    radial-gradient(ellipse at 68% 19%, transparent 0%, #0002 64%, #0006 100%);
}

.hero::before,
.hero::after {
  content: "";
  position: absolute;
  pointer-events: none;
  inset: -12%;
  z-index: 2;
}

.hero::before {
  opacity: .5;
  mix-blend-mode: overlay;
  filter: contrast(1.55);
  background-size: 240px 240px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.27' numOctaves='3' seed='8' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
  animation: film-grain .2s steps(2, end) infinite;
}

.hero::after {
  opacity: .38;
  mix-blend-mode: screen;
  filter: blur(28px);
  background:
    radial-gradient(ellipse at 70% 17%, #fff3 0%, #dceeff12 23%, transparent 52%),
    radial-gradient(ellipse at 27% 66%, #fff1 0%, transparent 45%);
}

.hero-top,
.hero-content {
  z-index: 3;
}

@keyframes film-grain {
  0% { transform: translate3d(-2%, -1%, 0); }
  25% { transform: translate3d(1%, 2%, 0); }
  50% { transform: translate3d(2%, -2%, 0); }
  75% { transform: translate3d(-1%, 1%, 0); }
  100% { transform: translate3d(0, -1%, 0); }
}

@media (max-width: 700px) {
  .hero::before { opacity: .44; }
  .hero::after { opacity: .3; }
  .hero > video {
    filter: blur(.4px) saturate(.92) contrast(1.045) brightness(.95);
  }
}

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

.film-button {
  cursor: pointer;
}

.film-launch {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
}

.film-launch:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -4px;
}

.film-button img,
.film-preview {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  transition: transform .65s, opacity .25s;
}

.film-preview {
  opacity: 0;
  background: #20221f;
}

.film-button.is-playing img {
  opacity: 0;
}

.film-button.is-playing .film-preview {
  opacity: 1;
}

.film-button.is-playing .play {
  opacity: 0;
}

.sound-toggle {
  position: absolute;
  right: 14px;
  bottom: 14px;
  z-index: 2;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 1px solid #fff8;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #1119;
  color: #fff;
  backdrop-filter: blur(10px);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s, background .2s;
}

.film-button.is-playing .sound-toggle {
  opacity: 1;
  pointer-events: auto;
}

.sound-toggle:hover,
.sound-toggle:focus-visible {
  background: var(--accent);
  color: #111;
}

.sound-toggle svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
}

.sound-toggle .sound-on {
  display: none;
}

.film-button.has-sound .sound-on {
  display: block;
}

.film-button.has-sound .sound-off {
  display: none;
}

@media (max-width: 700px) {
  .sound-toggle {
    right: 10px;
    bottom: 10px;
    width: 38px;
    height: 38px;
  }
}
