(function() { // 1. Interceptar fetch para recetas_con_foto.json y redirigirlo a la biblioteca de medios var originalFetch = window.fetch; window.fetch = function(url, options) { if (typeof url === 'string' && url.indexOf('recetas_con_foto.json') !== -1) { console.log('[Interceptor] Redirigiendo fetch de recetas_con_foto.json a la biblioteca de medios.'); url = 'https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/recetas_con_foto.txt'; } return originalFetch(url, options); }; // Mapeo completo de imágenes estáticas del tema a la biblioteca de medios var imageMappings = { "arepa_pad_thai.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_pad_thai.jpg", "arepa_birria.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_birria.jpg", "arepa_cachopo.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_cachopo.jpg", "arepa_spain_oviedo.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_spain_oviedo.jpg", "arepa_thailand_bangkok.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_thailand_bangkok.jpg", "arepa_mexico_guadalajara.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_mexico_guadalajara.jpg", "chef_andel.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/chef_andel.png", "chef_martita.jpg": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/chef_martita.jpg", "botchef_avatar.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/botchef_avatar.png", "mesa-chefs-hero.jpg": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/mesa-chefs-hero.jpg", "arepa_poutine.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_poutine.jpg", "arepa_bac_kan.png": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_bac_kan.jpg", "arepa_labs_hero_v3.jpg": "https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/arepa_labs_hero_v3.jpg" }; // 2. Corregir imágenes estáticas rotas en el DOM (chefs, mini-cards, hero) y dinámicas del carrusel function fixImages() { var imgs = document.querySelectorAll('img'); var themeImages = [ "arepa_australia_australia.png", "arepa_austria_austria.png", "arepa_bac_kan.png", "arepa_birria.png", "arepa_borscht.png", "arepa_cachopo.png", "arepa_canada_toronto.png", "arepa_japan_japan.png", "arepa_mexico_guadalajara.png", "arepa_pad_thai.png", "arepa_poutine.png", "arepa_spain_oviedo.png", "arepa_thailand_bangkok.png", "arepa_ukraine_kiev.png", "arepa_venezuela_venezuela.png", "arepa_vietnam_bc-kn.png", "botchef_avatar.png", "chef_andel.png", "chef_martita.jpg", "mesa-chefs-hero.jpg", "arepa_labs_hero_v3.jpg" ]; imgs.forEach(function(img) { var src = img.getAttribute('src') || ''; var basename = src.substring(src.lastIndexOf('/') + 1); // Si la imagen está en el mapeo directo if (imageMappings[basename]) { if (img.src !== imageMappings[basename]) { img.src = imageMappings[basename]; console.log('[Interceptor] Corregido src de img (mapeo):', basename); } } // Si es una imagen de arepa del tema que NO existe en la carpeta del tema (dinámicas del atlas) else if (src.indexOf('/themes/') !== -1 && basename.indexOf('arepa_') === 0) { if (themeImages.indexOf(basename) === -1) { var newUrl = 'https://www.diamundialdelaarepa.com/wp-content/uploads/2026/06/' + basename; if (img.src !== newUrl) { img.src = newUrl; console.log('[Interceptor] Corregida img del atlas dinámico:', basename); } } } }); // Corregir imágenes de fondo inline var els = document.querySelectorAll('*[style*="background"]'); els.forEach(function(el) { var style = el.getAttribute('style') || ''; for (var filename in imageMappings) { if (style.indexOf(filename) !== -1) { var newStyle = style.replace(new RegExp('[^\\(\\)\\\'\\"]*' + filename + '[^\\(\\)\\\'\\"]*', 'g'), imageMappings[filename]); if (el.getAttribute('style') !== newStyle) { el.setAttribute('style', newStyle); console.log('[Interceptor] Corregido background inline:', filename); } } } }); } // 3. Corregir enlaces de las categorías en la Home para ir a la página de países con filtro function fixCategoryLinks() { var catCards = document.querySelectorAll('.cat-card'); catCards.forEach(function(card) { var category = card.getAttribute('data-category'); if (category) { var btn = card.querySelector('.btn-explore-cat'); if (btn) { var targetUrl = '/recetas/?categoria=' + category; if (btn.getAttribute('href') !== targetUrl) { btn.href = targetUrl; console.log('[Interceptor] Corregido enlace de categoría:', category); } } } }); } // 4. Corregir enlaces a recetas estrella en el hero para ir a la ruta absoluta correcta function fixHeroLinks() { var links = document.querySelectorAll('a[href*="arepa-cachopo-oviedo-espana"], a[href*="arepa-pad-thai-bangkok-tailandia"], a[href*="arepa-birria-guadalajara-mexico"]'); links.forEach(function(link) { var href = link.getAttribute('href') || ''; if (href.indexOf('arepa-cachopo-oviedo-espana') !== -1 && link.getAttribute('href') !== '/arepa-cachopo-oviedo-espana/') { link.href = '/arepa-cachopo-oviedo-espana/'; } else if (href.indexOf('arepa-pad-thai-bangkok-tailandia') !== -1 && link.getAttribute('href') !== '/arepa-pad-thai-bangkok-tailandia/') { link.href = '/arepa-pad-thai-bangkok-tailandia/'; } else if (href.indexOf('arepa-birria-guadalajara-mexico') !== -1 && link.getAttribute('href') !== '/arepa-birria-guadalajara-mexico/') { link.href = '/arepa-birria-guadalajara-mexico/'; } }); // Corregir enlace del botón del mapa mundi si está incorrecto var mapLinks = document.querySelectorAll('a[href*="#categorias"], a[href*="mapa-mundi.html"]'); mapLinks.forEach(function(link) { if (link.textContent.indexOf('MAPA CULINARIO') !== -1 && link.getAttribute('href') !== '/mapa-mundi/') { link.href = '/mapa-mundi/'; console.log('[Interceptor] Corregido enlace del mapa mundi a /mapa-mundi/'); } }); } // 5. Inicializar la lógica del Menú Responsivo (Hamburguesa) function initResponsiveMenu() { var toggle = document.querySelector('.mobile-toggle'); var nav = document.getElementById('main-nav'); if (toggle && nav && !toggle.hasAttribute('data-responsive-init')) { toggle.setAttribute('data-responsive-init', 'true'); console.log('[Interceptor] Inicializando menú responsivo.'); // Eliminar listeners previos clonando el nodo si hiciera falta var newToggle = toggle.cloneNode(true); toggle.parentNode.replaceChild(newToggle, toggle); newToggle.addEventListener('click', function(e) { e.preventDefault(); nav.classList.toggle('active'); newToggle.classList.toggle('active'); document.body.classList.toggle('nav-open'); }); var navLinks = nav.querySelectorAll('a'); navLinks.forEach(function(link) { link.addEventListener('click', function() { nav.classList.remove('active'); newToggle.classList.remove('active'); document.body.classList.remove('nav-open'); }); }); } } // 6. Corregir y reemplazar el footer por el gourmet premium con redes sociales function fixFooter() { var footer = document.querySelector('footer'); if (footer && !footer.querySelector('.social-icons')) { console.log('[Interceptor] Reemplazando footer por la versión premium con redes sociales.'); // Creamos el nuevo footer var newFooter = document.createElement('footer'); newFooter.id = 'footer'; newFooter.className = 'site-footer'; newFooter.innerHTML = ` `; // Reemplazamos el footer actual footer.parentNode.replaceChild(newFooter, footer); } } // 7. Reconstruir layout gourmet en las recetas individuales de producción function fixGourmetRecipePage() { var recipeGlass = document.querySelector('.recipe-body .recipe-glass'); var recipeContent = document.querySelector('.recipe-content'); if (recipeGlass && recipeContent && !recipeGlass.querySelector('.recipe-featured-image-wrap')) { console.log('[Interceptor] Detectada página de receta individual. Reconstruyendo layout gourmet.'); // 1. Extraer país y ciudad desde el div de Origen var originDiv = recipeContent.querySelector('div[style*="margin-bottom"]'); var originText = ""; if (originDiv) { originText = originDiv.textContent.replace('Origen:', '').trim(); } else { // Fallback si no está el div: usar el título del hero o la URL var heroTitle = document.querySelector('.recipe-hero-content h1'); if (heroTitle) originText = heroTitle.textContent; } var pais = 'Desconocido'; var ciudad = 'Desconocido'; var paisesComunes = [ 'Maldives', 'Turkey', 'Guatemala', 'Dominican Republic', 'Pakistan', 'Syria', 'Cuba', 'Uzbekistan', 'El Salvador', 'Yemen', 'Vietnam', 'Turkmenistan', 'Costa Rica', 'Oman', 'Tajikistan', 'United Arab Emirates', 'Belize', 'Qatar', 'Aruba', 'Guadeloupe', 'West Bank', 'Anguilla', 'Antigua And Barbuda', 'Barbados', 'British Virgin Islands', 'Cayman Islands', 'Dominica', 'Grenada', 'Spain', 'Mexico', 'Thailand', 'Ukraine', 'Canada', 'United States', 'Argentina', 'Chile', 'Colombia', 'Zambia', 'Australia', 'Austria', 'Japan', 'Venezuela' ]; var foundCountry = ''; for (var i = 0; i < paisesComunes.length; i++) { var p = paisesComunes[i]; if (originText.toLowerCase().indexOf(p.toLowerCase()) === 0) { foundCountry = p; break; } } if (foundCountry) { pais = foundCountry; ciudad = originText.substring(foundCountry.length).trim(); if (!ciudad) ciudad = pais; } else { // Separar por el primer espacio var parts = originText.split(' '); pais = parts[0] || 'Desconocido'; ciudad = parts.slice(1).join(' ') || pais; } // Mapear banderas a códigos ISO2 var flags = { 'Maldives': 'mv', 'Turkey': 'tr', 'Guatemala': 'gt', 'Dominican Republic': 'do', 'Pakistan': 'pk', 'Syria': 'sy', 'Cuba': 'cu', 'Uzbekistan': 'uz', 'El Salvador': 'sv', 'Yemen': 'ye', 'Vietnam': 'vn', 'Turkmenistan': 'tm', 'Costa Rica': 'cr', 'Oman': 'om', 'Tajikistan': 'tj', 'United Arab Emirates': 'ae', 'Belize': 'bz', 'Qatar': 'qa', 'Aruba': 'aw', 'Guadeloupe': 'gp', 'West Bank': 'ps', 'Anguilla': 'ai', 'Antigua And Barbuda': 'ag', 'Barbados': 'bb', 'British Virgin Islands': 'vg', 'Cayman Islands': 'ky', 'Dominica': 'dm', 'Grenada': 'gd', 'Spain': 'es', 'Mexico': 'mx', 'Thailand': 'th', 'Ukraine': 'ua', 'Canada': 'ca', 'United States': 'us', 'Argentina': 'ar', 'Chile': 'cl', 'Colombia': 'co', 'Zambia': 'zm', 'Australia': 'au', 'Austria': 'at', 'Japan': 'jp', 'Venezuela': 've' }; var iso2 = flags[pais] || ''; var flagHtml = '🌍'; if (iso2) { flagHtml = `Bandera de ${pais}`; } // Mapear bebidas recomendadas var jugosPorPais = { 'Maldives': 'Jugo de coco fresco', 'Turkey': 'Ayran (bebida de yogur)', 'Guatemala': 'Rosa de Jamaica fresca', 'Dominican Republic': 'Jugo de chinola (maracuyá)', 'Pakistan': 'Lassi de mango', 'Syria': 'Limonada con agua de rosas', 'Cuba': 'Guarapo de caña de azúcar', 'Uzbekistan': 'Compot de frutas secas', 'El Salvador': 'Horchata de morro', 'Yemen': 'Té con cardamomo', 'Vietnam': 'Nước Mía (jugo de caña)', 'Turkmenistan': 'Chal (leche fermentada de camello)', 'Costa Rica': 'Agua de sapo (jengibre y limón)', 'Oman': 'Laban (leche agria especiada)', 'Tajikistan': 'Shirchoy (té con leche)', 'United Arab Emirates': 'Jallab (dátiles y agua de rosas)', 'Belize': 'Seaweed Punch (algas con leche)', 'Qatar': 'Karak Tea (té con leche y azafrán)', 'Aruba': 'Ponche Crema', 'Guadeloupe': 'Ti-punch de ron y lima', 'West Bank': 'Limonada con menta fresca', 'Anguilla': 'Rum Punch de frutas', 'Antigua And Barbuda': 'Agua de tamarindo', 'Barbados': 'Mauby (corteza amarga)', 'British Virgin Islands': 'Painkilller con coco', 'Cayman Islands': 'Rum Point Punch', 'Dominica': 'Jugo de guayaba', 'Grenada': 'Jugo de nutmeg (nuez moscada)', 'Spain': 'Sidra asturiana natural', 'Mexico': 'Agua de Jamaica helada', 'Thailand': 'Cha Yen (Té helado tailandés)', 'Ukraine': 'Kvas de remolacha fermentado', 'Canada': 'Jugo de arándanos silvestres', 'United States': 'Jugo de manzana y arándanos', 'Argentina': 'Agua helada de yerba mate', 'Chile': 'Mote con huesillo frío', 'Colombia': 'Jugo de lulo natural', 'Zambia': 'Chibwantu tradicional' }; var jugo = jugosPorPais[pais] || 'Jugo tropical'; // 2. Detección de alérgenos var contentText = recipeContent.textContent.toLowerCase(); var allergens = []; var glutenKeys = ['trigo', 'harina', 'panko', 'pan rallado', 'cebada', 'centeno', 'avena', 'espelta', 'cerveza', 'schnitzel', 'empanado', 'rebozado', 'cachopo', 'galleta', 'pasta', 'tallarines', 'spätzle', 'fideos']; for (var i = 0; i < glutenKeys.length; i++) { if (contentText.indexOf(glutenKeys[i]) !== -1) { allergens.push('🌾 Gluten'); break; } } var lacteosKeys = ['leche', 'queso', 'mantequilla', 'crema', 'yogur', 'nata', 'cabrales', 'tres oscos', 'requesón', 'lactose', 'lácteos', 'gröstl', 'spätzle', 'kasnocken', 'poutine', 'birria', 'parmesano', 'mozzarella', 'cheddar', 'ricotta', 'mascarpone', 'gorgonzola', 'roquefort', 'feta', 'gouda', 'suero', 'ghee']; for (var i = 0; i < lacteosKeys.length; i++) { if (contentText.indexOf(lacteosKeys[i]) !== -1) { allergens.push('🥛 Lácteos'); break; } } var huevosKeys = ['huevo', 'yema', 'clara', 'mayonesa', 'batido', 'alioli', 'merengue', 'rebozar']; for (var i = 0; i < huevosKeys.length; i++) { if (contentText.indexOf(huevosKeys[i]) !== -1) { allergens.push('🥚 Huevos'); break; } } var pescadoKeys = ['pescado', 'salmón', 'atún', 'merluza', 'bacalao', 'sardina', 'anchoa', 'bonito', 'trucha', 'seaweed', 'felchen']; for (var i = 0; i < pescadoKeys.length; i++) { if (contentText.indexOf(pescadoKeys[i]) !== -1) { allergens.push('🐟 Pescado'); break; } } var crustaceosKeys = ['camarón', 'camarones', 'langostino', 'langostinos', 'cangrejo', 'langosta', 'gambas', 'gamba', 'pad thai']; for (var i = 0; i < crustaceosKeys.length; i++) { if (contentText.indexOf(crustaceosKeys[i]) !== -1) { allergens.push('🦀 Crustáceos'); break; } } var moluscosKeys = ['pulpo', 'calamar', 'calamares', 'mejillón', 'mejillones', 'almeja', 'almejas', 'ostiones', 'caracoles', 'ostra', 'ostras']; for (var i = 0; i < moluscosKeys.length; i++) { if (contentText.indexOf(moluscosKeys[i]) !== -1) { allergens.push('🐚 Moluscos'); break; } } var frutosKeys = ['almendra', 'almendras', 'avellana', 'anacardo', 'pistacho', 'cacahuete', 'maní', 'maníes', 'peanut', 'kürbiskern', 'pepita de calabaza', 'pepitas de calabaza', 'nuez', 'nueces']; for (var i = 0; i < frutosKeys.length; i++) { if (contentText.indexOf(frutosKeys[i]) !== -1) { allergens.push('🥜 Frutos Secos'); break; } } var sojaKeys = ['soja', 'tofu', 'edamame', 'salsa de soja', 'teriyaki']; for (var i = 0; i < sojaKeys.length; i++) { if (contentText.indexOf(sojaKeys[i]) !== -1) { allergens.push('🫘 Soja'); break; } } if (contentText.indexOf('mostaza') !== -1) { allergens.push('🍯 Mostaza'); } var sesamoKeys = ['sésamo', 'ajonjolí', 'tahini', 'tahina', 'gomasio']; for (var i = 0; i < sesamoKeys.length; i++) { if (contentText.indexOf(sesamoKeys[i]) !== -1) { allergens.push('🌱 Sésamo'); break; } } var sulfitosKeys = ['vino', 'vinagre', 'cava', 'jerez', 'champaña', 'sidra']; for (var i = 0; i < sulfitosKeys.length; i++) { if (contentText.indexOf(sulfitosKeys[i]) !== -1) { allergens.push('🍷 Sulfitos'); break; } } if (contentText.indexOf('apio') !== -1) { allergens.push('🌿 Apio'); } if (allergens.length === 0) { allergens.push('🛡️ Sin alérgenos comunes'); } var allergensHtml = allergens.map(function(a) { return `${a}`; }).join(' '); // 3. Obtener URL de la imagen principal var heroImg = document.querySelector('.recipe-hero img'); var heroImgUrl = heroImg ? heroImg.getAttribute('src') : ''; var recipeTitle = document.querySelector('.recipe-hero-content h1') ? document.querySelector('.recipe-hero-content h1').textContent : document.title; // 4. Crear los nuevos elementos // A) recipe-meta var metaDiv = document.createElement('div'); metaDiv.className = 'recipe-meta'; metaDiv.innerHTML = `
ORIGEN
${flagHtml} ${ciudad}
PAÍS
${pais}
GENERADO POR
🤖 IA
BEBIDA SUGERIDA
${jugo}
`; // B) allergens-row var allergensDiv = document.createElement('div'); allergensDiv.className = 'allergens-row'; allergensDiv.innerHTML = `
⚠️ Alérgenos Detectados: ${allergensHtml}
🔬 Advertencia de Alérgenos Complejos y No Detectados:

Debido al uso de ingredientes compuestos, aderezos comerciales, condimentos o productos industriales complejos referenciados en esta receta (como salsas preparadas, caldos o embutidos), pueden existir alérgenos ocultos o adicionales no detectados por nuestro motor heurístico virtual. El usuario final es el responsable directo y exclusivo de comprobar detalladamente las etiquetas físicas de cada ingrediente antes de su preparación. Si padece alergias o intolerancias alimentarias graves y no está plenamente seguro de la composición exacta de los ingredientes locales seleccionados, se desaconseja y no se recomienda en ningún caso la preparación ni el consumo de esta receta.

`; // C) recipe-featured-image-wrap (La foto del producto terminado) var imageWrapDiv = document.createElement('div'); imageWrapDiv.className = 'recipe-featured-image-wrap'; imageWrapDiv.setAttribute('style', 'margin: 2rem 0 3.5rem; position: relative; border-radius: 18px; overflow: hidden; box-shadow: 0 15px 35px rgba(0,0,0,0.12); border: 1px solid rgba(212,160,23,0.15); background: #000;'); imageWrapDiv.innerHTML = ` Fotografía del producto terminado: ${recipeTitle}
📸 FOTOGRAFÍA GENERADA POR IA MESA DE LOS CHEFS · AREPA LABS IA
`; // D) juice-box var juiceDiv = document.createElement('div'); juiceDiv.className = 'juice-box'; juiceDiv.innerHTML = ` 🥤 Bebida Recomendada: ${jugo}. Acompaña esta arepa con un vaso bien frío, servido con una servilleta de lino al lado. `; // E) legal-disclaimer var disclaimerDiv = document.createElement('div'); disclaimerDiv.className = 'legal-disclaimer'; disclaimerDiv.innerHTML = ` ⚖️ Descargo de Responsabilidad y Advertencia Sanitaria: Laboratorio Virtual IA

Arepa Labs IA es un laboratorio gastronómico virtual y experimental. Las más de 28,000 recetas de relleno de fusión que cubren el planeta han sido formuladas y estructuradas de forma conceptual mediante modelos avanzados de Inteligencia Artificial (IA).

Aunque nuestro equipo realiza auditorías algorítmicas de los contenidos, es deber y responsabilidad exclusiva del usuario revisar y asegurar la idoneidad, frescura y calidad higiénico-sanitaria de todos los ingredientes antes de su adquisición y preparación, prestando especial atención a posibles intolerancias, alérgenos y aptitud para el consumo humano.

La preparación, cocción y consumo final de estas recetas queda bajo la entera responsabilidad del cocinero. Los desarrolladores y creadores declinan cualquier tipo de responsabilidad civil, penal o de salud por perjuicios o afecciones derivadas de la réplica física de las formulaciones sugeridas.

`; // F) cta-challenge var paisSlug = pais.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, ''); var ciudadSlug = ciudad.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, ''); var challengeDiv = document.createElement('div'); challengeDiv.className = 'cta-challenge'; challengeDiv.innerHTML = `

¡ATRÉVETE A RECREAR ESTA AREPA EN CASA!

Prepara esta receta en tu cocina, sube tu foto y comparte tus comentarios de Chef para ganar puntos de embajador y competir por un lugar de honor en la Mesa de los Chefs.

SUBIR MI CREACIÓN DE EMBAJADOR → `; // 5. Insertar todo en orden en el DOM recipeGlass.insertBefore(metaDiv, recipeContent); recipeGlass.insertBefore(allergensDiv, recipeContent); recipeGlass.insertBefore(imageWrapDiv, recipeContent); recipeGlass.appendChild(juiceDiv); recipeGlass.appendChild(disclaimerDiv); recipeGlass.appendChild(challengeDiv); // Remover/ocultar el div de Origen original para no duplicar visualmente if (originDiv) { originDiv.style.display = 'none'; } } } // Ejecución segura continua con setInterval para interceptar elementos cargados dinámicamente function runCorrections() { fixImages(); fixCategoryLinks(); fixHeroLinks(); initResponsiveMenu(); fixFooter(); fixGourmetRecipePage(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runCorrections); } else { runCorrections(); } // Intervalo continuo de seguridad para renderizado asíncrono setInterval(runCorrections, 400); })();