body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.75;
}

.container {
    position: relative;
}

.shadow {
    content: '';
    position: absolute;
    margin-top: 50px;
    width: 250px;
    height: 250px;
    left: -25px;
    z-index: -1;
    opacity: 0.75;
    background-color: rgb(112, 90, 68);
    animation: rotateShadow 2s infinite linear;
}

.cube {
    position: relative;
    width: 200px;
    height: 200px;
    transform-style: preserve-3d;
    perspective: 5000;
    animation: rotateCube 10s infinite linear;
}

.face {
    position: absolute;
    width: 200px;
    height: 200px;
    border: 1px solid #000;
    /* background-color: blue; */
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 24px;
    animation: rotateColor 5s infinite linear;
}

.front { transform: translateZ(100px); }
.back { transform: rotateY(180deg) translateZ(100px); }
.right { transform: rotateY(90deg) translateZ(100px); }
.left { transform: rotateY(-90deg) translateZ(100px); }
.top { transform: rotateX(90deg) translateZ(100px); }
.bottom { transform: rotateX(-90deg) translateZ(100px); }

@keyframes rotateCube {
    0%   { transform: rotateX(calc(0deg * 2))   rotateY(0deg)   translateY(0); }
    25%  { transform: rotateX(calc(90deg * 2))  rotateY(90deg)  translateY(100px); }
    50%  { transform: rotateX(calc(180deg * 2)) rotateY(180deg) translateY(0); }
    75%  { transform: rotateX(calc(270deg * 2)) rotateY(270deg) translateY(100px); }
    100% { transform: rotateX(calc(360deg * 2)) rotateY(360deg) translateY(0); }
}

@keyframes rotateColor {
    from { filter: hue-rotate(0deg) saturate(5); }
    /*  invert() blur(100px) contrast(500) brightness(100) */
    to   { filter: hue-rotate(360deg) saturate(5); }
}

@keyframes rotateShadow {
    0% {
        filter: hue-rotate(0deg) blur(50px);
        transform: rotateZ(0deg) rotateX(80deg) rotateY(0deg) scaleX(1);
    }
    50% {
        filter: hue-rotate(180deg) blur(50px);
        transform: rotateZ(0deg) rotateX(80deg) rotateY(0deg) scaleX(1.2);
    }
    100% {
        filter: hue-rotate(0deg) blur(50px);
        transform: rotateZ(0deg) rotateX(80deg) rotateY(0deg) scaleX(1);
    }
}
