// La Paguita - Ayudas Sociales (equivalente a "edificios")
// Nuevas mecánicas:
//   requisitos: [ayudaId, ...] - ayudas que deben estar activas
//   requiereAccionPrevia: [accionId, ...] - acciones que deben haberse ejecutado al menos una vez
//   probAprobacion: 0-1 - probabilidad de que te concedan la ayuda (default 1.0)
//   limiteAlerta: número - alerta máxima para poder solicitar
//   limiteVps: número - producción máxima para poder solicitar (tope de rentas)
//   cooldownCompra: ticks - espera tras intento (éxito o rechazo)

const AYUDAS = [
    // === FASE 1: Recién Llegado ===
    {
        id: 'comedor_social',
        nombre: 'Comedor Social',
        emoji: '🍽️',
        descripcion: 'Desayuno, comida y cena gratis. ¿Para qué trabajar?',
        fase: 1,
        costePapeles: 0,
        costePaguitas: 80,
        produccion: 2,
        drenaPresupuesto: 0.001,
        maxNivel: 3,
        mejoraPorNivel: 1,
        cooldownCompra: 20
    },
    {
        id: 'centro_acogida',
        nombre: 'Centro de Acogida',
        emoji: '🏢',
        descripcion: 'Techo, comida y WiFi gratis. Hotel 3 estrellas gubernamental.',
        fase: 1,
        costePapeles: 0,
        costePaguitas: 200,
        produccion: 3,
        drenaPresupuesto: 0.002,
        bonusPoblacion: 2,
        maxNivel: 2,
        mejoraPorNivel: 2,
        probAprobacion: 0.85,
        limiteVps: 30,
        cooldownCompra: 30
    },
    {
        id: 'ong_amiga',
        nombre: 'ONG Amiga',
        emoji: '🤝',
        descripcion: 'Te asignan un voluntario progre que te consigue de todo.',
        fase: 1,
        costePapeles: 0,
        costePaguitas: 120,
        produccion: 3,
        drenaPresupuesto: 0.0015,
        bonusPapeles: 0.5,
        bonusPoblacion: 5,
        maxNivel: 3,
        mejoraPorNivel: 1,
        cooldownCompra: 20
    },

    // === FASE 2: Empadronado ===
    {
        id: 'padron_municipal',
        nombre: 'Padrón Municipal',
        emoji: '📋',
        descripcion: 'La llave maestra. Con esto accedes a todo el buffet de ayudas.',
        fase: 2,
        costePapeles: 5,
        costePaguitas: 150,
        produccion: 6,
        drenaPresupuesto: 0.002,
        bonusPapeles: 1,
        bonusPoblacion: 10,
        maxNivel: 1,
        mejoraPorNivel: 0,
        probAprobacion: 0.9,
        cooldownCompra: 50
    },
    {
        id: 'tarjeta_sanitaria',
        nombre: 'Tarjeta Sanitaria',
        emoji: '🏥',
        descripcion: 'Sanidad gratuita universal. Hasta operaciones estéticas si cuela.',
        fase: 2,
        costePapeles: 8,
        costePaguitas: 250,
        produccion: 7,
        drenaPresupuesto: 0.004,
        bonusPoblacion: 8,
        maxNivel: 2,
        mejoraPorNivel: 3,
        requisitos: ['padron_municipal'],
        probAprobacion: 0.85,
        cooldownCompra: 40
    },
    {
        id: 'ayuda_emergencia',
        nombre: 'Ayuda de Emergencia',
        emoji: '🆘',
        descripcion: 'Pago único de emergencia. Pero se puede pedir cada trimestre.',
        fase: 2,
        costePapeles: 5,
        costePaguitas: 180,
        produccion: 8,
        drenaPresupuesto: 0.003,
        bonusPoblacion: 5,
        maxNivel: 5,
        mejoraPorNivel: 3,
        requisitos: ['padron_municipal'],
        probAprobacion: 0.8,
        limiteVps: 50,
        limiteAlerta: 80,
        cooldownCompra: 50
    },

    // === FASE 3: Arraigo Social ===
    {
        id: 'imv',
        nombre: 'Ingreso Mínimo Vital',
        emoji: '💸',
        descripcion: 'El IMV: 500€/mes por respirar. El sueño del buen vivir.',
        fase: 3,
        costePapeles: 15,
        costePaguitas: 600,
        produccion: 18,
        drenaPresupuesto: 0.008,
        bonusPoblacion: 50,
        maxNivel: 3,
        mejoraPorNivel: 7,
        requisitos: ['padron_municipal', 'tarjeta_sanitaria'],
        probAprobacion: 0.65,
        limiteVps: 80,
        limiteAlerta: 70,
        cooldownCompra: 80
    },
    {
        id: 'ayuda_alquiler',
        nombre: 'Ayuda al Alquiler',
        emoji: '🏠',
        descripcion: 'El Estado te paga el piso. El casero encantado.',
        fase: 3,
        costePapeles: 12,
        costePaguitas: 450,
        produccion: 14,
        drenaPresupuesto: 0.006,
        bonusPoblacion: 30,
        maxNivel: 3,
        mejoraPorNivel: 5,
        requisitos: ['padron_municipal'],
        probAprobacion: 0.7,
        limiteVps: 100,
        limiteAlerta: 75,
        cooldownCompra: 60
    },
    {
        id: 'trabajo_negro',
        nombre: 'Trabajo en Negro',
        emoji: '🔨',
        descripcion: 'Cobrar en B + ayudas = el combo perfecto.',
        fase: 3,
        costePapeles: 0,
        costePaguitas: 200,
        produccion: 13,
        drenaPresupuesto: 0,
        bonusPoblacion: 20,
        maxNivel: 5,
        mejoraPorNivel: 4,
        subeAlerta: 5,
        cooldownCompra: 30
    },

    // === FASE 4: Regularizado ===
    {
        id: 'reagrupacion',
        nombre: 'Reagrupación Familiar',
        emoji: '👨‍👩‍👧‍👦',
        descripcion: 'Trae a toda la familia. Cada uno con sus propias ayudas.',
        fase: 4,
        costePapeles: 25,
        costePaguitas: 1500,
        produccion: 45,
        drenaPresupuesto: 0.015,
        bonusPoblacion: 400,
        maxNivel: 5,
        mejoraPorNivel: 15,
        requisitos: ['imv'],
        probAprobacion: 0.55,
        limiteAlerta: 60,
        cooldownCompra: 100
    },
    {
        id: 'prestacion_hijo',
        nombre: 'Prestación por Hijo',
        emoji: '👶',
        descripcion: '100€ por hijo al mes. Con 8 hijos ya es un sueldo.',
        fase: 4,
        costePapeles: 18,
        costePaguitas: 1000,
        produccion: 35,
        drenaPresupuesto: 0.01,
        bonusPoblacion: 250,
        maxNivel: 8,
        mejoraPorNivel: 10,
        requisitos: ['reagrupacion'],
        probAprobacion: 0.6,
        limiteAlerta: 65,
        cooldownCompra: 80
    },
    {
        id: 'bono_social',
        nombre: 'Bono Social Eléctrico',
        emoji: '⚡',
        descripcion: 'Luz gratis. Total, pagan los españoles.',
        fase: 4,
        costePapeles: 10,
        costePaguitas: 500,
        produccion: 15,
        drenaPresupuesto: 0.003,
        bonusPoblacion: 50,
        maxNivel: 3,
        mejoraPorNivel: 5,
        requisitos: ['padron_municipal', 'tarjeta_sanitaria'],
        probAprobacion: 0.7,
        limiteVps: 120,
        cooldownCompra: 60
    },

    // === FASE 5: El Gran Reemplazo ===
    {
        id: 'cadena_migratoria',
        nombre: 'Cadena Migratoria',
        emoji: '🔗',
        descripcion: 'Cada familiar trae a más familiares. Efecto bola de nieve.',
        fase: 5,
        costePapeles: 35,
        costePaguitas: 4000,
        produccion: 70,
        drenaPresupuesto: 0.025,
        bonusPoblacion: 2000,
        maxNivel: 10,
        mejoraPorNivel: 20,
        requisitos: ['reagrupacion'],
        probAprobacion: 0.45,
        limiteAlerta: 55,
        cooldownCompra: 120
    },
    {
        id: 'asociacion_cultural',
        nombre: 'Asociación Cultural',
        emoji: '🕌',
        descripcion: 'Subvencionada con dinero público. Multiplica todas las ayudas.',
        fase: 5,
        costePapeles: 25,
        costePaguitas: 3000,
        produccion: 50,
        drenaPresupuesto: 0.02,
        bonusPoblacion: 1000,
        multiplicador: 1.5,
        maxNivel: 3,
        mejoraPorNivel: 25,
        requisitos: ['padron_municipal'],
        probAprobacion: 0.5,
        limiteAlerta: 60,
        cooldownCompra: 100
    },
    {
        id: 'voto_cautivo',
        nombre: 'Voto Cautivo',
        emoji: '🗳️',
        descripcion: 'Nacionalidad + voto = políticos a tu servicio. Más ayudas para todos.',
        fase: 5,
        costePapeles: 40,
        costePaguitas: 6000,
        produccion: 100,
        drenaPresupuesto: 0.03,
        bonusPoblacion: 5000,
        maxNivel: 5,
        mejoraPorNivel: 35,
        requisitos: ['cadena_migratoria'],
        probAprobacion: 0.4,
        limiteAlerta: 50,
        cooldownCompra: 150
    },
    // =============================================
    // AYUDAS EXCLUSIVAS DE NATIVOS
    // =============================================

    // --- MARI CARMEN ---
    {
        id: 'pension_viogen',
        nombre: 'Pensión VioGen',
        emoji: '💜',
        descripcion: 'Pensión mensual por víctima de violencia de género. 426€/mes sin fecha de caducidad.',
        fase: 3,
        costePapeles: 8,
        costePaguitas: 300,
        produccion: 22,
        drenaPresupuesto: 0.006,
        maxNivel: 3,
        mejoraPorNivel: 8,
        requierePersonaje: ['maricarmen'],
        probAprobacion: 0.75,
        cooldownCompra: 60
    },
    {
        id: 'renta_activa_insercion',
        nombre: 'RAI - Renta Activa',
        emoji: '🆘',
        descripcion: 'Renta Activa de Inserción para víctimas. 480€/mes. Renovable indefinidamente si lloras bien.',
        fase: 3,
        costePapeles: 6,
        costePaguitas: 350,
        produccion: 18,
        drenaPresupuesto: 0.005,
        maxNivel: 2,
        mejoraPorNivel: 8,
        requierePersonaje: ['maricarmen'],
        requisitos: ['pension_viogen'],
        probAprobacion: 0.7,
        limiteVps: 90,
        cooldownCompra: 50
    },
    {
        id: 'puesto_igualdad',
        nombre: 'Puesto en Igualdad',
        emoji: '💼',
        descripcion: 'Asesora en concejalía de Igualdad. 2.200€/mes por organizar un taller al trimestre.',
        fase: 4,
        costePapeles: 18,
        costePaguitas: 1200,
        produccion: 40,
        drenaPresupuesto: 0.012,
        maxNivel: 3,
        mejoraPorNivel: 15,
        requierePersonaje: ['maricarmen'],
        requisitos: ['pension_viogen'],
        probAprobacion: 0.55,
        limiteAlerta: 65,
        cooldownCompra: 80
    },
    {
        id: 'chiringuito_feminista',
        nombre: 'Chiringuito Feminista',
        emoji: '🏛️',
        descripcion: 'ONG subvencionada de igualdad. 200.000€/año para "sensibilización". Actividades reales: 0.',
        fase: 5,
        costePapeles: 25,
        costePaguitas: 3500,
        produccion: 65,
        drenaPresupuesto: 0.025,
        multiplicador: 1.4,
        maxNivel: 3,
        mejoraPorNivel: 25,
        requierePersonaje: ['maricarmen'],
        requisitos: ['puesto_igualdad'],
        probAprobacion: 0.45,
        limiteAlerta: 55,
        cooldownCompra: 120
    },

    // --- PACO EL VAGO ---
    {
        id: 'prestacion_desempleo',
        nombre: 'Prestación Desempleo',
        emoji: '🏛️',
        descripcion: 'El paro de toda la vida. 2 años cobrando por no hacer nada. Renovable si sabes jugar.',
        fase: 3,
        costePapeles: 6,
        costePaguitas: 280,
        produccion: 20,
        drenaPresupuesto: 0.005,
        maxNivel: 3,
        mejoraPorNivel: 8,
        requierePersonaje: ['paco'],
        probAprobacion: 0.75,
        limiteVps: 60,
        cooldownCompra: 60
    },
    {
        id: 'subsidio_mayores',
        nombre: 'Subsidio Mayores 52',
        emoji: '👴',
        descripcion: 'Subsidio para mayores de 52 que no encuentran trabajo. Paco tiene 38 pero el DNI dice 53.',
        fase: 4,
        costePapeles: 12,
        costePaguitas: 900,
        produccion: 30,
        drenaPresupuesto: 0.008,
        maxNivel: 2,
        mejoraPorNivel: 12,
        requierePersonaje: ['paco'],
        requisitos: ['prestacion_desempleo'],
        probAprobacion: 0.6,
        limiteVps: 100,
        limiteAlerta: 65,
        cooldownCompra: 80
    },
    {
        id: 'pension_no_contributiva',
        nombre: 'Pensión No Contributiva',
        emoji: '💸',
        descripcion: 'Pensión para quien nunca ha cotizado. Paco califica con nota.',
        fase: 5,
        costePapeles: 20,
        costePaguitas: 2800,
        produccion: 55,
        drenaPresupuesto: 0.018,
        maxNivel: 2,
        mejoraPorNivel: 20,
        requierePersonaje: ['paco'],
        requisitos: ['subsidio_mayores'],
        probAprobacion: 0.45,
        limiteVps: 150,
        limiteAlerta: 55,
        cooldownCompra: 120
    },

    // --- JESÚS HEREDIA ---
    {
        id: 'ayuda_familia_numerosa',
        nombre: 'Familia Numerosa',
        emoji: '👨‍👩‍👧‍👦',
        descripcion: 'Título de familia numerosa especial. 8 hijos = descuentos en todo y ayudas extra.',
        fase: 3,
        costePapeles: 8,
        costePaguitas: 320,
        produccion: 22,
        drenaPresupuesto: 0.006,
        bonusPoblacion: 100,
        maxNivel: 5,
        mejoraPorNivel: 8,
        requierePersonaje: ['heredia'],
        probAprobacion: 0.7,
        cooldownCompra: 50
    },
    {
        id: 'paga_patriarca',
        nombre: 'Paga del Patriarca',
        emoji: '👑',
        descripcion: 'El clan te paga comisión por cada ayuda que consigues para la familia. Sistema piramidal gitano.',
        fase: 4,
        costePapeles: 15,
        costePaguitas: 1100,
        produccion: 38,
        drenaPresupuesto: 0.01,
        bonusPoblacion: 300,
        maxNivel: 5,
        mejoraPorNivel: 12,
        requierePersonaje: ['heredia'],
        requisitos: ['ayuda_familia_numerosa'],
        probAprobacion: 0.6,
        limiteAlerta: 65,
        cooldownCompra: 80
    },
    {
        id: 'chiringuito_flamenco',
        nombre: 'Chiringuito Flamenco',
        emoji: '💃',
        descripcion: 'Asociación cultural flamenca subvencionada. 150.000€/año por 2 actuaciones y una paella.',
        fase: 5,
        costePapeles: 22,
        costePaguitas: 3200,
        produccion: 60,
        drenaPresupuesto: 0.022,
        multiplicador: 1.3,
        bonusPoblacion: 500,
        maxNivel: 3,
        mejoraPorNivel: 22,
        requierePersonaje: ['heredia'],
        requisitos: ['paga_patriarca'],
        probAprobacion: 0.45,
        limiteAlerta: 55,
        cooldownCompra: 120
    },

    // --- KEVIN EL OKUPA ---
    {
        id: 'imv_joven',
        nombre: 'IMV para Joven',
        emoji: '💸',
        descripcion: 'Ingreso Mínimo Vital con bonus por menor de 30. 600€/mes por jugar a la PlayStation.',
        fase: 3,
        costePapeles: 6,
        costePaguitas: 280,
        produccion: 22,
        drenaPresupuesto: 0.006,
        maxNivel: 3,
        mejoraPorNivel: 8,
        requierePersonaje: ['okupa'],
        probAprobacion: 0.7,
        cooldownCompra: 60
    },
    {
        id: 'bono_alquiler_joven',
        nombre: 'Bono Alquiler Joven',
        emoji: '🏠',
        descripcion: '250€/mes para "alquiler". El piso es okupado pero el padrón dice que pagas a una abuela.',
        fase: 4,
        costePapeles: 10,
        costePaguitas: 600,
        produccion: 28,
        drenaPresupuesto: 0.008,
        maxNivel: 2,
        mejoraPorNivel: 12,
        requierePersonaje: ['okupa'],
        requisitos: ['imv_joven'],
        probAprobacion: 0.6,
        limiteAlerta: 70,
        cooldownCompra: 70
    },
    {
        id: 'asociacion_okupa',
        nombre: 'Asociación de Okupas',
        emoji: '✊',
        descripcion: 'Subvención municipal a la "asociación vecinal" que defiende a okupas. Charlas en la facultad.',
        fase: 5,
        costePapeles: 18,
        costePaguitas: 2400,
        produccion: 50,
        drenaPresupuesto: 0.018,
        multiplicador: 1.2,
        maxNivel: 2,
        mejoraPorNivel: 18,
        requierePersonaje: ['okupa'],
        requisitos: ['bono_alquiler_joven'],
        probAprobacion: 0.45,
        limiteAlerta: 60,
        cooldownCompra: 120
    },

    // --- DON BRAULIO EL JUBILADO ---
    {
        id: 'doble_pension',
        nombre: 'Pensión + Viudedad',
        emoji: '👵',
        descripcion: 'Compatibilizar tu jubilación con la viudedad de la difunta. La ley te lo permite.',
        fase: 3,
        costePapeles: 5,
        costePaguitas: 350,
        produccion: 25,
        drenaPresupuesto: 0.007,
        maxNivel: 3,
        mejoraPorNivel: 10,
        requierePersonaje: ['jubilado'],
        probAprobacion: 0.85,
        cooldownCompra: 50
    },
    {
        id: 'dependencia_falsa',
        nombre: 'Ley de Dependencia',
        emoji: '🦽',
        descripcion: 'Grado II de dependencia exagerando un dolor de cadera. La nieta cobra por cuidarte mientras estudia.',
        fase: 4,
        costePapeles: 12,
        costePaguitas: 800,
        produccion: 32,
        drenaPresupuesto: 0.009,
        maxNivel: 3,
        mejoraPorNivel: 13,
        requierePersonaje: ['jubilado'],
        requisitos: ['doble_pension'],
        probAprobacion: 0.6,
        limiteAlerta: 70,
        cooldownCompra: 80
    },
    {
        id: 'imserso_subvencionado',
        nombre: 'Plaza Imserso Vitalicia',
        emoji: '🏖️',
        descripcion: 'Conseguir una plaza preferente del Imserso cada temporada. Cuatro viajes al año subvencionados.',
        fase: 5,
        costePapeles: 18,
        costePaguitas: 2200,
        produccion: 48,
        drenaPresupuesto: 0.016,
        bonusNivelVida: 10,
        maxNivel: 2,
        mejoraPorNivel: 18,
        requierePersonaje: ['jubilado'],
        requisitos: ['dependencia_falsa'],
        probAprobacion: 0.5,
        limiteAlerta: 60,
        cooldownCompra: 110
    },

    // --- VANESSA LA ENCHUFADA ---
    {
        id: 'complemento_productividad',
        nombre: 'Complemento Productividad',
        emoji: '💼',
        descripcion: 'Plus mensual por "objetivos cumplidos". El jefe lo firma sin mirar — es de tu cuerda.',
        fase: 3,
        costePapeles: 7,
        costePaguitas: 380,
        produccion: 26,
        drenaPresupuesto: 0.007,
        maxNivel: 3,
        mejoraPorNivel: 10,
        requierePersonaje: ['enchufada'],
        probAprobacion: 0.8,
        cooldownCompra: 60
    },
    {
        id: 'plus_peligrosidad_oficina',
        nombre: 'Plus de Peligrosidad',
        emoji: '⚠️',
        descripcion: 'Plus de peligrosidad por trabajar en oficina con aire acondicionado. La RPT lo recoge.',
        fase: 4,
        costePapeles: 14,
        costePaguitas: 1000,
        produccion: 38,
        drenaPresupuesto: 0.011,
        maxNivel: 3,
        mejoraPorNivel: 14,
        requierePersonaje: ['enchufada'],
        requisitos: ['complemento_productividad'],
        probAprobacion: 0.55,
        limiteAlerta: 70,
        cooldownCompra: 90
    },
    {
        id: 'liberada_sindical',
        nombre: 'Liberada Sindical',
        emoji: '🎤',
        descripcion: '40h semanales liberada del trabajo "para tareas sindicales". 100% del sueldo, 0% de oficina.',
        fase: 5,
        costePapeles: 22,
        costePaguitas: 3000,
        produccion: 62,
        drenaPresupuesto: 0.022,
        multiplicador: 1.25,
        maxNivel: 3,
        mejoraPorNivel: 22,
        requierePersonaje: ['enchufada'],
        requisitos: ['plus_peligrosidad_oficina'],
        probAprobacion: 0.45,
        limiteAlerta: 55,
        cooldownCompra: 120
    },

    // === ARCO "LA PANCHA" - Ayudas pasivas ligadas al arco ===
    {
        id: 'mesada_shur',
        nombre: 'Mesada del Shur',
        emoji: '💝',
        descripcion: 'Bizum mensual del shur "para la familia". 400€/mes sin justificar. Si te lo recorta, lloras.',
        fase: 1,
        costePapeles: 0,
        costePaguitas: 100,
        produccion: 15,
        drenaPresupuesto: 0,  // Sale del bolsillo del shur, no del presupuesto público
        maxNivel: 3,
        mejoraPorNivel: 8,
        requierePersonaje: PERSONAJES_LATINOS,
        requiereAccionPrevia: ['pescar_shur'],
        probAprobacion: 0.85,
        cooldownCompra: 40
    },
    {
        id: 'pension_alimenticia_latina',
        nombre: 'Pensión Alimenticia',
        emoji: '👶',
        descripcion: 'Pensión por los 3 hijos. Da igual si están en Cali con la abuela: tú la cobras.',
        fase: 4,
        costePapeles: 8,
        costePaguitas: 500,
        produccion: 28,
        drenaPresupuesto: 0.005,
        maxNivel: 3,
        mejoraPorNivel: 10,
        requierePersonaje: PERSONAJES_LATINOS,
        requiereAccionPrevia: ['pedir_divorcio'],
        probAprobacion: 0.7,
        cooldownCompra: 70
    },
    {
        id: 'pension_compensatoria_latina',
        nombre: 'Pensión Compensatoria',
        emoji: '💸',
        descripcion: 'Pensión compensatoria del shur de por vida. Por el "perjuicio económico" de no haberle dejado antes.',
        fase: 4,
        costePapeles: 12,
        costePaguitas: 900,
        produccion: 42,
        drenaPresupuesto: 0.008,
        maxNivel: 3,
        mejoraPorNivel: 14,
        requierePersonaje: PERSONAJES_LATINOS,
        requiereAccionPrevia: ['denuncia_viogen_latina'],
        probAprobacion: 0.6,
        limiteAlerta: 70,
        cooldownCompra: 90
    },
    {
        id: 'piso_juzgado_latina',
        nombre: 'Uso del Piso Familiar',
        emoji: '🏠',
        descripcion: 'El juez te asigna el piso "por interés de los menores". El shur paga la hipoteca y duerme en el coche.',
        fase: 4,
        costePapeles: 15,
        costePaguitas: 1400,
        produccion: 52,
        drenaPresupuesto: 0.01,
        bonusNivelVida: 15,
        maxNivel: 2,
        mejoraPorNivel: 18,
        requierePersonaje: PERSONAJES_LATINOS,
        requiereAccionPrevia: ['quedarse_el_piso'],
        probAprobacion: 0.6,
        limiteAlerta: 65,
        cooldownCompra: 110
    }
];

function getAyudasDisponibles(faseActual) {
    const personajeActual = gameState ? gameState.personajeId : null;
    return AYUDAS.filter(a => {
        if (a.fase > faseActual) return false;
        if (a.requierePersonaje && !a.requierePersonaje.includes(personajeActual)) return false;
        return true;
    });
}

function getAyudaById(id) {
    return AYUDAS.find(a => a.id === id);
}

// Check if prerequisites are met for an ayuda
function checkRequisitosAyuda(ayuda) {
    const faltan = [];
    if (ayuda.requisitos) {
        for (const reqId of ayuda.requisitos) {
            if (!gameState.ayudasActivas[reqId]) faltan.push(reqId);
        }
    }
    if (ayuda.requiereAccionPrevia) {
        const realizadas = gameState.accionesRealizadas || [];
        for (const accId of ayuda.requiereAccionPrevia) {
            if (!realizadas.includes(accId)) faltan.push(accId);
        }
    }
    return { ok: faltan.length === 0, faltan: faltan };
}

// Check all blocking conditions for an ayuda (returns detailed state)
function getEstadoAyuda(ayuda) {
    const nivelActual = gameState.ayudasActivas[ayuda.id] || 0;
    if (nivelActual >= ayuda.maxNivel) return { estado: 'maxed' };

    const numAyudasActivas = Object.keys(gameState.ayudasActivas).length;
    const ayudasRequeridas = ayuda.fase >= 5 ? 8 : ayuda.fase >= 4 ? 5 : ayuda.fase >= 3 ? 3 : 0;
    if (numAyudasActivas < ayudasRequeridas) {
        return { estado: 'bloqueada_cantidad', requeridas: ayudasRequeridas, tienes: numAyudasActivas };
    }

    // Prerequisites
    const reqCheck = checkRequisitosAyuda(ayuda);
    if (!reqCheck.ok) {
        const nombres = reqCheck.faltan.map(id => {
            const a = getAyudaById(id);
            if (a) return a.nombre;
            const acc = (typeof getAccionById === 'function') ? getAccionById(id) : null;
            return acc ? acc.nombre : id;
        });
        return { estado: 'bloqueada_requisitos', faltan: nombres };
    }

    // Cooldown
    if (gameState.cooldownsAyudas && gameState.cooldownsAyudas[ayuda.id] > 0) {
        return { estado: 'cooldown', ticks: gameState.cooldownsAyudas[ayuda.id] };
    }

    // Alert limit
    if (ayuda.limiteAlerta && gameState.alertaMediatica > ayuda.limiteAlerta) {
        return { estado: 'bloqueada_alerta', limite: ayuda.limiteAlerta, actual: Math.floor(gameState.alertaMediatica) };
    }

    // VPS limit (income cap)
    if (ayuda.limiteVps && gameState.vps > ayuda.limiteVps) {
        return { estado: 'bloqueada_vps', limite: ayuda.limiteVps, actual: Math.floor(gameState.vps) };
    }

    // Cost check
    const costePaguitas = Math.ceil(ayuda.costePaguitas * Math.pow(COSTE_SCALING, nivelActual));
    const costePapeles = Math.ceil(ayuda.costePapeles * Math.pow(COSTE_SCALING, nivelActual));
    const canAfford = gameState.paguitas >= costePaguitas && gameState.papeles >= costePapeles;

    if (!canAfford) {
        return { estado: 'sin_recursos', costePaguitas, costePapeles };
    }

    // All clear - can attempt
    const prob = ayuda.probAprobacion || 1.0;
    return { estado: 'disponible', costePaguitas, costePapeles, probAprobacion: prob };
}
