function setActiveView(view) { currentView = view; document.getElementById('setupScreen').classList.toggle('hidden', view !== 'setup'); document.getElementById('gameScreen').classList.toggle('hidden', view !== 'game'); loadHeaderActions(view); } function selectPlayer(playerIdx) { selectedPlayerIndex = playerIdx; // Update nav button active states document.querySelectorAll('.players-nav-btn').forEach(btn => { btn.classList.toggle('active', parseInt(btn.dataset.playerIdx) === playerIdx); }); // Show only selected player card document.querySelectorAll('.player-card').forEach(card => { const isSelected = parseInt(card.dataset.playerIdx) === playerIdx; card.classList.toggle('hidden', !isSelected); card.classList.toggle('selected', isSelected); }); } function openReadmeLink() { window.open(README_URL, '_blank', 'noopener,noreferrer'); } function loadHeaderActions(mode) { const actions = document.getElementById('headerActions'); actions.classList.toggle('game', mode === 'game'); if (mode === 'setup') { actions.innerHTML = ` `; } else if (mode === 'game') { actions.innerHTML = `
`; } } function renderGame() { renderRoundSetup(); renderScoreboard(); renderHistory(); } function renderScoreboard() { const container = document.getElementById('scoreboard'); const sortedPlayers = [...gameState.players] .map((p, idx) => ({...p, originalIndex: idx})) .sort((a, b) => b.score - a.score); container.innerHTML = `