:host {
  z-index: 10000;
  opacity: .8;
  align-items: center;
  width: 100%;
  height: 100%;
  display: flex;
  position: fixed;
  top: 0;
  left: 0;
  overflow: hidden;
}

.box {
  width: 345px;
  height: 345px;
  margin: 0 auto;
  position: relative;
}

.box p {
  float: right;
  color: #999;
  margin: 95px 0 0;
  font: 1.25em / 1em sans-serif;
}

.box > span {
  animation: 2s ease-in-out infinite jspinner;
}

.box .red {
  animation-delay: -1.5s;
}

.box .blue {
  animation-delay: -1s;
}

.box .green {
  animation-delay: -.5s;
}

.yellow {
  content: "";
  background: #f9a541;
  border-radius: 90px;
  width: 90px;
  height: 90px;
  position: absolute;
  top: 0;
  left: 0;
}

.yellow:before, .yellow:after {
  box-sizing: content-box;
  content: "";
  background: none;
  border: 50px solid #f9a541;
  width: 50px;
  position: absolute;
  top: 0;
  left: 0;
}

.yellow:before {
  border-width: 50px 50px 0;
  border-radius: 75px 75px 0 0;
  height: 35px;
  margin: 60px 0 0 -30px;
}

.yellow:after {
  border-width: 0 0 0 50px;
  height: 105px;
  margin: 140px 0 0 -30px;
}

.red {
  content: "";
  background: #f44321;
  border-radius: 90px;
  width: 90px;
  height: 90px;
  position: absolute;
  top: 0;
  left: 0;
}

.red:before, .red:after {
  box-sizing: content-box;
  content: "";
  background: none;
  border: 50px solid #f44321;
  width: 50px;
  position: absolute;
  top: 0;
  left: 0;
}

.red:before {
  border-width: 50px 50px 0;
  border-radius: 75px 75px 0 0;
  height: 35px;
  margin: 60px 0 0 -30px;
}

.red:after {
  border-width: 0 0 0 50px;
  height: 105px;
  margin: 140px 0 0 -30px;
}

.blue {
  content: "";
  background: #5091cd;
  border-radius: 90px;
  width: 90px;
  height: 90px;
  position: absolute;
  top: 0;
  left: 0;
}

.blue:before, .blue:after {
  box-sizing: content-box;
  content: "";
  background: none;
  border: 50px solid #5091cd;
  width: 50px;
  position: absolute;
  top: 0;
  left: 0;
}

.blue:before {
  border-width: 50px 50px 0;
  border-radius: 75px 75px 0 0;
  height: 35px;
  margin: 60px 0 0 -30px;
}

.blue:after {
  border-width: 0 0 0 50px;
  height: 105px;
  margin: 140px 0 0 -30px;
}

.green {
  content: "";
  background: #7ac143;
  border-radius: 90px;
  width: 90px;
  height: 90px;
  position: absolute;
  top: 0;
  left: 0;
}

.green:before, .green:after {
  box-sizing: content-box;
  content: "";
  background: none;
  border: 50px solid #7ac143;
  width: 50px;
  position: absolute;
  top: 0;
  left: 0;
}

.green:before {
  border-width: 50px 50px 0;
  border-radius: 75px 75px 0 0;
  height: 35px;
  margin: 60px 0 0 -30px;
}

.green:after {
  border-width: 0 0 0 50px;
  height: 105px;
  margin: 140px 0 0 -30px;
}

.yellow {
  margin: 0 0 0 255px;
  transform: rotate(45deg);
}

.red {
  margin: 255px 0 0 255px;
  transform: rotate(135deg);
}

.blue {
  margin: 255px 0 0;
  transform: rotate(225deg);
}

.green {
  transform: rotate(315deg);
}

@keyframes jspinner {
  0%, 40%, 100% {
    opacity: .3;
  }

  20% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .box > span {
    animation: none;
  }
}
