Есть код:
class MahjongGame {
    constructor() {
        this.colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF'];
        this.gridSize = 8;
        this.score = 0;
        this.level = 1;
        this.stack = [];
        this.gameField = [];
        this.seconds = 0;
        this.timer = null;
        
        this.initializeElements();
        this.bindEvents();
    }

    initializeElements() {
        this.menuScreen = document.getElementById('menu');
        this.gameScreen = document.getElementById('game');
        this.gameField = document.getElementById('game-field');
        this.stackElement = document.getElementById('stack');
        this.scoreElement = document.getElementById('score');
        this.levelElement = document.getElementById('level');
        this.timerElement = document.getElementById('timer');
    }

    bindEvents() {
        document.getElementById('start-game').addEventListener('click', () => this.startGame());
        document.getElementById('reset-move').addEventListener('click', () => this.resetMove());
    }

    startGame() {
        this.menuScreen.classList.remove('active');
        this.gameScreen.classList.add('active');
        this.initializeGameField();
        this.startTimer();
    }

    // ... existing code ...

    initializeGameField() {
        this.gameField.innerHTML = '';
        this.stack = [];
        this.updateStack();
        
        // Создаем массив всех плиток, убеждаясь что каждого цвета кратно 3
        const totalTiles = Math.floor(this.gridSize * this.gridSize / 3) * 3;
        const tilesPerColor = Math.floor(totalTiles / this.colors.length / 3) * 3;
        let tiles = [];
        
        this.colors.forEach(color => {
            for (let i = 0; i < tilesPerColor; i++) {
                tiles.push(color);
            }
        });
        
        // Перемешиваем массив
        tiles = tiles.sort(() => Math.random() - 0.5);
        
        // Создаем плитки на поле
        tiles.forEach(color => {
            const tile = document.createElement('div');
            tile.className = 'tile';
            tile.style.backgroundColor = color;
            tile.style.position = 'relative'; // Добавляем для фиксированного позиционирования
            tile.addEventListener('click', () => this.handleTileClick(tile));
            this.gameField.appendChild(tile);
        });
    }

    handleTileClick(tile) {
        if (!tile.parentNode) return;
        
        // Сохраняем позицию плитки перед удалением
const tileRect = tile.getBoundingClientRect();
        const stackRect = this.stackElement.getBoundingClientRect();
        
        // Создаем клон для анимации

        // Добавляем в стек
        this.stack.push({
            color: tile.style.backgroundColor,
            element: tile.cloneNode(true)
        });
        
        // Удаляем оригинальную плитку, оставляя пустое место
        tile.style.visibility = 'hidden'; // Скрываем плитку, но сохраняем место
        tile.style.pointerEvents = 'none'; // Отключаем взаимодействие
        
        this.updateStack();
        this.checkMatches();
    }


    updateStack() {
        this.stackElement.innerHTML = '';
        this.stack.forEach(item => {
            this.stackElement.appendChild(item.element);
        });
    }

    checkMatches() {
        const matches = {};
        this.stack.forEach(tile => {
            matches[tile.color] = (matches[tile.color] || 0) + 1;
        });

        for (const [color, count] of Object.entries(matches)) {
            if (count >= 3) {
                this.removeMatches(color);
                this.updateScore(count);
            }
        }

        this.checkWinCondition();
    }

    removeMatches(color) {
        this.stack = this.stack.filter(tile => tile.color !== color);
        this.updateStack();
    }

    updateScore(matchCount) {
        const points = (matchCount - 2) * 10;
        this.score += points;
        this.scoreElement.textContent = this.score;
    }

    checkWinCondition() {
        if (this.gameField.children.length === 0 && this.stack.length === 0) {
            alert(`Уровень ${this.level} пройден! Очки: ${this.score}`);
            this.level++;
            this.levelElement.textContent = this.level;
            this.initializeGameField();
        }
    }

    resetMove() {
        if (this.stack.length === 0) return;
        
        const lastTile = this.stack.pop();
        this.gameField.appendChild(lastTile.element);
        this.updateStack();
    }

    startTimer() {
        if (this.timer) clearInterval(this.timer);
        this.seconds = 0;
        
        this.timer = setInterval(() => {
            this.seconds++;
            const minutes = Math.floor(this.seconds / 60);
            const remainingSeconds = this.seconds % 60;
            this.timerElement.textContent = 
                `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;
        }, 1000);
    }
}

// Инициализация игры
window.addEventListener('load', () => {
    new MahjongGame();
});
При добавлении тайла в стек , тайл не отображается в полный размер и не виден его цвет. Перепиши код так, чтобы тайлы в стеке были неактивны для клика или наводки курсора, но отображались в полный размер и своего цвета