:root {
  color-scheme: dark;
  background: #000;
  --logo-cycle: 24000ms;
  --logo-stagger: 18ms;
}

* {
  box-sizing: border-box;
}

html,
body {
  min-height: 100%;
}

body {
  margin: 0;
  min-width: 320px;
  min-height: 100svh;
  overflow: hidden;
  background: #000;
}

.stage {
  display: grid;
  min-height: 100svh;
  place-items: center;
  padding: clamp(24px, 8vw, 112px);
  background: #000;
  isolation: isolate;
}

.logo-shell {
  width: clamp(64.4px, 11.04vw, 119.6px);
  aspect-ratio: 379 / 265;
  filter:
    brightness(0)
    invert(1)
    drop-shadow(0 0 20px rgb(255 255 255 / 0.18))
    drop-shadow(0 0 64px rgb(123 174 255 / 0.14));
  opacity: 0;
  animation: logoAppear var(--logo-cycle) ease-in-out infinite;
  will-change: opacity, filter;
}

.logo-shell svg,
.logo-fallback {
  display: block;
  width: 100%;
  height: 100%;
}

.logo-shell svg {
  overflow: visible;
}

.logo-shell svg .logo-part {
  opacity: 1;
  transform-box: fill-box;
  transform-origin: center;
}

.logo-shell svg .is-drawn {
  fill-opacity: 0;
  stroke-dasharray: var(--length);
  stroke-dashoffset: var(--length);
  animation:
    drawMark var(--logo-cycle) cubic-bezier(0.4, 0, 0.2, 1) infinite,
    fillMark var(--logo-cycle) ease-in-out infinite;
  animation-delay:
    calc(var(--i) * var(--logo-stagger)),
    calc(var(--i) * var(--logo-stagger));
}

.logo-shell svg .is-revealed {
  opacity: 0;
  animation: revealMark var(--logo-cycle) ease-in-out infinite;
  animation-delay: calc(var(--i) * var(--logo-stagger));
}

.logo-shell svg mask,
.logo-shell svg mask * {
  opacity: 1;
  transform: none;
  animation: none;
}

.logo-fallback {
  object-fit: contain;
}

@keyframes logoAppear {
  0% {
    opacity: 0;
    filter:
      brightness(0)
      invert(1)
      drop-shadow(0 0 0 rgb(255 255 255 / 0))
      drop-shadow(0 0 0 rgb(123 174 255 / 0));
  }

  6%,
  88% {
    opacity: 1;
    filter:
      brightness(0)
      invert(1)
      drop-shadow(0 0 20px rgb(255 255 255 / 0.18))
      drop-shadow(0 0 64px rgb(123 174 255 / 0.14));
  }

  94%,
  100% {
    opacity: 0;
    filter:
      brightness(0)
      invert(1)
      drop-shadow(0 0 0 rgb(255 255 255 / 0))
      drop-shadow(0 0 0 rgb(123 174 255 / 0));
  }
}

@keyframes drawMark {
  0%,
  2% {
    stroke-dashoffset: var(--length);
  }

  9%,
  100% {
    stroke-dashoffset: 0;
  }
}

@keyframes fillMark {
  0%,
  5% {
    fill-opacity: 0;
  }

  10%,
  100% {
    fill-opacity: 1;
  }
}

@keyframes revealMark {
  0%,
  5% {
    opacity: 0;
  }

  10%,
  100% {
    opacity: 1;
  }
}

@media (max-width: 640px) {
  .logo-shell {
    width: clamp(60.95px, 17.48vw, 101.2px);
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0ms !important;
  }

  .logo-shell {
    opacity: 1;
    transform: none;
    animation: none;
  }

  .logo-shell svg .is-drawn {
    fill-opacity: 1;
    stroke-dashoffset: 0;
    animation: none;
  }

  .logo-shell svg .is-revealed {
    opacity: 1;
    transform: none;
    animation: none;
  }
}
