:root {
  --base-size: 200px;
  --base-height: 173px;
}

*, *::before, *::after {
  padding: 0;
  margin: 0 auto;
  box-sizing: border-box;
}

body {
  background-color: #7a7b89;
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  perspective: 600px;
  overflow: hidden;
}

.shadow {
  position: absolute;
  width: 100%;
  height: 200%;
  background-image: radial-gradient(#000, transparent 60%);
  transform: rotateX(90deg) translateZ(-100px);
}

.icosahedron {
  position: relative;
  width: var(--base-size);
  height: 169px;
  transform-style: preserve-3d;
  animation: rotate 20s infinite linear;
}
@keyframes rotate {
  from {
    transform: rotateX(0deg) rotateY(360deg) rotateZ(360deg);
  }
  to {
    transform: rotateX(360deg) rotateY(0deg) rotateZ(-360deg);
  }
}

.triangle {
  width: var(--base-size);
  height: var(--base-height);
  position: absolute;
  opacity: 0.8;
  clip-path: polygon(0 0, 50% 100%, 100% 0);
  transform-origin: top;
  background-color: #23205fa8;
  --d: 138px;
  --d: 138px;
  --d: 138px;
  --d: 138px;
  --d: 138px;
}
.triangle:nth-child(1) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(2) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(3) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(4) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(5) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(6) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(7) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(8) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(9) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(10) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(11) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(12) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(13) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(14) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(15) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(16) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(17) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(18) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(19) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(20) {
  background-image: radial-gradient(white, white 20px, transparent 40px), radial-gradient(white, white 10px, transparent 30px), radial-gradient(white, white 10px, transparent 40px), radial-gradient(white, rgba(255, 255, 255, 0.3) 2px, transparent 30px);
  background-size: 550px 550px, 50px 50px, 250px 250px, 150px 150px;
  background-position: 0 0, 70px 100px, 60px 70px, 70px 100px;
  box-shadow: -20px -20px 100px 0 black inset;
}
.triangle:nth-child(1) {
  transform: rotateY(0.2turn) translateZ(var(--d)) rotateX(-127deg);
}
.triangle:nth-child(6) {
  transform: rotateY(0.2turn) translateZ(var(--d)) rotateX(11deg);
}
.triangle:nth-child(11) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.2turn) translateZ(calc(var(--d) * -1)) rotateX(191deg);
}
.triangle:nth-child(16) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.2turn) translateZ(calc(var(--d) * -1)) rotateX(53deg);
}
.triangle:nth-child(2) {
  transform: rotateY(0.4turn) translateZ(var(--d)) rotateX(-127deg);
}
.triangle:nth-child(7) {
  transform: rotateY(0.4turn) translateZ(var(--d)) rotateX(11deg);
}
.triangle:nth-child(12) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.4turn) translateZ(calc(var(--d) * -1)) rotateX(191deg);
}
.triangle:nth-child(17) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.4turn) translateZ(calc(var(--d) * -1)) rotateX(53deg);
}
.triangle:nth-child(3) {
  transform: rotateY(0.6turn) translateZ(var(--d)) rotateX(-127deg);
}
.triangle:nth-child(8) {
  transform: rotateY(0.6turn) translateZ(var(--d)) rotateX(11deg);
}
.triangle:nth-child(13) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.6turn) translateZ(calc(var(--d) * -1)) rotateX(191deg);
}
.triangle:nth-child(18) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.6turn) translateZ(calc(var(--d) * -1)) rotateX(53deg);
}
.triangle:nth-child(4) {
  transform: rotateY(0.8turn) translateZ(var(--d)) rotateX(-127deg);
}
.triangle:nth-child(9) {
  transform: rotateY(0.8turn) translateZ(var(--d)) rotateX(11deg);
}
.triangle:nth-child(14) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.8turn) translateZ(calc(var(--d) * -1)) rotateX(191deg);
}
.triangle:nth-child(19) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(0.8turn) translateZ(calc(var(--d) * -1)) rotateX(53deg);
}
.triangle:nth-child(5) {
  transform: rotateY(1turn) translateZ(var(--d)) rotateX(-127deg);
}
.triangle:nth-child(10) {
  transform: rotateY(1turn) translateZ(var(--d)) rotateX(11deg);
}
.triangle:nth-child(15) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(1turn) translateZ(calc(var(--d) * -1)) rotateX(191deg);
}
.triangle:nth-child(20) {
  bottom: calc(var(--base-height) * -1);
  transform: rotateY(1turn) translateZ(calc(var(--d) * -1)) rotateX(53deg);
}