{"id":1707,"date":"2025-07-22T01:10:33","date_gmt":"2025-07-22T01:10:33","guid":{"rendered":"https:\/\/polisecuador.org\/?page_id=1707"},"modified":"2026-04-07T13:14:47","modified_gmt":"2026-04-07T13:14:47","slug":"img","status":"publish","type":"page","link":"https:\/\/polisecuador.org\/en\/img\/","title":{"rendered":"Img Polis"},"content":{"rendered":"<p>[et_pb_section fb_built=\u00bb1&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb da_disable_devices=\u00bboff|off|off\u00bb global_colors_info=\u00bb{}\u00bb da_is_popup=\u00bboff\u00bb da_exit_intent=\u00bboff\u00bb da_has_close=\u00bbon\u00bb da_alt_close=\u00bboff\u00bb da_dark_close=\u00bboff\u00bb da_not_modal=\u00bbon\u00bb da_is_singular=\u00bboff\u00bb da_with_loader=\u00bboff\u00bb da_has_shadow=\u00bbon\u00bb][et_pb_row _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_column type=\u00bb4_4&#8243; _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb global_colors_info=\u00bb{}\u00bb][et_pb_code _builder_version=\u00bb4.27.4&#8243; _module_preset=\u00bbdefault\u00bb hover_enabled=\u00bb0&#8243; global_colors_info=\u00bb{}\u00bb sticky_enabled=\u00bb0&#8243;]<!DOCTYPE html><!-- [et_pb_line_break_holder] --><html lang=\"es\"><!-- [et_pb_line_break_holder] --><head><!-- [et_pb_line_break_holder] -->    <meta charset=\"UTF-8\"><!-- [et_pb_line_break_holder] -->    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><!-- [et_pb_line_break_holder] -->    <title>Generador de Invitaciones Polis<\/title><!-- [et_pb_line_break_holder] -->    <!-- Google Font: Montserrat --><!-- [et_pb_line_break_holder] -->    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;700;900&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] -->    <!-- Tailwind CSS CDN --><!-- [et_pb_line_break_holder] -->    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script><!-- [et_pb_line_break_holder] -->    <\/p>\n<style><!-- [et_pb_line_break_holder] -->        \/* Custom styles for Polis colors *\/<!-- [et_pb_line_break_holder] -->        .bg-polis-purple { background-color: #362661; }<!-- [et_pb_line_break_holder] -->        .text-polis-purple { color: #362661; }<!-- [et_pb_line_break_holder] -->        .bg-polis-green { background-color: #98c225; }<!-- [et_pb_line_break_holder] -->        .text-polis-green { color: #98c225; }<!-- [et_pb_line_break_holder] -->        .bg-polis-lavender { background-color: #765ca4; }<!-- [et_pb_line_break_holder] -->        .text-polis-lavender { color: #765ca4; }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Ensure Montserrat is applied *\/<!-- [et_pb_line_break_holder] -->        body {<!-- [et_pb_line_break_holder] -->            font-family: 'Montserrat', sans-serif;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Hide the canvas initially, it's used for drawing, not direct display *\/<!-- [et_pb_line_break_holder] -->        #invitationCanvas {<!-- [et_pb_line_break_holder] -->            display: none;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Style for the preview image *\/<!-- [et_pb_line_break_holder] -->        #previewImage {<!-- [et_pb_line_break_holder] -->            border: 1px solid #ddd;<!-- [et_pb_line_break_holder] -->            max-width: 100%; \/* Ensure it's responsive *\/<!-- [et_pb_line_break_holder] -->            height: auto;<!-- [et_pb_line_break_holder] -->            border-radius: 0.75rem; \/* rounded-xl *\/<!-- [et_pb_line_break_holder] -->            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Basic container styling for better presentation within Divi *\/<!-- [et_pb_line_break_holder] -->        .container-wrapper {<!-- [et_pb_line_break_holder] -->            max-width: 1200px;<!-- [et_pb_line_break_holder] -->            margin: 0 auto;<!-- [et_pb_line_break_holder] -->            padding: 1rem;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    <\/style>\n<p><!-- [et_pb_line_break_holder] --><\/head><!-- [et_pb_line_break_holder] --><body class=\"bg-gray-100 font-montserrat text-gray-800\"><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"container-wrapper p-4 md:p-8\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<h1 class=\"text-3xl md:text-4xl font-bold text-center text-polis-purple mb-8\">Generador de Invitaciones Polis<\/h1>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"flex flex-col lg:flex-row gap-8\"><!-- [et_pb_line_break_holder] -->            <!-- Formulario de Entrada --><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"w-full lg:w-1\/2 bg-white p-6 md:p-8 rounded-xl shadow-lg\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<h2 class=\"text-2xl font-semibold text-polis-purple mb-6\">Detalles del Evento<\/h2>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<form id=\"invitationForm\" class=\"space-y-4\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"templateSelect\" class=\"block text-sm font-medium text-gray-700\">Seleccionar Plantilla:<\/label><!-- [et_pb_line_break_holder] -->                        <select id=\"templateSelect\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\"><!-- [et_pb_line_break_holder] --><option value=\"\">&#8212; Seleccionar &#8212;<\/option><!-- [et_pb_line_break_holder] --><option value=\"generalEvent\">Evento General<\/option><!-- [et_pb_line_break_holder] --><option value=\"polisConference\">Conferencia Polis<\/option><!-- [et_pb_line_break_holder] --><option value=\"custom\">Personalizado<\/option><!-- [et_pb_line_break_holder] -->                        <\/select><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventLegend\" class=\"block text-sm font-medium text-gray-700\">T\u00edtulo del Evento:<\/label><!-- [et_pb_line_break_holder] -->                        <textarea id=\"eventLegend\" rows=\"2\" placeholder=\"Ej: \u00bfQu\u00e9 es el Programa FAES?\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\" required><\/textarea><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventDescription\" class=\"block text-sm font-medium text-gray-700\">Descripci\u00f3n del Evento:<\/label><!-- [et_pb_line_break_holder] -->                        <textarea id=\"eventDescription\" rows=\"4\" placeholder=\"Ej: Es una iniciativa de la Fundaci\u00f3n FAES (Espa\u00f1a) que selecciona a l\u00edderes j\u00f3venes...\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\" required><\/textarea><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventDate\" class=\"block text-sm font-medium text-gray-700\">Fecha del Evento:<\/label><!-- [et_pb_line_break_holder] -->                        <input type=\"date\" id=\"eventDate\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\" required><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventTime\" class=\"block text-sm font-medium text-gray-700\">Hora del Evento:<\/label><!-- [et_pb_line_break_holder] -->                        <input type=\"time\" id=\"eventTime\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\" required><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventLocation\" class=\"block text-sm font-medium text-gray-700\">Lugar del Evento (L\u00ednea 1):<\/label><!-- [et_pb_line_break_holder] -->                        <input type=\"text\" id=\"eventLocation\" placeholder=\"Ej: Centro de Convenciones\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\" required><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventLocation2\" class=\"block text-sm font-medium text-gray-700\">Lugar del Evento (L\u00ednea 2 &#8211; Opcional):<\/label><!-- [et_pb_line_break_holder] -->                        <input type=\"text\" id=\"eventLocation2\" placeholder=\"Ej: Sala 3, Edificio Principal\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\"><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"eventLocation3\" class=\"block text-sm font-medium text-gray-700\">Lugar del Evento (L\u00ednea 3 &#8211; Opcional):<\/label><!-- [et_pb_line_break_holder] -->                        <input type=\"text\" id=\"eventLocation3\" placeholder=\"Ej: Ciudad, Pa\u00eds\" class=\"mt-1 block w-full p-3 border border-gray-300 rounded-md shadow-sm focus:ring-polis-green focus:border-polis-green\"><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <button type=\"button\" id=\"generateButton\" class=\"w-full bg-polis-green text-white font-bold py-3 px-4 rounded-md shadow-md hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-polis-green focus:ring-offset-2 transition duration-300 ease-in-out\"><!-- [et_pb_line_break_holder] -->                        Generar Invitaci\u00f3n<!-- [et_pb_line_break_holder] -->                    <\/button><!-- [et_pb_line_break_holder] -->                <\/form>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            <!-- Previsualizaci\u00f3n y Descarga --><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"w-full lg:w-1\/2 bg-white p-6 md:p-8 rounded-xl shadow-lg flex flex-col items-center\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<h2 class=\"text-2xl font-semibold text-polis-purple mb-6\">Previsualizaci\u00f3n de la Invitaci\u00f3n<\/h2>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"w-full max-w-sm md:max-w-md lg:max-w-none flex justify-center mb-6\"><!-- [et_pb_line_break_holder] -->                    <img decoding=\"async\" id=\"previewImage\" src=\"\" alt=\"Previsualizaci\u00f3n de la Invitaci\u00f3n\" class=\"hidden\"><!-- [et_pb_line_break_holder] -->                    <pee id=\"noPreviewMessage\" class=\"text-gray-500\">Completa el formulario y haz clic en \u00abGenerar Invitaci\u00f3n\u00bb para ver la previsualizaci\u00f3n.<\/pee><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <button id=\"downloadButton\" class=\"w-full lg:w-auto bg-polis-purple text-white font-bold py-3 px-6 rounded-md shadow-md hover:bg-polis-lavender focus:outline-none focus:ring-2 focus:ring-polis-purple focus:ring-offset-2 transition duration-300 ease-in-out\" disabled><!-- [et_pb_line_break_holder] -->                    Descargar Invitaci\u00f3n<!-- [et_pb_line_break_holder] -->                <\/button><!-- [et_pb_line_break_holder] -->                <!-- Canvas para la generaci\u00f3n de la imagen (oculto) --><!-- [et_pb_line_break_holder] -->                <canvas id=\"invitationCanvas\" width=\"1024\" height=\"1280\"><\/canvas><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <script><!-- [et_pb_line_break_holder] -->        document.addEventListener('DOMContentLoaded', () => {<!-- [et_pb_line_break_holder] -->            const form = document.getElementById('invitationForm');<!-- [et_pb_line_break_holder] -->            const templateSelect = document.getElementById('templateSelect');<!-- [et_pb_line_break_holder] -->            const generateButton = document.getElementById('generateButton');<!-- [et_pb_line_break_holder] -->            const downloadButton = document.getElementById('downloadButton');<!-- [et_pb_line_break_holder] -->            const previewImage = document.getElementById('previewImage');<!-- [et_pb_line_break_holder] -->            const noPreviewMessage = document.getElementById('noPreviewMessage');<!-- [et_pb_line_break_holder] -->            const canvas = document.getElementById('invitationCanvas');<!-- [et_pb_line_break_holder] -->            const ctx = canvas.getContext('2d');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const POLIS_PURPLE = '#362661';<!-- [et_pb_line_break_holder] -->            const POLIS_GREEN = '#98c225';<!-- [et_pb_line_break_holder] -->            const POLIS_LAVENDER = '#765ca4';<!-- [et_pb_line_break_holder] -->            const WHITE_COLOR = '#FFFFFF';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Function to draw text with line breaks<!-- [et_pb_line_break_holder] -->            function wrapText(context, text, x, y, maxWidth, lineHeight) {<!-- [et_pb_line_break_holder] -->                const words = text.split(' ');<!-- [et_pb_line_break_holder] -->                let line = '';<!-- [et_pb_line_break_holder] -->                let lines = [];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                for (let n = 0; n < words.length; n++) {<!-- [et_pb_line_break_holder] -->                    const testLine = line + words[n] + ' ';<!-- [et_pb_line_break_holder] -->                    const metrics = context.measureText(testLine);<!-- [et_pb_line_break_holder] -->                    const testWidth = metrics.width;<!-- [et_pb_line_break_holder] -->                    if (testWidth > maxWidth && n > 0) {<!-- [et_pb_line_break_holder] -->                        lines.push(line);<!-- [et_pb_line_break_holder] -->                        line = words[n] + ' ';<!-- [et_pb_line_break_holder] -->                    } else {<!-- [et_pb_line_break_holder] -->                        line = testLine;<!-- [et_pb_line_break_holder] -->                    }<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->                lines.push(line);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                for (let i = 0; i < lines.length; i++) {<!-- [et_pb_line_break_holder] -->                    context.fillText(lines[i].trim(), x, y + (i * lineHeight));<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->                return lines.length * lineHeight; \/\/ Return total height used<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Function to draw a rounded rectangle<!-- [et_pb_line_break_holder] -->            function roundRect(ctx, x, y, width, height, radius) {<!-- [et_pb_line_break_holder] -->                ctx.beginPath();<!-- [et_pb_line_break_holder] -->                ctx.moveTo(x + radius, y);<!-- [et_pb_line_break_holder] -->                ctx.lineTo(x + width - radius, y);<!-- [et_pb_line_break_holder] -->                ctx.quadraticCurveTo(x + width, y, x + width, y + radius);<!-- [et_pb_line_break_holder] -->                ctx.lineTo(x + width, y + height - radius);<!-- [et_pb_line_break_holder] -->                ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);<!-- [et_pb_line_break_holder] -->                ctx.lineTo(x + radius, y + height);<!-- [et_pb_line_break_holder] -->                ctx.quadraticCurveTo(x, y + height, x, y + height - radius);<!-- [et_pb_line_break_holder] -->                ctx.lineTo(x, y + radius);<!-- [et_pb_line_break_holder] -->                ctx.quadraticCurveTo(x, y, x + radius, y);<!-- [et_pb_line_break_holder] -->                ctx.closePath();<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Function to draw a circle<!-- [et_pb_line_break_holder] -->            function drawCircle(ctx, x, y, radius, color) {<!-- [et_pb_line_break_holder] -->                ctx.fillStyle = color;<!-- [et_pb_line_break_holder] -->                ctx.beginPath();<!-- [et_pb_line_break_holder] -->                ctx.arc(x, y, radius, 0, Math.PI * 2, true);<!-- [et_pb_line_break_holder] -->                ctx.closePath();<!-- [et_pb_line_break_holder] -->                ctx.fill();<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const templates = {<!-- [et_pb_line_break_holder] -->                generalEvent: {<!-- [et_pb_line_break_holder] -->                    eventLegend: \"\u00a1Te invitamos a nuestro evento anual!\",<!-- [et_pb_line_break_holder] -->                    eventDescription: \"Disfruta de una noche inolvidable con m\u00fasica en vivo, deliciosa comida y grandes sorpresas. \u00a1No te lo pierdas!\",<!-- [et_pb_line_break_holder] -->                    eventDate: \"2025-12-25\",<!-- [et_pb_line_break_holder] -->                    eventTime: \"19:00\",<!-- [et_pb_line_break_holder] -->                    eventLocation: \"Sal\u00f3n Principal, Centro de Eventos\",<!-- [et_pb_line_break_holder] -->                    eventLocation2: \"\",<!-- [et_pb_line_break_holder] -->                    eventLocation3: \"\"<!-- [et_pb_line_break_holder] -->                },<!-- [et_pb_line_break_holder] -->                polisConference: {<!-- [et_pb_line_break_holder] -->                    eventLegend: \"\u00bfQu\u00e9 es el Programa FAES?\",<!-- [et_pb_line_break_holder] -->                    eventDescription: \"Es una iniciativa de la Fundaci\u00f3n FAES (Espa\u00f1a) que selecciona a l\u00edderes j\u00f3venes de Am\u00e9rica Latina para una semana intensiva de formaci\u00f3n en Bruselas y Madrid.\",<!-- [et_pb_line_break_holder] -->                    eventDate: \"2025-11-03\",<!-- [et_pb_line_break_holder] -->                    eventTime: \"09:00\",<!-- [et_pb_line_break_holder] -->                    eventLocation: \"Auditorio Central, Universidad XYZ\",<!-- [et_pb_line_break_holder] -->                    eventLocation2: \"Todos los gastos cubiertos.\",<!-- [et_pb_line_break_holder] -->                    eventLocation3: \"Bruselas y Madrid.\" \/\/ Example of a third line<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            templateSelect.addEventListener('change', () => {<!-- [et_pb_line_break_holder] -->                const selectedTemplate = templateSelect.value;<!-- [et_pb_line_break_holder] -->                if (selectedTemplate && selectedTemplate !== 'custom') {<!-- [et_pb_line_break_holder] -->                    const templateData = templates[selectedTemplate];<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLegend').value = templateData.eventLegend;<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventDescription').value = templateData.eventDescription;<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventDate').value = templateData.eventDate;<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventTime').value = templateData.eventTime;<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLocation').value = templateData.eventLocation;<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLocation2').value = templateData.eventLocation2 || ''; \/\/ Set optional field<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLocation3').value = templateData.eventLocation3 || ''; \/\/ Set optional field<!-- [et_pb_line_break_holder] -->                    generateInvitation(); \/\/ Generate preview immediately<!-- [et_pb_line_break_holder] -->                } else if (selectedTemplate === 'custom') {<!-- [et_pb_line_break_holder] -->                    \/\/ Clear fields for custom input<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLegend').value = '';<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventDescription').value = '';<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventDate').value = '';<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventTime').value = '';<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLocation').value = '';<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLocation2').value = '';<!-- [et_pb_line_break_holder] -->                    document.getElementById('eventLocation3').value = '';<!-- [et_pb_line_break_holder] -->                    previewImage.classList.add('hidden');<!-- [et_pb_line_break_holder] -->                    noPreviewMessage.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->                    downloadButton.disabled = true;<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            async function generateInvitation() {<!-- [et_pb_line_break_holder] -->                \/\/ Ensure fonts are loaded before drawing<!-- [et_pb_line_break_holder] -->                await document.fonts.ready;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                const eventDate = document.getElementById('eventDate').value;<!-- [et_pb_line_break_holder] -->                const eventTime = document.getElementById('eventTime').value;<!-- [et_pb_line_break_holder] -->                const eventLocation = document.getElementById('eventLocation').value;<!-- [et_pb_line_break_holder] -->                const eventLocation2 = document.getElementById('eventLocation2').value; \/\/ Get second location line<!-- [et_pb_line_break_holder] -->                const eventLocation3 = document.getElementById('eventLocation3').value; \/\/ Get third location line<!-- [et_pb_line_break_holder] -->                const eventLegend = document.getElementById('eventLegend').value;<!-- [et_pb_line_break_holder] -->                const eventDescription = document.getElementById('eventDescription').value;<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                \/\/ TODO: Paste your Polis logo URL here.<!-- [et_pb_line_break_holder] -->                \/\/ Example: const userLogoUrl = 'https:\/\/yourdomain.com\/wp-content\/uploads\/2025\/06\/footer.png';<!-- [et_pb_line_break_holder] -->                const userLogoUrl = 'https:\/\/polisecuador.org\/wp-content\/uploads\/2025\/07\/Logo-generador-1.png'; \/\/ Leave this empty by default. User will fill it.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Declare detailLineHeight at the top of the function<!-- [et_pb_line_break_holder] -->                const detailLineHeight = 60;<!-- [et_pb_line_break_holder] -->                \/\/ Content area padding and starting Y for text<!-- [et_pb_line_break_holder] -->                const contentLeftX = 120; \/\/ Left alignment for main text<!-- [et_pb_line_break_holder] -->                const contentWidth = canvas.width - (2 * contentLeftX);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Clear canvas<!-- [et_pb_line_break_holder] -->                ctx.clearRect(0, 0, canvas.width, canvas.height);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Draw white background<!-- [et_pb_line_break_holder] -->                ctx.fillStyle = WHITE_COLOR;<!-- [et_pb_line_break_holder] -->                ctx.fillRect(0, 0, canvas.width, canvas.height);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ --- Draw background shapes inspired by the example image ---<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Top right green rounded shape (large circle partially off-canvas)<!-- [et_pb_line_break_holder] -->                const greenCircleRadius = 400;<!-- [et_pb_line_break_holder] -->                drawCircle(ctx, canvas.width - 100, -100, greenCircleRadius, POLIS_GREEN);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Bottom purple semi-circle shape<!-- [et_pb_line_break_holder] -->                const purpleSemiCircleRadius = canvas.width * 0.7; \/\/ Large radius for a wide semi-circle<!-- [et_pb_line_break_holder] -->                const purpleSemiCircleX = canvas.width \/ 2;<!-- [et_pb_line_break_holder] -->                const purpleSemiCircleVisibleHeight = 250; \/\/ How much of the semi-circle is visible on canvas<!-- [et_pb_line_break_holder] -->                const purpleSemiCircleY = canvas.height + purpleSemiCircleRadius - purpleSemiCircleVisibleHeight; <!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                ctx.fillStyle = POLIS_PURPLE;<!-- [et_pb_line_break_holder] -->                ctx.beginPath();<!-- [et_pb_line_break_holder] -->                ctx.arc(purpleSemiCircleX, purpleSemiCircleY, purpleSemiCircleRadius, Math.PI, 2 * Math.PI, false); <!-- [et_pb_line_break_holder] -->                ctx.closePath();<!-- [et_pb_line_break_holder] -->                ctx.fill();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                let currentY = 250; \/\/ Start lower to accommodate top green shape<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Event Legend (Main Title)<!-- [et_pb_line_break_holder] -->                ctx.fillStyle = POLIS_PURPLE;<!-- [et_pb_line_break_holder] -->                ctx.font = '900 80px Montserrat'; \/\/ Extra bold for title<!-- [et_pb_line_break_holder] -->                ctx.textAlign = 'left'; \/\/ Left align<!-- [et_pb_line_break_holder] -->                const legendLineHeight = 90;<!-- [et_pb_line_break_holder] -->                const legendHeight = wrapText(ctx, eventLegend, contentLeftX, currentY, contentWidth, legendLineHeight);<!-- [et_pb_line_break_holder] -->                currentY += legendHeight + 50; \/\/ Space after title<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Event Description<!-- [et_pb_line_break_holder] -->                ctx.fillStyle = POLIS_PURPLE;<!-- [et_pb_line_break_holder] -->                ctx.font = '400 40px Montserrat'; \/\/ Regular for description<!-- [et_pb_line_break_holder] -->                ctx.textAlign = 'left'; \/\/ Left align<!-- [et_pb_line_break_holder] -->                const descriptionLineHeight = 50;<!-- [et_pb_line_break_holder] -->                const descriptionHeight = wrapText(ctx, eventDescription, contentLeftX, currentY, contentWidth - 50, descriptionLineHeight);<!-- [et_pb_line_break_holder] -->                currentY += descriptionHeight + 40; \/\/ Reduced space after description to bring next section closer<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Event Details (Date, Time, Location)<!-- [et_pb_line_break_holder] -->                \/\/ Date and Time with green background (centered for this block)<!-- [et_pb_line_break_holder] -->                const dateTimeText = `Fecha: ${eventDate} | Hora: ${eventTime}`;<!-- [et_pb_line_break_holder] -->                const dateTimeFont = '700 32px Montserrat'; \/\/ Smaller font for date\/time<!-- [et_pb_line_break_holder] -->                ctx.font = dateTimeFont;<!-- [et_pb_line_break_holder] -->                const dateTimeMetrics = ctx.measureText(dateTimeText);<!-- [et_pb_line_break_holder] -->                const dateTimeWidth = dateTimeMetrics.width + 80; \/\/ Add padding<!-- [et_pb_line_break_holder] -->                const dateTimeHeight = 80;<!-- [et_pb_line_break_holder] -->                const dateTimeX = contentLeftX; \/\/ Align with other left-aligned text<!-- [et_pb_line_break_holder] -->                const dateTimeY = currentY - (dateTimeHeight \/ 2) + 10; \/\/ Center vertically with text<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                ctx.fillStyle = POLIS_GREEN;<!-- [et_pb_line_break_holder] -->                roundRect(ctx, dateTimeX, dateTimeY, dateTimeWidth, dateTimeHeight, 40); \/\/ Rounded green background<!-- [et_pb_line_break_holder] -->                ctx.fill();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                ctx.fillStyle = WHITE_COLOR; \/\/ White text on green background<!-- [et_pb_line_break_holder] -->                ctx.textAlign = 'center'; \/\/ Center text within its green box<!-- [et_pb_line_break_holder] -->                \/\/ Calculate precise vertical center for text<!-- [et_pb_line_break_holder] -->                const textBaselineOffset = (dateTimeHeight - (ctx.measureText('M').width * (32\/ctx.font.match(\/\\d+\/)[0]))) \/ 2; \/\/ Approximate text height<!-- [et_pb_line_break_holder] -->                ctx.fillText(dateTimeText, dateTimeX + (dateTimeWidth \/ 2), dateTimeY + dateTimeHeight - textBaselineOffset - 5); \/\/ Center X, adjust Y for vertical centering<!-- [et_pb_line_break_holder] -->                currentY += detailLineHeight + 60; \/\/ Increased space after date\/time block for more separation<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                ctx.fillStyle = POLIS_PURPLE; \/\/ Purple text for location<!-- [et_pb_line_break_holder] -->                const locationFont = '700 34px Montserrat'; \/\/ Slightly smaller font for location<!-- [et_pb_line_break_holder] -->                ctx.font = locationFont;<!-- [et_pb_line_break_holder] -->                ctx.textAlign = 'left'; \/\/ Left align<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                \/\/ Draw first line of location<!-- [et_pb_line_break_holder] -->                ctx.fillText(`Lugar: ${eventLocation}`, contentLeftX, currentY);<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                \/\/ Calculate indent for the subsequent lines based on the width of \"Lugar: \"<!-- [et_pb_line_break_holder] -->                const lugarLabelWidth = ctx.measureText('Lugar: ').width;<!-- [et_pb_line_break_holder] -->                const indentAmount = lugarLabelWidth; \/\/ Indent by the width of \"Lugar: \"<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                currentY += detailLineHeight * 0.8; \/\/ Adjust line height for location lines<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Draw second line of location if available with indent<!-- [et_pb_line_break_holder] -->                if (eventLocation2) {<!-- [et_pb_line_break_holder] -->                    ctx.fillText(eventLocation2, contentLeftX + indentAmount, currentY);<!-- [et_pb_line_break_holder] -->                    currentY += detailLineHeight * 0.8; \/\/ Adjust line height for location lines<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                \/\/ Draw third line of location if available with indent<!-- [et_pb_line_break_holder] -->                if (eventLocation3) {<!-- [et_pb_line_break_holder] -->                    ctx.fillText(eventLocation3, contentLeftX + indentAmount, currentY);<!-- [et_pb_line_break_holder] -->                    currentY += detailLineHeight * 0.8; \/\/ Adjust line height for location lines<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                currentY += 100; \/\/ Space before logo\/footer, adjusted for potential additional lines<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Polis Logo (centered within the purple bottom shape)<!-- [et_pb_line_break_holder] -->                const logoDesiredHeight = 150; <!-- [et_pb_line_break_holder] -->                const logoDesiredWidth = 300; <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Calculate logo position within the purple shape<!-- [et_pb_line_break_holder] -->                const logoCenterY = purpleSemiCircleY - purpleSemiCircleRadius + (purpleSemiCircleVisibleHeight \/ 2); \/\/ Center of the visible purple area<!-- [et_pb_line_break_holder] -->                const logoTextY = logoCenterY + 20; \/\/ Adjust for text baseline (for placeholder)<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                if (userLogoUrl) { \/\/ Only attempt to load image if user has provided a URL<!-- [et_pb_line_break_holder] -->                    const img = new Image();<!-- [et_pb_line_break_holder] -->                    img.crossOrigin = 'anonymous'; <!-- [et_pb_line_break_holder] -->                    img.src = userLogoUrl;<!-- [et_pb_line_break_holder] -->                    await new Promise((resolve, reject) => {<!-- [et_pb_line_break_holder] -->                        img.onload = () => {<!-- [et_pb_line_break_holder] -->                            \/\/ Scale logo to fit while maintaining aspect ratio, within a max width\/height<!-- [et_pb_line_break_holder] -->                            const maxLogoWidth = canvas.width * 0.4; \/\/ Max 40% of canvas width<!-- [et_pb_line_break_holder] -->                            const maxLogoHeight = 100; \/\/ Max 100px height for the actual image<!-- [et_pb_line_break_holder] -->                            let actualLogoWidth = img.width;<!-- [et_pb_line_break_holder] -->                            let actualLogoHeight = img.height;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                            if (actualLogoWidth > maxLogoWidth) {<!-- [et_pb_line_break_holder] -->                                actualLogoHeight = (maxLogoWidth \/ actualLogoWidth) * actualLogoHeight;<!-- [et_pb_line_break_holder] -->                                actualLogoWidth = maxLogoWidth;<!-- [et_pb_line_break_holder] -->                            }<!-- [et_pb_line_break_holder] -->                            if (actualLogoHeight > maxLogoHeight) {<!-- [et_pb_line_break_holder] -->                                actualLogoWidth = (maxLogoHeight \/ actualLogoHeight) * actualLogoWidth;<!-- [et_pb_line_break_holder] -->                                actualLogoHeight = maxLogoHeight;<!-- [et_pb_line_break_holder] -->                            }<!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            const logoX = canvas.width \/ 2 - (actualLogoWidth \/ 2); \/\/ Center horizontally on canvas<!-- [et_pb_line_break_holder] -->                            const logoY = logoCenterY - (actualLogoHeight \/ 2); \/\/ Center vertically in purple shape<!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            ctx.drawImage(img, logoX, logoY, actualLogoWidth, actualLogoHeight);<!-- [et_pb_line_break_holder] -->                            resolve();<!-- [et_pb_line_break_holder] -->                        };<!-- [et_pb_line_break_holder] -->                        img.onerror = () => {<!-- [et_pb_line_break_holder] -->                            console.error('Error loading logo image. Using placeholder.');<!-- [et_pb_line_break_holder] -->                            \/\/ Fallback to text logo if image fails or userLogoUrl is empty<!-- [et_pb_line_break_holder] -->                            ctx.fillStyle = WHITE_COLOR;<!-- [et_pb_line_break_holder] -->                            ctx.font = '900 80px Montserrat'; <!-- [et_pb_line_break_holder] -->                            ctx.textAlign = 'center';<!-- [et_pb_line_break_holder] -->                            ctx.fillText('POLIS', canvas.width \/ 2, logoTextY); <!-- [et_pb_line_break_holder] -->                            resolve(); <!-- [et_pb_line_break_holder] -->                        };<!-- [et_pb_line_break_holder] -->                    });<!-- [et_pb_line_break_holder] -->                } else {<!-- [et_pb_line_break_holder] -->                    \/\/ Draw placeholder text if no URL is provided<!-- [et_pb_line_break_holder] -->                    ctx.fillStyle = WHITE_COLOR;<!-- [et_pb_line_break_holder] -->                    ctx.font = '900 80px Montserrat'; <!-- [et_pb_line_break_holder] -->                    ctx.textAlign = 'center';<!-- [et_pb_line_break_holder] -->                    ctx.fillText('POLIS', canvas.width \/ 2, logoTextY); <!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                \/\/ Removed Social Media Icons and Website URL drawing code<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                \/\/ Update preview image<!-- [et_pb_line_break_holder] -->                previewImage.src = canvas.toDataURL('image\/jpeg', 0.9); \/\/ Quality 0.9<!-- [et_pb_line_break_holder] -->                previewImage.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->                noPreviewMessage.classList.add('hidden');<!-- [et_pb_line_break_holder] -->                downloadButton.disabled = false;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Event Listeners<!-- [et_pb_line_break_holder] -->            generateButton.addEventListener('click', generateInvitation);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Trigger generation on form input changes for live preview (optional, but good UX)<!-- [et_pb_line_break_holder] -->            form.addEventListener('input', () => {<!-- [et_pb_line_break_holder] -->                if (form.checkValidity() && templateSelect.value !== '') { \/\/ Only generate if form is valid and template selected<!-- [et_pb_line_break_holder] -->                    generateInvitation();<!-- [et_pb_line_break_holder] -->                } else {<!-- [et_pb_line_break_holder] -->                    previewImage.classList.add('hidden');<!-- [et_pb_line_break_holder] -->                    noPreviewMessage.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->                    downloadButton.disabled = true;<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            downloadButton.addEventListener('click', () => {<!-- [et_pb_line_break_holder] -->                const link = document.createElement('a');<!-- [et_pb_line_break_holder] -->                link.download = 'invitacion_polis.jpg';<!-- [et_pb_line_break_holder] -->                link.href = canvas.toDataURL('image\/jpeg', 0.9);<!-- [et_pb_line_break_holder] -->                document.body.appendChild(link);<!-- [et_pb_line_break_holder] -->                link.click();<!-- [et_pb_line_break_holder] -->                document.body.removeChild(link);<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            \/\/ Initial check for preview message<!-- [et_pb_line_break_holder] -->            if (!previewImage.src || previewImage.src === window.location.href) {<!-- [et_pb_line_break_holder] -->                previewImage.classList.add('hidden');<!-- [et_pb_line_break_holder] -->                noPreviewMessage.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    <\/script><!-- [et_pb_line_break_holder] --><\/body><!-- [et_pb_line_break_holder] --><\/html>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n<span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-1707","page","type-page","status-publish","hentry"],"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Img Polis - Polis Ecuador<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/polisecuador.org\/en\/img\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Img Polis - Polis Ecuador\" \/>\n<meta property=\"og:url\" content=\"https:\/\/polisecuador.org\/en\/img\/\" \/>\n<meta property=\"og:site_name\" content=\"Polis Ecuador\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/polisecuador\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-07T13:14:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/polisecuador.org\/wp-content\/uploads\/2024\/05\/Sin-titulo-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@polisecuador\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/polisecuador.org\\\/img\\\/\",\"url\":\"https:\\\/\\\/polisecuador.org\\\/img\\\/\",\"name\":\"Img Polis - Polis Ecuador\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/polisecuador.org\\\/#website\"},\"datePublished\":\"2025-07-22T01:10:33+00:00\",\"dateModified\":\"2026-04-07T13:14:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/polisecuador.org\\\/img\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/polisecuador.org\\\/img\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/polisecuador.org\\\/img\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/polisecuador.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Img Polis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/polisecuador.org\\\/#website\",\"url\":\"https:\\\/\\\/polisecuador.org\\\/\",\"name\":\"Polis Ecuador\",\"description\":\"Academia de Formaci\u00f3n Pol\u00edtica\",\"publisher\":{\"@id\":\"https:\\\/\\\/polisecuador.org\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/polisecuador.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/polisecuador.org\\\/#organization\",\"name\":\"Polis Ecuador\",\"url\":\"https:\\\/\\\/polisecuador.org\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/polisecuador.org\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/polisecuador.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/polis-web.svg\",\"contentUrl\":\"https:\\\/\\\/polisecuador.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/polis-web.svg\",\"width\":1391.69000000000005456968210637569427490234375,\"height\":754.1299999999999954525264911353588104248046875,\"caption\":\"Polis Ecuador\"},\"image\":{\"@id\":\"https:\\\/\\\/polisecuador.org\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/polisecuador\",\"https:\\\/\\\/x.com\\\/polisecuador\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Img Polis - Polis Ecuador","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/polisecuador.org\/en\/img\/","og_locale":"en_US","og_type":"article","og_title":"Img Polis - Polis Ecuador","og_url":"https:\/\/polisecuador.org\/en\/img\/","og_site_name":"Polis Ecuador","article_publisher":"https:\/\/www.facebook.com\/polisecuador","article_modified_time":"2026-04-07T13:14:47+00:00","og_image":[{"width":1500,"height":500,"url":"https:\/\/polisecuador.org\/wp-content\/uploads\/2024\/05\/Sin-titulo-2.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@polisecuador","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/polisecuador.org\/img\/","url":"https:\/\/polisecuador.org\/img\/","name":"Img Polis - Polis Ecuador","isPartOf":{"@id":"https:\/\/polisecuador.org\/#website"},"datePublished":"2025-07-22T01:10:33+00:00","dateModified":"2026-04-07T13:14:47+00:00","breadcrumb":{"@id":"https:\/\/polisecuador.org\/img\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/polisecuador.org\/img\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/polisecuador.org\/img\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/polisecuador.org\/"},{"@type":"ListItem","position":2,"name":"Img Polis"}]},{"@type":"WebSite","@id":"https:\/\/polisecuador.org\/#website","url":"https:\/\/polisecuador.org\/","name":"Polis Ecuador","description":"Academia de Formaci\u00f3n Pol\u00edtica","publisher":{"@id":"https:\/\/polisecuador.org\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/polisecuador.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/polisecuador.org\/#organization","name":"Polis Ecuador","url":"https:\/\/polisecuador.org\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/polisecuador.org\/#\/schema\/logo\/image\/","url":"https:\/\/polisecuador.org\/wp-content\/uploads\/2023\/04\/polis-web.svg","contentUrl":"https:\/\/polisecuador.org\/wp-content\/uploads\/2023\/04\/polis-web.svg","width":1391.69000000000005456968210637569427490234375,"height":754.1299999999999954525264911353588104248046875,"caption":"Polis Ecuador"},"image":{"@id":"https:\/\/polisecuador.org\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/polisecuador","https:\/\/x.com\/polisecuador"]}]}},"_links":{"self":[{"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/pages\/1707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/comments?post=1707"}],"version-history":[{"count":0,"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/pages\/1707\/revisions"}],"wp:attachment":[{"href":"https:\/\/polisecuador.org\/en\/wp-json\/wp\/v2\/media?parent=1707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}