html,
body,
#drops {
  --mouse-position: 0rem;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  background: #090413;
  position: relative;
  overflow: hidden;
}

.controls {
  z-index: 2;
  color: white;
  position: absolute;
  top: 0;
  left: 0;
  font-family: "Courier New", Courier, monospace;
  margin: 1rem;
  font-size: 0.75rem;
  animation: fade 2s 4s forwards;
}
@keyframes fade {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

.drop {
  width: 0.1rem;
  height: 2rem;
  left: var(--left);
  background: darkgray;
  opacity: var(--opacity);
  animation: drop linear var(--time) forwards;
  position: absolute;
  transform: rotate(var(--rotation));
}
@keyframes drop {
  from {
    top: 0;
    left: var(--left);
  }
  to {
    top: 100%;
    left: calc(var(--left) - var(--mouse-position));
  }
}

.splash {
  position: absolute;
  bottom: 0;
}
.splash:before {
  content: "";
  position: absolute;
  left: var(--left);
  width: 0.25rem;
  height: 0.25rem;
  border-radius: 50%;
  background: white;
  bottom: 0;
  opacity: var(--opacity);
  animation: splash var(--drop-time) cubic-bezier(0.33, 1, 0.68, 1);
}
@keyframes splash {
  0% {
    bottom: 0;
    left: var(--left);
  }
  100% {
    bottom: var(--drop-height);
    left: calc(var(--left) - calc(var(--mouse-position) / 4));
    opacity: 0;
  }
}