body {
  width: 100%;
  height: 100vh;
  background-color: #000;
  overflow: hidden;
}

.title {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
}

.title h2 {
  color: #fff;
  font-family: sans-serif;
  font-size: 2.5rem;
  text-align: center;
  letter-spacing: 0.05em;
  font-weight: bold;
  opacity: 0.5;
  user-select: none;
  pointer-events: none;
}

.touch__wrap {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 20;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  pointer-events: none;
}

.sparkler {
  position: absolute;
  box-shadow: 0 0 8px 8px rgba(245, 224, 163, 0.08);
}

.sparkler__spark {
  position: absolute;
  z-index: 2;
  height: 8px;
  width: 1.6px;
  background-color: #fff;
  --shadow: hsl(var(--h), calc(var(--s, 50) * 1%), calc(var(--l, 25) * 1%));
  box-shadow: 0 0 10px 2px var(--shadow);
  transform: rotate(calc(var(--rotation) * 1deg)) translate(0, 0);
  animation: sparking calc(var(--speed) * 1s) calc(var(--delay) * -1s) infinite
    ease;
}

.firecracker {
  position: absolute;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  opacity: 1;
}

@keyframes sparking {
  to {
    opacity: 0;
    transform: rotate(calc(var(--rotation) * 1deg))
      translate(0, calc(var(--travel) * 1px));
  }
}

@keyframes fade-out {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(2%, 2%) scale(0);
  }
}
