/* https://codepen.io/mikegolus/pen/Jegvym */

.firefly:nth-child(1) {
    animation-name: move1;
}

.firefly {
    position: fixed;
    left: 50%;
    top: 50%;
    width: 0.8vw;
    height: 0.8vw;
    margin: -0.2vw 0 0 9.8vw;
    animation: ease 200s alternate infinite;
    pointer-events: none;
    z-index: 1000;
}

.firefly:nth-child(1)::before {
    animation-duration: 10s;
}

.firefly::before {
    background: black;
    opacity: 0.4;
    animation: drift ease alternate infinite;
}

.firefly::before, .firefly::after {
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    transform-origin: -10vw;
}

.firefly:nth-child(1)::after {
    animation-duration: 10s, 9743ms;
    animation-delay: 0ms, 2695ms;
}

.firefly::after {
    background: white;
    opacity: 0;
    box-shadow: 0 0 0vw 0vw yellow;
    animation: drift ease alternate infinite, flash ease infinite;
}

.firefly::before, .firefly::after {
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    transform-origin: -10vw;
}

@keyframes move1 {
    0% {
        transform: translateX(12vw) translateY(-6vh) scale(0.76);
    }
    4.7619% {
        transform: translateX(-20vw) translateY(3vh) scale(0.31);
    }
    9.52381% {
        transform: translateX(20vw) translateY(-22vh) scale(0.35);
    }
    14.2857% {
        transform: translateX(-45vw) translateY(-45vh) scale(0.73);
    }
    19.0476% {
        transform: translateX(27vw) translateY(-16vh) scale(0.49);
    }
    23.8095% {
        transform: translateX(17vw) translateY(-25vh) scale(0.82);
    }
    28.5714% {
        transform: translateX(-46vw) translateY(38vh) scale(0.69);
    }
    33.3333% {
        transform: translateX(24vw) translateY(-48vh) scale(0.62);
    }
    38.0952% {
        transform: translateX(19vw) translateY(34vh) scale(0.94);
    }
    42.8571% {
        transform: translateX(20vw) translateY(-47vh) scale(0.71);
    }
    47.619% {
        transform: translateX(10vw) translateY(-20vh) scale(0.68);
    }
    52.381% {
        transform: translateX(8vw) translateY(30vh) scale(0.63);
    }
    57.1429% {
        transform: translateX(48vw) translateY(3vh) scale(1);
    }
    61.9048% {
        transform: translateX(-46vw) translateY(23vh) scale(0.51);
    }
    66.6667% {
        transform: translateX(2vw) translateY(-37vh) scale(0.52);
    }
    71.4286% {
        transform: translateX(-6vw) translateY(33vh) scale(0.93);
    }
    76.1905% {
        transform: translateX(35vw) translateY(-44vh) scale(0.95);
    }
    80.9524% {
        transform: translateX(-4vw) translateY(-3vh) scale(0.69);
    }
    85.7143% {
        transform: translateX(16vw) translateY(-38vh) scale(0.84);
    }
    90.4762% {
        transform: translateX(23vw) translateY(47vh) scale(0.41);
    }
    95.2381% {
        transform: translateX(42vw) translateY(-47vh) scale(0.96);
    }
    100% {
        transform: translateX(-40vw) translateY(-1vh) scale(0.39);
    }
}

@keyframes drift {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

@keyframes flash {
    0% {
        opacity: 0;
        box-shadow: 0 0 0vw 0vw yellow;
    }
    5% {
        opacity: 1;
        box-shadow: 0 0 2vw 0.4vw yellow;
    }
    30% {
        opacity: 0;
        box-shadow: 0 0 0vw 0vw yellow;
    }
    75% {
        opacity: 0;
        box-shadow: 0 0 0vw 0vw yellow;
    }
    79% {
        opacity: 1;
        box-shadow: 0 0 2vw 0.4vw yellow;
    }
    83% {
        opacity: 0;
        box-shadow: 0 0 0vw 0vw yellow;
    }
    100% {
        opacity: 0;
        box-shadow: 0 0 0vw 0vw yellow;
    }
}