/* Basic styles for snake module */
.snake-container {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.snake-controls {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.snake-grid {
    width: 100%;
    aspect-ratio: 16 / 12;
    background: #86b317;
    border-radius: 6px;
    overflow: hidden;
}

.snake-grid .grid-cell {

    box-sizing: border-box;
    position: relative;
}


.snake-grid .grid-cell.food::before {
  content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: 50%;
    filter: blur(10px);
    opacity: 0.3;
    transform: scale(0.75);
    background: black;
    animation: food-bump 2.4s ease-in-out infinite;
}

.snake-grid .grid-cell.food::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    filter: drop-shadow(2px 4px 6px rgba(80, 135, 30, 0.1));
}

@keyframes food-bump {
    0%, 100% {
        transform: scale(0.75);
        opacity: 0.28;
    }
    50% {
        transform: scale(0.82);
        opacity: 0.38;
    }
}



/* Checkerboard background colors for empty cells */
.snake-grid .grid-cell.checker-light {
    /* transparent so the grid container background shows through */
    background-color: transparent;
}

.snake-grid .grid-cell.checker-dark {
    /* subtle dark overlay to form the checker pattern */
    background-color: rgba(80, 135, 30, 0.1);
}

.snake-head {
    position: relative;
    /* uniform head color using linear-gradient with identical stops */
    background: linear-gradient(180deg, #79cf77 0%, #79cf77 100%);
}

.snake-head::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url('./assets/snake-head.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    transform-origin: center;
}

.snake-head.up {
    border-radius: 22px 22px 0 0;
}

.snake-head.down {
    border-radius: 0 0 22px 22px;
}

.snake-head.left {
    border-radius: 22px 0 0 22px;
}

.snake-head.right {
    border-radius: 0 22px 22px 0;
}


.snake-head.up::after {
    transform: scale(1.3) rotate(-90deg);
}

.snake-head.down::after {
    transform: scale(1.3) rotate(90deg);
}

.snake-head.left::after {
    transform: scale(1.3) rotate(180deg);
}

.snake-head.right::after {
    transform: scale(1.3) rotate(0deg);
}

.snake-tail {
    /* uniform tail color using linear-gradient with identical stops */
    background: linear-gradient(180deg, #79cf77 0%, #79cf77 100%);
    position: relative;
}

.snake-tail.up {
    border-radius: 5rem 5rem 0 0;
}

.snake-tail.down {
    border-radius: 0 0 5rem 5rem;
}

.snake-tail.left {
    border-radius: 5rem 0 0 5rem;
}

.snake-tail.right {
    border-radius: 0 5rem 5rem 0;
}

.snake-body {
    /* uniform body color using linear-gradient with identical stops */
    background: linear-gradient(180deg, #79cf77 0%, #79cf77 100%);
}

.food {
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

.fruit-apple::after {
    background-image: url('./assets/apple.svg');
}

.fruit-lemon::after {
    background-image: url('./assets/lemon.svg');
}

.fruit-orange::after {
    background-image: url('./assets/orange.svg');
}

.fruit-pear::after {
    background-image: url('./assets/pear.svg');
}

.fruit-kiwi::after {
    background-image: url('./assets/kiwi.svg');
}

.fruit-grape::after {
    background-image: url('./assets/grape.svg');
}

.score-box {
    font-weight: 600;
}

/* Touch controls */
.snake-touch-controls {
    display: flex;
    gap: 8px;
    justify-content: center;
    align-items: center;
    padding: 8px 0;
}

.snake-touch-controls .snake-ctrl {
    width: 48px;
    height: 48px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.06);
    touch-action: manipulation;
}

.snake-touch-controls .snake-ctrl:active {
    background: rgba(255, 255, 255, 0.12);
}

@media (max-width: 640px) {
    .snake-grid {
        aspect-ratio: auto;
        height: min(60vw, 360px);
    }

    .snake-touch-controls {
        gap: 6px;
    }

    .snake-touch-controls .snake-ctrl {
        width: 44px;
        height: 44px;
    }
}
