/* Game Board */
.game-board {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin: 0 auto 30px;
    padding: 32px;
    background: var(--theme-bg-glass);
    border-radius: 24px;
    border: 2px solid var(--theme-border-medium);
    max-width: 450px;
    width: 100%;
    position: relative;
    box-shadow: 
        var(--theme-shadow-hard),
        inset 0 1px 0 var(--theme-border-light);
}

.game-board::before {
    content: '';
    position: absolute;
    top: -2px;
    left: -2px;
    right: -2px;
    bottom: -2px;
    background: var(--theme-gradient-game-board);
    border-radius: 22px;
    z-index: -1;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.game-board:hover::before {
    opacity: 0.2;
}

/* Game Cells */
.cell {
    aspect-ratio: 1;
    background: var(--theme-bg-glass-medium);
    border: 2px solid var(--theme-border-strong);
    border-radius: 18px;
    font-size: 3.2rem;
    font-weight: 700;
    color: var(--theme-text-primary);
    cursor: pointer;
    transition: var(--transition-bounce);
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(10px);
}

.cell::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--theme-gradient-cell-shine);
    opacity: 0;
    transition: opacity 0.3s ease;
}

.cell:hover::before {
    opacity: 1;
}

.cell:hover:not(.x):not(.o) {
    transform: translateY(-5px) scale(1.05);
    border-color: var(--theme-accent-blue);
    box-shadow: 
        var(--theme-shadow-card) var(--theme-blue-strong),
        0 0 0 1px var(--theme-blue-medium);
}

.cell:active:not(.x):not(.o) {
    transform: translateY(-2px) scale(1.02);
}

.cell.x {
    color: var(--theme-player-x);
    text-shadow: 0 0 20px var(--theme-text-shadow-red);
    border-color: var(--theme-accent-red);
    animation: cellFillX 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
}

.cell.o {
    color: var(--theme-player-o);
    text-shadow: 0 0 20px var(--theme-text-shadow-blue);
    border-color: var(--theme-accent-blue);
    animation: cellFillO 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
}

@keyframes cellFillX {
    0% { transform: scale(0) rotate(-180deg); opacity: 0; }
    50% { transform: scale(1.2) rotate(-90deg); opacity: 0.8; }
    100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

@keyframes cellFillO {
    0% { transform: scale(0) rotate(180deg); opacity: 0; }
    50% { transform: scale(1.2) rotate(90deg); opacity: 0.8; }
    100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

.cell.winner {
    animation: winnerGlow 1s infinite alternate;
    border-color: var(--theme-accent-green);
    box-shadow: 
        0 0 30px var(--theme-accent-green),
        inset 0 0 30px var(--theme-green-medium);
}

@keyframes winnerGlow {
    0% { 
        transform: scale(1);
        box-shadow: 
            0 0 30px var(--theme-accent-green),
            inset 0 0 30px var(--theme-green-medium);
    }
    100% { 
        transform: scale(1.05);
        box-shadow: 
            0 0 50px var(--theme-accent-green),
            inset 0 0 50px var(--theme-green-stronger);
    }
}

.cell:disabled {
    cursor: not-allowed;
}

.cell:focus-visible {
    outline: 3px solid var(--theme-accent-blue);
    outline-offset: 3px;
}

