:root {
    --neon-blue: rgba(0, 232, 255, 0.3);
    --neon-purple: rgba(136, 0, 255, 0.3);
    --neon-pink: rgba(255, 0, 128, 0.3);

    font-family: 'Tetris', sans-serif;
}

body {
    min-height: 100dvh;
    display: grid;

    background-size: 20px 20px;
    background-color: black;
    color: white;
    z-index: -20;
    font-size: 1rem;
    animation: pulse-grid 3s infinite alternate ease-in-out;
    margin: 0;
}

.scene-3d {
    perspective: 100vmax !important;
    perspective-origin: top !important;
}

.border {
    --base-color: hsl(34, 100%, 15%);
    --base-transparency: 0%;
    --border-width: 2px;

    & .top {
        background: linear-gradient(
                to top,
                color-mix(in srgb, var(--base-color) 92%, black),
                color-mix(in srgb, var(--base-color) 88%, white)
        );
    }

    & .left {
        background: linear-gradient(
                to left,
                color-mix(in srgb, var(--base-color) 92%, black),
                color-mix(in srgb, var(--base-color) 88%, white)
        );
    }

    & .right {
        background: linear-gradient(
                to right,
                color-mix(in srgb, var(--base-color) 92%, black),
                color-mix(in srgb, var(--base-color) 88%, white)
        );
    }
}

.tetromino {
    --base-transparency: 0%;

    & .top {
        background: linear-gradient(
                to top,
                color-mix(in srgb, var(--base-color) 90%, black),
                color-mix(in srgb, var(--base-color) 70%, white)
        );
    }

    & .left {
        background: linear-gradient(
                to left,
                color-mix(in srgb, var(--base-color) 90%, black),
                color-mix(in srgb, var(--base-color) 70%, white)
        );
    }

    & .right {
        background: linear-gradient(
                to right,
                color-mix(in srgb, var(--base-color) 90%, black),
                color-mix(in srgb, var(--base-color) 70%, white)
        );
    }
}

.ghost-piece {
    --base-transparency: 70%;
    --border-width: 0;
}

.score {
    --base-color: transparent;
    --border-width: 0;

    font-size: 6cqw;
    color: #00cccc;
    text-shadow: 5px 5px 0 #0000aa;
    letter-spacing: 2px;
}

.game-over {
    --base-color: #00cccc;
    --base-transparency: 0%;
    --border-width: 3px;

    & .top, .left, .right {
        --base-color: red;
    }

    .blur {
        --base-color: black;
        --base-transparency: 50%;
    }

    .new-game-button {
        font-size: 6cqw;
        font-weight: bold;
        color: black;
    }

    .new-game-button:hover {
        cursor: pointer;
        scale: 1.2;
    }

    .new-game-button:active {
        scale: 1;
    }
}


@keyframes pulse-grid {
    0% {
        background-image: radial-gradient(var(--neon-blue) 1px, transparent 1px);
    }
    50% {
        background-image: radial-gradient(var(--neon-purple) 1px, transparent 1px);
    }
    100% {
        background-image: radial-gradient(var(--neon-pink) 1px, transparent 1px);
    }
}