:root {
  --green: #58af49;
  --blue: #06477f;
  --mint: #80f2d7;
}

* {
  box-sizing: border-box;
}

html {
  background: #000;
}

body {
  margin: 0;
  min-height: 100vh;
  background:
    radial-gradient(circle at 18% 12%, rgba(88, 175, 73, 0.16), transparent 18rem),
    radial-gradient(circle at 82% 8%, rgba(6, 71, 127, 0.14), transparent 16rem),
    radial-gradient(circle at 70% 72%, rgba(128, 242, 215, 0.11), transparent 18rem),
    #000;
  color: #fff;
  font-family: Impact, Haettenschweiler, "Arial Black", system-ui, sans-serif;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image:
    radial-gradient(circle, rgba(128, 242, 215, 0.72) 0 1px, transparent 2px),
    radial-gradient(circle, rgba(88, 175, 73, 0.58) 0 1px, transparent 2px),
    radial-gradient(circle, rgba(6, 71, 127, 0.72) 0 1px, transparent 2px);
  background-size: 170px 210px, 230px 190px, 290px 260px;
  background-position: 18px 30px, 80px 140px, 150px 60px;
  opacity: 0.2;
  animation: sparkle-drift 14s ease-in-out infinite alternate;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image:
    radial-gradient(circle, rgba(128, 242, 215, 0.5) 0 1px, transparent 2px),
    radial-gradient(circle, rgba(88, 175, 73, 0.5) 0 1px, transparent 2px),
    radial-gradient(circle, rgba(6, 71, 127, 0.54) 0 1px, transparent 2px);
  background-size: 260px 240px, 310px 280px, 360px 320px;
  background-position: 120px 90px, 40px 220px, 210px 150px;
  opacity: 0.11;
  filter: blur(1px);
  animation: sparkle-pulse 6s ease-in-out infinite;
}

@keyframes sparkle-drift {
  0% {
    background-position: 18px 30px, 80px 140px, 150px 60px;
    opacity: 0.15;
  }

  50% {
    opacity: 0.24;
  }

  100% {
    background-position: 42px 54px, 58px 118px, 176px 88px;
    opacity: 0.19;
  }
}

@keyframes sparkle-pulse {
  0%,
  100% {
    opacity: 0.08;
    transform: translate3d(0, 0, 0);
  }

  50% {
    opacity: 0.16;
    transform: translate3d(10px, -8px, 0);
  }
}

.site-frame {
  position: relative;
  z-index: 1;
  width: min(100%, 1080px);
  margin: 0 auto;
  padding: 32px 0 64px;
}

.top-video {
  display: block;
  width: 100%;
  height: auto;
  margin: 0 auto 18px;
  background: #000;
}

.layout-graphic {
  position: relative;
  width: 100%;
  height: calc(min(100vw, 1080px) * 1500 / 1080);
  background-image: url("assets/blueprint-banner.png");
  background-repeat: no-repeat;
  background-size: 100% auto;
  background-position: center calc(-1 * min(100vw, 1080px) * 500 / 1080);
}

.layout-graphic::before,
.layout-graphic::after {
  content: "";
  position: absolute;
  z-index: 1;
  top: 27.2%;
  width: 30.4%;
  height: 38%;
  background: #000;
}

.layout-graphic::before {
  left: 0;
}

.layout-graphic::after {
  right: 0;
}

.side-gif {
  position: absolute;
  z-index: 2;
  width: 29.1%;
  height: auto;
  object-fit: contain;
  border-radius: 0;
  opacity: 0.96;
  mix-blend-mode: normal;
}

.left-gif {
  left: 1.1%;
  top: 27.9%;
}

.right-gif {
  right: 0.8%;
  top: 27.9%;
}

.hotspot {
  position: absolute;
  z-index: 3;
  display: block;
}

.hotspot:focus-visible {
  outline: 4px solid #fff;
  outline-offset: 4px;
}

.donation {
  left: 37.3%;
  top: 33.25%;
  width: 24.2%;
  height: 4.25%;
}

.tiktok {
  left: 38.1%;
  top: 47.4%;
  width: 23.3%;
  height: 4.25%;
}

.telegram {
  left: 38.1%;
  top: 55%;
  width: 24.2%;
  height: 4.25%;
}

.home {
  left: 36.2%;
  top: 82.65%;
  width: 26.7%;
  height: 3.6%;
}

@media (max-width: 640px) {
  .site-frame {
    padding-top: 0;
  }

  .top-video {
    margin-bottom: 12px;
  }

  .side-gif {
    border-radius: 14px;
  }
}
