/* https://codepen.io/mikegolus/pen/Jegvym */

.firefly {
    position: fixed;
    left: 50%;
    top: 50%;
    width: 0.4vw;
    height: 0.4vw;
    margin: -0.2vw 0 0 9.8vw;
    animation: ease 200s alternate infinite;
    pointer-events: none;
  }
  .firefly::before, .firefly::after {
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    transform-origin: -10vw;
  }
  .firefly::before {
    background: black;
    opacity: 0.4;
    animation: drift ease alternate infinite;
  }
  .firefly::after {
    background: white;
    opacity: 0;
    box-shadow: 0 0 0vw 0vw yellow;
    animation: drift ease alternate infinite, flash ease infinite;
  }
  
  .firefly:nth-child(1) {
    animation-name: move1;
  }
  .firefly:nth-child(1)::before {
    animation-duration: 10s;
  }
  .firefly:nth-child(1)::after {
    animation-duration: 10s, 8324ms;
    animation-delay: 0ms, 3588ms;
  }
  
  @keyframes move1 {
    0% {
      transform: translateX(-24vw) translateY(31vh) scale(0.96);
    }
    3.5714285714% {
      transform: translateX(-23vw) translateY(-42vh) scale(0.46);
    }
    7.1428571429% {
      transform: translateX(-8vw) translateY(-28vh) scale(0.65);
    }
    10.7142857143% {
      transform: translateX(44vw) translateY(2vh) scale(0.66);
    }
    14.2857142857% {
      transform: translateX(0vw) translateY(-17vh) scale(0.52);
    }
    17.8571428571% {
      transform: translateX(32vw) translateY(11vh) scale(0.43);
    }
    21.4285714286% {
      transform: translateX(47vw) translateY(-7vh) scale(0.32);
    }
    25% {
      transform: translateX(23vw) translateY(-38vh) scale(0.75);
    }
    28.5714285714% {
      transform: translateX(30vw) translateY(41vh) scale(0.48);
    }
    32.1428571429% {
      transform: translateX(41vw) translateY(-19vh) scale(0.68);
    }
    35.7142857143% {
      transform: translateX(-18vw) translateY(32vh) scale(0.8);
    }
    39.2857142857% {
      transform: translateX(50vw) translateY(25vh) scale(0.82);
    }
    42.8571428571% {
      transform: translateX(39vw) translateY(29vh) scale(0.96);
    }
    46.4285714286% {
      transform: translateX(-37vw) translateY(33vh) scale(0.28);
    }
    50% {
      transform: translateX(-24vw) translateY(-11vh) scale(0.58);
    }
    53.5714285714% {
      transform: translateX(-27vw) translateY(-3vh) scale(0.86);
    }
    57.1428571429% {
      transform: translateX(11vw) translateY(-41vh) scale(0.83);
    }
    60.7142857143% {
      transform: translateX(-21vw) translateY(-36vh) scale(0.95);
    }
    64.2857142857% {
      transform: translateX(-9vw) translateY(-20vh) scale(0.86);
    }
    67.8571428571% {
      transform: translateX(-17vw) translateY(45vh) scale(0.73);
    }
    71.4285714286% {
      transform: translateX(39vw) translateY(45vh) scale(0.53);
    }
    75% {
      transform: translateX(-15vw) translateY(-2vh) scale(0.91);
    }
    78.5714285714% {
      transform: translateX(14vw) translateY(-7vh) scale(0.34);
    }
    82.1428571429% {
      transform: translateX(40vw) translateY(1vh) scale(0.52);
    }
    85.7142857143% {
      transform: translateX(31vw) translateY(-26vh) scale(0.47);
    }
    89.2857142857% {
      transform: translateX(32vw) translateY(-23vh) scale(0.78);
    }
    92.8571428571% {
      transform: translateX(-49vw) translateY(27vh) scale(0.78);
    }
    96.4285714286% {
      transform: translateX(50vw) translateY(-31vh) scale(0.56);
    }
    100% {
      transform: translateX(-42vw) translateY(16vh) scale(0.85);
    }
  }
  .firefly:nth-child(2) {
    animation-name: move2;
  }
  .firefly:nth-child(2)::before {
    animation-duration: 16s;
  }
  .firefly:nth-child(2)::after {
    animation-duration: 16s, 9158ms;
    animation-delay: 0ms, 7540ms;
  }
  
  @keyframes move2 {
    0% {
      transform: translateX(8vw) translateY(39vh) scale(0.67);
    }
    5.2631578947% {
      transform: translateX(-17vw) translateY(7vh) scale(0.71);
    }
    10.5263157895% {
      transform: translateX(16vw) translateY(-23vh) scale(0.95);
    }
    15.7894736842% {
      transform: translateX(-37vw) translateY(42vh) scale(0.68);
    }
    21.0526315789% {
      transform: translateX(-29vw) translateY(-28vh) scale(0.7);
    }
    26.3157894737% {
      transform: translateX(-1vw) translateY(45vh) scale(0.29);
    }
    31.5789473684% {
      transform: translateX(34vw) translateY(6vh) scale(0.84);
    }
    36.8421052632% {
      transform: translateX(-35vw) translateY(41vh) scale(0.27);
    }
    42.1052631579% {
      transform: translateX(-46vw) translateY(11vh) scale(0.79);
    }
    47.3684210526% {
      transform: translateX(-4vw) translateY(33vh) scale(0.56);
    }
    52.6315789474% {
      transform: translateX(29vw) translateY(-10vh) scale(0.73);
    }
    57.8947368421% {
      transform: translateX(-12vw) translateY(-40vh) scale(0.81);
    }
    63.1578947368% {
      transform: translateX(-33vw) translateY(45vh) scale(0.32);
    }
    68.4210526316% {
      transform: translateX(44vw) translateY(22vh) scale(0.33);
    }
    73.6842105263% {
      transform: translateX(-49vw) translateY(-34vh) scale(0.91);
    }
    78.9473684211% {
      transform: translateX(42vw) translateY(-21vh) scale(0.46);
    }
    84.2105263158% {
      transform: translateX(-16vw) translateY(39vh) scale(0.7);
    }
    89.4736842105% {
      transform: translateX(41vw) translateY(-47vh) scale(0.46);
    }
    94.7368421053% {
      transform: translateX(24vw) translateY(-18vh) scale(0.36);
    }
    100% {
      transform: translateX(-15vw) translateY(-22vh) scale(0.71);
    }
  }
  .firefly:nth-child(3) {
    animation-name: move3;
  }
  .firefly:nth-child(3)::before {
    animation-duration: 10s;
  }
  .firefly:nth-child(3)::after {
    animation-duration: 10s, 5761ms;
    animation-delay: 0ms, 3742ms;
  }
  
  @keyframes move3 {
    0% {
      transform: translateX(25vw) translateY(30vh) scale(0.99);
    }
    4.7619047619% {
      transform: translateX(-35vw) translateY(45vh) scale(0.55);
    }
    9.5238095238% {
      transform: translateX(20vw) translateY(-10vh) scale(0.69);
    }
    14.2857142857% {
      transform: translateX(-32vw) translateY(33vh) scale(0.79);
    }
    19.0476190476% {
      transform: translateX(-37vw) translateY(29vh) scale(0.65);
    }
    23.8095238095% {
      transform: translateX(3vw) translateY(-30vh) scale(0.65);
    }
    28.5714285714% {
      transform: translateX(-44vw) translateY(40vh) scale(0.39);
    }
    33.3333333333% {
      transform: translateX(-15vw) translateY(38vh) scale(0.46);
    }
    38.0952380952% {
      transform: translateX(50vw) translateY(-34vh) scale(0.73);
    }
    42.8571428571% {
      transform: translateX(24vw) translateY(-41vh) scale(0.99);
    }
    47.619047619% {
      transform: translateX(37vw) translateY(3vh) scale(0.76);
    }
    52.380952381% {
      transform: translateX(9vw) translateY(34vh) scale(0.33);
    }
    57.1428571429% {
      transform: translateX(-8vw) translateY(-1vh) scale(0.4);
    }
    61.9047619048% {
      transform: translateX(-46vw) translateY(-11vh) scale(0.86);
    }
    66.6666666667% {
      transform: translateX(-25vw) translateY(35vh) scale(0.89);
    }
    71.4285714286% {
      transform: translateX(22vw) translateY(35vh) scale(0.41);
    }
    76.1904761905% {
      transform: translateX(46vw) translateY(-38vh) scale(0.6);
    }
    80.9523809524% {
      transform: translateX(-40vw) translateY(-8vh) scale(0.69);
    }
    85.7142857143% {
      transform: translateX(50vw) translateY(-23vh) scale(0.63);
    }
    90.4761904762% {
      transform: translateX(20vw) translateY(-35vh) scale(0.46);
    }
    95.2380952381% {
      transform: translateX(-30vw) translateY(-42vh) scale(0.7);
    }
    100% {
      transform: translateX(37vw) translateY(-43vh) scale(0.58);
    }
  }
  @keyframes drift {
    0% {
      transform: rotate(0deg);
    }
    100% {
      transform: rotate(360deg);
    }
  }
  @keyframes flash {
    0%, 30%, 100% {
      opacity: 0;
      box-shadow: 0 0 0vw 0vw yellow;
    }
    5% {
      opacity: 1;
      box-shadow: 0 0 2vw 0.4vw yellow;
    }
  }