.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;
  z-index: 0;
}

.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 #f5b800;
  animation: drift ease alternate infinite, flash ease infinite;
}

.firefly:nth-child(1) { animation-name: move1; }
.firefly:nth-child(1)::before { animation-duration: 15s; }
.firefly:nth-child(1)::after  { animation-duration: 15s, 7421ms; animation-delay: 0ms, 3911ms; }

.firefly:nth-child(2) { animation-name: move2; }
.firefly:nth-child(2)::before { animation-duration: 10s; }
.firefly:nth-child(2)::after  { animation-duration: 10s, 9632ms; animation-delay: 0ms, 6894ms; }

.firefly:nth-child(3) { animation-name: move3; }
.firefly:nth-child(3)::before { animation-duration: 17s; }
.firefly:nth-child(3)::after  { animation-duration: 17s, 10384ms; animation-delay: 0ms, 5172ms; }

.firefly:nth-child(4) { animation-name: move4; }
.firefly:nth-child(4)::before { animation-duration: 14s; }
.firefly:nth-child(4)::after  { animation-duration: 14s, 6650ms; animation-delay: 0ms, 2460ms; }

.firefly:nth-child(5) { animation-name: move5; }
.firefly:nth-child(5)::before { animation-duration: 18s; }
.firefly:nth-child(5)::after  { animation-duration: 18s, 9291ms; animation-delay: 0ms, 7133ms; }

.firefly:nth-child(6) { animation-name: move6; }
.firefly:nth-child(6)::before { animation-duration: 12s; }
.firefly:nth-child(6)::after  { animation-duration: 12s, 8177ms; animation-delay: 0ms, 5726ms; }

.firefly:nth-child(7) { animation-name: move7; }
.firefly:nth-child(7)::before { animation-duration: 11s; }
.firefly:nth-child(7)::after  { animation-duration: 11s, 11123ms; animation-delay: 0ms, 4875ms; }

.firefly:nth-child(8) { animation-name: move8; }
.firefly:nth-child(8)::before { animation-duration: 16s; }
.firefly:nth-child(8)::after  { animation-duration: 16s, 7804ms; animation-delay: 0ms, 1569ms; }

.firefly:nth-child(9) { animation-name: move9; }
.firefly:nth-child(9)::before { animation-duration: 9s; }
.firefly:nth-child(9)::after  { animation-duration: 9s, 10591ms; animation-delay: 0ms, 8344ms; }

.firefly:nth-child(10) { animation-name: move10; }
.firefly:nth-child(10)::before { animation-duration: 13s; }
.firefly:nth-child(10)::after  { animation-duration: 13s, 7098ms; animation-delay: 0ms, 3250ms; }

.firefly:nth-child(11) { animation-name: move11; }
.firefly:nth-child(11)::before { animation-duration: 17s; }
.firefly:nth-child(11)::after  { animation-duration: 17s, 11444ms; animation-delay: 0ms, 2128ms; }

.firefly:nth-child(12) { animation-name: move12; }
.firefly:nth-child(12)::before { animation-duration: 15s; }
.firefly:nth-child(12)::after  { animation-duration: 15s, 8769ms; animation-delay: 0ms, 6512ms; }

.firefly:nth-child(13) { animation-name: move13; }
.firefly:nth-child(13)::before { animation-duration: 10s; }
.firefly:nth-child(13)::after  { animation-duration: 10s, 6115ms; animation-delay: 0ms, 1010ms; }

.firefly:nth-child(14) { animation-name: move14; }
.firefly:nth-child(14)::before { animation-duration: 18s; }
.firefly:nth-child(14)::after  { animation-duration: 18s, 10420ms; animation-delay: 0ms, 7548ms; }

.firefly:nth-child(15) { animation-name: move15; }
.firefly:nth-child(15)::before { animation-duration: 12s; }
.firefly:nth-child(15)::after  { animation-duration: 12s, 9712ms; animation-delay: 0ms, 4666ms; }

@keyframes move1 {
  0%   { transform: translateX(-28vw) translateY(17vh)  scale(0.54); }
  5%   { transform: translateX(31vw)  translateY(-42vh) scale(0.91); }
  10%  { transform: translateX(-9vw)  translateY(44vh)  scale(0.47); }
  15%  { transform: translateX(12vw)  translateY(-6vh)  scale(0.72); }
  20%  { transform: translateX(-44vw) translateY(-28vh) scale(0.85); }
  25%  { transform: translateX(39vw)  translateY(23vh)  scale(0.39); }
  30%  { transform: translateX(-16vw) translateY(7vh)   scale(0.98); }
  35%  { transform: translateX(45vw)  translateY(-31vh) scale(0.63); }
  40%  { transform: translateX(-36vw) translateY(33vh)  scale(0.78); }
  45%  { transform: translateX(6vw)   translateY(-48vh) scale(0.51); }
  50%  { transform: translateX(27vw)  translateY(14vh)  scale(0.94); }
  55%  { transform: translateX(-21vw) translateY(-11vh) scale(0.66); }
  60%  { transform: translateX(48vw)  translateY(39vh)  scale(0.43); }
  65%  { transform: translateX(-3vw)  translateY(-35vh) scale(0.88); }
  70%  { transform: translateX(-49vw) translateY(4vh)   scale(0.58); }
  75%  { transform: translateX(18vw)  translateY(48vh)  scale(0.75); }
  80%  { transform: translateX(-30vw) translateY(-44vh) scale(0.99); }
  85%  { transform: translateX(36vw)  translateY(-2vh)  scale(0.62); }
  90%  { transform: translateX(-13vw) translateY(29vh)  scale(0.81); }
  95%  { transform: translateX(4vw)   translateY(-19vh) scale(0.46); }
  100% { transform: translateX(42vw)  translateY(9vh)   scale(0.69); }
}

@keyframes move2 {
  0%     { transform: translateX(14vw)  translateY(-33vh) scale(0.82); }
  6.25%  { transform: translateX(-41vw) translateY(28vh)  scale(0.48); }
  12.5%  { transform: translateX(36vw)  translateY(41vh)  scale(0.93); }
  18.75% { transform: translateX(-12vw) translateY(-7vh)  scale(0.57); }
  25%    { transform: translateX(5vw)   translateY(49vh)  scale(0.76); }
  31.25% { transform: translateX(-47vw) translateY(-21vh) scale(0.64); }
  37.5%  { transform: translateX(23vw)  translateY(-45vh) scale(0.99); }
  43.75% { transform: translateX(-2vw)  translateY(18vh)  scale(0.38); }
  50%    { transform: translateX(44vw)  translateY(-14vh) scale(0.86); }
  56.25% { transform: translateX(-29vw) translateY(3vh)   scale(0.71); }
  62.5%  { transform: translateX(11vw)  translateY(36vh)  scale(0.52); }
  68.75% { transform: translateX(-38vw) translateY(-49vh) scale(0.89); }
  75%    { transform: translateX(49vw)  translateY(10vh)  scale(0.44); }
  81.25% { transform: translateX(-17vw) translateY(45vh)  scale(0.96); }
  87.5%  { transform: translateX(30vw)  translateY(-27vh) scale(0.67); }
  93.75% { transform: translateX(-5vw)  translateY(24vh)  scale(0.79); }
  100%   { transform: translateX(19vw)  translateY(-39vh) scale(0.55); }
}

@keyframes move3 {
  0%   { transform: translateX(-22vw) translateY(38vh)  scale(0.71); }
  7%   { transform: translateX(41vw)  translateY(-15vh) scale(0.44); }
  14%  { transform: translateX(-8vw)  translateY(-43vh) scale(0.89); }
  21%  { transform: translateX(33vw)  translateY(27vh)  scale(0.56); }
  28%  { transform: translateX(-47vw) translateY(11vh)  scale(0.93); }
  35%  { transform: translateX(19vw)  translateY(-48vh) scale(0.38); }
  42%  { transform: translateX(-34vw) translateY(35vh)  scale(0.77); }
  49%  { transform: translateX(7vw)   translateY(-21vh) scale(0.62); }
  56%  { transform: translateX(48vw)  translateY(16vh)  scale(0.85); }
  63%  { transform: translateX(-15vw) translateY(-37vh) scale(0.49); }
  70%  { transform: translateX(26vw)  translateY(44vh)  scale(0.96); }
  77%  { transform: translateX(-43vw) translateY(-9vh)  scale(0.68); }
  84%  { transform: translateX(12vw)  translateY(31vh)  scale(0.81); }
  91%  { transform: translateX(-29vw) translateY(-46vh) scale(0.53); }
  100% { transform: translateX(38vw)  translateY(8vh)   scale(0.74); }
}

@keyframes move4 {
  0%   { transform: translateX(17vw)  translateY(-44vh) scale(0.83); }
  10%  { transform: translateX(-39vw) translateY(21vh)  scale(0.57); }
  20%  { transform: translateX(46vw)  translateY(-33vh) scale(0.42); }
  30%  { transform: translateX(-11vw) translateY(49vh)  scale(0.76); }
  40%  { transform: translateX(28vw)  translateY(-7vh)  scale(0.91); }
  50%  { transform: translateX(-47vw) translateY(36vh)  scale(0.64); }
  60%  { transform: translateX(8vw)   translateY(-28vh) scale(0.48); }
  70%  { transform: translateX(37vw)  translateY(13vh)  scale(0.87); }
  80%  { transform: translateX(-24vw) translateY(-41vh) scale(0.73); }
  90%  { transform: translateX(44vw)  translateY(24vh)  scale(0.55); }
  100% { transform: translateX(-16vw) translateY(-18vh) scale(0.98); }
}

@keyframes move5 {
  0%   { transform: translateX(-32vw) translateY(5vh)   scale(0.66); }
  8%   { transform: translateX(23vw)  translateY(-38vh) scale(0.91); }
  16%  { transform: translateX(-48vw) translateY(29vh)  scale(0.47); }
  24%  { transform: translateX(11vw)  translateY(-13vh) scale(0.78); }
  32%  { transform: translateX(40vw)  translateY(42vh)  scale(0.53); }
  40%  { transform: translateX(-7vw)  translateY(-47vh) scale(0.84); }
  48%  { transform: translateX(35vw)  translateY(18vh)  scale(0.39); }
  56%  { transform: translateX(-26vw) translateY(34vh)  scale(0.95); }
  64%  { transform: translateX(49vw)  translateY(-22vh) scale(0.61); }
  72%  { transform: translateX(-14vw) translateY(-6vh)  scale(0.76); }
  80%  { transform: translateX(6vw)   translateY(47vh)  scale(0.43); }
  88%  { transform: translateX(-41vw) translateY(-31vh) scale(0.88); }
  100% { transform: translateX(29vw)  translateY(11vh)  scale(0.57); }
}

@keyframes move6 {
  0%   { transform: translateX(36vw)  translateY(-46vh) scale(0.52); }
  9%   { transform: translateX(-19vw) translateY(14vh)  scale(0.87); }
  18%  { transform: translateX(42vw)  translateY(37vh)  scale(0.69); }
  27%  { transform: translateX(-44vw) translateY(-25vh) scale(0.94); }
  36%  { transform: translateX(15vw)  translateY(8vh)   scale(0.41); }
  45%  { transform: translateX(-3vw)  translateY(-49vh) scale(0.73); }
  54%  { transform: translateX(47vw)  translateY(31vh)  scale(0.58); }
  63%  { transform: translateX(-38vw) translateY(-12vh) scale(0.82); }
  72%  { transform: translateX(21vw)  translateY(45vh)  scale(0.46); }
  81%  { transform: translateX(-29vw) translateY(-34vh) scale(0.97); }
  90%  { transform: translateX(9vw)   translateY(19vh)  scale(0.64); }
  100% { transform: translateX(-46vw) translateY(42vh)  scale(0.79); }
}

@keyframes move7 {
  0%   { transform: translateX(-11vw) translateY(-27vh) scale(0.88); }
  6%   { transform: translateX(44vw)  translateY(39vh)  scale(0.53); }
  12%  { transform: translateX(-33vw) translateY(-14vh) scale(0.74); }
  18%  { transform: translateX(18vw)  translateY(48vh)  scale(0.41); }
  24%  { transform: translateX(-48vw) translateY(-39vh) scale(0.86); }
  30%  { transform: translateX(7vw)   translateY(22vh)  scale(0.63); }
  36%  { transform: translateX(39vw)  translateY(-41vh) scale(0.97); }
  42%  { transform: translateX(-22vw) translateY(7vh)   scale(0.48); }
  48%  { transform: translateX(13vw)  translateY(-19vh) scale(0.79); }
  54%  { transform: translateX(-45vw) translateY(43vh)  scale(0.55); }
  60%  { transform: translateX(31vw)  translateY(-5vh)  scale(0.92); }
  66%  { transform: translateX(-6vw)  translateY(-44vh) scale(0.67); }
  72%  { transform: translateX(48vw)  translateY(28vh)  scale(0.38); }
  78%  { transform: translateX(-17vw) translateY(15vh)  scale(0.81); }
  84%  { transform: translateX(26vw)  translateY(-32vh) scale(0.44); }
  90%  { transform: translateX(-40vw) translateY(36vh)  scale(0.71); }
  100% { transform: translateX(4vw)   translateY(-10vh) scale(0.59); }
}

@keyframes move8 {
  0%   { transform: translateX(43vw)  translateY(14vh)  scale(0.77); }
  11%  { transform: translateX(-24vw) translateY(-48vh) scale(0.43); }
  22%  { transform: translateX(9vw)   translateY(32vh)  scale(0.89); }
  33%  { transform: translateX(-46vw) translateY(-7vh)  scale(0.61); }
  44%  { transform: translateX(34vw)  translateY(47vh)  scale(0.96); }
  55%  { transform: translateX(-13vw) translateY(-23vh) scale(0.52); }
  66%  { transform: translateX(22vw)  translateY(-38vh) scale(0.75); }
  77%  { transform: translateX(-38vw) translateY(17vh)  scale(0.48); }
  88%  { transform: translateX(46vw)  translateY(-11vh) scale(0.83); }
  100% { transform: translateX(-7vw)  translateY(41vh)  scale(0.67); }
}

@keyframes move9 {
  0%     { transform: translateX(-27vw) translateY(31vh)  scale(0.58); }
  7.69%  { transform: translateX(16vw)  translateY(-45vh) scale(0.83); }
  15.38% { transform: translateX(-43vw) translateY(8vh)   scale(0.47); }
  23.08% { transform: translateX(38vw)  translateY(-19vh) scale(0.92); }
  30.77% { transform: translateX(-9vw)  translateY(48vh)  scale(0.61); }
  38.46% { transform: translateX(47vw)  translateY(-36vh) scale(0.79); }
  46.15% { transform: translateX(-21vw) translateY(25vh)  scale(0.44); }
  53.85% { transform: translateX(6vw)   translateY(-12vh) scale(0.96); }
  61.54% { transform: translateX(-49vw) translateY(43vh)  scale(0.53); }
  69.23% { transform: translateX(29vw)  translateY(-7vh)  scale(0.74); }
  76.92% { transform: translateX(-14vw) translateY(-41vh) scale(0.87); }
  84.62% { transform: translateX(41vw)  translateY(33vh)  scale(0.39); }
  92.31% { transform: translateX(-32vw) translateY(-26vh) scale(0.68); }
  100%   { transform: translateX(11vw)  translateY(17vh)  scale(0.91); }
}

@keyframes move10 {
  0%     { transform: translateX(48vw)  translateY(-39vh) scale(0.54); }
  12.5%  { transform: translateX(-31vw) translateY(22vh)  scale(0.79); }
  25%    { transform: translateX(17vw)  translateY(-14vh) scale(0.43); }
  37.5%  { transform: translateX(-42vw) translateY(45vh)  scale(0.86); }
  50%    { transform: translateX(4vw)   translateY(-28vh) scale(0.67); }
  62.5%  { transform: translateX(36vw)  translateY(11vh)  scale(0.94); }
  75%    { transform: translateX(-18vw) translateY(-49vh) scale(0.51); }
  87.5%  { transform: translateX(45vw)  translateY(37vh)  scale(0.72); }
  100%   { transform: translateX(-8vw)  translateY(-6vh)  scale(0.85); }
}

@keyframes move11 {
  0%     { transform: translateX(22vw)  translateY(44vh)  scale(0.69); }
  8.33%  { transform: translateX(-46vw) translateY(-17vh) scale(0.84); }
  16.67% { transform: translateX(13vw)  translateY(-42vh) scale(0.52); }
  25%    { transform: translateX(-28vw) translateY(36vh)  scale(0.93); }
  33.33% { transform: translateX(47vw)  translateY(-8vh)  scale(0.41); }
  41.67% { transform: translateX(-7vw)  translateY(27vh)  scale(0.76); }
  50%    { transform: translateX(34vw)  translateY(-46vh) scale(0.58); }
  58.33% { transform: translateX(-41vw) translateY(13vh)  scale(0.87); }
  66.67% { transform: translateX(18vw)  translateY(49vh)  scale(0.46); }
  75%    { transform: translateX(-3vw)  translateY(-33vh) scale(0.73); }
  83.33% { transform: translateX(43vw)  translateY(19vh)  scale(0.61); }
  91.67% { transform: translateX(-36vw) translateY(-24vh) scale(0.95); }
  100%   { transform: translateX(9vw)   translateY(38vh)  scale(0.77); }
}

@keyframes move12 {
  0%     { transform: translateX(-15vw) translateY(-8vh)  scale(0.89); }
  9.09%  { transform: translateX(39vw)  translateY(46vh)  scale(0.54); }
  18.18% { transform: translateX(-43vw) translateY(-31vh) scale(0.71); }
  27.27% { transform: translateX(24vw)  translateY(15vh)  scale(0.38); }
  36.36% { transform: translateX(-8vw)  translateY(-43vh) scale(0.82); }
  45.45% { transform: translateX(46vw)  translateY(28vh)  scale(0.66); }
  54.55% { transform: translateX(-33vw) translateY(7vh)   scale(0.91); }
  63.64% { transform: translateX(11vw)  translateY(-37vh) scale(0.48); }
  72.73% { transform: translateX(-47vw) translateY(41vh)  scale(0.74); }
  81.82% { transform: translateX(27vw)  translateY(-14vh) scale(0.57); }
  90.91% { transform: translateX(-19vw) translateY(32vh)  scale(0.43); }
  100%   { transform: translateX(42vw)  translateY(-26vh) scale(0.85); }
}

@keyframes move13 {
  0%     { transform: translateX(31vw)  translateY(-21vh) scale(0.61); }
  5.56%  { transform: translateX(-44vw) translateY(34vh)  scale(0.78); }
  11.11% { transform: translateX(8vw)   translateY(46vh)  scale(0.43); }
  16.67% { transform: translateX(-26vw) translateY(-11vh) scale(0.92); }
  22.22% { transform: translateX(47vw)  translateY(-47vh) scale(0.55); }
  27.78% { transform: translateX(-12vw) translateY(19vh)  scale(0.84); }
  33.33% { transform: translateX(36vw)  translateY(-3vh)  scale(0.47); }
  38.89% { transform: translateX(-49vw) translateY(42vh)  scale(0.73); }
  44.44% { transform: translateX(19vw)  translateY(-28vh) scale(0.96); }
  50%    { transform: translateX(-7vw)  translateY(11vh)  scale(0.58); }
  55.56% { transform: translateX(44vw)  translateY(38vh)  scale(0.41); }
  61.11% { transform: translateX(-37vw) translateY(-44vh) scale(0.79); }
  66.67% { transform: translateX(14vw)  translateY(24vh)  scale(0.64); }
  72.22% { transform: translateX(-31vw) translateY(-16vh) scale(0.87); }
  77.78% { transform: translateX(42vw)  translateY(48vh)  scale(0.52); }
  83.33% { transform: translateX(-22vw) translateY(-37vh) scale(0.95); }
  88.89% { transform: translateX(6vw)   translateY(29vh)  scale(0.68); }
  100%   { transform: translateX(-48vw) translateY(7vh)   scale(0.83); }
}

@keyframes move14 {
  0%     { transform: translateX(-34vw) translateY(-19vh) scale(0.76); }
  11.11% { transform: translateX(26vw)  translateY(47vh)  scale(0.49); }
  22.22% { transform: translateX(-11vw) translateY(-38vh) scale(0.91); }
  33.33% { transform: translateX(43vw)  translateY(12vh)  scale(0.62); }
  44.44% { transform: translateX(-48vw) translateY(29vh)  scale(0.85); }
  55.56% { transform: translateX(17vw)  translateY(-43vh) scale(0.53); }
  66.67% { transform: translateX(-6vw)  translateY(36vh)  scale(0.74); }
  77.78% { transform: translateX(38vw)  translateY(-8vh)  scale(0.41); }
  88.89% { transform: translateX(-23vw) translateY(21vh)  scale(0.97); }
  100%   { transform: translateX(9vw)   translateY(-49vh) scale(0.66); }
}

@keyframes move15 {
  0%   { transform: translateX(45vw)  translateY(38vh)  scale(0.57); }
  7%   { transform: translateX(-17vw) translateY(-46vh) scale(0.82); }
  14%  { transform: translateX(32vw)  translateY(13vh)  scale(0.44); }
  21%  { transform: translateX(-43vw) translateY(27vh)  scale(0.93); }
  28%  { transform: translateX(8vw)   translateY(-34vh) scale(0.61); }
  35%  { transform: translateX(-27vw) translateY(-8vh)  scale(0.75); }
  42%  { transform: translateX(48vw)  translateY(42vh)  scale(0.48); }
  49%  { transform: translateX(-9vw)  translateY(-22vh) scale(0.89); }
  56%  { transform: translateX(23vw)  translateY(-48vh) scale(0.54); }
  63%  { transform: translateX(-38vw) translateY(16vh)  scale(0.71); }
  70%  { transform: translateX(14vw)  translateY(39vh)  scale(0.96); }
  77%  { transform: translateX(-47vw) translateY(-13vh) scale(0.43); }
  84%  { transform: translateX(37vw)  translateY(-27vh) scale(0.78); }
  91%  { transform: translateX(-21vw) translateY(44vh)  scale(0.62); }
  100% { transform: translateX(5vw)   translateY(-3vh)  scale(0.85); }
}

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

@keyframes flash {
  0%, 30%, 100% {
    opacity: 0;
    box-shadow: 0 0 0vw 0vw #f5b800;
  }
  5% {
    opacity: 1;
    box-shadow: 0 0 2vw 0.4vw #f5b800;
  }
}
