/* global window */
// =====================================================================
// WindMar Performance Marketing Command Center — data.jsx
// AUTO-GENERATED by refresh/build_data_jsx.py at 2026-05-04T13:16:13
// Sources: Meta Ads (MCP), Zoho Analytics scrape, Competition dashboard scrape.
// DO NOT EDIT BY HAND — re-run the build script to refresh.
// =====================================================================

const i18n = {"es": {"appName": "Centro de Comando", "tagline": "Sistema operativo de crecimiento", "tabs": {"overview": "Resumen", "funnel": "Funnel", "creatives": "Creativos", "decisions": "Decisiones", "products": "Productos", "market": "Mercado", "alerts": "Alertas"}, "profit": {"spend": "Gasto en ads", "revenue": "Ingresos", "cm": "Margen de contribución", "cmPct": "% Margen", "cac": "CAC", "leads": "Leads", "appts": "Citas", "sales": "Ventas", "vsLastPeriod": "vs período anterior"}, "filters": {"market": "Mercado", "product": "Producto", "date": "Período", "all": "Todos", "today": "Hoy", "d7": "7 días", "d30": "30 días", "d90": "90 días", "mtd": "MTD", "qtd": "QTD", "apply": "Aplicar", "reset": "Reiniciar", "live": "En vivo"}, "common": {"scale": "Escalar", "optimize": "Optimizar", "kill": "Apagar", "watch": "Vigilar", "pause": "Pausar", "resume": "Reactivar", "duplicate": "Duplicar", "details": "Detalles", "export": "Exportar", "filter": "Filtrar", "sortBy": "Ordenar por", "campaign": "Campaña", "creative": "Creativo", "message": "Mensaje", "angle": "Ángulo", "type": "Tipo", "hook": "Hook", "spend": "Gasto", "leads": "Leads", "cpl": "CPL", "qrate": "% Calif.", "crate": "% Cierre", "revenue": "Ingresos", "cm": "Margen", "score": "Score", "status": "Estado", "reason": "Razón", "action": "Acción siguiente", "runtime": "Días activo", "ago": "hace", "now": "ahora", "min": "min", "hr": "h"}, "headers": {"overview": {"title": "Resumen Operativo", "sub": "Lo que está generando dinero hoy. Acciones críticas en una sola vista."}, "funnel": {"title": "Funnel & Calidad de Leads", "sub": "¿Es problema de calidad de lead o de ejecución? Aquí lo decides."}, "creatives": {"title": "Inteligencia Creativa", "sub": "Qué mensajes y formatos están generando margen real, no solo clicks."}, "decisions": {"title": "Motor de Decisiones", "sub": "Cada campaña clasificada automáticamente. Acciones de un solo tap."}, "products": {"title": "Rentabilidad por Producto", "sub": "Dónde se genera la utilidad real, después de costos de adquisición."}, "market": {"title": "Mercado & Competencia", "sub": "Lo que la competencia está empujando ahora mismo en Puerto Rico."}, "alerts": {"title": "Alertas & Acciones", "sub": "Lo que tienes que hacer ahora. Una recomendación, una acción."}}}, "en": {"appName": "Command Center", "tagline": "Growth operating system", "tabs": {"overview": "Overview", "funnel": "Funnel", "creatives": "Creatives", "decisions": "Decisions", "products": "Products", "market": "Market", "alerts": "Alerts"}, "profit": {"spend": "Ad spend", "revenue": "Revenue", "cm": "Contribution margin", "cmPct": "% Margin", "cac": "CAC", "leads": "Leads", "appts": "Appts", "sales": "Sales", "vsLastPeriod": "vs last period"}, "filters": {"market": "Market", "product": "Product", "date": "Range", "all": "All", "today": "Today", "d7": "7d", "d30": "30d", "d90": "90d", "mtd": "MTD", "qtd": "QTD", "apply": "Apply", "reset": "Reset", "live": "Live"}, "common": {"scale": "Scale", "optimize": "Optimize", "kill": "Kill", "watch": "Watch", "pause": "Pause", "resume": "Resume", "duplicate": "Duplicate", "details": "Details", "export": "Export", "filter": "Filter", "sortBy": "Sort by", "campaign": "Campaign", "creative": "Creative", "message": "Message", "angle": "Angle", "type": "Type", "hook": "Hook", "spend": "Spend", "leads": "Leads", "cpl": "CPL", "qrate": "Qual %", "crate": "Close %", "revenue": "Revenue", "cm": "CM", "score": "Score", "status": "Status", "reason": "Reason", "action": "Next action", "runtime": "Days live", "ago": "ago", "now": "now", "min": "min", "hr": "h"}, "headers": {"overview": {"title": "Operational Overview", "sub": "What's making money today. Critical actions in one view."}, "funnel": {"title": "Funnel & Lead Quality", "sub": "Lead quality or execution? Decide here."}, "creatives": {"title": "Creative Intelligence", "sub": "Which messages and formats actually generate margin."}, "decisions": {"title": "Decision Engine", "sub": "Every campaign auto-classified. One-tap actions."}, "products": {"title": "Product Profitability", "sub": "Where the real margin comes from, after acquisition cost."}, "market": {"title": "Market & Competition", "sub": "What competitors are pushing right now in Puerto Rico."}, "alerts": {"title": "Alerts & Actions", "sub": "What you need to do now. One recommendation, one action."}}}};
const profitSeries = {"spend": [733, 981, 892, 943, 968, 1300, 1442, 1419, 1402, 1341, 1368, 1240, 1248, 1559, 657], "revenue": [5826, 6872, 5527, 7021, 7021, 7171, 6424, 7918, 11204, 7918, 6424, 8963, 7768, 7470, 5826], "cm": [4100, 4836, 3889, 4941, 4941, 5046, 4521, 5572, 7884, 5572, 4521, 6307, 5466, 5257, 4100], "cac": [366, 490, 892, 472, 484, 650, 721, 710, 467, 670, 684, 620, 624, 780, 328], "leads": [39, 46, 37, 47, 47, 48, 43, 53, 75, 53, 43, 60, 52, 50, 39], "sales": [2, 2, 1, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2], "appts": [9, 11, 9, 11, 11, 11, 10, 13, 18, 13, 10, 14, 12, 12, 9]};
const profitTotals = {"spend": {"val": 8815, "delta": 1.6}, "revenue": {"val": 55573, "delta": 3.3}, "cm": {"val": 39107, "delta": 3.3}, "cmPct": {"val": 70.4, "delta": -0.0}, "cac": {"val": 596, "delta": 12.8}, "leads": {"val": 372, "delta": 3.3}, "appts": {"val": 88, "delta": 3.5}, "sales": {"val": 15, "delta": 0.0}};
const funnelData = {"steps": [{"key": "leads", "label_es": "Leads", "label_en": "Leads", "count": 148755, "rate": 100.0, "prev": 136855}, {"key": "qualif", "label_es": "Trabajados", "label_en": "Worked", "count": 148623, "rate": 99.9, "prev": 136733}, {"key": "contact", "label_es": "Contactados", "label_en": "Contacted", "count": 89579, "rate": 60.2, "prev": 82413}, {"key": "appt", "label_es": "Citas coordinadas", "label_en": "Appts booked", "count": 35235, "rate": 23.7, "prev": 32416}, {"key": "show", "label_es": "Citas ejecutadas", "label_en": "Appts executed", "count": 18636, "rate": 12.5, "prev": 17145}, {"key": "sale", "label_es": "Ventas", "label_en": "Sales", "count": 5879, "rate": 3.95, "prev": 5409}], "speedToContact": [{"bucket": "<5 min", "pct": 38, "conv": 11.2}, {"bucket": "5–30 min", "pct": 24, "conv": 7.4}, {"bucket": "30–60 min", "pct": 14, "conv": 4.1}, {"bucket": "1–4 h", "pct": 12, "conv": 2.6}, {"bucket": "4–24 h", "pct": 8, "conv": 1.4}, {"bucket": ">24 h", "pct": 4, "conv": 0.6}], "qualityHist": [{"bucket": "0-20", "count": 38, "conv": 0.5}, {"bucket": "20-40", "count": 142, "conv": 1.8}, {"bucket": "40-60", "count": 318, "conv": 4.6}, {"bucket": "60-80", "count": 481, "conv": 9.3}, {"bucket": "80-100", "count": 268, "conv": 16.2}], "bySource": [{"src": "Meta - Solar", "leads": 448, "qual": 270, "sales": 18, "qrate": 60.3, "crate": 3.95}, {"src": "Meta - Roofing", "leads": 557, "qual": 336, "sales": 22, "qrate": 60.3, "crate": 3.95}, {"src": "Meta - Florida", "leads": 229, "qual": 138, "sales": 9, "qrate": 60.3, "crate": 3.95}, {"src": "Meta - Anker", "leads": 25, "qual": 15, "sales": 1, "qrate": 60.3, "crate": 3.95}, {"src": "Meta - Water", "leads": 36, "qual": 22, "sales": 1, "qrate": 60.3, "crate": 3.95}]};
const creatives = [{"id": "cr-001", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "Demo", "angle": "Independence", "hook_es": "Parchos-video", "hook_en": "Parchos-video", "spend": 2098, "leads": 234, "cpl": 9, "qrate": 60.3, "crate": 4.0, "revenue": 34958, "cm": 22503, "score": 98, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244756281880785"}, {"id": "cr-002", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Founder", "angle": "Independence", "hook_es": "Pieza Freedom versión Mujer FL", "hook_en": "Pieza Freedom versión Mujer FL", "spend": 1834, "leads": 152, "cpl": 12, "qrate": 60.3, "crate": 4.0, "revenue": 22707, "cm": 14145, "score": 98, "trend": 0.0, "status": "scale", "_meta_ad_id": "120241585853130014"}, {"id": "cr-003", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Demo", "angle": "Independence", "hook_es": "Video Aron Reclutamiento 2", "hook_en": "Video Aron Reclutamiento 2", "spend": 1412, "leads": 218, "cpl": 6, "qrate": 60.3, "crate": 4.0, "revenue": 32567, "cm": 21505, "score": 98, "trend": 0.0, "status": "scale", "_meta_ad_id": "120241431958330014"}, {"id": "cr-004", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "Testimonial", "angle": "Independence", "hook_es": "Parchos-Form (Clientes)", "hook_en": "Parchos-Form (Clientes)", "spend": 1257, "leads": 98, "cpl": 13, "qrate": 60.3, "crate": 4.0, "revenue": 14640, "cm": 9045, "score": 97, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244152433220785"}, {"id": "cr-005", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "StaticImage", "angle": "Independence", "hook_es": "Anuncio tranquilidad - Form (Segm)", "hook_en": "Anuncio tranquilidad - Form (Segm)", "spend": 1195, "leads": 213, "cpl": 6, "qrate": 60.3, "crate": 4.0, "revenue": 31820, "cm": 21197, "score": 98, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245948245440640"}, {"id": "cr-006", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Demo", "angle": "Outage", "hook_es": "Anuncio tormenta video", "hook_en": "Anuncio tormenta video", "spend": 1165, "leads": 137, "cpl": 9, "qrate": 60.3, "crate": 4.0, "revenue": 20467, "cm": 13238, "score": 98, "trend": 0.0, "status": "scale", "_meta_ad_id": "120246608192680640"}, {"id": "cr-007", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Windmar Roofing", "hook_en": "Carrusel Windmar Roofing", "spend": 997, "leads": 74, "cpl": 13, "qrate": 60.3, "crate": 4.0, "revenue": 11055, "cm": 6782, "score": 95, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244884694040785"}, {"id": "cr-008", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form (Clientes)", "hook_en": "Carrusel Form (Clientes)", "spend": 875, "leads": 131, "cpl": 7, "qrate": 60.3, "crate": 4.0, "revenue": 19570, "cm": 12896, "score": 98, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244152497710785"}, {"id": "cr-009", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form", "hook_en": "Carrusel Form", "spend": 841, "leads": 54, "cpl": 16, "qrate": 60.3, "crate": 4.0, "revenue": 8067, "cm": 4836, "score": 93, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245251046350785"}, {"id": "cr-010", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Demo", "angle": "Outage", "hook_es": "tormentaVideo - Form - Copia", "hook_en": "tormentaVideo - Form - Copia", "spend": 758, "leads": 62, "cpl": 12, "qrate": 60.3, "crate": 4.0, "revenue": 9262, "cm": 5759, "score": 94, "trend": 0.0, "status": "scale", "_meta_ad_id": "120247061356400640"}, {"id": "cr-011", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Demo", "angle": "Independence", "hook_es": "Video Aron Reclutamiento 1", "hook_en": "Video Aron Reclutamiento 1", "spend": 706, "leads": 51, "cpl": 14, "qrate": 60.3, "crate": 4.0, "revenue": 7619, "cm": 4656, "score": 93, "trend": 0.0, "status": "scale", "_meta_ad_id": "120241429598200014"}, {"id": "cr-012", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Founder", "angle": "Independence", "hook_es": "Pieza Freedom versión Mujer PR", "hook_en": "Pieza Freedom versión Mujer PR", "spend": 622, "leads": 81, "cpl": 8, "qrate": 60.3, "crate": 4.0, "revenue": 12101, "cm": 7893, "score": 96, "trend": 0.0, "status": "scale", "_meta_ad_id": "120246789482420640"}, {"id": "cr-013", "thumb": "assets/products/anker.png", "product": "Storage", "type": "StaticImage", "angle": "Independence", "hook_es": "Anker QuemaGasolina", "hook_en": "Anker QuemaGasolina", "spend": 606, "leads": 37, "cpl": 16, "qrate": 60.3, "crate": 4.0, "revenue": 5527, "cm": 3284, "score": 91, "trend": 0.0, "status": "scale", "_meta_ad_id": "120242909793440690"}, {"id": "cr-014", "thumb": "assets/products/water.png", "product": "Water", "type": "StaticImage", "angle": "Independence", "hook_es": "F-IMG PRODUCTOS WATER", "hook_en": "F-IMG PRODUCTOS WATER", "spend": 585, "leads": 70, "cpl": 8, "qrate": 60.3, "crate": 4.0, "revenue": 10457, "cm": 6774, "score": 95, "trend": 0.0, "status": "scale", "_meta_ad_id": "120241806698540238"}, {"id": "cr-015", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form (Segm)", "hook_en": "Carrusel Form (Segm)", "spend": 506, "leads": 22, "cpl": 23, "qrate": 60.3, "crate": 4.0, "revenue": 3287, "cm": 1807, "score": 90, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245251046440785"}, {"id": "cr-016", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "StaticImage", "angle": "Savings", "hook_es": "Anuncio Dolares - Form (Segm)", "hook_en": "Anuncio Dolares - Form (Segm)", "spend": 452, "leads": 41, "cpl": 11, "qrate": 60.3, "crate": 4.0, "revenue": 6125, "cm": 3858, "score": 92, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245948245420640"}, {"id": "cr-017", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form (Segm)", "hook_en": "Carrusel Form (Segm)", "spend": 351, "leads": 57, "cpl": 6, "qrate": 60.3, "crate": 4.0, "revenue": 8515, "cm": 5641, "score": 93, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244165375980785"}, {"id": "cr-018", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Mixto Form", "hook_en": "Carrusel Mixto Form", "spend": 349, "leads": 27, "cpl": 13, "qrate": 60.3, "crate": 4.0, "revenue": 4034, "cm": 2490, "score": 90, "trend": 0.0, "status": "scale", "_meta_ad_id": "120247051464150640"}, {"id": "cr-019", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "StaticImage", "angle": "Independence", "hook_es": "tranquilidad - Form", "hook_en": "tranquilidad - Form", "spend": 334, "leads": 32, "cpl": 10, "qrate": 60.3, "crate": 4.0, "revenue": 4781, "cm": 3031, "score": 91, "trend": 0.0, "status": "scale", "_meta_ad_id": "120247051464190640"}, {"id": "cr-020", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form (Pot)", "hook_en": "Carrusel Form (Pot)", "spend": 309, "leads": 53, "cpl": 6, "qrate": 60.3, "crate": 4.0, "revenue": 7918, "cm": 5263, "score": 93, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244155021160785"}, {"id": "cr-021", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "Offer", "angle": "Savings", "hook_es": "Oferta de Precio 4", "hook_en": "Oferta de Precio 4", "spend": 300, "leads": 36, "cpl": 8, "qrate": 60.3, "crate": 4.0, "revenue": 5378, "cm": 3485, "score": 91, "trend": 0.0, "status": "scale", "_meta_ad_id": "120247462242660640"}, {"id": "cr-022", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "StaticImage", "angle": "Outage", "hook_es": "Anuncio tormenta - Form (S test)", "hook_en": "Anuncio tormenta - Form (S test)", "spend": 294, "leads": 36, "cpl": 8, "qrate": 60.3, "crate": 4.0, "revenue": 5378, "cm": 3490, "score": 91, "trend": 0.0, "status": "scale", "_meta_ad_id": "120246608301640640"}, {"id": "cr-023", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "Testimonial", "angle": "Independence", "hook_es": "F-VID TESTIMONIAL MAS-CARO-LA-SOGA", "hook_en": "F-VID TESTIMONIAL MAS-CARO-LA-SOGA", "spend": 274, "leads": 17, "cpl": 16, "qrate": 60.3, "crate": 4.0, "revenue": 2540, "cm": 1514, "score": 89, "trend": 0.0, "status": "scale", "_meta_ad_id": "120243438130690785"}, {"id": "cr-024", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "StaticImage", "angle": "Outage", "hook_es": "tormenta - Form", "hook_en": "tormenta - Form", "spend": 249, "leads": 29, "cpl": 9, "qrate": 60.3, "crate": 4.0, "revenue": 4332, "cm": 2800, "score": 90, "trend": 0.0, "status": "scale", "_meta_ad_id": "120247051464180640"}, {"id": "cr-025", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form (Hombres)", "hook_en": "Carrusel Form (Hombres)", "spend": 232, "leads": 74, "cpl": 3, "qrate": 60.3, "crate": 4.0, "revenue": 11055, "cm": 7548, "score": 95, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244165617400785"}, {"id": "cr-026", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "Testimonial", "angle": "Independence", "hook_es": "F-VID TESTIMONIAL ESTO-NO-ES-GASTO", "hook_en": "F-VID TESTIMONIAL ESTO-NO-ES-GASTO", "spend": 220, "leads": 20, "cpl": 11, "qrate": 60.3, "crate": 4.0, "revenue": 2988, "cm": 1883, "score": 90, "trend": 0.0, "status": "scale", "_meta_ad_id": "120243438130710785"}, {"id": "cr-027", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "BrandFilm", "angle": "Independence", "hook_es": "Carrusel Form (Mujeres)", "hook_en": "Carrusel Form (Mujeres)", "spend": 218, "leads": 43, "cpl": 5, "qrate": 60.3, "crate": 4.0, "revenue": 6424, "cm": 4302, "score": 92, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244165726190785"}, {"id": "cr-028", "thumb": "assets/products/qcells.png", "product": "Solar", "type": "StaticImage", "angle": "Outage", "hook_es": "Anuncio tormenta - Form (Segm)", "hook_en": "Anuncio tormenta - Form (Segm)", "spend": 216, "leads": 18, "cpl": 12, "qrate": 60.3, "crate": 4.0, "revenue": 2689, "cm": 1676, "score": 89, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245948245410640"}, {"id": "cr-029", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "StaticImage", "angle": "Independence", "hook_es": "Parchos-Form (Segm)", "hook_en": "Parchos-Form (Segm)", "spend": 213, "leads": 11, "cpl": 19, "qrate": 60.3, "crate": 4.0, "revenue": 1643, "cm": 943, "score": 75, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245251046540785"}, {"id": "cr-030", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "StaticImage", "angle": "Independence", "hook_es": "Parchos-Form (Mujeres)", "hook_en": "Parchos-Form (Mujeres)", "spend": 203, "leads": 12, "cpl": 17, "qrate": 60.3, "crate": 4.0, "revenue": 1793, "cm": 1059, "score": 89, "trend": 0.0, "status": "scale", "_meta_ad_id": "120244165726170785"}, {"id": "cr-031", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "StaticImage", "angle": "Independence", "hook_es": "Tu hogar merece mas (Segm)", "hook_en": "Tu hogar merece mas (Segm)", "spend": 194, "leads": 13, "cpl": 15, "qrate": 60.3, "crate": 4.0, "revenue": 1942, "cm": 1172, "score": 89, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245251046570785"}, {"id": "cr-032", "thumb": "assets/products/roofing.png", "product": "Roofing", "type": "StaticImage", "angle": "Independence", "hook_es": "Tu hogar merece mas", "hook_en": "Tu hogar merece mas", "spend": 190, "leads": 9, "cpl": 21, "qrate": 60.3, "crate": 4.0, "revenue": 1345, "cm": 756, "score": 75, "trend": 0.0, "status": "scale", "_meta_ad_id": "120245251046310785"}];
const campaigns = [{"id": "C-001", "name": "01.04.26_Sin_cuentos_Form_Nativo_Roofing", "channel": "Meta", "market": "PR", "product": "Roofing", "spend": 6143, "leads": 751, "sales": 30, "cm": 72809, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($72,809). CPL $8 bajo threshold.", "reason_en": "CM positivo ($72,809). CPL $8 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-002", "name": "Reclutamiento FL", "channel": "Meta", "market": "FL", "product": "Solar", "spend": 4125, "leads": 433, "sales": 17, "cm": 41396, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($41,396). CPL $10 bajo threshold.", "reason_en": "CM positivo ($41,396). CPL $10 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-003", "name": "01.04.26_Sin_cuentos_Form_Nativo_Campaing", "channel": "Meta", "market": "PR", "product": "Solar", "spend": 3963, "leads": 536, "sales": 21, "cm": 52386, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($52,386). CPL $7 bajo threshold.", "reason_en": "CM positivo ($52,386). CPL $7 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-004", "name": "24.04.26_Sin_cuentos_Form_Roofing", "channel": "Meta", "market": "PR", "product": "Roofing", "spend": 2192, "leads": 127, "sales": 5, "cm": 11159, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($11,159). CPL $17 bajo threshold.", "reason_en": "CM positivo ($11,159). CPL $17 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-005", "name": "Prueba - 24.04.26_Sin_cuentos_Form_Nativo", "channel": "Meta", "market": "PR", "product": "Solar", "spend": 1872, "leads": 169, "sales": 7, "cm": 15895, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($15,895). CPL $11 bajo threshold.", "reason_en": "CM positivo ($15,895). CPL $11 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-006", "name": "27.03.26_Campaña_Roofing_Nueva_cuenta", "channel": "Meta", "market": "PR", "product": "Roofing", "spend": 1491, "leads": 111, "sales": 4, "cm": 10178, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($10,178). CPL $13 bajo threshold.", "reason_en": "CM positivo ($10,178). CPL $13 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-007", "name": "01.04.26_SinCuentos_Anker", "channel": "Meta", "market": "PR", "product": "Storage", "spend": 765, "leads": 46, "sales": 2, "cm": 4071, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($4,071). CPL $17 bajo threshold.", "reason_en": "CM positivo ($4,071). CPL $17 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-008", "name": "Campaña Reclutamiento Freedom", "channel": "Meta", "market": "PR", "product": "Solar", "spend": 622, "leads": 81, "sales": 3, "cm": 7893, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($7,893). CPL $8 bajo threshold.", "reason_en": "CM positivo ($7,893). CPL $8 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-009", "name": "03.03.26_CAM-CALENTADORES", "channel": "Meta", "market": "PR", "product": "Water", "spend": 585, "leads": 70, "sales": 3, "cm": 6774, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($6,774). CPL $8 bajo threshold.", "reason_en": "CM positivo ($6,774). CPL $8 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-010", "name": "30_04_26_Awareness_Día de las madres", "channel": "Meta", "market": "PR", "product": "Solar", "spend": 133, "leads": 2227, "sales": 88, "cm": 233990, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($233,990). CPL $0 bajo threshold.", "reason_en": "CM positivo ($233,990). CPL $0 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}, {"id": "C-011", "name": "01.04.26_Sin_cuentos_Whatsapp", "channel": "Meta", "market": "PR", "product": "Solar", "spend": 70, "leads": 2, "sales": 0, "cm": 140, "runtime": 30, "status": "scale", "reason_es": "CM positivo ($140). CPL $35 bajo threshold.", "reason_en": "CM positivo ($140). CPL $35 bajo threshold.", "action_es": "Subir +20–30%.", "action_en": "Subir +20–30%."}];
const products = [{"id": "solar", "name": "Solar", "thumb": "assets/products/qcells.png", "margin": 15, "revenue": 16795368, "spend": 11037, "leads": 677, "sales": 4450, "cac": 2, "cm": 11819203, "share": 76}, {"id": "storage", "name": "Storage", "thumb": "assets/products/anker.png", "margin": 10, "revenue": 2060735, "spend": 765, "leads": 25, "sales": 546, "cac": 1, "cm": 1450176, "share": 9}, {"id": "roofing", "name": "Roofing", "thumb": "assets/products/roofing.png", "margin": 10, "revenue": 3332654, "spend": 10038, "leads": 557, "sales": 883, "cac": 11, "cm": 2345249, "share": 15}, {"id": "water", "name": "Water", "thumb": "assets/products/water.png", "margin": 10, "revenue": 33968, "spend": 585, "leads": 36, "sales": 9, "cac": 65, "cm": 23904, "share": 0}];
const creativeTypes = [{"key": "Founder", "label_es": "Founder Ads", "label_en": "Founder Ads", "tier": "A+", "note_es": "Voz del fundador. Construye autoridad rápido.", "note_en": "Founder-led trust. Builds authority fast."}, {"key": "BeforeAfter", "label_es": "Antes & Después", "label_en": "Before & After", "tier": "A+", "note_es": "Transformación visual obvia en 2 segundos.", "note_en": "Obvious transformation in 2 seconds."}, {"key": "StaticImage", "label_es": "Static Image", "label_en": "Static Image", "tier": "A+", "note_es": "Pruebas baratas y rápidas para encontrar ángulo.", "note_en": "Cheap, fast tests to find the angle."}, {"key": "UGC", "label_es": "UGC Problem-Solution", "label_en": "UGC Problem-Solution", "tier": "A", "note_es": "Storytelling problema-solución, feed-native.", "note_en": "Problem-solution storytelling, feed-native."}, {"key": "BrandFilm", "label_es": "Brand Films", "label_en": "Brand Films", "tier": "A", "note_es": "Producción alta. Cosechar en assets más cortos.", "note_en": "High production. Harvest into shorter assets."}, {"key": "Demo", "label_es": "Product Demos", "label_en": "Product Demos", "tier": "B", "note_es": "Útil como prueba, menos escalable.", "note_en": "Useful as proof, less scalable."}, {"key": "Offer", "label_es": "Offer-Led", "label_en": "Offer-Led", "tier": "B", "note_es": "Funciona si la oferta es real y la fricción baja.", "note_en": "Works when offer is real and friction is low."}, {"key": "Trend", "label_es": "Trend Edits", "label_en": "Trend Edits", "tier": "C", "note_es": "Solo si el trend amplifica el mensaje.", "note_en": "Only when trend amplifies the message."}, {"key": "Testimonial", "label_es": "Testimonios", "label_en": "Testimonials", "tier": "D", "note_es": "Refuerzo para warm leads, no para frío.", "note_en": "Reassurance for warm leads, not cold acquisition."}, {"key": "Meme", "label_es": "Memes", "label_en": "Meme Ads", "tier": "D", "note_es": "Atención barata, abarata la marca si abusas.", "note_en": "Cheap attention, cheapens brand if overused."}];
const heatmapAngles = ["Savings", "Outage", "Independence", "Financing"];
const heatmapTypes = ["Founder", "BeforeAfter", "StaticImage", "UGC", "BrandFilm", "Demo", "Offer", "Trend", "Testimonial", "Meme"];
const heatmapData = {"Founder": {"Savings": 12400, "Outage": 11600, "Independence": 14800, "Financing": 5200}, "BeforeAfter": {"Savings": 13800, "Outage": 9200, "Independence": 8400, "Financing": 1800}, "StaticImage": {"Savings": 6200, "Outage": 4400, "Independence": 5800, "Financing": 3400}, "UGC": {"Savings": 11800, "Outage": 14200, "Independence": 9400, "Financing": 600}, "BrandFilm": {"Savings": 4200, "Outage": 6800, "Independence": 7600, "Financing": 1200}, "Demo": {"Savings": 5800, "Outage": 2400, "Independence": 3100, "Financing": 2200}, "Offer": {"Savings": 5400, "Outage": -2100, "Independence": 7800, "Financing": 1200}, "Trend": {"Savings": 1800, "Outage": 800, "Independence": -1200, "Financing": null}, "Testimonial": {"Savings": 2900, "Outage": 4400, "Independence": 6200, "Financing": null}, "Meme": {"Savings": 1100, "Outage": -800, "Independence": -400, "Financing": null}};
const competitors = [{"id": "power_solar", "brand": "Power Solar", "headline": "Energía solar clara y sin complicaciones", "cta": "Learn More", "category": "Savings", "bg": "linear-gradient(135deg,#FF7A00,#A33D00)", "spend": 7600, "freq": 5.2, "change": 30}, {"id": "home_power_sun_energy", "brand": "Home Power Sun Energy", "headline": "Red de instaladores certificados en toda la isla", "cta": "Más información", "category": "Savings", "bg": "linear-gradient(135deg,#0B5C3A,#06321F)", "spend": 280, "freq": 0.3, "change": -5}, {"id": "tu_planta_solar", "brand": "Tu Planta Solar", "headline": "Sorteo Gendome 3000 GRATIS", "cta": "Más información", "category": "Independence", "bg": "linear-gradient(135deg,#163C1A,#082010)", "spend": 40, "freq": 0.0, "change": -5}, {"id": "planet_solar", "brand": "Planet Solar", "headline": "brillagratis.com: 10 sistemas solares GRATIS", "cta": "Más información", "category": "Independence", "bg": "linear-gradient(135deg,#0079C0,#192059)", "spend": 2440, "freq": 1.6, "change": 30}];
const messageMix = [{"cat": "Savings", "es": "Ahorro", "pct": 31, "change": 0}, {"cat": "Fear", "es": "Apagones / Miedo", "pct": 0, "change": 0}, {"cat": "Independence", "es": "Independencia", "pct": 29, "change": 0}, {"cat": "Financing", "es": "Financiamiento", "pct": 40, "change": 0}];
const alerts = [{"id": "a-1", "sev": "high", "icon": "trending-up", "title_es": "Escala «30_04_26_Awareness_Día de las madres» +20%", "title_en": "Scale «30_04_26_Awareness_Día de las madres» +20%", "msg_es": "CM $233,990 positivo. CM positivo ($233,990). CPL $0 bajo threshold.", "msg_en": "CM $233,990 positive. CM positivo ($233,990). CPL $0 bajo threshold.", "action_es": "Subir budget", "action_en": "Lift budget", "impact_es": "+$46,798 CM/mes proyectado.", "impact_en": "+$46,798 CM/mo projected.", "time": "12 min", "related": "C-010"}, {"id": "a-2", "sev": "high", "icon": "trending-up", "title_es": "Escala «01.04.26_Sin_cuentos_Form_Nativo_Roofing» +20%", "title_en": "Scale «01.04.26_Sin_cuentos_Form_Nativo_Roofing» +20%", "msg_es": "CM $72,809 positivo. CM positivo ($72,809). CPL $8 bajo threshold.", "msg_en": "CM $72,809 positive. CM positivo ($72,809). CPL $8 bajo threshold.", "action_es": "Subir budget", "action_en": "Lift budget", "impact_es": "+$14,561 CM/mes proyectado.", "impact_en": "+$14,561 CM/mo projected.", "time": "12 min", "related": "C-001"}, {"id": "a-3", "sev": "info", "icon": "zap", "title_es": "Top creativo: «Parchos-video»", "title_en": "Top creative: «Parchos-video»", "msg_es": "CPL $9 con 234 leads en 30 días. CM $22,503.", "msg_en": "CPL $9 with 234 leads in 30 days. CM $22,503.", "action_es": "Duplicar a otra cuenta", "action_en": "Replicate to another account", "impact_es": "Patrón validado.", "impact_en": "Validated pattern.", "time": "3 h", "related": "cr-001"}, {"id": "a-4", "sev": "high", "icon": "alert-circle", "title_es": "Power Solar domina Meta con 130 anuncios activos", "title_en": "Power Solar domina Meta con 130 anuncios activos", "msg_es": "3.25x más que Windmar (40). $140/mes FlexiPay con garantía 25 años sigue siendo el más directo del mercado.", "msg_en": "3.25x más que Windmar (40). $140/mes FlexiPay con garantía 25 años sigue siendo el más directo del mercado.", "action_es": "Revisar", "action_en": "Review", "impact_es": "Defender share / oportunidad.", "impact_en": "Defend share / opportunity.", "time": "2026-04-30", "related": "power_solar"}, {"id": "a-5", "sev": "good", "icon": "trophy", "title_es": "Windmar lanzó 5 anuncios nuevos esta semana", "title_en": "Windmar lanzó 5 anuncios nuevos esta semana", "msg_es": "Superando promedio de competidores (~1). Ritmo saludable con formatos variados (video + carrusel + imagen).", "msg_en": "Superando promedio de competidores (~1). Ritmo saludable con formatos variados (video + carrusel + imagen).", "action_es": "Revisar", "action_en": "Review", "impact_es": "Defender share / oportunidad.", "impact_en": "Defend share / opportunity.", "time": "2026-04-30", "related": "windmar"}, {"id": "a-6", "sev": "high", "icon": "alert-circle", "title_es": "Planet Solar mantiene 41 anuncios + 2 nuevos", "title_en": "Planet Solar mantiene 41 anuncios + 2 nuevos", "msg_es": "Concurso brillagratis.com (10 sistemas GRATIS) sigue capturando leads de alto volumen.", "msg_en": "Concurso brillagratis.com (10 sistemas GRATIS) sigue capturando leads de alto volumen.", "action_es": "Revisar", "action_en": "Review", "impact_es": "Defender share / oportunidad.", "impact_en": "Defend share / opportunity.", "time": "2026-04-30", "related": "planet_solar"}, {"id": "a-7", "sev": "info", "icon": "filter", "title_es": "Home Power Sun Energy: solo 7 anuncios activos", "title_en": "Home Power Sun Energy: solo 7 anuncios activos", "msg_es": "Todos desde primeros días del mes. Posible reducción presupuesto o rebranding.", "msg_en": "Todos desde primeros días del mes. Posible reducción presupuesto o rebranding.", "action_es": "Revisar", "action_en": "Review", "impact_es": "Defender share / oportunidad.", "impact_en": "Defend share / opportunity.", "time": "2026-04-30", "related": "home_power_sun_energy"}];

Object.assign(window, {
  i18n,
  creativeTypes,
  profitSeries,
  profitTotals,
  funnelData,
  creatives,
  campaigns,
  products,
  heatmapAngles,
  heatmapTypes,
  heatmapData,
  competitors,
  messageMix,
  alerts,
});

// Generated at: 2026-05-04T13:16:13
