.fire > .before,
.fire > .after {
  position: absolute;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  box-shadow: 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff,
    0 0 #fff, 0 0 #fff, 0 0 #fff;
  -moz-animation: 1s bang ease-out infinite backwards,
    1s gravity ease-in infinite backwards, 5s position linear infinite backwards;
  -webkit-animation: 1s bang ease-out infinite backwards,
    1s gravity ease-in infinite backwards, 5s position linear infinite backwards;
  -o-animation: 1s bang ease-out infinite backwards,
    1s gravity ease-in infinite backwards, 5s position linear infinite backwards;
  -ms-animation: 1s bang ease-out infinite backwards,
    1s gravity ease-in infinite backwards, 5s position linear infinite backwards;
  animation: 1s bang ease-out infinite backwards,
    1s gravity ease-in infinite backwards, 5s position linear infinite backwards;
}

@keyframes bang {
  100% {
    box-shadow: 120px -188.6666666667px #00fff2, 21px -379.6666666667px #002fff,
      234px -267.6666666667px #6600ff, 190px -349.6666666667px #95ff00,
      -243px -224.6666666667px #00d5ff, -219px -51.6666666667px #00ffcc,
      29px -18.6666666667px #ff1a00, 38px -231.6666666667px #ff00c4,
      231px -241.6666666667px #9500ff, 36px 5.3333333333px #00ff8c,
      -43px 41.3333333333px #0d00ff, -70px -49.6666666667px #ff0037,
      -186px -364.6666666667px #3c00ff, 4px -66.6666666667px #0048ff,
      -151px -139.6666666667px #a200ff, 212px -338.6666666667px #6600ff,
      114px -71.6666666667px #00ff73, 189px -334.6666666667px #ff0004,
      19px -313.6666666667px #00ff09, -237px -254.6666666667px #ff0037,
      -188px -96.6666666667px #001aff, 91px -12.6666666667px #00d5ff,
      238px -230.6666666667px #9dff00, -7px -280.6666666667px #ffaa00,
      182px -378.6666666667px #009dff, 135px -90.6666666667px #00ff26,
      -214px -56.6666666667px #4400ff, -207px -316.6666666667px #1100ff,
      91px 26.3333333333px #e600ff, 52px -87.6666666667px #00ff9d,
      -21px -289.6666666667px #04ff00, -99px -25.6666666667px #ff0033,
      -124px -399.6666666667px #ff004d, 96px -220.6666666667px #bbff00,
      250px -71.6666666667px #b300ff, -53px -147.6666666667px #ff0040,
      -216px -51.6666666667px #ff2f00, 19px 70.3333333333px #80ff00,
      -14px 5.3333333333px #95ff00, 107px -107.6666666667px #0062ff,
      115px -241.6666666667px #00ff8c, 210px 60.3333333333px #00ff33,
      86px -268.6666666667px #40ff00, -18px -18.6666666667px #6a00ff,
      -31px 28.3333333333px #00c8ff, -194px -100.6666666667px #0015ff,
      8px -10.6666666667px #005eff, 164px 65.3333333333px #ff001a,
      -157px 10.3333333333px #a2ff00, -12px -400.6666666667px #0048ff,
      -124px -181.6666666667px #00ffa2;
  }
}

@keyframes gravity {
  100% {
    transform: translateY(200px);
    -moz-transform: translateY(200px);
    -webkit-transform: translateY(200px);
    -o-transform: translateY(200px);
    -ms-transform: translateY(200px);
    opacity: 0;
  }
}

@keyframes position {
  0%,
  19.9% {
    margin-top: 20%;
    margin-left: 40%;
  }
  20%,
  39.9% {
    margin-top: 30%;
    margin-left: 30%;
  }
  40%,
  59.9% {
    margin-top: 20%;
    margin-left: 70%;
  }
  60%,
  79.9% {
    margin-top: 30%;
    margin-left: 20%;
  }
  80%,
  99.9% {
    margin-top: 20%;
    margin-left: 80%;
  }
}