body {
    margin: 0;
    display: flex;
    --cubeSize: 10em;
    --deg: 0deg;
    --lastDeg: 0deg;
    background-image: radial-gradient(circle at 50%, #333, #000);
    width: 100%;
    height: 100vh;
}

.cube-wrapper {
    position: absolute;
    left: 50%;
    top: 50%;
    perspective: 700px;
    transform: translate(-50%, -50%);
}

#cube {
    position: relative;
    transform-style: preserve-3d;
    width: 10em;
    height: 10em;
    animation: rotate 15s ease-in-out infinite alternate;
}

@keyframes rotate {
    0% {
        transform: rotate3d(0, 0, 0, 0deg);
    }
    5% {
        transform: rotate3d(1, 1, 0, 45deg);
    }
    10% {
        transform: rotate3d(1, 1, 1, 90deg);
    }
    20% {
        transform: rotate3d(1, 1, 0, -120deg);
    }
    30% {
        transform: rotate3d(0, 1, 1, 200deg);
    }
    40% {
        transform: rotate3d(0, 1, 1, -100deg);
    }
    50% {
        transform: rotate3d(1, 2, 0, 40deg);
    }
    60% {
        transform: rotate3d(0, 1, 1, 300deg);
    }
    70% {
        transform: rotate3d(0, 1, 0, -200deg);
    }
    80% {
        transform: rotate3d(0, 1, 3, 100deg);
    }
    90% {
        transform: rotate3d(1, 1, 1, 90deg);
    }
    100% {
        transform: rotate3d(0, 0, 0, 0deg);
    }
}

.cubeIn {
    position: absolute;
    width: var(--cubeSize);
    height: var(--cubeSize);
    background-color: rgba(0, 255, 255, 0.1);
    box-shadow: 0 0 2em 2em #000 inset;
    animation: cubePulse 10s ease-in-out infinite;
}

@keyframes cubePulse {
    0% {
        background-color: rgba(0, 255, 255, 0.1);
        box-shadow: 0 0 2em 0.2em #022 inset;
    }
    25% {
        background-color: rgba(0, 255, 150, 0.1);
        box-shadow: 0 0 2em 0.2em #021 inset;
    }
    50% {
        background-color: rgba(0, 200, 255, 0.1);
        box-shadow: 0 0 2em 0.2em #012 inset;
    }
    75% {
        background-color: rgba(255, 150, 150, 0.1);
        box-shadow: 0 0 2em 0.2em #211 inset;
    }
    100% {
        background-color: rgba(0, 255, 255, 0.1);
        box-shadow: 0 0 2em 0.2em #022 inset;
    }
}

.left {
    transform: translateX(-50%) rotateY(-90deg);
}
.right {
    transform: translateX(50%) rotateY(90deg);
}
.top {
    transform: translateY(-50%) rotateX(90deg);
}
.bottom {
    transform: translateY(50%) rotateX(-90deg);
}
.back {
    transform: translateZ(calc((var(--cubeSize) / 2) * -1)) rotateX(0deg);
}
.front {
    transform: translateZ(calc(var(--cubeSize) / 2)) rotateX(0deg);
}

.ball {
    position: absolute;
    background: radial-gradient(circle 4em at 0 0, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8)), radial-gradient(circle 1.8em at 0.9em 0.8em, rgba(255, 255, 255, 0.7), rgba(0, 0, 0, 0));
    width: 3em;
    height: 3em;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    left: 50%;
    top: 50%;
}

.boxText {
    position: absolute;
    font-family: sans-serif;
    transform: translate(-50%, -50%);
    left: 50%;
    top: 50%;
    text-align: center;
    color: rgba(0, 0, 0, 0.8);
    font-size: 10px;
}

.boxText::before {
    content: "MINEPLAY";
}