
{"id":1968,"date":"2026-09-24T19:34:52","date_gmt":"2026-09-24T17:34:52","guid":{"rendered":"https:\/\/pozmvm.sedatu.gob.mx\/?page_id=1968"},"modified":"2026-09-24T19:35:18","modified_gmt":"2026-09-24T17:35:18","slug":"calendariopu","status":"publish","type":"page","link":"https:\/\/pozmvm.sedatu.gob.mx\/?page_id=1968","title":{"rendered":"Calendariopu"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1968\" class=\"elementor elementor-1968\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8db6a88 e-flex e-con-boxed e-con e-parent\" data-id=\"8db6a88\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e13f248 elementor-widget elementor-widget-heading\" data-id=\"e13f248\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><span style=\"font-family: &#039;PatriaRegular&#039;, sans-serif\">\n  <b>Consulta P\u00fablica<\/b>\n<\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-61ad65d e-flex e-con-boxed e-con e-parent\" data-id=\"61ad65d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e929a98 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"e929a98\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c52c1a6 e-flex e-con-boxed e-con e-parent\" data-id=\"c52c1a6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9db06bb elementor-widget elementor-widget-image\" data-id=\"9db06bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1780\" height=\"594\" src=\"https:\/\/pozmvm.sedatu.gob.mx\/wp-content\/uploads\/2026\/09\/Captura-de-pantalla-2026-09-09-110201.png\" class=\"attachment-full size-full wp-image-1957\" alt=\"\" srcset=\"https:\/\/pozmvm.sedatu.gob.mx\/wp-content\/uploads\/2026\/09\/Captura-de-pantalla-2026-09-09-110201.png 1780w, https:\/\/pozmvm.sedatu.gob.mx\/wp-content\/uploads\/2026\/09\/Captura-de-pantalla-2026-09-09-110201-300x100.png 300w, https:\/\/pozmvm.sedatu.gob.mx\/wp-content\/uploads\/2026\/09\/Captura-de-pantalla-2026-09-09-110201-1024x342.png 1024w, https:\/\/pozmvm.sedatu.gob.mx\/wp-content\/uploads\/2026\/09\/Captura-de-pantalla-2026-09-09-110201-768x256.png 768w, https:\/\/pozmvm.sedatu.gob.mx\/wp-content\/uploads\/2026\/09\/Captura-de-pantalla-2026-09-09-110201-1536x513.png 1536w\" sizes=\"(max-width: 1780px) 100vw, 1780px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4428d2e e-flex e-con-boxed e-con e-parent\" data-id=\"4428d2e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f25dbb elementor-widget elementor-widget-heading\" data-id=\"0f25dbb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span style=\"font-family:&#039;PatriaRegular&#039; !important\">\n  <b>Sedes y fechas<\/b>\n<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-64b1ea9 e-flex e-con-boxed e-con e-parent\" data-id=\"64b1ea9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bb1aa1a elementor-widget elementor-widget-text-editor\" data-id=\"bb1aa1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Conoce el calendario de actividades p\u00fablicas en tu entidad.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cd96c43 elementor-widget elementor-widget-html\" data-id=\"cd96c43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Calendario de Eventos - Zona Metropolitana<\/title>\r\n    <!-- Google Fonts: Montserrat -->\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n    <style>\r\n        :root {\r\n            --color-primary: #611232; \/* Guinda institucional *\/\r\n            --color-secondary: #b38e5d; \/* Tono arena\/dorado *\/\r\n            --color-conv: #2d5a4c; \/* Verde conversatorios *\/\r\n            --color-bg-header: #355e51; \/* Verde encabezado principal *\/\r\n            --color-table-header: #d4c3a3; \/* Arena claro para cabeceras de d\u00edas *\/\r\n            --color-border: #cccccc;\r\n        }\r\n\r\n        body {\r\n            font-family: 'Montserrat', sans-serif;\r\n            background-color: #f9f9f9;\r\n            color: #333333;\r\n            margin: 0;\r\n            padding: 20px;\r\n        }\r\n\r\n        .container {\r\n            max-width: 1000px;\r\n            margin: 0 auto;\r\n        }\r\n\r\n        \/* Filtros Superiores (Regiones) *\/\r\n        .filter-main-container {\r\n            text-align: center;\r\n            margin-bottom: 25px;\r\n        }\r\n\r\n        .btn-main-region {\r\n            background-color: #ffffff;\r\n            color: #333;\r\n            font-family: 'Montserrat', sans-serif;\r\n            font-weight: 600;\r\n            font-size: 16px;\r\n            padding: 12px 30px;\r\n            border: 1px solid var(--color-border);\r\n            border-radius: 25px;\r\n            cursor: pointer;\r\n            box-shadow: 0 2px 5px rgba(0,0,0,0.1);\r\n            margin-bottom: 20px;\r\n            display: inline-block;\r\n            text-decoration: underline;\r\n            transition: all 0.2s ease;\r\n        }\r\n\r\n        .btn-main-region.active {\r\n            background-color: var(--color-bg-header);\r\n            color: white;\r\n            border-color: var(--color-bg-header);\r\n            box-shadow: 0 2px 5px rgba(0,0,0,0.2);\r\n        }\r\n\r\n        .region-filters {\r\n            display: flex;\r\n            justify-content: center;\r\n            gap: 15px;\r\n            flex-wrap: wrap;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .btn-region {\r\n            background-color: #ffffff;\r\n            color: #333333;\r\n            font-family: 'Montserrat', sans-serif;\r\n            font-weight: 500;\r\n            font-size: 14px;\r\n            padding: 10px 22px;\r\n            border: 1px solid var(--color-border);\r\n            border-radius: 20px;\r\n            cursor: pointer;\r\n            box-shadow: 0 1px 3px rgba(0,0,0,0.1);\r\n            transition: all 0.2s ease;\r\n        }\r\n\r\n        .btn-region:hover {\r\n            background-color: #f0f0f0;\r\n        }\r\n\r\n        .btn-region.active {\r\n            background-color: var(--color-bg-header);\r\n            border-color: var(--color-bg-header);\r\n            color: white;\r\n            font-weight: 600;\r\n            box-shadow: 0 2px 5px rgba(53,94,81,0.3);\r\n        }\r\n\r\n        \/* Filtros de Categor\u00edas (Leyenda interactiva) *\/\r\n        .category-filters {\r\n            display: flex;\r\n            justify-content: flex-start;\r\n            gap: 15px;\r\n            flex-wrap: wrap;\r\n            margin-bottom: 30px;\r\n            padding-left: 5px;\r\n        }\r\n\r\n        .cat-pill {\r\n            display: flex;\r\n            align-items: center;\r\n            background-color: white;\r\n            border: 1px solid var(--color-border);\r\n            padding: 6px 14px;\r\n            border-radius: 20px;\r\n            cursor: pointer;\r\n            font-size: 13px;\r\n            font-weight: 500;\r\n            box-shadow: 0 1px 2px rgba(0,0,0,0.05);\r\n            transition: all 0.2s;\r\n        }\r\n\r\n        .cat-pill.inactive {\r\n            opacity: 0.4;\r\n            background-color: #eaeaea;\r\n        }\r\n\r\n        .dot {\r\n            width: 12px;\r\n            height: 12px;\r\n            border-radius: 50%;\r\n            margin-right: 8px;\r\n            display: inline-block;\r\n        }\r\n\r\n        .dot-audiencia { background-color: var(--color-primary); }\r\n        .dot-espacios { background-color: var(--color-primary); }\r\n        .dot-foro { background-color: var(--color-secondary); }\r\n        .dot-conversatorio { background-color: var(--color-conv); }\r\n\r\n        \/* Estilos del Calendario por Mes *\/\r\n        .month-section {\r\n            background: white;\r\n            border-radius: 8px;\r\n            overflow: hidden;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.08);\r\n            margin-bottom: 40px;\r\n        }\r\n\r\n        .month-header {\r\n            background-color: var(--color-primary);\r\n            color: white;\r\n            text-align: center;\r\n            font-size: 20px;\r\n            font-weight: 700;\r\n            padding: 12px;\r\n            letter-spacing: 0.5px;\r\n        }\r\n\r\n        .calendar-table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            table-layout: fixed;\r\n        }\r\n\r\n        .calendar-table th {\r\n            background-color: #f4efe6;\r\n            color: #333;\r\n            font-size: 13px;\r\n            font-weight: 600;\r\n            text-align: center;\r\n            padding: 10px 4px;\r\n            border: 1px solid #e0dcd0;\r\n        }\r\n\r\n        .calendar-table td {\r\n            height: 85px;\r\n            vertical-align: top;\r\n            border: 1px solid #e0dcd0;\r\n            padding: 4px;\r\n            background-color: #ffffff;\r\n            position: relative;\r\n        }\r\n\r\n        .calendar-table td.empty-day {\r\n            background-color: #fbfbfb;\r\n        }\r\n\r\n        .day-number {\r\n            font-size: 12px;\r\n            font-weight: 600;\r\n            color: #555;\r\n            margin-bottom: 3px;\r\n            display: block;\r\n        }\r\n\r\n        \/* Tarjetas de Eventos *\/\r\n        .event-badge {\r\n            display: flex;\r\n            align-items: center;\r\n            font-size: 10px;\r\n            font-weight: 500;\r\n            color: white;\r\n            padding: 3px 6px;\r\n            border-radius: 12px;\r\n            margin-bottom: 2px;\r\n            white-space: nowrap;\r\n            overflow: hidden;\r\n            text-overflow: ellipsis;\r\n            box-shadow: 0 1px 2px rgba(0,0,0,0.1);\r\n            cursor: pointer;\r\n            transition: transform 0.1s ease, filter 0.1s ease;\r\n        }\r\n\r\n        .event-badge:hover {\r\n            transform: scale(1.02);\r\n            filter: brightness(1.1);\r\n        }\r\n\r\n        .event-badge .dot-mini {\r\n            width: 6px;\r\n            height: 6px;\r\n            background-color: white;\r\n            border-radius: 50%;\r\n            margin-right: 5px;\r\n            flex-shrink: 0;\r\n        }\r\n\r\n        .event-audiencia { background-color: var(--color-primary); }\r\n        .event-espacios { background-color: var(--color-primary); }\r\n        .event-foro { background-color: var(--color-secondary); }\r\n        .event-conversatorio { background-color: var(--color-conv); }\r\n\r\n        \/* Estilos del Modal *\/\r\n        .modal-overlay {\r\n            display: none;\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background-color: rgba(0, 0, 0, 0.5);\r\n            z-index: 1000;\r\n            justify-content: center;\r\n            align-items: center;\r\n            animation: fadeIn 0.2s ease;\r\n        }\r\n\r\n        .modal-container {\r\n            background: white;\r\n            width: 90%;\r\n            max-width: 550px;\r\n            border-radius: 10px;\r\n            box-shadow: 0 5px 15px rgba(0,0,0,0.3);\r\n            overflow: hidden;\r\n            animation: scaleUp 0.2s ease;\r\n            max-height: 90vh;\r\n            display: flex;\r\n            flex-direction: column;\r\n        }\r\n\r\n        .modal-header {\r\n            background-color: var(--color-primary);\r\n            color: white;\r\n            padding: 15px 20px;\r\n            display: flex;\r\n            justify-content: space-between;\r\n            align-items: center;\r\n        }\r\n\r\n        .modal-header h3 {\r\n            margin: 0;\r\n            font-size: 16px;\r\n            font-weight: 600;\r\n        }\r\n\r\n        .modal-close {\r\n            background: none;\r\n            border: none;\r\n            color: white;\r\n            font-size: 20px;\r\n            cursor: pointer;\r\n            font-weight: bold;\r\n        }\r\n\r\n        .modal-body {\r\n            padding: 20px;\r\n            font-size: 13px;\r\n            color: #444;\r\n            line-height: 1.5;\r\n            overflow-y: auto;\r\n        }\r\n\r\n        .modal-body p {\r\n            margin: 8px 0;\r\n        }\r\n\r\n        .modal-body strong {\r\n            color: var(--color-primary);\r\n        }\r\n\r\n        .modal-body a {\r\n            color: var(--color-primary);\r\n            word-break: break-all;\r\n        }\r\n\r\n        .modal-footer {\r\n            padding: 10px 20px 20px;\r\n            text-align: right;\r\n            border-top: 1px solid #eee;\r\n        }\r\n\r\n        .btn-modal-close {\r\n            background-color: #666;\r\n            color: white;\r\n            border: none;\r\n            padding: 8px 16px;\r\n            border-radius: 5px;\r\n            cursor: pointer;\r\n            font-size: 13px;\r\n            font-family: 'Montserrat', sans-serif;\r\n        }\r\n\r\n        .btn-modal-close:hover {\r\n            background-color: #444;\r\n        }\r\n\r\n        @keyframes fadeIn {\r\n            from { opacity: 0; }\r\n            to { opacity: 1; }\r\n        }\r\n\r\n        @keyframes scaleUp {\r\n            from { transform: scale(0.95); }\r\n            to { transform: scale(1); }\r\n        }\r\n\r\n        \/* Responsive *\/\r\n        @media (max-width: 768px) {\r\n            .calendar-table td {\r\n                height: 70px;\r\n                padding: 2px;\r\n            }\r\n            .event-badge {\r\n                font-size: 9px;\r\n                padding: 2px 4px;\r\n            }\r\n            .btn-region {\r\n                padding: 8px 14px;\r\n                font-size: 13px;\r\n            }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"container\">\r\n\r\n    <!-- Filtros Superiores -->\r\n    <div class=\"filter-main-container\">\r\n        <button class=\"btn-main-region active\" id=\"btn-all\" onclick=\"filterRegion('all', this)\">Toda la Zona Metropolitana<\/button>\r\n        <div class=\"region-filters\">\r\n            <button class=\"btn-region\" id=\"btn-cdmx\" onclick=\"filterRegion('cdmx', this)\">Ciudad de M\u00e9xico<\/button>\r\n            <button class=\"btn-region\" id=\"btn-edomex\" onclick=\"filterRegion('edomex', this)\">Estado de M\u00e9xico<\/button>\r\n            <button class=\"btn-region\" id=\"btn-hidalgo\" onclick=\"filterRegion('hidalgo', this)\">Hidalgo<\/button>\r\n            <button class=\"btn-region\" id=\"btn-morelos\" onclick=\"filterRegion('morelos', this)\">Morelos<\/button>\r\n            <button class=\"btn-region\" id=\"btn-sedatu\" onclick=\"filterRegion('sedatu', this)\">SEDATU<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Leyenda \/ Filtros de Categor\u00edas -->\r\n    <div class=\"category-filters\">\r\n        <div class=\"cat-pill\" id=\"cat-audiencia\" onclick=\"toggleCategory('audiencia')\">\r\n            <span class=\"dot dot-audiencia\"><\/span> Audiencias \/ Espacios\r\n        <\/div>\r\n        <div class=\"cat-pill\" id=\"cat-foro\" onclick=\"toggleCategory('foro')\">\r\n            <span class=\"dot dot-foro\"><\/span> Foros Institucionales\r\n        <\/div>\r\n        <div class=\"cat-pill\" id=\"cat-conversatorio\" onclick=\"toggleCategory('conversatorio')\">\r\n            <span class=\"dot dot-conversatorio\"><\/span> Conversatorios\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- CONTENEDOR DE CALENDARIOS -->\r\n    <div id=\"calendars-container\"><\/div>\r\n\r\n<\/div>\r\n\r\n<!-- VENTANA MODAL -->\r\n<div class=\"modal-overlay\" id=\"eventModal\" onclick=\"closeModalOnOutside(event)\">\r\n    <div class=\"modal-container\">\r\n        <div class=\"modal-header\">\r\n            <h3 id=\"modalTitle\">Detalles del Evento<\/h3>\r\n            <button class=\"modal-close\" onclick=\"closeModal()\">&times;<\/button>\r\n        <\/div>\r\n        <div class=\"modal-body\" id=\"modalBody\">\r\n            <!-- Se llena din\u00e1micamente con JS -->\r\n        <\/div>\r\n        <div class=\"modal-footer\">\r\n            <button class=\"btn-modal-close\" onclick=\"closeModal()\">Cerrar<\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n    \/\/ Base de datos integrada con la informaci\u00f3n oficial proporcionada\r\n    const eventsData = [\r\n        \/\/ --- CIUDAD DE M\u00c9XICO ---\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'conversatorio', title: 'Conversatorio', day: 24, month: 9, hora: 'Pendiente', municipio: 'Benito Ju\u00e1rez', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'espacios', title: 'Espacios de dialogo e intercambio', day: 1, month: 10, hora: 'Pendiente', municipio: 'Azcapotzalco', sede: 'Utop\u00eda Ceylan', direccion: 'Calle Norte 45, esquina con blvd Ferrocarriles y, Avenida Ceylan, Azcapotzalco, 02660 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/8VsPjr9zCx4N45wQ9', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 6, month: 10, hora: 'Pendiente', municipio: 'Benito Ju\u00e1rez', sede: 'Pilares Portales', direccion: 'Eje 7A Sur 52, Portales Sur, Benito Ju\u00e1rez, 03300 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/SruGxhqioiDnDQdr9', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 8, month: 10, hora: 'Pendiente', municipio: 'Cuauht\u00e9moc', sede: 'Pilares Atlampa', direccion: 'C. Cedro 561, Atlampa, Cuauht\u00e9moc, 06450 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/x1FBCkVqDbVckUhy9', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 13, month: 10, hora: 'Pendiente', municipio: 'La Magdalena Contreras', sede: 'Utop\u00eda Oyamel Cen Tlalli', direccion: 'Av. Ojo de Agua, San Bernab\u00e9 Ocotepec, Huayatla, La Magdalena Contreras, 10350 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/4qXp9X5EAgTUWhaK8', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 16, month: 10, hora: 'Pendiente', municipio: 'Tl\u00e1huac', sede: 'Sala de Artes Centenario de la Revoluci\u00f3n', direccion: 'Heberto Castillo, Miguel Hidalgo, Tl\u00e1huac, 13200 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/kD9QLfBdSwAT4ftm9', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 23, month: 10, hora: 'Pendiente', municipio: 'Iztacalco', sede: 'Parque Pantitl\u00e1n', direccion: 'Calle 6 353, Agr\u00edcola Pantitl\u00e1n, Iztacalco, 08100 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/QfD7EWC3JSczYa7D6', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 26, month: 10, hora: 'Pendiente', municipio: 'Gustavo A. Madero', sede: 'Centro Cultural Futurama', direccion: 'Cda. de Otavalo 15, Lindavista, Gustavo A. Madero, 07300 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/oaoRb4utnoEf37cw6', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 4, month: 11, hora: 'Pendiente', municipio: '\u00c1lvaro Obreg\u00f3n', sede: 'Parque de la Juventud', direccion: 'Calle 10, Tolteca, \u00c1lvaro Obreg\u00f3n, 01150 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/f1ixeTNhjbu4seoR6', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 6, month: 11, hora: 'Pendiente', municipio: 'Cuajimalpa de Morelos', sede: 'UAM Cuajimalpa', direccion: 'Vasco de Quiroga 4871, Contadero, Cuajimalpa de Morelos, 05348 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/TQihDxuDzzo1W5WU8', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 10, month: 11, hora: 'Pendiente', municipio: 'Pendiente', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 13, month: 11, hora: 'Pendiente', municipio: 'Tlalpan', sede: 'Casa de Cultura de Tlalpan', direccion: 'Camino Sta. Teresa S\/N, Parque Nacional Bosque del Pedregal, Tlalpan, 14010 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/DUxaKLKWJo7ZY2TeA', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n        { entity: 'Ciudad de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 17, month: 11, hora: 'Pendiente', municipio: 'Iztapalapa', sede: 'Auditorio Fausto Vega', direccion: 'C. Alfonso Toro 1759, Escuadr\u00f3n 201, Iztapalapa, 09060 Ciudad de M\u00e9xico, CDMX', maps: 'https:\/\/maps.app.goo.gl\/k5JfjiXNFBwos7Zb6', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'cdmx' },\r\n\r\n        \/\/ --- ESTADO DE M\u00c9XICO ---\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 28, month: 9, hora: '11:00 horas', municipio: 'Atizap\u00e1n de Zaragoza*', sede: 'Centro Regional de Cultura Atizap\u00e1n de Zaragoza', direccion: 'Calz. S. Mateo 42, San Juan Bosco 1, 52942 Cdad. L\u00f3pez Mateos, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/FLD2cA94dEpNc4QRA', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 30, month: 9, hora: '11:00 horas', municipio: 'Huehuetoca*', sede: 'Casa de Cultura \"Sor Juana In\u00e9s de la Cruz\"', direccion: 'Manzana 001, Cabecera Municipal, 54680 Huehuetoca, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/kduDqkfYUzLDmZFx8', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 5, month: 10, hora: '11:00 horas', municipio: 'Isidro Fabela*', sede: 'Explanada del Ayuntamiento \/ Casa de Cultura', direccion: 'Av. Constituci\u00f3n 1, 54480 Col. Laureles, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/vKrCMH97zJrsjiZF6', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 6, month: 10, hora: '11:00 horas', municipio: 'Tec\u00e1mac', sede: 'Auditorio Municipal', direccion: 'C. Jorge Jim\u00e9nez Cant\u00fa Manzana 003, San Martin Azcatepec, 55748 Tec\u00e1mac de Felipe Villanueva, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/VZo2Bq7sRattqRCx7', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 12, month: 10, hora: '11:00 horas', municipio: 'Chiautla', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 20, month: 10, hora: '11:00 horas', municipio: 'Temascalapa', sede: 'Casa de Cultura \"Temazcalli\"', direccion: '55989 Temascalapa, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/yaYhihgqsa36ACTq9', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 21, month: 10, hora: '11:00 horas', municipio: 'Ecatepec de Morelos', sede: 'Explanada del Palacio Municipal \/ Centro Cultural y Recreativo', direccion: 'Adolfo L\u00f3pez Mateos 28, San Crist\u00f3bal Centro, 55000 Ecatepec de Morelos, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/6w8BR9RDMxeui5p67', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 22, month: 10, hora: '11:00 horas', municipio: 'Villa del Carb\u00f3n*', sede: 'Casa de la Cultura Dr. Jorge Jim\u00e9nez Cant\u00fa', direccion: 'MEX 5 Manzana 019, Villa del Carbon, 54300 Villa del Carb\u00f3n, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/3zdXUwmLi2zdPsH17', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 27, month: 10, hora: '11:00 horas', municipio: 'Ozumba', sede: 'Explanada del Palacio Municipal \/ Casa De Cultura Jos\u00e9 Antonio Alzate', direccion: 'Emiliano Zapata Manzana 013, Ozumba, 56800 Ozumba de Alzate, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/fUm7LpECbaQy6FWB9', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 28, month: 10, hora: '11:00 horas', municipio: 'Tultitl\u00e1n*', sede: 'Auditorio Mariano Escobedo', direccion: 'Ing. Salvador S\u00e1nchez Colin S\/N, San Bartolo, 54900 Tultitl\u00e1n de Mariano Escobedo, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/mWrzU8SKqmJu1r1t5', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'conversatorio', title: 'Conversatorio', day: 29, month: 10, hora: '11:00 horas', municipio: 'Pendiente', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 5, month: 11, hora: '11:00 horas', municipio: 'Valle de Chalco Solidaridad*', sede: 'Explanada del H. Ayuntamiento', direccion: 'Av. del Mazo s\/n, Alfredo Baranda, 56600 Valle de Chalco Solidaridad, M\u00e9x', maps: 'https:\/\/maps.app.goo.gl\/w5d1CgfcvLSHYLt4A', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 10, month: 11, hora: '11:00 horas', municipio: 'Acolman', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 11, month: 11, hora: '11:00 horas', municipio: 'Tepetlixpa', sede: 'Auditorio Municipal de Tepetlixpa', direccion: 'Av. Nacional 38, Tepetlixpa, 56880 Tepetlixpa, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/Y2CpzWHVJQNmhESm8', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 12, month: 11, hora: '11:00 horas', municipio: 'Axapusco', sede: 'Explanada Municipal del Ayuntamiento Axapusco', direccion: 'C. Revoluci\u00f3n 3, 55940 Axapusco, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/JN2UHY7scnv5HRVN8', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n        { entity: 'Estado de M\u00e9xico', type: 'foro', title: 'Foro institucional', day: 18, month: 11, hora: '11:00 horas', municipio: 'Tlalmanalco', sede: 'Jard\u00edn Municipal \/ Casa De Cultura \"Xochipilli\"', direccion: 'Manzana 012, 56700 Tlalmanalco de Vel\u00e1zquez, M\u00e9x.', maps: 'https:\/\/maps.app.goo.gl\/cW7Y7Nr67FsDq4b97', estatus: 'Sin sede', invitados: 'Pendiente', region: 'edomex' },\r\n\r\n        \/\/ --- HIDALGO ---\r\n        { entity: 'Hidalgo', type: 'foro', title: 'Foro institucional', day: 24, month: 9, hora: '11:00 horas', municipio: 'Tizayuca', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'foro', title: 'Foro institucional', day: 29, month: 9, hora: '11:00 horas', municipio: 'Tlaxcoapan', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'foro', title: 'Foro institucional', day: 1, month: 10, hora: '11:00 horas', municipio: 'Atotonilco de Tula', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'foro', title: 'Foro institucional', day: 5, month: 10, hora: '11:00 horas', municipio: 'Villa de Tezontepec', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 7, month: 10, hora: '11:00 horas', municipio: 'Tolcayuca', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'conversatorio', title: 'Conversatorio', day: 8, month: 10, hora: '11:00 horas', municipio: 'Tula de Allende', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'foro', title: 'Foro institucional', day: 13, month: 10, hora: '11:00 horas', municipio: 'Atitalaquia', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n        { entity: 'Hidalgo', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 15, month: 10, hora: '11:00 horas', municipio: 'Tepeji del R\u00edo de Ocampo', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Sin sede', invitados: 'Pendiente', region: 'hidalgo' },\r\n\r\n        \/\/ --- MORELOS ---\r\n        { entity: 'Morelos', type: 'foro', title: 'Foro institucional', day: 30, month: 9, hora: '11:00 horas', municipio: 'Huitzilac', sede: 'Auditorio de la Preparatoria Comunitaria de Tres Mar\u00edas- UAEM', direccion: 'Camino antiguo a La Mina s\/n, Paraje La Lagunita CP, Tres Marias, 62515 Huitzilac, Mor.', maps: 'https:\/\/maps.app.goo.gl\/Rc9aESx8kNJYJrGS9', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'morelos' },\r\n        { entity: 'Morelos', type: 'audiencia', title: 'Audiencia p\u00fablica', day: 22, month: 10, hora: '11:00 horas', municipio: 'Huitzilac', sede: 'Palacio municipal de Huitzilac', direccion: 'No. 1, Av. L\u00e1zaro C\u00e1rdenas, Centro, 62510 Huitzilac, Mor.', maps: 'https:\/\/maps.app.goo.gl\/QBAdCfZhdegC6Cd66', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'morelos' },\r\n        { entity: 'Morelos', type: 'conversatorio', title: 'Conversatorio', day: 11, month: 11, hora: '11:00 horas', municipio: 'Huitzilac', sede: 'Palacio municipal de Huitzilac', direccion: 'No. 1, Av. L\u00e1zaro C\u00e1rdenas, Centro, 62510 Huitzilac, Mor.', maps: 'https:\/\/maps.app.goo.gl\/QBAdCfZhdegC6Cd66', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'morelos' },\r\n\r\n        \/\/ --- SEDATU ---\r\n        { entity: 'SEDATU', type: 'conversatorio', title: 'Conversatorio', day: 20, month: 10, hora: '17:00 horas', municipio: 'Miguel Hidalgo', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'sedatu' },\r\n        { entity: 'SEDATU', type: 'foro', title: 'Foro institucional', day: 17, month: 11, hora: '09:00 horas', municipio: 'Nezahualcoyotl', sede: 'Pendiente', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'sedatu' },\r\n        { entity: 'SEDATU', type: 'foro', title: 'Foro institucional', day: 20, month: 11, hora: '09:00 horas', municipio: 'Venustiano Carranza', sede: 'Alcald\u00eda Venustiano Carranza', direccion: 'Pendiente', maps: 'Pendiente', estatus: 'Por confirmar', invitados: 'Pendiente', region: 'sedatu' }\r\n    ];\r\n\r\n    let currentRegion = 'all';\r\n    let activeCategories = {\r\n        audiencia: true,\r\n        foro: true,\r\n        conversatorio: true\r\n    };\r\n\r\n    const calendarLayouts = [\r\n        {\r\n            name: 'Septiembre',\r\n            weeks: [\r\n                [ {d:21, m:9}, {d:22, m:9}, {d:23, m:9}, {d:24, m:9}, {d:25, m:9}, {d:26, m:9}, {d:27, m:9} ],\r\n                [ {d:28, m:9}, {d:29, m:9}, {d:30, m:9}, {d:null}, {d:null}, {d:null}, {d:null} ]\r\n            ]\r\n        },\r\n        {\r\n            name: 'Octubre',\r\n            weeks: [\r\n                [ {d:null}, {d:null}, {d:null}, {d:1, m:10}, {d:2, m:10}, {d:3, m:10}, {d:4, m:10} ],\r\n                [ {d:5, m:10}, {d:6, m:10}, {d:7, m:10}, {d:8, m:10}, {d:9, m:10}, {d:10, m:10}, {d:11, m:10} ],\r\n                [ {d:12, m:10}, {d:13, m:10}, {d:14, m:10}, {d:15, m:10}, {d:16, m:10}, {d:17, m:10}, {d:18, m:10} ],\r\n                [ {d:19, m:10}, {d:20, m:10}, {d:21, m:10}, {d:22, m:10}, {d:23, m:10}, {d:24, m:10}, {d:25, m:10} ],\r\n                [ {d:26, m:10}, {d:27, m:10}, {d:28, m:10}, {d:29, m:10}, {d:30, m:10}, {d:31, m:10}, {d:null} ]\r\n            ]\r\n        },\r\n        {\r\n            name: 'Noviembre',\r\n            weeks: [\r\n                [ {d:null}, {d:null}, {d:null}, {d:null}, {d:null}, {d:null}, {d:1, m:11} ],\r\n                [ {d:2, m:11}, {d:3, m:11}, {d:4, m:11}, {d:5, m:11}, {d:6, m:11}, {d:7, m:11}, {d:8, m:11} ],\r\n                [ {d:9, m:11}, {d:10, m:11}, {d:11, m:11}, {d:12, m:11}, {d:13, m:11}, {d:14, m:11}, {d:15, m:11} ],\r\n                [ {d:16, m:11}, {d:17, m:11}, {d:18, m:11}, {d:19, m:11}, {d:20, m:11}, {d:21, m:11}, {d:22, m:11} ],\r\n                [ {d:23, m:11}, {d:24, m:11}, {d:25, m:11}, {d:26, m:11}, {d:27, m:11}, {d:28, m:11}, {d:29, m:11} ]\r\n            ]\r\n        }\r\n    ];\r\n\r\n    function renderCalendars() {\r\n        const container = document.getElementById('calendars-container');\r\n        container.innerHTML = '';\r\n\r\n        calendarLayouts.forEach(monthObj => {\r\n            const monthDiv = document.createElement('div');\r\n            monthDiv.className = 'month-section';\r\n\r\n            let tableHTML = `\r\n                <div class=\"month-header\">${monthObj.name}<\/div>\r\n                <table class=\"calendar-table\">\r\n                    <thead>\r\n                        <tr>\r\n                            <th>Lunes<\/th>\r\n                            <th>Martes<\/th>\r\n                            <th>Mi\u00e9rcoles<\/th>\r\n                            <th>Jueves<\/th>\r\n                            <th>Viernes<\/th>\r\n                            <th>S\u00e1bado<\/th>\r\n                            <th>Domingo<\/th>\r\n                        <\/tr>\r\n                    <\/thead>\r\n                    <tbody>\r\n            `;\r\n\r\n            monthObj.weeks.forEach(week => {\r\n                tableHTML += '<tr>';\r\n                week.forEach(cell => {\r\n                    if (cell.d === null) {\r\n                        tableHTML += '<td class=\"empty-day\"><\/td>';\r\n                    } else {\r\n                        const dayEvents = eventsData.filter(ev => {\r\n                            const matchMonth = ev.month === cell.m;\r\n                            const matchDay = ev.day === cell.d;\r\n                            const matchRegion = (currentRegion === 'all' || ev.region === currentRegion);\r\n                            const matchCategory = activeCategories[ev.type];\r\n                            return matchMonth && matchDay && matchRegion && matchCategory;\r\n                        });\r\n\r\n                        let eventsHTML = '';\r\n                        dayEvents.forEach((ev) => {\r\n                            let cssClass = '';\r\n                            if (ev.type === 'audiencia' || ev.type === 'espacios') cssClass = 'event-audiencia';\r\n                            else if (ev.type === 'foro') cssClass = 'event-foro';\r\n                            else if (ev.type === 'conversatorio') cssClass = 'event-conversatorio';\r\n\r\n                            const eventJson = encodeURIComponent(JSON.stringify(ev));\r\n\r\n                            eventsHTML += `\r\n                                <div class=\"event-badge ${cssClass}\" onclick=\"openModal('${eventJson}')\">\r\n                                    <span class=\"dot-mini\"><\/span>\r\n                                    ${ev.title} (${ev.municipio})\r\n                                <\/div>\r\n                            `;\r\n                        });\r\n\r\n                        tableHTML += `\r\n                            <td>\r\n                                <span class=\"day-number\">${cell.d}<\/span>\r\n                                ${eventsHTML}\r\n                            <\/td>\r\n                        `;\r\n                    }\r\n                });\r\n                tableHTML += '<\/tr>';\r\n            });\r\n\r\n            tableHTML += '<\/tbody><\/table>';\r\n            monthDiv.innerHTML = tableHTML;\r\n            container.appendChild(monthDiv);\r\n        });\r\n    }\r\n\r\n    \/\/ Funciones del Modal actualizadas con todos los campos\r\n    function openModal(encodedEvent) {\r\n        const ev = JSON.parse(decodeURIComponent(encodedEvent));\r\n        let monthNames = { 9: 'Septiembre', 10: 'Octubre', 11: 'Noviembre' };\r\n        \r\n        document.getElementById('modalTitle').innerText = `${ev.title} - ${ev.entity}`;\r\n        \r\n        let mapsLink = ev.maps !== 'Pendiente' ? `<a href=\"${ev.maps}\" target=\"_blank\">Ver enlace en Google Maps<\/a>` : 'Pendiente';\r\n\r\n        document.getElementById('modalBody').innerHTML = `\r\n            <p><strong>Fecha:<\/strong> ${ev.day} de ${monthNames[ev.month]} de 2026<\/p>\r\n            <p><strong>Hora:<\/strong> ${ev.hora}<\/p>\r\n            <p><strong>Municipio \/ Alcald\u00eda:<\/strong> ${ev.municipio}<\/p>\r\n            <p><strong>Nombre de Sede:<\/strong> ${ev.sede}<\/p>\r\n            <p><strong>Direcci\u00f3n:<\/strong> ${ev.direccion}<\/p>\r\n            <p><strong>Liga de Ubicaci\u00f3n:<\/strong><br>${mapsLink}<\/p>\r\n        `;\r\n\r\n        document.getElementById('eventModal').style.display = 'flex';\r\n    }\r\n\r\n    function closeModal() {\r\n        document.getElementById('eventModal').style.display = 'none';\r\n    }\r\n\r\n    function closeModalOnOutside(event) {\r\n        if (event.target.id === 'eventModal') {\r\n            closeModal();\r\n        }\r\n    }\r\n\r\n    function filterRegion(region, btnElement) {\r\n        currentRegion = region;\r\n        \r\n        document.getElementById('btn-all').classList.remove('active');\r\n        document.querySelectorAll('.btn-region').forEach(b => b.classList.remove('active'));\r\n        \r\n        btnElement.classList.add('active');\r\n        \r\n        renderCalendars();\r\n    }\r\n\r\n    function toggleCategory(cat) {\r\n        activeCategories[cat] = !activeCategories[cat];\r\n        \r\n        const pill = document.getElementById(`cat-${cat}`);\r\n        if(activeCategories[cat]) {\r\n            pill.classList.remove('inactive');\r\n        } else {\r\n            pill.classList.add('inactive');\r\n        }\r\n\r\n        renderCalendars();\r\n    }\r\n\r\n    window.onload = () => {\r\n        renderCalendars();\r\n    };\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3cf6cc1 e-flex e-con-boxed e-con e-parent\" data-id=\"3cf6cc1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-36964e4 elementor-button-info elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"36964e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Consulta el mapa interactivo de actividades<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Consulta P\u00fablica Sedes y fechas Conoce el calendario de actividades p\u00fablicas en tu entidad. Calendario de Eventos &#8211; Zona Metropolitana [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1968","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=\/wp\/v2\/pages\/1968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1968"}],"version-history":[{"count":4,"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=\/wp\/v2\/pages\/1968\/revisions"}],"predecessor-version":[{"id":1972,"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=\/wp\/v2\/pages\/1968\/revisions\/1972"}],"wp:attachment":[{"href":"https:\/\/pozmvm.sedatu.gob.mx\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}