/* Cube Container */
.cube-container {
    --cube-size: 200px;
    /* Default */
    width: var(--cube-size);
    height: var(--cube-size);
    perspective: 1000px;
}

.cube {
    width: 100%;
    height: 100%;
    position: relative;
    transform-style: preserve-3d;
    animation: rotateCube 10s infinite linear;
}

/* Cube Faces */
.cube-face {
    position: absolute;
    width: var(--cube-size);
    height: var(--cube-size);
    border: 2px solid #fff;
    background: rgba(0, 0, 0, 0.8);
    box-shadow: 0 0 15px #0ff, inset 0 0 20px #0ff;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 20px;
    color: #0ff;
    text-shadow: 0 0 5px #0ff;
    opacity: 0.9;
}

/* Positioning Faces using Calc */
.face-front {
    transform: rotateY(0deg) translateZ(calc(var(--cube-size) / 2));
}

.face-back {
    transform: rotateY(180deg) translateZ(calc(var(--cube-size) / 2));
}

.face-right {
    transform: rotateY(90deg) translateZ(calc(var(--cube-size) / 2));
}

.face-left {
    transform: rotateY(-90deg) translateZ(calc(var(--cube-size) / 2));
}

.face-top {
    transform: rotateX(90deg) translateZ(calc(var(--cube-size) / 2));
}

.face-bottom {
    transform: rotateX(-90deg) translateZ(calc(var(--cube-size) / 2));
}

/* Animation */
@keyframes rotateCube {
    from {
        transform: rotateX(0deg) rotateY(0deg);
    }

    to {
        transform: rotateX(360deg) rotateY(360deg);
    }
}