// SIMULADOR LAUNCHER β€” carga HTML en iframe, gestiona lΓ­mite de intentos y guarda resultados window.SimuladorLauncher = function SimuladorLauncher({ navigate, store, pruebaId, modo }) { const PRUEBAS = store.pruebas || window.SD_SEED.PRUEBAS; const prueba = PRUEBAS.find(p => p.id === pruebaId); const isCompleto = modo === 'completo'; // Completo siempre requiere sesiΓ³n if (!store.session && isCompleto) { navigate('/login'); return null; } if (!prueba) { return (

Prueba no encontrada

); } if (isCompleto && !store.hasPremium(pruebaId)) { return (
{prueba.icono || 'πŸ”’'}

Simulador completo β€” acceso premium

Desbloquea {prueba.nombre} con un pago ΓΊnico de{' '} {window.formatPrice(prueba.precio || prueba.precio_mxn)}.

); } // Sin sesiΓ³n β†’ modo diagnΓ³stico anΓ³nimo (solo muestra) if (!store.session) { return ; } return ; }; // Script de detecciΓ³n de fin de examen para anΓ³nimos (inyectado en blob) // Solo notifica al parent para guardar resultado en localStorage β€” sin overlay ni timer function buildAnonDetectScript(pruebaId) { return `