.streamer-stage {
  position: fixed;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 5;
}

.streamer {
  position: absolute;
  top: -200px;
  width: 6px;
  height: 140px;
  border-radius: 3px;
  transform-origin: center;
  will-change: transform, opacity;
  animation: streamer-fall var(--streamer-duration, 2800ms) cubic-bezier(0.4, 0.1, 0.6, 1) forwards;
  opacity: 0;
}

@keyframes streamer-fall {
  0%   { transform: translateY(0) translateX(0) rotate(var(--streamer-start-rotation, 0deg)); opacity: 0; }
  10%  { opacity: 1; }
  100% {
    transform:
      translateY(110vh)
      translateX(var(--streamer-drift, 40px))
      rotate(calc(var(--streamer-start-rotation, 0deg) + var(--streamer-spin, 240deg)));
    opacity: 0;
  }
}
