* {
  box-sizing: border-box;
  margin: 0;
}


.rainbow-container {
  z-index: 1;
  transform: rotate(0deg) translateZ(0);
  transform-origin: center center;
  width: 1em;
  height: 1em;
  border: 1px solid rgba(255, 255, 255, 0.4);
  -webkit-animation: rainbow 3s infinite linear;
  border-radius: 0.5em;
  box-shadow: 0 0 0.3em 0.05em #2c116e, inset 0.03em 0 0.1em 0.02em #de66e4;
  transform-style: preserve-3d;
  perspective: 1em;
}

@keyframes rainbow {
  0% {
    transform: rotate(0deg) translateZ(0);
    box-shadow: 0 0 0.3em 0.05em #2c116e, inset 0.03em 0 0.1em 0.02em #de66e4;
  }
  25% {
    transform: rotate(90deg) translateZ(0);
    box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #34ceaa;
  }
  50% {
    transform: rotate(180deg) translateZ(0);
    box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #19b3f5;
  }
  75% {
    transform: rotate(270deg) translateZ(0);
    box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #3d52ac;
  }
  100% {
    transform: rotate(360deg) translateZ(0);
    box-shadow: 0 0 0.3em 0.05em #28126a, inset 0.03em 0 0.1em 0.02em #de66e4;
  }
}
.rainbow-container {
  position: relative;
}
.rainbow-container > div {
  position: absolute;
  top: 0.1em;
  left: 0.1em;
  width: 0.8em;
  height: 0.8em;
  border-radius: 50%;
}

.green {
  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 60%, rgba(115, 213, 186, 0.8) 100%);
  transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0);
  animation: curve-rotate-green 6s infinite linear;
}

.pink {
  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 50%, rgba(215, 115, 229, 0.8) 100%);
  transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0);
  animation: curve-rotate-pink 3s infinite linear;
}

@-webkit-keyframes curve-rotate-green {
  0% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@-moz-keyframes curve-rotate-green {
  0% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@-o-keyframes curve-rotate-green {
  0% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@keyframes curve-rotate-green {
  0% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(0) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@-webkit-keyframes curve-rotate-pink {
  0% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@-moz-keyframes curve-rotate-pink {
  0% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@-o-keyframes curve-rotate-pink {
  0% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
@keyframes curve-rotate-pink {
  0% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 0deg);
  }
  50% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 180deg);
  }
  100% {
    transform: rotateY(180deg) skew(14deg) rotate3d(1.1, 1, 0.9, 360deg);
  }
}
.footer {
  position: fixed;
  bottom: 1em;
  right: 1em;
  font-size: 12px;
  font-style: italic;
  color: white;
}
.footer a {
  color: white;
}