.bubble {
    position: absolute;
    pointer-events: none;
    bottom: 0;
    animation: moveUp 15s linear, changeRadius 3s alternate infinite;
    visibility: var(--playState);
}

@keyframes moveUp {
    0% {
        transform: translateY(0) rotate(0deg);
        opacity: 1;
    }

    100% {
        transform: translateY(-100vh) rotate(720deg);
        opacity: 0;
    }
}

@keyframes changeRadius {
    0% {
        border-radius: 0;
    }

    100% {
        border-radius: 50%;
    }
}

@media (prefers-reduced-motion: reduce) {
    body {
        --playState: hidden;
    }
}