.scene {
  inset: 0;
  position: fixed;
  overflow: hidden;
  pointer-events: none;
  z-index: -1;
}

.bubble {
  position: absolute;
  left: 0;
  top: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.45);
  box-shadow:
    inset 0 0 10px rgba(255, 255, 255, 0.6),
    0 0 16px rgba(255, 255, 255, 0.1);
  pointer-events: none;
  will-change: transform, opacity;
  animation-name: rise;
  animation-timing-function: ease-out;
  animation-fill-mode: forwards;
}

@keyframes rise {
  from {
    transform: translate(var(--start-x), var(--start-y)) scale(0.85);
    opacity: 0;
  }

  10% {
    opacity: 0.5;
  }

  90% {
    opacity: 0.4;
  }

  to {
    transform: translate(var(--end-x), var(--end-y)) scale(1);
    opacity: 0;
  }
}

.sway-one {
  transform-origin: bottom center;
  animation: sway 3.5s ease-in-out infinite;
}

.sway-two {
  transform-origin: bottom center;
  animation: sway 4s ease-in-out infinite reverse;
}

@keyframes sway {
  0%,
  100% {
    transform: translateX(0) rotate(-2deg);
  }

  50% {
    transform: translateX(6px) rotate(2deg);
  }
}
