/* GLOBAL */

.pyramid,
.pyramid-outer,
.pyramid-top,
.pyramid-inner {
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  transform-style: preserve-3d;
}

body {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100vh;
  padding: 0;
  margin: 0;
}

/* VIEWPORT */

.viewport {
  width: 500px;
  height: 400px;
  background-color: #e8e8e8;

  -webkit-perspective: 1000px;
  -moz-perspective: 1000px;
  -o-perspective: 1000px;
  -ms-perspective: 1000px;
  perspective: 1000px;

  -webkit-perspective-origin: 50% 110%;
  -moz-perspective-origin: 50% 110%;
  -o-perspective-origin: 50% 110%;
  -ms-perspective-origin: 50% 110%;
  perspective-origin: 50% 110%;
}

/* PYRAMID */

.pyramid {
  width: 100px;
  height: 100px;
  position: absolute;
}

.pyramid-outer {
  -webkit-transform: translate3d(200px, 207px, 0);
}

.pyramid-top {
  -webkit-transform: translate3d(200px, 181px, 0) rotateX(180deg);
}
/* FACES */

.pyramid-base,
.pyramid-face {
  opacity: 0.5;
  position: absolute;
}

.pyramid-base {
  width: 100px;
  height: 100px;
  background-color: #ff0000;

  -webkit-transform: rotateX(90deg) translate3d(0, 0, -23px);
  -moz-transform: rotateX(90deg) translate3d(0, 0, -23px);
  -o-transform: rotateX(90deg) translate3d(0, 0, -23px);
  -ms-transform: rotateX(90deg) translate3d(0, 0, -23px);
  transform: rotateX(90deg) translate3d(0, 0, -23px);
}

.pyramid-face {
  width: 0;
  height: 0;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;

  -webkit-transform-origin: 50% 87%;
  -moz-transform-origin: 50% 87%;
  -o-transform-origin: 50% 87%;
  -ms-transform-origin: 50% 87%;
  transform-origin: 50% 87%;
}

.pyramid-face:nth-child(2) {
  border-bottom: 100px solid #e04545;

  -webkit-transform: rotateX(30deg) translate3d(0, 0, 50px);
  -moz-transform: rotateX(30deg) translate3d(0, 0, 50px);
  -o-transform: rotateX(30deg) translate3d(0, 0, 50px);
  -ms-transform: rotateX(30deg) translate3d(0, 0, 50px);
  transform: rotateX(30deg) translate3d(0, 0, 50px);
}

.pyramid-face:nth-child(3) {
  border-bottom: 100px solid #ccaf5a;

  -webkit-transform: rotateY(90deg) rotateX(-30deg) translate3d(0, 0, -50px);
  -moz-transform: rotateY(90deg) rotateX(-30deg) translate3d(0, 0, -50px);
  -o-transform: rotateY(90deg) rotateX(-30deg) translate3d(0, 0, -50px);
  -ms-transform: rotateY(90deg) rotateX(-30deg) translate3d(0, 0, -50px);
  transform: rotateY(90deg) rotateX(-30deg) translate3d(0, 0, -50px);
}

.pyramid-face:nth-child(4) {
  border-bottom: 100px solid #97c25f;

  -webkit-transform: rotateY(90deg) rotateX(30deg) translate3d(0, 0, 50px);
  -moz-transform: rotateY(90deg) rotateX(30deg) translate3d(0, 0, 50px);
  -o-transform: rotateY(90deg) rotateX(30deg) translate3d(0, 0, 50px);
  -ms-transform: rotateY(90deg) rotateX(30deg) translate3d(0, 0, 50px);
  transform: rotateY(90deg) rotateX(30deg) translate3d(0, 0, 50px);
}

.pyramid-face:nth-child(5) {
  border-bottom: 100px solid #4ccfc8;

  -webkit-transform: rotateX(-30deg) translate3d(0, 0, -50px);
  -moz-transform: rotateX(-30deg) translate3d(0, 0, -50px);
  -o-transform: rotateX(-30deg) translate3d(0, 0, -50px);
  -ms-transform: rotateX(-30deg) translate3d(0, 0, -50px);
  transform: rotateX(-30deg) translate3d(0, 0, -50px);
}

.pyramid {
  -webkit-animation: piramid 6s linear infinite;
  -moz-animation: piramid 6s linear infinite;
  -ms-animation: piramid 6s linear infinite;
  -o-animation: piramid 6s linear infinite;
  animation: piramid 6s linear infinite;
}

@-webkit-keyframes piramid {
  0% {
  }
  100% {
    -webkit-transform: rotateY(360deg);
  }
}

@-moz-keyframes piramid {
  0% {
  }
  100% {
    -moz-transform: rotateY(360deg);
  }
}

@-o-keyframes piramid {
  0% {
  }
  100% {
    -o-transform: rotateY(360deg);
  }
}

@-ms-keyframes piramid {
  0% {
  }
  100% {
    -ms-transform: rotateY(360deg);
  }
}

@keyframes piramid {
  0% {
  }
  100% {
    transform: rotateY(360deg);
  }
}
