// --- DISTRIBUCIÓN REGIONAL ---
function distribuirVotosRegionales() {
    const totalVotosGlobal = Object.values(partidos).reduce((sum, p) => sum + p.votos, 0);
    if (totalVotosGlobal === 0) return;

    for (let regionId in regiones) {
        // Saltar regiones vendidas a otros países
        if (gameState.regionesVendidas && gameState.regionesVendidas[regionId]) continue;

        const region = regiones[regionId];
        const previousController = region.controlador;
        region.votosPartidos = {};

        let maxVotos = 0;
        let controlador = null;

        for (let partidoId in partidos) {
            const partido = partidos[partidoId];
            // Base votes proportional to total votes
            let votosRegion = (partido.votos / totalVotosGlobal) * region.poblacion;

            // Apply regional bonus
            const bonus = partido.regionBonus[regionId] || 1.0;
            votosRegion *= bonus;

            region.votosPartidos[partidoId] = Math.floor(votosRegion);

            if (votosRegion > maxVotos) {
                maxVotos = votosRegion;
                controlador = partidoId;
            }
        }

        region.controlador = controlador;

        // Tracking de regiones perdidas para logro "Millas Presidenciales"
        if (previousController === partidoElegido && controlador !== partidoElegido) {
            gameState.regionesPerdidas++;
        }
    }
}

// --- ACTUALIZAR MAPA ---
function updateMap() {
    for (let regionId in regiones) {
        const el = document.getElementById(regionId);
        if (el) {
            // Colorear regiones vendidas con el color del país comprador
            if (gameState.regionesVendidas && gameState.regionesVendidas[regionId]) {
                const ventaData = typeof ventaRegionesData !== 'undefined' ? ventaRegionesData[regionId] : null;
                if (ventaData) {
                    el.style.fill = ventaData.color;
                    el.classList.add('region-vendida');
                }
                continue;
            }

            // Eliminar clase de región vendida si no lo está
            el.classList.remove('region-vendida');

            const controlador = regiones[regionId].controlador;
            if (controlador) {
                el.style.fill = partidos[controlador].color;
            } else {
                el.style.fill = '#888888';
            }
        }
    }
}

// --- VENTA DE REGIONES A OTROS PAÍSES ---
function venderRegionAPais(regionId) {
    // Verificar que hay datos de venta para esta región
    if (typeof ventaRegionesData === 'undefined') return;
    const data = ventaRegionesData[regionId];
    if (!data) return;

    // Verificar que no esté ya vendida
    if (gameState.regionesVendidas[regionId]) return;

    // Registrar la venta
    gameState.regionesVendidas[regionId] = data.comprador.toLowerCase();

    // Dar votos instantáneos
    partidos[partidoElegido].votos += data.votosInstantaneos;
    gameState.totalVotos += data.votosInstantaneos;

    // Reducir déficit
    gameState.deficit *= (1 - data.reduccionDeficit);

    // Limpiar control de la región
    regiones[regionId].controlador = null;
    regiones[regionId].votosPartidos = {};

    // Actualizar UI
    updateMap();
    if (typeof updateDisplay === 'function') updateDisplay();
    if (typeof updateDeficitBar === 'function') updateDeficitBar();
    if (typeof saveGame === 'function') saveGame();

    // Mostrar toast de confirmación
    if (typeof mostrarToastEfecto === 'function') {
        mostrarToastEfecto(`${data.bandera} ${data.textoConfirmacion}`);
    }
}
