{"id":4527,"date":"2026-05-08T03:02:26","date_gmt":"2026-05-08T03:02:26","guid":{"rendered":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/?page_id=4527"},"modified":"2026-06-25T03:23:47","modified_gmt":"2026-06-25T03:23:47","slug":"modulo-observatorio-social-territorial","status":"publish","type":"page","link":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/modulo-observatorio-social-territorial\/","title":{"rendered":"Modulo observatorio social territorial"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4527\" class=\"elementor elementor-4527\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-80e1a83 e-con-full e-flex e-con e-parent\" data-id=\"80e1a83\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t<div class=\"elementor-element elementor-element-de5a6ed e-con-full e-flex e-con e-child\" data-id=\"de5a6ed\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7cf2ca3 elementor-widget elementor-widget-image\" data-id=\"7cf2ca3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/elementor\/thumbs\/base-2-1-rl1y4geso01wqrfzfagj9fynhvw1azai6npp1mhchc.png\" title=\"base-2\" alt=\"base-2\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-97935e1 e-con-full e-flex e-con e-child\" data-id=\"97935e1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0e61cff elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"0e61cff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"hm hm-globe3\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-206598b elementor-widget elementor-widget-heading\" data-id=\"206598b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Modulo Observatorio Social Territorial<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7027e6c elementor-widget elementor-widget-text-editor\" data-id=\"7027e6c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tEl M\u00f3dulo Observatorio Social Territorial del Departamento de Nari\u00f1o es una herramienta estrat\u00e9gica orientada a la recopilaci\u00f3n, an\u00e1lisis, monitoreo y visualizaci\u00f3n de informaci\u00f3n social, econ\u00f3mica y territorial, con el prop\u00f3sito de fortalecer la toma de decisiones institucionales, la formulaci\u00f3n de pol\u00edticas p\u00fablicas y la planificaci\u00f3n territorial basada en evidencia.\n\nEste m\u00f3dulo integra indicadores, estad\u00edsticas y an\u00e1lisis provenientes de diferentes fuentes oficiales y territoriales, permitiendo identificar din\u00e1micas sociales, necesidades prioritarias, brechas poblacionales y tendencias de desarrollo en los municipios del departamento. Asimismo, facilita el seguimiento a programas, proyectos e intervenciones p\u00fablicas, promoviendo la transparencia, la articulaci\u00f3n interinstitucional y la participaci\u00f3n ciudadana.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dff8842 e-con-full e-flex e-con e-child\" data-id=\"dff8842\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e346748 elementor-widget elementor-widget-heading\" data-id=\"e346748\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Tasa de tr\u00e1nsito a educaci\u00f3n superior<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b59e60 elementor-widget elementor-widget-text-editor\" data-id=\"3b59e60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Fuente oficial:\u00a0 El Ministerio Nacional de Educaci\u00f3n<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b113727 e-con-full e-flex e-con e-parent\" data-id=\"b113727\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bdbe654 elementor-widget elementor-widget-shortcode\" data-id=\"bdbe654\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <section id=\"potTasaTransito_8707\" class=\"pot-gts-wrap is-panel-open\">\n        <div class=\"pot-gts-map-box\">\n            <div id=\"potTasaTransito_8707_map\" class=\"pot-gts-map\"><\/div>\n\n            <button type=\"button\" class=\"pot-gts-panel-toggle\" data-panel-toggle aria-label=\"Abrir o cerrar filtros\">\n                <span><\/span><span><\/span><span><\/span>\n            <\/button>\n\n            <aside class=\"pot-gts-panel\">\n                <h3>Geo \u2014 Tasa de tr\u00e1nsito<\/h3>\n                <p>Consulta territorial por a\u00f1o, municipio y subregi\u00f3n.<\/p>\n                <div class=\"pot-gts-filters\">\n                    <select data-anio><option value=\"\">Todos los a\u00f1os<\/option><\/select>\n                    <select data-subregion><option value=\"\">Todas las subregiones<\/option><\/select>\n                    <select data-municipio><option value=\"\">Todos los municipios<\/option><\/select>\n                <\/div>\n                <div class=\"pot-gts-stats\">\n                    <article><span>Municipios activos<\/span><strong data-kpi-mun>0<\/strong><\/article>\n                    <article><span>Promedio<\/span><strong data-kpi-prom>0<\/strong><\/article>\n                    <article><span>Mayor valor<\/span><strong data-kpi-max>0<\/strong><\/article>\n                    <article><span>A\u00f1o destacado<\/span><strong data-kpi-anio>\u2014<\/strong><\/article>\n                <\/div>\n            <\/aside>\n\n            <aside class=\"pot-gts-compare\">\n                <h4>Comparativo municipal<\/h4>\n                <div class=\"pot-gts-compare-controls\">\n                    <select data-comp-a><option value=\"\">Municipio A<\/option><\/select>\n                    <select data-comp-b><option value=\"\">Municipio B<\/option><\/select>\n                    <button type=\"button\" data-comparar>Comparar<\/button>\n                <\/div>\n                <div class=\"pot-gts-chartbox\"><canvas data-chart-compare><\/canvas><\/div>\n            <\/aside>\n        <\/div>\n\n        <div class=\"pot-gts-detail\" data-detail hidden>\n            <div class=\"pot-gts-detail-head\">\n                <div>\n                    <span data-detail-type>Selecci\u00f3n territorial<\/span>\n                    <h3 data-detail-title>\u2014<\/h3>\n                    <p data-detail-desc>Seleccione un municipio o una subregi\u00f3n para generar el an\u00e1lisis hist\u00f3rico.<\/p>\n                <\/div>\n                <div class=\"pot-gts-detail-kpis\">\n                    <article><span>Promedio hist\u00f3rico<\/span><strong data-detail-prom>\u2014<\/strong><\/article>\n                    <article><span>Mayor valor<\/span><strong data-detail-max>\u2014<\/strong><\/article>\n                    <article><span>\u00daltimo a\u00f1o<\/span><strong data-detail-last>\u2014<\/strong><\/article>\n                <\/div>\n            <\/div>\n            <div class=\"pot-gts-detail-grid\">\n                <div class=\"pot-gts-detail-chart\"><canvas data-chart-detail><\/canvas><\/div>\n                <div class=\"pot-gts-detail-table\" data-detail-table><\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <style>\n        .pot-gts-wrap{\n            width:100%;\n            font-family:Inter,\"Segoe UI\",Arial,sans-serif;\n            --pot-gts-yellow:#FDD60C;\n            --pot-gts-green:#10A13B;\n            --pot-gts-dark:#07140f;\n            --pot-gts-panel:rgba(8,16,30,.82);\n        }\n\n        .pot-gts-map-box{\n            position:relative;\n            width:100%;\n            min-height:680px;\n            border-radius:28px;\n            overflow:hidden;\n            background:#06140f;\n            box-shadow:0 26px 80px rgba(0,0,0,.22);\n            isolation:isolate;\n        }\n\n        .pot-gts-map{\n            width:100%;\n            height:680px;\n        }\n\n        .pot-gts-panel-toggle{\n            position:absolute;\n            top:18px;\n            right:18px;\n            z-index:980;\n            width:48px;\n            height:48px;\n            border:1px solid rgba(255,255,255,.18);\n            border-radius:16px;\n            background:linear-gradient(135deg,rgba(253,214,12,.95),rgba(16,161,59,.92));\n            box-shadow:0 14px 32px rgba(0,0,0,.28);\n            cursor:pointer;\n            display:flex;\n            flex-direction:column;\n            align-items:center;\n            justify-content:center;\n            gap:5px;\n            transition:.25s ease;\n        }\n\n        .pot-gts-panel-toggle span{\n            width:22px;\n            height:3px;\n            border-radius:99px;\n            background:#07140f;\n            transition:.25s ease;\n        }\n\n        .pot-gts-panel-toggle:hover{\n            transform:translateY(-2px);\n            box-shadow:0 18px 42px rgba(0,0,0,.34);\n        }\n\n        .pot-gts-wrap.is-panel-open .pot-gts-panel-toggle span:nth-child(1){\n            transform:translateY(8px) rotate(45deg);\n        }\n\n        .pot-gts-wrap.is-panel-open .pot-gts-panel-toggle span:nth-child(2){\n            opacity:0;\n        }\n\n        .pot-gts-wrap.is-panel-open .pot-gts-panel-toggle span:nth-child(3){\n            transform:translateY(-8px) rotate(-45deg);\n        }\n\n        .pot-gts-panel,\n        .pot-gts-compare{\n            position:absolute;\n            z-index:850;\n            color:#fff;\n            background:var(--pot-gts-panel);\n            border:1px solid rgba(255,255,255,.16);\n            backdrop-filter:blur(16px);\n            -webkit-backdrop-filter:blur(16px);\n            border-radius:22px;\n            box-shadow:0 20px 55px rgba(0,0,0,.30);\n        }\n\n        .pot-gts-panel{\n            top:76px;\n            right:18px;\n            width:min(340px, calc(100% - 36px));\n            padding:14px;\n            transform:translateX(calc(100% + 34px));\n            opacity:0;\n            pointer-events:none;\n            transition:transform .36s cubic-bezier(.2,.8,.2,1), opacity .25s ease;\n        }\n\n        .pot-gts-wrap.is-panel-open .pot-gts-panel{\n            transform:translateX(0);\n            opacity:1;\n            pointer-events:auto;\n        }\n\n        .pot-gts-panel h3,\n        .pot-gts-compare h4{\n            margin:0 0 4px;\n            color:var(--pot-gts-yellow);\n            font-weight:950;\n            letter-spacing:-.02em;\n        }\n\n        .pot-gts-panel h3{\n            font-size:1.12rem;\n        }\n\n        .pot-gts-compare h4{\n            font-size:1rem;\n        }\n\n        .pot-gts-panel p{\n            margin:0 0 10px;\n            font-size:.70rem;\n            line-height:1.35;\n            opacity:.82;\n        }\n\n        .pot-gts-filters,\n        .pot-gts-compare-controls{\n            display:grid;\n            gap:8px;\n        }\n\n        .pot-gts-filters{\n            grid-template-columns:1fr 1fr;\n        }\n\n        .pot-gts-filters select:nth-child(3){\n            grid-column:1 \/ -1;\n        }\n\n        .pot-gts-filters select,\n        .pot-gts-compare-controls select{\n            width:100%;\n            height:38px;\n            border-radius:13px;\n            border:1px solid rgba(255,255,255,.18);\n            background:rgba(255,255,255,.11);\n            color:#fff;\n            font-weight:900;\n            padding:0 10px;\n            font-size:.78rem;\n            outline:none;\n        }\n\n        .pot-gts-filters select option,\n        .pot-gts-compare-controls select option{\n            color:#111827;\n        }\n\n        .pot-gts-stats{\n            display:grid;\n            grid-template-columns:1fr 1fr;\n            gap:8px;\n            margin-top:10px;\n        }\n\n        .pot-gts-stats article{\n            padding:10px;\n            border-radius:15px;\n            background:rgba(255,255,255,.10);\n            border:1px solid rgba(255,255,255,.14);\n            min-height:66px;\n        }\n\n        .pot-gts-stats span,\n        .pot-gts-detail-kpis span{\n            display:block;\n            font-size:.56rem;\n            text-transform:uppercase;\n            font-weight:900;\n            opacity:.75;\n        }\n\n        .pot-gts-stats strong,\n        .pot-gts-detail-kpis strong{\n            display:block;\n            margin-top:5px;\n            font-size:1rem;\n            color:var(--pot-gts-yellow);\n            font-weight:950;\n        }\n\n        .pot-gts-compare{\n            left:16px;\n            bottom:16px;\n            width:min(430px, calc(100% - 32px));\n            padding:14px;\n        }\n\n        .pot-gts-compare-controls{\n            grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;\n            align-items:center;\n        }\n\n        .pot-gts-compare button{\n            height:38px;\n            border:0;\n            border-radius:999px;\n            padding:0 15px;\n            background:linear-gradient(135deg,var(--pot-gts-yellow),var(--pot-gts-green));\n            color:#052414;\n            font-weight:950;\n            cursor:pointer;\n            white-space:nowrap;\n            transition:.22s ease;\n        }\n\n        .pot-gts-compare button:hover{\n            transform:translateY(-1px);\n        }\n\n        .pot-gts-chartbox{\n            margin-top:10px;\n            height:172px;\n            padding:10px;\n            border-radius:17px;\n            background:rgba(0,0,0,.22);\n            border:1px solid rgba(255,255,255,.12);\n        }\n\n        .pot-gts-pin{\n            width:10px;\n            height:10px;\n            border-radius:999px;\n            background:radial-gradient(circle at 30% 30%,#fff8b0,#FDD60C 45%,#10A13B 100%);\n            border:2px solid #06281a;\n            box-shadow:0 0 0 4px rgba(253,214,12,.16),0 8px 18px rgba(0,0,0,.25);\n        }\n\n        .pot-gts-popup{\n            width:320px;\n            max-width:calc(100vw - 48px);\n            border-radius:22px;\n            overflow:hidden;\n            background:linear-gradient(145deg,rgba(8,16,30,.98),rgba(15,35,32,.98));\n            color:#fff;\n            box-shadow:0 22px 65px rgba(0,0,0,.42);\n        }\n\n        .pot-gts-popup-head{\n            padding:15px;\n            background:linear-gradient(135deg,rgba(16,161,59,.34),rgba(253,214,12,.18));\n            border-bottom:1px solid rgba(255,255,255,.13);\n        }\n\n        .pot-gts-popup-head span{\n            font-size:.60rem;\n            color:var(--pot-gts-yellow);\n            font-weight:950;\n            text-transform:uppercase;\n        }\n\n        .pot-gts-popup-head h4{\n            margin:4px 0 0;\n            color:#fff;\n            font-weight:950;\n            font-size:1.05rem;\n        }\n\n        .pot-gts-popup-head small{\n            display:block;\n            margin-top:4px;\n            color:rgba(255,255,255,.72);\n            font-size:.70rem;\n            font-weight:800;\n        }\n\n        .pot-gts-popup-body{\n            padding:14px;\n        }\n\n        .pot-gts-popup-big{\n            padding:13px;\n            border-radius:16px;\n            background:linear-gradient(135deg,rgba(253,214,12,.18),rgba(16,161,59,.16));\n            border:1px solid rgba(253,214,12,.25);\n            margin-bottom:10px;\n        }\n\n        .pot-gts-popup-big span{\n            font-size:.60rem;\n            text-transform:uppercase;\n            font-weight:950;\n            opacity:.75;\n            display:block;\n        }\n\n        .pot-gts-popup-big strong{\n            display:block;\n            margin-top:4px;\n            font-size:1.42rem;\n            color:var(--pot-gts-yellow);\n            font-weight:950;\n        }\n\n        .pot-gts-popup-grid{\n            display:grid;\n            grid-template-columns:1fr 1fr;\n            gap:8px;\n        }\n\n        .pot-gts-popup-grid div{\n            padding:9px;\n            border-radius:13px;\n            background:rgba(255,255,255,.08);\n            border:1px solid rgba(255,255,255,.10);\n        }\n\n        .pot-gts-popup-grid span{\n            display:block;\n            font-size:.53rem;\n            text-transform:uppercase;\n            font-weight:950;\n            opacity:.68;\n        }\n\n        .pot-gts-popup-grid strong{\n            display:block;\n            margin-top:3px;\n            font-size:.72rem;\n            color:#fff;\n            font-weight:950;\n        }\n\n        .pot-gts-wrap .leaflet-popup-content-wrapper{\n            background:transparent!important;\n            box-shadow:none!important;\n            border:0!important;\n            padding:0!important;\n        }\n\n        .pot-gts-wrap .leaflet-popup-content{\n            margin:0!important;\n        }\n\n        .pot-gts-wrap .leaflet-popup-tip{\n            background:rgba(8,16,30,.96)!important;\n        }\n\n        .pot-gts-detail{\n            margin:26px 0 0;\n            padding:24px;\n            border-radius:28px;\n            background:linear-gradient(135deg,#062b1d,#041813 62%,#08291f);\n            color:#fff;\n            box-shadow:0 22px 60px rgba(0,0,0,.18);\n        }\n\n        .pot-gts-detail-head{\n            display:grid;\n            grid-template-columns:minmax(0,1.4fr) minmax(320px,.8fr);\n            gap:20px;\n            align-items:start;\n            margin-bottom:18px;\n        }\n\n        .pot-gts-detail-head span{\n            color:var(--pot-gts-yellow);\n            font-size:.72rem;\n            font-weight:950;\n            text-transform:uppercase;\n        }\n\n        .pot-gts-detail-head h3{\n            margin:4px 0;\n            color:#fff;\n            font-size:clamp(1.5rem,3vw,2.4rem);\n            font-weight:950;\n        }\n\n        .pot-gts-detail-head p{\n            margin:0;\n            color:rgba(255,255,255,.75);\n            line-height:1.55;\n        }\n\n        .pot-gts-detail-kpis{\n            display:grid;\n            grid-template-columns:repeat(3,1fr);\n            gap:10px;\n        }\n\n        .pot-gts-detail-kpis article{\n            padding:13px;\n            border-radius:16px;\n            background:rgba(255,255,255,.10);\n            border:1px solid rgba(255,255,255,.14);\n        }\n\n        .pot-gts-detail-grid{\n            display:grid;\n            grid-template-columns:minmax(0,2fr) minmax(260px,1fr);\n            gap:18px;\n        }\n\n        .pot-gts-detail-chart,\n        .pot-gts-detail-table{\n            min-height:320px;\n            padding:16px;\n            border-radius:22px;\n            background:rgba(0,0,0,.22);\n            border:1px solid rgba(255,255,255,.12);\n        }\n\n        .pot-gts-detail-table{\n            overflow:auto;\n        }\n\n        .pot-gts-detail-table table{\n            width:100%;\n            border-collapse:collapse;\n            color:#fff;\n        }\n\n        .pot-gts-detail-table th,\n        .pot-gts-detail-table td{\n            padding:10px;\n            border-bottom:1px solid rgba(255,255,255,.12);\n            font-weight:800;\n        }\n\n        .pot-gts-detail-table th{\n            color:var(--pot-gts-yellow);\n            text-align:left;\n            font-size:.75rem;\n            text-transform:uppercase;\n        }\n\n        @media(max-width:1200px){\n            .pot-gts-map-box{min-height:640px;}\n            .pot-gts-map{height:640px;}\n            .pot-gts-panel{width:min(320px,calc(100% - 36px));}\n            .pot-gts-compare{width:min(390px,calc(100% - 32px));}\n            .pot-gts-chartbox{height:155px;}\n        }\n\n        @media(max-width:900px){\n            .pot-gts-map-box{min-height:760px;border-radius:22px;}\n            .pot-gts-map{height:760px;}\n            .pot-gts-panel-toggle{top:12px;right:12px;width:46px;height:46px;}\n            .pot-gts-panel{top:68px;right:12px;width:min(330px,calc(100% - 24px));}\n            .pot-gts-compare{left:12px;bottom:12px;width:min(370px,calc(100% - 24px));}\n            .pot-gts-compare-controls{grid-template-columns:1fr 1fr;}\n            .pot-gts-compare button{grid-column:1 \/ -1;}\n            .pot-gts-detail{padding:18px;border-radius:22px;}\n            .pot-gts-detail-head,\n            .pot-gts-detail-grid{grid-template-columns:1fr;}\n            .pot-gts-detail-kpis{grid-template-columns:1fr 1fr 1fr;}\n        }\n\n        @media(max-width:600px){\n            .pot-gts-map-box{\n                min-height:980px;\n                border-radius:20px;\n            }\n\n            .pot-gts-map{\n                height:980px;\n            }\n\n            .pot-gts-panel{\n                top:66px;\n                right:10px;\n                width:calc(100% - 20px);\n                padding:12px;\n                border-radius:18px;\n            }\n\n            .pot-gts-filters{\n                grid-template-columns:1fr;\n            }\n\n            .pot-gts-filters select:nth-child(3){\n                grid-column:auto;\n            }\n\n            .pot-gts-stats{\n                grid-template-columns:1fr 1fr;\n            }\n\n            .pot-gts-compare{\n                left:10px;\n                right:10px;\n                bottom:10px;\n                width:auto;\n                padding:12px;\n                border-radius:18px;\n            }\n\n            .pot-gts-compare-controls{\n                grid-template-columns:1fr;\n            }\n\n            .pot-gts-chartbox{\n                height:210px;\n            }\n\n            .pot-gts-detail{\n                margin-top:18px;\n                padding:15px;\n            }\n\n            .pot-gts-detail-kpis{\n                grid-template-columns:1fr;\n            }\n\n            .pot-gts-detail-chart,\n            .pot-gts-detail-table{\n                min-height:280px;\n                padding:12px;\n            }\n        }\n    <\/style>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', async function(){\n        if(typeof L === 'undefined' || typeof Chart === 'undefined') return;\n\n        const root = document.getElementById('potTasaTransito_8707');\n        const el = document.getElementById('potTasaTransito_8707_map');\n        const endpoint = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-json\\\/observatorio-pot\\\/v1\\\/tasa-transito-subregion\";\n        const geojsonUrl = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-content\\\/uploads\\\/observatorio-pot\\\/geo\\\/municipios_narino.geojson\";\n        const contornoUrl = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-content\\\/uploads\\\/observatorio-pot\\\/geo\\\/contorno_narino.geojson\";\n\n        const selAnio = root.querySelector('[data-anio]');\n        const selSub = root.querySelector('[data-subregion]');\n        const selMun = root.querySelector('[data-municipio]');\n        const selA = root.querySelector('[data-comp-a]');\n        const selB = root.querySelector('[data-comp-b]');\n        const btnComparar = root.querySelector('[data-comparar]');\n        const btnPanelToggle = root.querySelector('[data-panel-toggle]');\n        const detail = root.querySelector('[data-detail]');\n\n        let rawData = [];\n        let geoLayer = null;\n        let markerLayer = null;\n        let chartCompare = null;\n        let chartDetail = null;\n\n        const map = L.map(el,{zoomControl:true,scrollWheelZoom:false}).setView([1.25,-77.28],8.4);\n        L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png',{maxZoom:18,attribution:'&copy; OpenStreetMap'}).addTo(map);\n        markerLayer = L.layerGroup().addTo(map);\n\n        if(!map.getPane('potGeoDepto')){map.createPane('potGeoDepto');map.getPane('potGeoDepto').style.zIndex=420;map.getPane('potGeoDepto').style.pointerEvents='none';}\n        if(!map.getPane('potGeoMarkers')){map.createPane('potGeoMarkers');map.getPane('potGeoMarkers').style.zIndex=760;}\n\n        function fmt(n){return new Intl.NumberFormat('es-CO',{maximumFractionDigits:3}).format(Number(n||0));}\n        function esc(v){return String(v??'').replaceAll('&','&amp;').replaceAll('<','&lt;').replaceAll('>','&gt;').replaceAll('\"','&quot;').replaceAll(\"'\",'&#039;');}\n        function norm(v){return String(v||'').normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'').trim().toUpperCase();}\n        function colorSubregion(s){const c={'PACIFICO SUR':'#06b6d4','SANQUIANGA':'#0ea5e9','TELEMBI':'#22c55e','PIEDEMONTE':'#14b8a6','PIE DE MONTE COSTERO':'#14b8a6','CENTRO':'#facc15','JUANAMBU':'#84cc16','RIO MAYO':'#f59e0b','GUAMBUYACO':'#8b5cf6','OCCIDENTE':'#10b981','SABANA':'#ec4899','EXPROVINCIA DE OBANDO':'#ef4444','EX PROVINCIA':'#ef4444','EX PROVINCIA DE OBANDO':'#ef4444','CORDILLERA':'#6366f1','ABADES':'#f97316','LOS ABADES':'#f97316'};return c[norm(s)]||'#10A13B';}\n        function getDane(p){return String(p.codigo_dane||p.COD_DANE||p.DANE||p.ID_ESPACIA||p.mpio_cdpmp||p.ID||'').trim();}\n        function getName(p){return String(p.nombre||p.NOMBRE||p.NOM_MUNICI||p.MPIO_CNMBR||p.mpio_cnmbr||p.MUNICIPIO||'').trim();}\n\n        function filteredData(){\n            const anio=selAnio.value, sub=selSub.value, mun=selMun.value;\n            return rawData.filter(r=>(!anio||String(r.anio)===String(anio))&&(!sub||r.subregion===sub)&&(!mun||String(r.id_municipio)===String(mun)));\n        }\n\n        function groupMunicipios(data){\n            const out={};\n            data.forEach(r=>{if(!out[r.id_municipio]) out[r.id_municipio]={...r,valores:[]};out[r.id_municipio].valores.push(r);});\n            return Object.values(out);\n        }\n\n        function stats(data){\n            const vals=data.map(r=>Number(r.valor||0));\n            const prom=vals.length?vals.reduce((a,b)=>a+b,0)\/vals.length:0;\n            const max=vals.length?Math.max(...vals):0;\n            const best=data.length?[...data].sort((a,b)=>Number(b.valor)-Number(a.valor))[0]:null;\n            root.querySelector('[data-kpi-mun]').textContent=new Set(data.map(r=>r.id_municipio)).size;\n            root.querySelector('[data-kpi-prom]').textContent=fmt(prom);\n            root.querySelector('[data-kpi-max]').textContent=fmt(max);\n            root.querySelector('[data-kpi-anio]').textContent=best?best.anio:'\u2014';\n        }\n\n        function renderMarkers(data){\n            markerLayer.clearLayers();\n            groupMunicipios(data).forEach(m=>{\n                const vals=m.valores.map(v=>Number(v.valor||0));\n                const prom=vals.length?vals.reduce((a,b)=>a+b,0)\/vals.length:0;\n                const max=vals.length?Math.max(...vals):0;\n                const icon=L.divIcon({className:'',html:'<div class=\"pot-gts-pin\"><\/div>',iconSize:[12,12],iconAnchor:[6,6]});\n                const marker=L.marker([m.lat,m.lng],{icon,pane:'potGeoMarkers',zIndexOffset:1000}).addTo(markerLayer);\n                marker.bindPopup(`<div class=\"pot-gts-popup\"><div class=\"pot-gts-popup-head\"><span>Observatorio POT \u2014 Tasa tr\u00e1nsito<\/span><h4>${esc(m.municipio)}<\/h4><small>${esc(m.subregion)}<\/small><\/div><div class=\"pot-gts-popup-body\"><div class=\"pot-gts-popup-big\"><span>Mayor valor registrado<\/span><strong>${fmt(max)}<\/strong><\/div><div class=\"pot-gts-popup-grid\"><div><span>C\u00f3digo DANE<\/span><strong>${esc(m.codigo_dane)}<\/strong><\/div><div><span>Promedio<\/span><strong>${fmt(prom)}<\/strong><\/div><div><span>Registros<\/span><strong>${m.valores.length}<\/strong><\/div><div><span>\u00daltimo a\u00f1o<\/span><strong>${Math.max(...m.valores.map(v=>Number(v.anio||0)))}<\/strong><\/div><\/div><\/div><\/div>`,{maxWidth:380});\n                marker.on('click',()=>renderDetail('municipio',String(m.id_municipio)));\n            });\n        }\n\n        function paintPolygons(data){\n            if(!geoLayer) return;\n            const activeMunicipios=new Set(data.map(r=>String(r.codigo_dane)));\n            const byDane={}; rawData.forEach(r=>{byDane[String(r.codigo_dane)]=r;});\n            const selectedSub=selSub.value;\n            const selectedMun=selMun.value;\n            geoLayer.eachLayer(layer=>{\n                const p=layer.feature.properties||{};\n                const dane=getDane(p);\n                const r=byDane[dane];\n                const isMun=selectedMun && r && String(r.id_municipio)===String(selectedMun);\n                const isSub=selectedSub && r && r.subregion===selectedSub;\n                const isActive=activeMunicipios.has(dane);\n                const color=r?colorSubregion(r.subregion):'#64748b';\n                layer.setStyle({color:isMun||isSub?color:(isActive?'#FDD60C':'#64748b'),weight:isMun?4:(isSub?3:1),opacity:isMun||isSub||isActive?1:.35,fillColor:isMun||isSub?color:'#94a3b8',fillOpacity:isMun?.62:(isSub?.46:(isActive?.12:.04)),dashArray:isMun||isSub?'0':'4 5'});\n            });\n        }\n\n        function aggregateByYear(rows, mode){\n            const by={};\n            rows.forEach(r=>{if(!by[r.anio]) by[r.anio]=[]; by[r.anio].push(Number(r.valor||0));});\n            return Object.keys(by).map(y=>{const vals=by[y]; return {anio:Number(y), valor: vals.length?vals.reduce((a,b)=>a+b,0)\/vals.length:0};}).sort((a,b)=>a.anio-b.anio);\n        }\n\n        function renderDetail(type, value){\n            let rows=[], title='', desc='', typeLabel='';\n            if(type==='municipio'){\n                rows=rawData.filter(r=>String(r.id_municipio)===String(value));\n                title=rows[0]?.municipio||'Municipio';\n                desc='Evoluci\u00f3n hist\u00f3rica del indicador para el municipio seleccionado.';\n                typeLabel='An\u00e1lisis municipal';\n            }else{\n                rows=rawData.filter(r=>r.subregion===value);\n                title=value||'Subregi\u00f3n';\n                desc='Promedio hist\u00f3rico anual de los municipios pertenecientes a la subregi\u00f3n seleccionada.';\n                typeLabel='An\u00e1lisis subregional';\n            }\n            const serie=aggregateByYear(rows,type);\n            const vals=serie.map(r=>Number(r.valor||0));\n            const prom=vals.length?vals.reduce((a,b)=>a+b,0)\/vals.length:0;\n            const max=vals.length?Math.max(...vals):0;\n            const last=serie.length?serie[serie.length-1]:null;\n            detail.hidden=false;\n            root.querySelector('[data-detail-type]').textContent=typeLabel;\n            root.querySelector('[data-detail-title]').textContent=title;\n            root.querySelector('[data-detail-desc]').textContent=desc;\n            root.querySelector('[data-detail-prom]').textContent=fmt(prom);\n            root.querySelector('[data-detail-max]').textContent=fmt(max);\n            root.querySelector('[data-detail-last]').textContent=last?`${last.anio} \u00b7 ${fmt(last.valor)}`:'\u2014';\n            root.querySelector('[data-detail-table]').innerHTML='<table><thead><tr><th>A\u00f1o<\/th><th>Valor<\/th><\/tr><\/thead><tbody>'+serie.map(r=>`<tr><td>${r.anio}<\/td><td>${fmt(r.valor)}<\/td><\/tr>`).join('')+'<\/tbody><\/table>';\n            const ctx=root.querySelector('[data-chart-detail]');\n            if(chartDetail) chartDetail.destroy();\n            chartDetail=new Chart(ctx,{type:'bar',data:{labels:serie.map(r=>r.anio),datasets:[{type:'line',label:title+' tendencia',data:serie.map(r=>r.valor),borderColor:'#FDD60C',backgroundColor:'rgba(253,214,12,.18)',borderWidth:4,tension:.35,fill:true,pointRadius:5,pointBackgroundColor:'#FDD60C'},{label:title,data:serie.map(r=>r.valor),backgroundColor:'rgba(16,161,59,.42)',borderRadius:12}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{labels:{color:'#fff',font:{weight:'bold'}}},tooltip:{backgroundColor:'rgba(8,16,30,.95)',titleColor:'#FDD60C',bodyColor:'#fff',borderColor:'rgba(253,214,12,.35)',borderWidth:1,padding:12}},scales:{x:{ticks:{color:'#fff',font:{weight:'bold'}},grid:{color:'rgba(255,255,255,.06)'}},y:{ticks:{color:'#cbd5e1'},grid:{color:'rgba(255,255,255,.08)'}}}}});\n        }\n\n        function applyAll(){const data=filteredData();stats(data);renderMarkers(data);paintPolygons(data);}\n\n        async function loadData(){\n            const res=await fetch(endpoint,{credentials:'same-origin'});\n            const json=await res.json();\n            rawData=json.data||[];\n            (json.anios||[]).forEach(y=>selAnio.insertAdjacentHTML('beforeend',`<option value=\"${y}\">${y}<\/option>`));\n            (json.subregiones||[]).forEach(s=>selSub.insertAdjacentHTML('beforeend',`<option value=\"${esc(s)}\">${esc(s)}<\/option>`));\n            Object.entries(json.municipios||{}).forEach(([id,nom])=>{const opt=`<option value=\"${esc(id)}\">${esc(nom)}<\/option>`;selMun.insertAdjacentHTML('beforeend',opt);selA.insertAdjacentHTML('beforeend',opt);selB.insertAdjacentHTML('beforeend',opt);});\n        }\n\n        async function loadGeojson(){\n            const res=await fetch(geojsonUrl,{cache:'force-cache'}); const gj=await res.json();\n            geoLayer=L.geoJSON(gj,{style:{color:'#64748b',weight:.8,opacity:.35,fillColor:'#94a3b8',fillOpacity:.04,dashArray:'4 5'},onEachFeature:function(feature,layer){const p=feature.properties||{};layer.bindTooltip(`<strong>${esc(getName(p))}<\/strong>`,{sticky:false,direction:'top'});layer.on('mouseover',function(){layer.setStyle({color:'#fff7ad',weight:3.4,fillColor:'#FDD60C',fillOpacity:.55});try{layer.bringToFront();}catch(e){}});layer.on('mouseout',applyAll);layer.on('click',function(){const dane=getDane(p);const row=rawData.find(r=>String(r.codigo_dane)===String(dane)); if(row){selMun.value=String(row.id_municipio);selSub.value='';applyAll();renderDetail('municipio',String(row.id_municipio));}});}}).addTo(map);\n            const b=geoLayer.getBounds(); if(b.isValid()) map.fitBounds(b,{padding:[30,30]});\n        }\n\n        async function loadContorno(){try{const res=await fetch(contornoUrl,{cache:'force-cache'});const gj=await res.json();L.geoJSON(gj,{pane:'potGeoDepto',interactive:false,style:{color:'#10A13B',weight:16,opacity:.20,fill:false}}).addTo(map);L.geoJSON(gj,{pane:'potGeoDepto',interactive:false,style:{color:'#FDD60C',weight:5,opacity:1,fill:false}}).addTo(map);}catch(e){}}\n\n        function comparar(){\n            const a=selA.value,b=selB.value;if(!a||!b||a===b){alert('Seleccione dos municipios diferentes.');return;}\n            const dataA=aggregateByYear(rawData.filter(r=>String(r.id_municipio)===String(a)),'municipio');\n            const dataB=aggregateByYear(rawData.filter(r=>String(r.id_municipio)===String(b)),'municipio');\n            const years=[...new Set([...dataA.map(r=>r.anio),...dataB.map(r=>r.anio)])].sort();\n            const valsA=years.map(y=>dataA.find(r=>r.anio===y)?.valor||0); const valsB=years.map(y=>dataB.find(r=>r.anio===y)?.valor||0);\n            const nameA=selA.options[selA.selectedIndex].textContent; const nameB=selB.options[selB.selectedIndex].textContent;\n            const ctx=root.querySelector('[data-chart-compare]'); if(chartCompare) chartCompare.destroy();\n            chartCompare=new Chart(ctx,{type:'bar',data:{labels:years,datasets:[{type:'line',label:nameA+' tendencia',data:valsA,borderColor:'#FDD60C',backgroundColor:'rgba(253,214,12,.18)',borderWidth:4,tension:.38,fill:true,pointRadius:5,pointBackgroundColor:'#FDD60C'},{type:'line',label:nameB+' tendencia',data:valsB,borderColor:'#10A13B',backgroundColor:'rgba(16,161,59,.18)',borderWidth:4,tension:.38,fill:true,pointRadius:5,pointBackgroundColor:'#10A13B'},{label:nameA,data:valsA,backgroundColor:'rgba(253,214,12,.35)',borderRadius:10},{label:nameB,data:valsB,backgroundColor:'rgba(16,161,59,.35)',borderRadius:10}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{labels:{color:'#fff',font:{weight:'bold'}}}},scales:{x:{ticks:{color:'#fff'},grid:{color:'rgba(255,255,255,.06)'}},y:{ticks:{color:'#cbd5e1'},grid:{color:'rgba(255,255,255,.08)'}}}}});\n        }\n\n        btnPanelToggle.addEventListener('click', function(){\n            root.classList.toggle('is-panel-open');\n        });\n\n        if (window.matchMedia('(max-width: 767px)').matches) {\n            root.classList.remove('is-panel-open');\n        }\n\n        selAnio.addEventListener('change',applyAll);\n        selMun.addEventListener('change',function(){selSub.value='';applyAll();if(selMun.value)renderDetail('municipio',selMun.value);});\n        selSub.addEventListener('change',function(){selMun.value='';applyAll();if(selSub.value)renderDetail('subregion',selSub.value);});\n        btnComparar.addEventListener('click',comparar);\n\n        try{await loadGeojson();await loadContorno();await loadData();applyAll();setTimeout(()=>map.invalidateSize(),300);}catch(e){console.error('Error tasa tr\u00e1nsito:',e);}\n    });\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0b29255 e-con-full e-flex e-con e-child\" data-id=\"0b29255\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t<div class=\"elementor-element elementor-element-2188478 e-con-full e-flex e-con e-child\" data-id=\"2188478\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c8e6d36 elementor-widget elementor-widget-heading\" data-id=\"c8e6d36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Tasa mortalidad menores 5 a\u00f1os y tasa de tr\u00e1nsito <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3caf8d9 elementor-widget elementor-widget-text-editor\" data-id=\"3caf8d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Fuente oficial:\u00a0 Ministerio de Salud y Protecci\u00f3n Social<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-53fdb17 e-con-full e-flex e-con e-parent\" data-id=\"53fdb17\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t<div class=\"elementor-element elementor-element-b718483 e-con-full e-flex e-con e-child\" data-id=\"b718483\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ea22c8 elementor-widget elementor-widget-shortcode\" data-id=\"9ea22c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <section class=\"pot-transito-wrap pot-transito-ui-modern\">\n        <div id=\"potTransitoMap_5412\" class=\"pot-transito-map\"><\/div>\n\n        <button type=\"button\" class=\"pot-transito-filter-toggle\" data-toggle-panel aria-label=\"Abrir filtros\" aria-expanded=\"false\">\n            <span><\/span><span><\/span><span><\/span>\n        <\/button>\n\n        <aside class=\"pot-transito-panel\" data-panel-filtros>\n            <h3>Geo \u2014 Tr\u00e1nsito<\/h3>\n            <p>Consulta territorial por a\u00f1o, municipio y subregi\u00f3n.<\/p>\n\n            <div class=\"pot-transito-filters\">\n\t\t\t\t<select data-fuente>\n\t\t\t\t\t<option value=\"transito\">Tr\u00e1nsito<\/option>\n\t\t\t\t\t<option value=\"mortalidad\">Tasa de mortalidad<\/option>\n\t\t\t\t<\/select>\n\t\t\t\t<button class=\"pot-export-btn\" data-export>\n\t\t\t\t\t<i class=\"fas fa-file-excel\"><\/i>\n\t\t\t\t\tExportar Excel\n\t\t\t\t<\/button>\n                <select data-anio><option value=\"\">Todos los a\u00f1os<\/option><\/select>\n                <select data-subregion><option value=\"\">Todas las subregiones<\/option><\/select>\n                <select data-municipio><option value=\"\">Todos los municipios<\/option><\/select>\n            <\/div>\n\t\t\n\t\t<div class=\"pot-fuente-activa\">\n\t\t\tFuente activa: <strong data-fuente-label>Tr\u00e1nsito<\/strong>\n\t\t<\/div>\n\n            <div class=\"pot-transito-stats\">\n                <article><span>Municipios activos<\/span><strong data-kpi-mun>0<\/strong><\/article>\n                <article><span>Promedio<\/span><strong data-kpi-prom>0<\/strong><\/article>\n                <article><span>Mayor valor<\/span><strong data-kpi-max>0<\/strong><\/article>\n                <article><span>A\u00f1o<\/span><strong data-kpi-anio>\u2014<\/strong><\/article>\n            <\/div>\n        <\/aside>\n\n        <aside class=\"pot-transito-compare\">\n            <h4>Comparativo municipal<\/h4>\n            <div class=\"pot-transito-compare-controls\">\n                <select data-comp-a><option value=\"\">Municipio A<\/option><\/select>\n                <select data-comp-b><option value=\"\">Municipio B<\/option><\/select>\n                <button type=\"button\" data-comparar>Comparar<\/button>\n            <\/div>\n\n\t\t\t<div class=\"pot-cmp-winner\" data-cmp-winner hidden>\n\t\t\t\t<span>\ud83c\udfc6 Municipio con mejor promedio hist\u00f3rico<\/span>\n\t\t\t\t<strong data-cmp-winner-name>\u2014<\/strong>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"pot-cmp-kpis\">\n\t\t\t   <div class=\"pot-cmp-card\">\n\t\t\t\t  <span>Promedio A<\/span>\n\t\t\t\t  <strong data-cmp-prom-a>\u2014<\/strong>\n\t\t\t   <\/div>\n\n\t\t\t   <div class=\"pot-cmp-card\">\n\t\t\t\t  <span>Promedio B<\/span>\n\t\t\t\t  <strong data-cmp-prom-b>\u2014<\/strong>\n\t\t\t   <\/div>\n\n\t\t\t   <div class=\"pot-cmp-card\">\n\t\t\t\t  <span>Diferencia<\/span>\n\t\t\t\t  <strong data-cmp-diff>\u2014<\/strong>\n\t\t\t   <\/div>\n\t\t\t<\/div>\n\t\t\n            <div class=\"pot-transito-chartbox\">\n                <canvas data-chart><\/canvas>\n            <\/div>\n        <\/aside>\n    <\/section>\n\n    <style>\n        .pot-transito-wrap{\n            position:relative;\n            width:100%;\n            min-height:720px;\n            border-radius:26px;\n            overflow:hidden;\n            background:#06140f;\n            box-shadow:0 26px 80px rgba(0,0,0,.25);\n        }\n\n        .pot-transito-map{\n            width:100%;\n            height:720px;\n        }\n\n        .pot-transito-panel,\n        .pot-transito-compare{\n            position:absolute;\n            z-index:800;\n            color:#fff;\n            background:rgba(8,16,30,.78);\n            border:1px solid rgba(255,255,255,.16);\n            backdrop-filter:blur(16px);\n            border-radius:22px;\n            box-shadow:0 20px 55px rgba(0,0,0,.30);\n        }\n\n        .pot-transito-panel{\n            top:18px;\n            right:18px;\n            width:min(410px, calc(100% - 36px));\n            padding:16px;\n        }\n\n        .pot-transito-panel h3,\n        .pot-transito-compare h4{\n            margin:0 0 6px;\n            color:#FDD60C;\n            font-weight:950;\n        }\n\n        .pot-transito-panel p{\n            margin:0 0 14px;\n            font-size:.78rem;\n            opacity:.8;\n        }\n\n        .pot-transito-filters,\n        .pot-transito-compare-controls{\n            display:grid;\n            gap:10px;\n        }\n\n        .pot-transito-filters{\n            grid-template-columns:1fr 1fr;\n        }\n\n        .pot-transito-filters select,\n        .pot-transito-compare-controls select{\n            height:42px;\n            border-radius:14px;\n            border:1px solid rgba(255,255,255,.18);\n            background:rgba(255,255,255,.10);\n            color:#fff;\n            font-weight:900;\n            padding:0 12px;\n        }\n\n        .pot-transito-filters select option,\n        .pot-transito-compare-controls select option{\n            color:#111827;\n        }\n\n        .pot-transito-stats{\n            display:grid;\n            grid-template-columns:1fr 1fr;\n            gap:10px;\n            margin-top:12px;\n        }\n\n        .pot-transito-stats article{\n            padding:12px;\n            border-radius:16px;\n            background:rgba(255,255,255,.10);\n            border:1px solid rgba(255,255,255,.14);\n        }\n\n        .pot-transito-stats span{\n            display:block;\n            font-size:.62rem;\n            text-transform:uppercase;\n            font-weight:900;\n            opacity:.75;\n        }\n\n        .pot-transito-stats strong{\n            display:block;\n            margin-top:5px;\n            font-size:1.1rem;\n            color:#FDD60C;\n            font-weight:950;\n        }\n\n        .pot-transito-compare{\n            left:18px;\n            bottom:18px;\n            width:min(520px, calc(100% - 36px));\n            padding:16px;\n        }\n\n        .pot-transito-compare-controls{\n            grid-template-columns:1fr 1fr auto;\n            margin-top:10px;\n        }\n\n        .pot-transito-compare button{\n            height:42px;\n            border:0;\n            border-radius:999px;\n            padding:0 18px;\n            background:linear-gradient(135deg,#FDD60C,#10A13B);\n            color:#052414;\n            font-weight:950;\n            cursor:pointer;\n        }\n\n        .pot-transito-chartbox{\n            margin-top:14px;\n            padding:12px;\n            border-radius:18px;\n            background:rgba(0,0,0,.22);\n            border:1px solid rgba(255,255,255,.12);\n        }\n\n        .pot-transito-pin{\n            width:12px;\n            height:12px;\n            border-radius:999px;\n            background:radial-gradient(circle at 30% 30%, #fff8b0, #FDD60C 45%, #10A13B 100%);\n            border:2px solid #06281a;\n            box-shadow:0 0 0 5px rgba(253,214,12,.20), 0 10px 20px rgba(0,0,0,.25);\n        }\n\n        .pot-transito-popup{\n            width:285px;\n            overflow:hidden;\n            border-radius:20px;\n        }\n\n        .pot-transito-popup-head{\n            padding:14px;\n            background:linear-gradient(135deg, rgba(16,161,59,.34), rgba(253,214,12,.18));\n            border-bottom:1px solid rgba(255,255,255,.13);\n        }\n\n        .pot-transito-popup-head span{\n            font-size:.62rem;\n            color:#FDD60C;\n            font-weight:950;\n            text-transform:uppercase;\n        }\n\n        .pot-transito-popup-head h4{\n            margin:4px 0 0;\n            color:#fff;\n            font-weight:950;\n            font-size:1.05rem;\n        }\n\n        .pot-transito-popup-body{\n            padding:14px;\n            color:#fff;\n        }\n\n        .pot-transito-popup-kpi{\n            display:flex;\n            justify-content:space-between;\n            padding:10px;\n            border-radius:14px;\n            background:rgba(255,255,255,.09);\n            margin-bottom:8px;\n            font-weight:900;\n        }\n\n        .leaflet-popup-content-wrapper{\n            background:linear-gradient(145deg, rgba(8,16,30,.96), rgba(15,35,32,.96));\n            color:#fff;\n            border-radius:22px;\n            border:1px solid rgba(255,255,255,.18);\n            box-shadow:0 22px 60px rgba(0,0,0,.42);\n            backdrop-filter:blur(18px);\n        }\n\n        .leaflet-popup-content{margin:0!important;}\n        .leaflet-popup-tip{background:rgba(8,16,30,.96);}\n\n        @media(max-width:900px){\n            .pot-transito-wrap{min-height:1100px;}\n            .pot-transito-map{height:1100px;}\n            .pot-transito-panel{left:12px;right:12px;top:12px;width:auto;}\n            .pot-transito-compare{left:12px;right:12px;bottom:12px;width:auto;}\n            .pot-transito-filters,\n            .pot-transito-compare-controls{grid-template-columns:1fr;}\n        }\n\t\t\t\t\t\t\t\t\t   \n\t\t.pot-transito-popup.pro{\n\t\t\toverflow:visible;\n\t\t\tborder-radius:22px;\n\t\t}\n\n\t\t.pot-transito-popup-head small{\n\t\t\tdisplay:block;\n\t\t\tmargin-top:4px;\n\t\t\tcolor:rgba(255,255,255,.72);\n\t\t\tfont-size:.72rem;\n\t\t\tfont-weight:800;\n\t\t}\n\n\t\t.pot-transito-popup-big{\n\t\t\tpadding:14px;\n\t\t\tborder-radius:16px;\n\t\t\tbackground:linear-gradient(135deg, rgba(253,214,12,.18), rgba(16,161,59,.16));\n\t\t\tborder:1px solid rgba(253,214,12,.25);\n\t\t\tmargin-bottom:12px;\n\t\t}\n\n\t\t.pot-transito-popup-big span{\n\t\t\tdisplay:block;\n\t\t\tfont-size:.62rem;\n\t\t\ttext-transform:uppercase;\n\t\t\tfont-weight:950;\n\t\t\topacity:.75;\n\t\t}\n\n\t\t.pot-transito-popup-big strong{\n\t\t\tdisplay:block;\n\t\t\tmargin-top:4px;\n\t\t\tfont-size:1.55rem;\n\t\t\tcolor:#FDD60C;\n\t\t\tfont-weight:950;\n\t\t}\n\n\t\t.pot-transito-popup-grid{\n\t\t\tdisplay:grid;\n\t\t\tgrid-template-columns:1fr 1fr;\n\t\t\tgap:8px;\n\t\t\tmargin-bottom:12px;\n\t\t}\n\n\t\t.pot-transito-popup-grid div{\n\t\t\tpadding:9px;\n\t\t\tborder-radius:13px;\n\t\t\tbackground:rgba(255,255,255,.08);\n\t\t\tborder:1px solid rgba(255,255,255,.10);\n\t\t}\n\n\t\t.pot-transito-popup-grid span{\n\t\t\tdisplay:block;\n\t\t\tfont-size:.55rem;\n\t\t\ttext-transform:uppercase;\n\t\t\tfont-weight:950;\n\t\t\topacity:.68;\n\t\t}\n\n\t\t.pot-transito-popup-grid strong{\n\t\t\tdisplay:block;\n\t\t\tmargin-top:3px;\n\t\t\tfont-size:.75rem;\n\t\t\tcolor:#fff;\n\t\t\tfont-weight:950;\n\t\t}\n\n\t\t.pot-transito-popup-list{\n\t\t\tdisplay:grid;\n\t\t\tgap:6px;\n\t\t}\n\n\t\t.pot-transito-popup-row{\n\t\t\tdisplay:flex;\n\t\t\tjustify-content:space-between;\n\t\t\tpadding:8px 10px;\n\t\t\tborder-radius:12px;\n\t\t\tbackground:rgba(255,255,255,.07);\n\t\t\tborder:1px solid rgba(255,255,255,.08);\n\t\t}\n\n\t\t.pot-transito-popup-row strong{\n\t\t\tcolor:#fff;\n\t\t}\n\n\t\t.pot-transito-popup-row span{\n\t\t\tcolor:#FDD60C;\n\t\t\tfont-weight:950;\n\t\t}\n\t\t\t\t\t\t\t\t\t   \n\t\t.leaflet-popup-close-button{\n\n\t\t\tposition:absolute !important;\n\n\t\t\ttop:8px !important;\n\t\t\tright:8px !important;\n\n\t\t\twidth:34px !important;\n\t\t\theight:34px !important;\n\n\t\t\tline-height:34px !important;\n\n\t\t\tborder-radius:50% !important;\n\n\t\t\tbackground:#FDD60C !important;\n\n\t\t\tcolor:#111827 !important;\n\n\t\t\tfont-size:22px !important;\n\t\t\tfont-weight:900 !important;\n\n\t\t\ttext-align:center !important;\n\n\t\t\tbox-shadow:\n\t\t\t\t0 4px 12px rgba(0,0,0,.35),\n\t\t\t\t0 0 15px rgba(253,214,12,.35);\n\n\t\t\ttransition:.25s ease;\n\t\t}\n\n\t\t.leaflet-popup-close-button:hover{\n\n\t\t\tbackground:#ffffff !important;\n\n\t\t\tcolor:#111827 !important;\n\n\t\t\ttransform:scale(1.12) rotate(90deg);\n\n\t\t}\n\n\t\t.leaflet-popup-close-button:hover{\n\t\t\tbackground:#FDD60C !important;\n\t\t\tcolor:#111827 !important;\n\t\t\ttransform:rotate(90deg);\n\t\t}\n\t\t\t\n\t\t.pot-cmp-kpis{\n\t\t\tdisplay:grid;\n\t\t\tgrid-template-columns:repeat(3,1fr);\n\t\t\tgap:10px;\n\t\t\tmargin-bottom:14px;\n\t\t}\n\n\t\t.pot-cmp-card{\n\t\t\tpadding:12px;\n\t\t\tborder-radius:16px;\n\n\t\t\tbackground:rgba(255,255,255,.05);\n\n\t\t\tborder:1px solid rgba(255,255,255,.08);\n\n\t\t\ttext-align:center;\n\t\t}\n\n\t\t.pot-cmp-card span{\n\t\t\tdisplay:block;\n\t\t\tfont-size:.65rem;\n\t\t\topacity:.7;\n\t\t}\n\n\t\t.pot-cmp-card strong{\n\t\t\tdisplay:block;\n\t\t\tmargin-top:4px;\n\t\t\tcolor:#FDD60C;\n\t\t\tfont-size:1.4rem;\n\t\t\tfont-weight:900;\n\t\t}\n\t\t\t\t\n\t\t.pot-cmp-winner{\n\t\t\tmargin:12px 0 14px;\n\t\t\tpadding:14px;\n\t\t\tborder-radius:18px;\n\t\t\ttext-align:center;\n\t\t\tbackground:linear-gradient(135deg, rgba(253,214,12,.18), rgba(16,161,59,.16));\n\t\t\tborder:1px solid rgba(253,214,12,.28);\n\t\t}\n\n\t\t.pot-cmp-winner span{\n\t\t\tdisplay:block;\n\t\t\tfont-size:.72rem;\n\t\t\tfont-weight:900;\n\t\t\topacity:.78;\n\t\t\ttext-transform:uppercase;\n\t\t}\n\n\t\t.pot-cmp-winner strong{\n\t\t\tdisplay:block;\n\t\t\tmargin-top:5px;\n\t\t\tcolor:#FDD60C;\n\t\t\tfont-size:1.45rem;\n\t\t\tfont-weight:950;\n\t\t}\n\n\t\t\/* POPUP POR ENCIMA DE PANELES *\/\n\t\t.pot-transito-wrap .leaflet-map-pane{\n\t\t\tz-index:1 !important;\n\t\t}\n\n\t\t.pot-transito-wrap .leaflet-tile-pane{\n\t\t\tz-index:200 !important;\n\t\t}\n\n\t\t.pot-transito-wrap .leaflet-overlay-pane{\n\t\t\tz-index:400 !important;\n\t\t}\n\n\t\t.pot-transito-wrap .leaflet-marker-pane{\n\t\t\tz-index:700 !important;\n\t\t}\n\n\t\t.pot-transito-wrap .leaflet-tooltip-pane{\n\t\t\tz-index:850 !important;\n\t\t}\n\n\t\t.pot-transito-wrap .leaflet-popup-pane{\n\t\t\tz-index:5000 !important;\n\t\t}\n\n\t\t.pot-transito-wrap .leaflet-popup{\n\t\t\tz-index:5001 !important;\n\t\t}\n\n\t\t.pot-transito-panel,\n\t\t.pot-transito-compare{\n\t\t\tz-index:900 !important;\n\t\t}\n\n\t\t.pot-transito-panel,\n\t\t.pot-transito-compare{\n\t\t\tz-index:800 !important;\n\t\t}\n\n\t\t\/* POPUP M\u00c1S ANCHO *\/\n\t\t.pot-transito-wrap .leaflet-popup-content{\n\t\t\twidth:360px !important;\n\t\t\tmax-width:calc(100vw - 42px) !important;\n\t\t}\n\n\t\t.pot-transito-popup{\n\t\t\twidth:360px !important;\n\t\t\tmax-width:calc(100vw - 42px) !important;\n\t\t}\n\n\t\t\/* BOT\u00d3N X PROPIO *\/\n\t\t.pot-popup-x{\n\t\t\tposition:absolute;\n\t\t\ttop:10px;\n\t\t\tright:10px;\n\t\t\tz-index:20;\n\t\t\twidth:32px;\n\t\t\theight:32px;\n\t\t\tborder:0;\n\t\t\tborder-radius:50%;\n\t\t\tbackground:#FDD60C;\n\t\t\tcolor:#111827;\n\t\t\tfont-size:22px;\n\t\t\tfont-weight:950;\n\t\t\tline-height:32px;\n\t\t\tcursor:pointer;\n\t\t\tbox-shadow:0 8px 22px rgba(0,0,0,.35);\n\t\t\ttransition:.25s ease;\n\t\t}\n\n\t\t.pot-popup-x:hover{\n\t\t\tbackground:#fff;\n\t\t\ttransform:scale(1.08) rotate(90deg);\n\t\t}\n\t\t\t\t\t\t\t\t\t   \n\t\t.pot-fuente-activa{\n\t\t\tmargin-top:10px;\n\t\t\tpadding:10px 12px;\n\t\t\tborder-radius:14px;\n\t\t\tbackground:rgba(253,214,12,.12);\n\t\t\tborder:1px solid rgba(253,214,12,.25);\n\t\t\tcolor:#fff;\n\t\t\tfont-size:.78rem;\n\t\t\tfont-weight:800;\n\t\t}\n\n\t\t.pot-fuente-activa strong{\n\t\t\tcolor:#FDD60C;\n\t\t}\n\t\t\t\t\t\t\t\t\t   \n\t\t.pot-export-btn{\n\t\t\twidth:100%;\n\t\t\t\/* margin-top:12px; *\/\n\t\t\tborder:none;\n\t\t\tborder-radius:16px;\n\t\t\tpadding:12px;\n\t\t\tfont-weight:800;\n\t\t\tcursor:pointer;\n\n\t\t\tcolor:#102A1F;\n\n\t\t\tbackground:linear-gradient(\n\t\t\t\t135deg,\n\t\t\t\t#FDD60C,\n\t\t\t\t#B7D11A,\n\t\t\t\t#34C759\n\t\t\t);\n\n\t\t\tbox-shadow:\n\t\t\t\t0 10px 25px rgba(253,214,12,.25);\n\n\t\t\ttransition:.25s;\n\t\t}\n\n\t\t.pot-export-btn:hover{\n\t\t\ttransform:translateY(-2px);\n\t\t}\n    \n\n        \/* =========================================================\n           AJUSTE FINAL RESPONSIVE + PANEL HAMBURGUESA\n           ========================================================= *\/\n        .pot-transito-ui-modern{\n            isolation:isolate;\n        }\n\n        .pot-transito-ui-modern .pot-transito-filter-toggle{\n            position:absolute;\n            top:18px;\n            right:18px;\n            z-index:1200;\n            width:48px;\n            height:48px;\n            border:1px solid rgba(255,255,255,.22);\n            border-radius:16px;\n            background:linear-gradient(135deg, rgba(8,16,30,.92), rgba(15,35,32,.88));\n            backdrop-filter:blur(14px);\n            box-shadow:0 16px 38px rgba(0,0,0,.28);\n            cursor:pointer;\n            display:none;\n            align-items:center;\n            justify-content:center;\n            flex-direction:column;\n            gap:5px;\n            transition:.25s ease;\n        }\n\n        .pot-transito-ui-modern .pot-transito-filter-toggle span{\n            width:22px;\n            height:3px;\n            border-radius:999px;\n            background:#FDD60C;\n            display:block;\n            transition:.25s ease;\n        }\n\n        .pot-transito-ui-modern.is-panel-open .pot-transito-filter-toggle span:nth-child(1){\n            transform:translateY(8px) rotate(45deg);\n        }\n\n        .pot-transito-ui-modern.is-panel-open .pot-transito-filter-toggle span:nth-child(2){\n            opacity:0;\n        }\n\n        .pot-transito-ui-modern.is-panel-open .pot-transito-filter-toggle span:nth-child(3){\n            transform:translateY(-8px) rotate(-45deg);\n        }\n\n        .pot-transito-ui-modern .pot-transito-panel{\n            width:min(360px, calc(100% - 36px));\n            padding:14px;\n            border-radius:20px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-panel h3{\n            font-size:1.55rem;\n            line-height:1.05;\n            margin-right:48px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-panel p{\n            font-size:.72rem;\n            margin-bottom:10px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-filters{\n            grid-template-columns:1fr 1fr;\n            gap:8px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-filters select,\n        .pot-transito-ui-modern .pot-transito-compare-controls select{\n            height:38px;\n            border-radius:13px;\n            font-size:.82rem;\n        }\n\n        .pot-transito-ui-modern .pot-export-btn{\n            min-height:38px;\n            padding:9px 10px;\n            border-radius:13px;\n            font-size:.80rem;\n        }\n\n        .pot-transito-ui-modern .pot-fuente-activa{\n            margin-top:8px;\n            padding:8px 10px;\n            font-size:.70rem;\n            border-radius:13px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-stats{\n            gap:8px;\n            margin-top:9px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-stats article{\n            padding:10px;\n            border-radius:14px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-stats span{\n            font-size:.55rem;\n        }\n\n        .pot-transito-ui-modern .pot-transito-stats strong{\n            font-size:1rem;\n        }\n\n        .pot-transito-ui-modern .pot-transito-compare{\n            width:min(455px, calc(100% - 36px));\n            padding:14px;\n            border-radius:20px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-compare h4{\n            font-size:1.15rem;\n        }\n\n        .pot-transito-ui-modern .pot-transito-compare-controls{\n            grid-template-columns:1fr 1fr auto;\n            gap:8px;\n            margin-top:8px;\n        }\n\n        .pot-transito-ui-modern .pot-transito-compare button{\n            height:38px;\n            padding:0 15px;\n            font-size:.82rem;\n        }\n\n        .pot-transito-ui-modern .pot-cmp-kpis{\n            gap:8px;\n            margin-bottom:10px;\n        }\n\n        .pot-transito-ui-modern .pot-cmp-card{\n            padding:9px;\n            border-radius:14px;\n        }\n\n        .pot-transito-ui-modern .pot-cmp-card span{\n            font-size:.55rem;\n        }\n\n        .pot-transito-ui-modern .pot-cmp-card strong{\n            font-size:1.05rem;\n        }\n\n        .pot-transito-ui-modern .pot-transito-chartbox{\n            height:175px;\n            margin-top:10px;\n            padding:10px;\n            border-radius:16px;\n        }\n\n        @media (min-width:1181px){\n            .pot-transito-ui-modern .pot-transito-filter-toggle{\n                display:flex;\n            }\n\n            .pot-transito-ui-modern:not(.is-panel-open) .pot-transito-panel{\n                transform:translateX(calc(100% + 34px));\n                opacity:0;\n                pointer-events:none;\n            }\n\n            .pot-transito-ui-modern .pot-transito-panel{\n                transition:transform .35s cubic-bezier(.22,.9,.24,1), opacity .25s ease;\n                transform:translateX(0);\n            }\n        }\n\n        @media (max-width:1180px){\n            .pot-transito-ui-modern .pot-transito-map-box,\n            .pot-transito-ui-modern{\n                min-height:820px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-map{\n                height:820px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-filter-toggle{\n                display:flex;\n                top:14px;\n                right:14px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-panel{\n                top:14px;\n                right:14px;\n                left:auto;\n                width:min(340px, calc(100% - 28px));\n                transform:translateX(calc(100% + 28px));\n                opacity:0;\n                pointer-events:none;\n                transition:transform .35s cubic-bezier(.22,.9,.24,1), opacity .25s ease;\n            }\n\n            .pot-transito-ui-modern.is-panel-open .pot-transito-panel{\n                transform:translateX(0);\n                opacity:1;\n                pointer-events:auto;\n            }\n\n            .pot-transito-ui-modern .pot-transito-compare{\n                left:14px;\n                bottom:14px;\n                width:min(430px, calc(100% - 28px));\n            }\n        }\n\n        @media (max-width:767px){\n            .pot-transito-ui-modern{\n                border-radius:18px;\n                overflow:visible;\n                min-height:auto;\n            }\n\n            .pot-transito-ui-modern .pot-transito-map{\n                height:620px;\n                border-radius:18px;\n                overflow:hidden;\n            }\n\n            .pot-transito-ui-modern .pot-transito-panel{\n                position:absolute;\n                top:12px;\n                right:12px;\n                width:calc(100% - 24px);\n                max-height:calc(620px - 24px);\n                overflow:auto;\n                padding:12px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-filter-toggle{\n                top:12px;\n                right:12px;\n                width:44px;\n                height:44px;\n                border-radius:14px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-filters,\n            .pot-transito-ui-modern .pot-transito-stats{\n                grid-template-columns:1fr;\n            }\n\n            .pot-transito-ui-modern .pot-transito-panel h3{\n                font-size:1.35rem;\n            }\n\n            .pot-transito-ui-modern .pot-transito-compare{\n                position:relative;\n                left:auto;\n                bottom:auto;\n                width:100%;\n                margin-top:14px;\n                padding:13px;\n                border-radius:18px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-compare-controls,\n            .pot-transito-ui-modern .pot-cmp-kpis{\n                grid-template-columns:1fr;\n            }\n\n            .pot-transito-ui-modern .pot-transito-compare button{\n                width:100%;\n            }\n\n            .pot-transito-ui-modern .pot-transito-chartbox{\n                height:240px;\n            }\n        }\n\n        @media (max-width:420px){\n            .pot-transito-ui-modern .pot-transito-map{\n                height:560px;\n            }\n\n            .pot-transito-ui-modern .pot-transito-panel{\n                max-height:calc(560px - 24px);\n            }\n\n            .pot-transito-ui-modern .pot-transito-chartbox{\n                height:220px;\n            }\n        }\n\n    <\/style>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', async function(){\n        if (typeof L === 'undefined') return;\n\n        const el = document.getElementById('potTransitoMap_5412');\n        const wrap = el.closest('.pot-transito-wrap');\n\n        const endpoint = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-json\\\/observatorio-pot\\\/v1\\\/transito-pro\";\n        const geojsonUrl = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-content\\\/uploads\\\/observatorio-pot\\\/geo\\\/municipios_narino.geojson\";\n        const contornoUrl = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-content\\\/uploads\\\/observatorio-pot\\\/geo\\\/contorno_narino.geojson\";\n\n        const selAnio = wrap.querySelector('[data-anio]');\n\t\tconst selFuente = wrap.querySelector('[data-fuente]');\n\t\tconst btnExport = wrap.querySelector('[data-export]');\n        const selSub = wrap.querySelector('[data-subregion]');\n        const selMun = wrap.querySelector('[data-municipio]');\n        const selA = wrap.querySelector('[data-comp-a]');\n        const selB = wrap.querySelector('[data-comp-b]');\n        const btnComparar = wrap.querySelector('[data-comparar]');\n        const btnPanel = wrap.querySelector('[data-toggle-panel]');\n\n        let rawData = [];\n        let geoLayer = null;\n        let markerLayer = null;\n        let chart = null;\n\n        const map = L.map(el, {\n            zoomControl:true,\n            scrollWheelZoom:false\n        }).setView([1.25,-77.28],8.4);\n\t\t\n\n\t\t\n\t\tel.addEventListener('click', function(e){\n\t\t\tif(e.target.matches('[data-close-popup]')){\n\t\t\t\tmap.closePopup();\n\t\t\t}\n\t\t});\n\n        L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n            maxZoom:18,\n            attribution:'&copy; OpenStreetMap'\n        }).addTo(map);\n\n\t\t\n\t\t\n        markerLayer = L.layerGroup().addTo(map);\n\t\t\n\t\t\n\n        function fmt(n){\n            return new Intl.NumberFormat('es-CO', {\n                maximumFractionDigits: 3\n            }).format(Number(n || 0));\n        }\n\n        function esc(v){\n            return String(v ?? '').replaceAll('&','&amp;').replaceAll('<','&lt;').replaceAll('>','&gt;').replaceAll('\"','&quot;').replaceAll(\"'\",\"&#039;\");\n        }\n\n        function getDane(props){\n            return String(\n                props.codigo_dane || props.COD_DANE || props.DANE ||\n                props.ID_ESPACIA || props.mpio_cdpmp || props.ID || ''\n            ).trim();\n        }\n\n        function getName(props){\n            return String(\n                props.nombre || props.NOMBRE || props.NOM_MUNICI ||\n                props.MPIO_CNMBR || props.mpio_cnmbr || props.MUNICIPIO || ''\n            ).trim();\n        }\n\n        function filteredData(){\n            const anio = selAnio.value;\n            const sub = selSub.value;\n            const mun = selMun.value;\n\n            return rawData.filter(r => {\n                return (!anio || String(r.anio) === String(anio)) &&\n                       (!sub || r.subregion === sub) &&\n                       (!mun || r.codigo_dane === mun);\n            });\n        }\n\n        function groupByMunicipio(data){\n            const out = {};\n            data.forEach(r => {\n                if (!out[r.codigo_dane]) {\n                    out[r.codigo_dane] = {\n                        codigo_dane:r.codigo_dane,\n                        municipio:r.municipio,\n                        subregion:r.subregion,\n                        lat:r.lat,\n                        lng:r.lng,\n                        valores:[]\n                    };\n                }\n                out[r.codigo_dane].valores.push(r);\n            });\n            return Object.values(out);\n        }\n\n        function renderStats(data){\n            const municipios = new Set(data.map(r => r.codigo_dane)).size;\n            const valores = data.map(r => Number(r.valor || 0));\n            const prom = valores.length ? valores.reduce((a,b)=>a+b,0) \/ valores.length : 0;\n            const max = valores.length ? Math.max(...valores) : 0;\n            const anioMayor = data.length ? data.sort((a,b)=>Number(b.valor)-Number(a.valor))[0].anio : '\u2014';\n\n            wrap.querySelector('[data-kpi-mun]').textContent = municipios;\n            wrap.querySelector('[data-kpi-prom]').textContent = fmt(prom);\n            wrap.querySelector('[data-kpi-max]').textContent = fmt(max);\n            wrap.querySelector('[data-kpi-anio]').textContent = anioMayor;\n        }\n\n        function renderMarkers(data){\n            markerLayer.clearLayers();\n\n            groupByMunicipio(data).forEach(m => {\n                if (!m.lat || !m.lng) return;\n\n                const valores = m.valores.map(v => Number(v.valor || 0));\n                const promedio = valores.length ? valores.reduce((a,b)=>a+b,0)\/valores.length : 0;\n                const mayor = valores.length ? Math.max(...valores) : 0;\n\n                const icon = L.divIcon({\n                    className:'',\n                    html:'<div class=\"pot-transito-pin\"><\/div>',\n                    iconSize:[12,12],\n                    iconAnchor:[6,6]\n                });\n\n                const marker = L.marker([m.lat,m.lng], {\n\t\t\t\t\ticon,\n\t\t\t\t\tpane: 'potTransitoMarkers',\n\t\t\t\t\tzIndexOffset: 1000\n\t\t\t\t}).addTo(markerLayer);\n\n\t\t\t\tmarker.bindPopup(`\n\t\t\t\t\t<div class=\"pot-transito-popup pro\">\n\t\t\t\t\t\t<button type=\"button\" class=\"pot-popup-x\" data-close-popup>\u00d7<\/button>\n\t\t\t\t\t\t<div class=\"pot-transito-popup-head\">\n\t\t\t\t\t\t\t<span>Observatorio POT \u2014 Geo Tr\u00e1nsito<\/span>\n\t\t\t\t\t\t\t<h4>${esc(m.municipio)}<\/h4>\n\t\t\t\t\t\t\t<small>${esc(m.subregion)}<\/small>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<div class=\"pot-transito-popup-body\">\n\t\t\t\t\t\t\t<div class=\"pot-transito-popup-big\">\n\t\t\t\t\t\t\t\t<span>Mayor valor registrado<\/span>\n\t\t\t\t\t\t\t\t<strong>${fmt(mayor)}<\/strong>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"pot-transito-popup-grid\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span>C\u00f3digo DANE<\/span>\n\t\t\t\t\t\t\t\t\t<strong>${esc(m.codigo_dane)}<\/strong>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span>Promedio<\/span>\n\t\t\t\t\t\t\t\t\t<strong>${fmt(promedio)}<\/strong>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span>Registros<\/span>\n\t\t\t\t\t\t\t\t\t<strong>${m.valores.length}<\/strong>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span>\u00daltimo a\u00f1o<\/span>\n\t\t\t\t\t\t\t\t\t<strong>${Math.max(...m.valores.map(v => Number(v.anio || 0)))}<\/strong>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"pot-transito-popup-list\">\n\t\t\t\t\t\t\t\t${m.valores\n\t\t\t\t\t\t\t\t\t.sort((a,b) => Number(b.anio) - Number(a.anio))\n\t\t\t\t\t\t\t\t\t.slice(0,6)\n\t\t\t\t\t\t\t\t\t.map(v => `\n\t\t\t\t\t\t\t\t\t\t<div class=\"pot-transito-popup-row\">\n\t\t\t\t\t\t\t\t\t\t\t<strong>${esc(v.anio)}<\/strong>\n\t\t\t\t\t\t\t\t\t\t\t<span>${fmt(v.valor)}<\/span>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t`).join('')}\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t`, {\n\t\t\t\t\tcloseButton:false,\n\t\t\t\t\tautoPan:true,\n\t\t\t\t\tmaxWidth:380,\n\t\t\t\t\tclassName:'pot-transito-popup-shell'\n\t\t\t\t});\n            });\n        }\n\t\t\n\t\tfunction normSub(v){\n\t\t\treturn String(v || '')\n\t\t\t\t.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'')\n\t\t\t\t.trim()\n\t\t\t\t.toUpperCase();\n\t\t}\n\n\t\tfunction colorSubregion(subregion){\n\t\t\tconst colors = {\n\t\t\t\t'PACIFICO SUR': '#06b6d4',\n\t\t\t\t'SANQUIANGA': '#0ea5e9',\n\t\t\t\t'TELEMBI': '#22c55e',\n\t\t\t\t'PIE DE MONTE COSTERO': '#14b8a6',\n\t\t\t\t'CENTRO': '#facc15',\n\t\t\t\t'JUANAMBU': '#84cc16',\n\t\t\t\t'RIO MAYO': '#f59e0b',\n\t\t\t\t'GUAMBUYACO': '#8b5cf6',\n\t\t\t\t'OCCIDENTE': '#10b981',\n\t\t\t\t'SABANA': '#ec4899',\n\t\t\t\t'EXPROVINCIA DE OBANDO': '#ef4444',\n\t\t\t\t'OBANDO': '#ef4444',\n\t\t\t\t'CORDILLERA': '#6366f1',\n\t\t\t\t'LOS ABADES': '#f97316'\n\t\t\t};\n\n\t\t\treturn colors[normSub(subregion)] || '#64748b';\n\t\t}\n\n        function paintPolygons(data){\n            if (!geoLayer) return;\n\n            const activeCodes = new Set(data.map(r => r.codigo_dane));\n            const activeSub = selSub.value;\n\n            geoLayer.eachLayer(layer => {\n                const props = layer.feature.properties || {};\n                const dane = getDane(props);\n                const rows = rawData.filter(r => r.codigo_dane === dane);\n                const subregion = rows[0]?.subregion || '';\n                const active = activeCodes.has(dane);\n                const subActive = activeSub && subregion === activeSub;\n\n                layer.setStyle({\n                    color: active || subActive ? colorSubregion(subregion) : '#64748b',\n                    weight: active || subActive ? 2.8 : .8,\n                    opacity: active || subActive ? 1 : .35,\n                    fillColor: active || subActive ? colorSubregion(subregion) : '#94a3b8',\n                    fillOpacity: active || subActive ? .48 : .04,\n                    dashArray: active || subActive ? '0' : '4 5'\n                });\n            });\n        }\n\n        function applyAll(){\n            const data = filteredData();\n            renderStats(data);\n            renderMarkers(data);\n            paintPolygons(data);\n        }\n\n        async function loadData(){\n\t\t\tselAnio.innerHTML = '<option value=\"\">Todos los a\u00f1os<\/option>';\n\t\t\tselSub.innerHTML = '<option value=\"\">Todas las subregiones<\/option>';\n\t\t\tselMun.innerHTML = '<option value=\"\">Todos los municipios<\/option>';\n\t\t\tselA.innerHTML = '<option value=\"\">Municipio A<\/option>';\n\t\t\tselB.innerHTML = '<option value=\"\">Municipio B<\/option>';\n            const url = endpoint + '?fuente=' + encodeURIComponent(selFuente.value);\n\t\t\tconst res = await fetch(url, {credentials:'same-origin'});\n            const json = await res.json();\n\n            rawData = json.data || [];\n\t\t\t\n\t\t\twrap.querySelector('[data-fuente-label]').textContent = json.label || 'Tr\u00e1nsito';\n\t\t\twrap.querySelector('.pot-transito-panel h3').textContent = 'Geo \u2014 ' + (json.label || 'Tr\u00e1nsito');\n\n            (json.anios || []).forEach(y => {\n                selAnio.insertAdjacentHTML('beforeend', `<option value=\"${y}\">${y}<\/option>`);\n            });\n\n            (json.subregiones || []).forEach(s => {\n                selSub.insertAdjacentHTML('beforeend', `<option value=\"${esc(s)}\">${esc(s)}<\/option>`);\n            });\n\n            Object.entries(json.municipios || {}).forEach(([cod, nom]) => {\n                const opt = `<option value=\"${esc(cod)}\">${esc(nom)}<\/option>`;\n                selMun.insertAdjacentHTML('beforeend', opt);\n                selA.insertAdjacentHTML('beforeend', opt);\n                selB.insertAdjacentHTML('beforeend', opt);\n            });\n        }\n\n        async function loadGeojson(){\n            const res = await fetch(geojsonUrl, {cache:'force-cache'});\n            const gj = await res.json();\n\n            geoLayer = L.geoJSON(gj, {\n                style:{\n                    color:'#64748b',\n                    weight:.8,\n                    opacity:.35,\n                    fillColor:'#94a3b8',\n                    fillOpacity:.04,\n                    dashArray:'4 5'\n                },\n                onEachFeature:function(feature, layer){\n                    const props = feature.properties || {};\n                    const nombre = getName(props);\n\n                    layer.bindTooltip(`<strong>${esc(nombre)}<\/strong>`, {\n                        sticky:false,\n                        direction:'top',\n                        className:'pot-transito-tooltip'\n                    });\n\n                    layer.on('mouseover', function(){\n                        layer.setStyle({\n                            color:'#fff7ad',\n                            weight:3.4,\n                            fillColor:'#FDD60C',\n                            fillOpacity:.55\n                        });\n                        try{layer.bringToFront();}catch(e){}\n                    });\n\n                    layer.on('mouseout', applyAll);\n                }\n            }).addTo(map);\n\n            const b = geoLayer.getBounds();\n            if (b.isValid()) map.fitBounds(b, {padding:[30,30]});\n        }\n\n        async function loadContorno(){\n            try{\n                const res = await fetch(contornoUrl, {cache:'force-cache'});\n                const gj = await res.json();\n\n                if (!map.getPane('potTransitoDepto')) {\n                    map.createPane('potTransitoDepto');\n                    map.getPane('potTransitoDepto').style.zIndex = 650;\n                    map.getPane('potTransitoDepto').style.pointerEvents = 'none';\n                }\n\t\t\t\t\n\t\t\t\t\tif (!map.getPane('potTransitoMarkers')) {\n\t\t\t\t\t\tmap.createPane('potTransitoMarkers');\n\t\t\t\t\t\tmap.getPane('potTransitoMarkers').style.zIndex = 760;\n\t\t\t\t\t}\n\n                L.geoJSON(gj, {\n                    pane:'potTransitoDepto',\n                    interactive:false,\n                    style:{\n                        color:'#10A13B',\n                        weight:16,\n                        opacity:.22,\n                        fill:false\n                    }\n                }).addTo(map);\n\n                L.geoJSON(gj, {\n                    pane:'potTransitoDepto',\n                    interactive:false,\n                    style:{\n                        color:'#FDD60C',\n                        weight:5,\n                        opacity:1,\n                        fill:false\n                    }\n                }).addTo(map);\n\n            }catch(e){}\n        }\n\n\t\tfunction comparar(){\n\t\t\tconst a = selA.value;\n\t\t\tconst b = selB.value;\n\n\t\t\tif (!a || !b || a === b) {\n\t\t\t\talert('Seleccione dos municipios diferentes.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dataA = rawData.filter(r => r.codigo_dane === a).sort((x,y)=>x.anio-y.anio);\n\t\t\tconst dataB = rawData.filter(r => r.codigo_dane === b).sort((x,y)=>x.anio-y.anio);\n\n\t\t\tconst years = [...new Set([...dataA.map(r=>r.anio), ...dataB.map(r=>r.anio)])].sort();\n\n\t\t\tconst nombreA = selA.options[selA.selectedIndex].textContent;\n\t\t\tconst nombreB = selB.options[selB.selectedIndex].textContent;\n\n\t\t\tconst valoresA = years.map(y => Number(dataA.find(r=>r.anio===y)?.valor || 0));\n\t\t\tconst valoresB = years.map(y => Number(dataB.find(r=>r.anio===y)?.valor || 0));\n\n\t\t\tconst promedioA = valoresA.length ? valoresA.reduce((x,y)=>x+y,0) \/ valoresA.length : 0;\n\t\t\tconst promedioB = valoresB.length ? valoresB.reduce((x,y)=>x+y,0) \/ valoresB.length : 0;\n\t\t\tconst diferencia = Math.abs(promedioA - promedioB);\n\t\t\tconst ganador = promedioA >= promedioB ? nombreA : nombreB;\n\n\t\t\twrap.querySelector('[data-cmp-prom-a]').textContent = fmt(promedioA);\n\t\t\twrap.querySelector('[data-cmp-prom-b]').textContent = fmt(promedioB);\n\t\t\twrap.querySelector('[data-cmp-diff]').textContent = fmt(diferencia);\n\t\t\twrap.querySelector('[data-cmp-winner-name]').textContent = ganador;\n\t\t\twrap.querySelector('[data-cmp-winner]').hidden = false;\n\n\t\t\tconst ctx = wrap.querySelector('[data-chart]');\n\n\t\t\tif (chart) chart.destroy();\n\n\t\t\tchart = new Chart(ctx, {\n\t\t\t\ttype:'bar',\n\t\t\t\tdata:{\n\t\t\t\t\tlabels:years,\n\t\t\t\t\tdatasets:[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype:'line',\n\t\t\t\t\t\t\tlabel:nombreA + ' tendencia',\n\t\t\t\t\t\t\tdata:valoresA,\n\t\t\t\t\t\t\tborderColor:'#FDD60C',\n\t\t\t\t\t\t\tbackgroundColor:'rgba(253,214,12,.18)',\n\t\t\t\t\t\t\tborderWidth:4,\n\t\t\t\t\t\t\ttension:.38,\n\t\t\t\t\t\t\tfill:true,\n\t\t\t\t\t\t\tpointRadius:5,\n\t\t\t\t\t\t\tpointBackgroundColor:'#FDD60C'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype:'line',\n\t\t\t\t\t\t\tlabel:nombreB + ' tendencia',\n\t\t\t\t\t\t\tdata:valoresB,\n\t\t\t\t\t\t\tborderColor:'#10A13B',\n\t\t\t\t\t\t\tbackgroundColor:'rgba(16,161,59,.18)',\n\t\t\t\t\t\t\tborderWidth:4,\n\t\t\t\t\t\t\ttension:.38,\n\t\t\t\t\t\t\tfill:true,\n\t\t\t\t\t\t\tpointRadius:5,\n\t\t\t\t\t\t\tpointBackgroundColor:'#10A13B'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel:nombreA,\n\t\t\t\t\t\t\tdata:valoresA,\n\t\t\t\t\t\t\tbackgroundColor:'rgba(253,214,12,.35)',\n\t\t\t\t\t\t\tborderRadius:10\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel:nombreB,\n\t\t\t\t\t\t\tdata:valoresB,\n\t\t\t\t\t\t\tbackgroundColor:'rgba(16,161,59,.35)',\n\t\t\t\t\t\t\tborderRadius:10\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\toptions:{\n\t\t\t\t\tresponsive:true,\n\t\t\t\t\tmaintainAspectRatio:false,\n\t\t\t\t\tplugins:{\n\t\t\t\t\t\tlegend:{\n\t\t\t\t\t\t\tlabels:{\n\t\t\t\t\t\t\t\tcolor:'#fff',\n\t\t\t\t\t\t\t\tfont:{weight:'bold'}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttooltip:{\n\t\t\t\t\t\t\tbackgroundColor:'rgba(8,16,30,.95)',\n\t\t\t\t\t\t\ttitleColor:'#FDD60C',\n\t\t\t\t\t\t\tbodyColor:'#fff',\n\t\t\t\t\t\t\tborderColor:'rgba(253,214,12,.35)',\n\t\t\t\t\t\t\tborderWidth:1,\n\t\t\t\t\t\t\tpadding:12\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tscales:{\n\t\t\t\t\t\tx:{\n\t\t\t\t\t\t\tticks:{color:'#fff', font:{weight:'bold'}},\n\t\t\t\t\t\t\tgrid:{color:'rgba(255,255,255,.06)'}\n\t\t\t\t\t\t},\n\t\t\t\t\t\ty:{\n\t\t\t\t\t\t\tticks:{color:'#cbd5e1'},\n\t\t\t\t\t\t\tgrid:{color:'rgba(255,255,255,.08)'}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\n        if (btnPanel) {\n            btnPanel.addEventListener('click', function(e){\n                e.preventDefault();\n                e.stopPropagation();\n                const isOpen = wrap.classList.toggle('is-panel-open');\n                btnPanel.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n                setTimeout(function(){ map.invalidateSize(); }, 260);\n            });\n        }\n\n        document.addEventListener('click', function(e){\n            if (!wrap.classList.contains('is-panel-open')) return;\n            const panel = wrap.querySelector('[data-panel-filtros]');\n            if (panel && !panel.contains(e.target) && btnPanel && !btnPanel.contains(e.target)) {\n                wrap.classList.remove('is-panel-open');\n                btnPanel.setAttribute('aria-expanded', 'false');\n            }\n        });\n\n        document.addEventListener('keydown', function(e){\n            if (e.key === 'Escape' && wrap.classList.contains('is-panel-open')) {\n                wrap.classList.remove('is-panel-open');\n                if (btnPanel) btnPanel.setAttribute('aria-expanded', 'false');\n            }\n        });\n\n        selAnio.addEventListener('change', applyAll);\n\t\t\n\t\tselFuente.addEventListener('change', async function(){\n\t\t\trawData = [];\n\t\t\tmarkerLayer.clearLayers();\n\n\t\t\tif (chart) {\n\t\t\t\tchart.destroy();\n\t\t\t\tchart = null;\n\t\t\t}\n\n\t\t\twrap.querySelector('[data-cmp-prom-a]').textContent = '\u2014';\n\t\t\twrap.querySelector('[data-cmp-prom-b]').textContent = '\u2014';\n\t\t\twrap.querySelector('[data-cmp-diff]').textContent = '\u2014';\n\t\t\twrap.querySelector('[data-cmp-winner]').hidden = true;\n\n\t\t\tawait loadData();\n\t\t\tapplyAll();\n\t\t});\n\t\t\n        selSub.addEventListener('change', applyAll);\n        selMun.addEventListener('change', applyAll);\n        btnComparar.addEventListener('click', comparar);\n\t\t\n\t\tbtnExport.addEventListener('click', ()=>{\n\t\t\tconst fuente = selFuente.value;\n\t\t\tconst url =\n\t\t\t\t'https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/observatorio-pot\/v1\/transito-export'\n\t\t\t\t+ '?fuente=' + encodeURIComponent(fuente);\n\t\t\twindow.open(url, '_blank');\n\t\t});\n\n        try{\n            await loadGeojson();\n            await loadContorno();\n            await loadData();\n            applyAll();\n            setTimeout(()=>map.invalidateSize(),300);\n        }catch(e){\n            console.error('Error tr\u00e1nsito:', e);\n        }\n    });\n    <\/script>\n\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1cb857e e-con-full e-flex e-con e-child\" data-id=\"1cb857e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t<div class=\"elementor-element elementor-element-f60362b e-con-full e-flex e-con e-child\" data-id=\"f60362b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f8aa449 elementor-widget elementor-widget-heading\" data-id=\"f8aa449\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">registro \u00fanico de v\u00edctimas<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-717e00d elementor-widget elementor-widget-text-editor\" data-id=\"717e00d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Fuente oficial:\u00a0 Ministerio de Salud y Protecci\u00f3n Social<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f48f2a7 e-con-full e-flex e-con e-parent\" data-id=\"f48f2a7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-47397e3 elementor-widget elementor-widget-shortcode\" data-id=\"47397e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <section class=\"pot-ruv-wrap\">\n        <div class=\"pot-ruv-head\">\n            <span>Registro \u00danico de V\u00edctimas<\/span>\n            <h2>Consulta territorial RUV \u2014 Nari\u00f1o<\/h2>\n            <p>Informaci\u00f3n din\u00e1mica por municipio, consultada desde los servicios p\u00fablicos de cifras de la Unidad para las V\u00edctimas.<\/p>\n        <\/div>\n\n        <div class=\"pot-ruv-filters\">\n            <div>\n                <label>Departamento<\/label>\n                <select disabled>\n                    <option>NARI\u00d1O<\/option>\n                <\/select>\n            <\/div>\n\n            <div>\n                <label>Municipio<\/label>\n                <select id=\"potRuvMunicipio\">\n                    <option value=\"\">Seleccione municipio<\/option>\n                <\/select>\n            <\/div>\n\n            <button type=\"button\" id=\"potRuvConsultar\">Consultar<\/button>\n\t\t\n\t\t\t<a class=\"pot-ruv-excel-btn\"\n\t\t\t   href=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-admin\/admin-post.php?action=pot_ruv_excel_narino\">\n\t\t\t\tDescargar Excel Nari\u00f1o\n\t\t\t<\/a>\n\t\t\n        <\/div>\n\n\t\t\n\t\t<div class=\"pot-ruv-compare-box\">\n    <div class=\"pot-ruv-compare-head\">\n        <span>Comparativo territorial<\/span>\n        <h3>Comparar dos municipios de Nari\u00f1o<\/h3>\n        <p>Seleccione dos municipios para analizar diferencias por v\u00edctimas, eventos y hechos victimizantes.<\/p>\n    <\/div>\n\n    <div class=\"pot-ruv-compare-controls\">\n        <div>\n            <label>Municipio A<\/label>\n            <select id=\"potRuvMunicipioA\">\n                <option value=\"\">Seleccione municipio<\/option>\n            <\/select>\n        <\/div>\n\n        <div>\n            <label>Municipio B<\/label>\n            <select id=\"potRuvMunicipioB\">\n                <option value=\"\">Seleccione municipio<\/option>\n            <\/select>\n        <\/div>\n\n        <button type=\"button\" id=\"potRuvComparar\">Generar comparativo<\/button>\n    <\/div>\n\n    <div id=\"potRuvCompareResult\" class=\"pot-ruv-compare-result\" style=\"display:none;\">\n        <div class=\"pot-ruv-compare-kpis\">\n            <article>\n                <span>Municipio A<\/span>\n                <strong data-comp-a>\u2014<\/strong>\n            <\/article>\n            <article>\n                <span>Municipio B<\/span>\n                <strong data-comp-b>\u2014<\/strong>\n            <\/article>\n            <article>\n                <span>Diferencia ocurrencia<\/span>\n                <strong data-comp-diff>\u2014<\/strong>\n            <\/article>\n        <\/div>\n\n        <div class=\"pot-ruv-charts\">\n            <div class=\"pot-ruv-chart-card\">\n                <h4>Comparativo general<\/h4>\n                <canvas id=\"potRuvChartGeneral\"><\/canvas>\n            <\/div>\n\n            <div class=\"pot-ruv-chart-card\">\n                <h4>Hechos victimizantes principales<\/h4>\n                <canvas id=\"potRuvChartHechos\"><\/canvas>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\t\t\n\t\t\n        <div id=\"potRuvLoading\" class=\"pot-ruv-loading\" style=\"display:none;\">\n            Consultando informaci\u00f3n oficial...\n        <\/div>\n\n        <div id=\"potRuvResult\" class=\"pot-ruv-result\" style=\"display:none;\">\n            <div class=\"pot-ruv-kpis\">\n                <article>\n                    <span>V\u00edctimas ocurrencia<\/span>\n                    <strong data-kpi-ocurrencia>0<\/strong>\n                <\/article>\n\n                <article>\n                    <span>V\u00edctimas declaraci\u00f3n<\/span>\n                    <strong data-kpi-declaracion>0<\/strong>\n                <\/article>\n\n                <article>\n                    <span>Sujetos atenci\u00f3n<\/span>\n                    <strong data-kpi-sujetos>0<\/strong>\n                <\/article>\n\n                <article>\n                    <span>Eventos<\/span>\n                    <strong data-kpi-eventos>0<\/strong>\n                <\/article>\n            <\/div>\n\n            <div class=\"pot-ruv-table-wrap\">\n                <h3 data-title-hechos>Hechos victimizantes<\/h3>\n                <table class=\"pot-ruv-table\">\n                    <thead>\n                        <tr>\n                            <th>Hecho victimizante<\/th>\n                            <th>V\u00edctimas ocurrencia<\/th>\n                            <th>V\u00edctimas declaraci\u00f3n<\/th>\n                            <th>V\u00edctimas ubicaci\u00f3n<\/th>\n                            <th>Sujetos atenci\u00f3n<\/th>\n                            <th>Eventos<\/th>\n                        <\/tr>\n                    <\/thead>\n                    <tbody id=\"potRuvHechosBody\"><\/tbody>\n                <\/table>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <style>\n        .pot-ruv-wrap{\n            max-width:1280px;\n            margin:35px auto;\n            padding:34px;\n            border-radius:28px;\n            background:\n                radial-gradient(circle at top left, rgba(253,214,12,.20), transparent 30%),\n                linear-gradient(135deg,#062b1d,#041813 62%,#08291f);\n            color:#fff;\n            box-shadow:0 24px 70px rgba(0,0,0,.20);\n        }\n\n        .pot-ruv-head span{\n            display:inline-flex;\n            padding:8px 14px;\n            border-radius:999px;\n            background:rgba(253,214,12,.15);\n            color:#FDD60C;\n            font-weight:900;\n            font-size:.78rem;\n            margin-bottom:12px;\n        }\n\n        .pot-ruv-head h2{\n            margin:0;\n            font-size:clamp(2rem,4vw,3.8rem);\n            line-height:1;\n            font-weight:950;\n            color:#fff;\n        }\n\n        .pot-ruv-head p{\n            max-width:820px;\n            color:rgba(255,255,255,.78);\n            font-size:1rem;\n            line-height:1.6;\n            margin-top:14px;\n        }\n\n        .pot-ruv-filters{\n            display:grid;\n            grid-template-columns:1fr 1fr auto;\n            gap:14px;\n            align-items:end;\n            margin-top:30px;\n            padding:18px;\n            border-radius:22px;\n            background:rgba(255,255,255,.10);\n            border:1px solid rgba(255,255,255,.14);\n            backdrop-filter:blur(14px);\n        }\n\n        .pot-ruv-filters label{\n            display:block;\n            font-weight:900;\n            font-size:.78rem;\n            margin-bottom:7px;\n            color:#FDD60C;\n        }\n\n        .pot-ruv-filters select{\n            width:100%;\n            height:48px;\n            border-radius:14px;\n            border:1px solid rgba(255,255,255,.18);\n            padding:0 12px;\n            font-weight:800;\n            outline:none;\n        }\n\n        .pot-ruv-filters button{\n            height:48px;\n            border:0;\n            border-radius:999px;\n            padding:0 24px;\n            background:linear-gradient(135deg,#FDD60C,#10A13B);\n            color:#062112;\n            font-weight:950;\n            cursor:pointer;\n        }\n\n        .pot-ruv-loading{\n            margin-top:18px;\n            padding:14px 18px;\n            border-radius:16px;\n            background:rgba(253,214,12,.14);\n            color:#FDD60C;\n            font-weight:900;\n        }\n\n        .pot-ruv-kpis{\n            margin-top:24px;\n            display:grid;\n            grid-template-columns:repeat(4,1fr);\n            gap:14px;\n        }\n\n        .pot-ruv-kpis article{\n            padding:20px;\n            border-radius:20px;\n            background:rgba(255,255,255,.11);\n            border:1px solid rgba(255,255,255,.14);\n        }\n\n        .pot-ruv-kpis span{\n            display:block;\n            font-size:.72rem;\n            text-transform:uppercase;\n            opacity:.72;\n            font-weight:900;\n        }\n\n        .pot-ruv-kpis strong{\n            display:block;\n            margin-top:8px;\n            font-size:2rem;\n            color:#FDD60C;\n            font-weight:950;\n        }\n\n        .pot-ruv-table-wrap{\n            margin-top:22px;\n            padding:18px;\n            border-radius:22px;\n            background:rgba(255,255,255,.10);\n            border:1px solid rgba(255,255,255,.13);\n            overflow:auto;\n        }\n\n        .pot-ruv-table-wrap h3{\n            margin:0 0 14px;\n            color:#fff;\n            font-weight:950;\n        }\n\n        .pot-ruv-table{\n            width:100%;\n            border-collapse:collapse;\n            min-width:850px;\n        }\n\n        .pot-ruv-table th,\n        .pot-ruv-table td{\n            padding:11px 12px;\n            border-bottom:1px solid rgba(255,255,255,.12);\n            font-size:.86rem;\n        }\n\n        .pot-ruv-table th{\n            color:#FDD60C;\n            text-align:left;\n            text-transform:uppercase;\n            font-size:.70rem;\n            letter-spacing:.5px;\n        }\n\n        .pot-ruv-table td{\n            color:rgba(255,255,255,.86);\n            font-weight:700;\n        }\n\n        @media(max-width:900px){\n            .pot-ruv-filters{\n                grid-template-columns:1fr;\n            }\n\n            .pot-ruv-kpis{\n                grid-template-columns:1fr 1fr;\n            }\n        }\n\n        @media(max-width:575px){\n            .pot-ruv-wrap{\n                padding:22px 14px;\n                border-radius:22px;\n            }\n\n            .pot-ruv-kpis{\n                grid-template-columns:1fr;\n            }\n        }\n\t\t\t\t\t\t\t\t\t   \n\t\t.pot-ruv-excel-btn{\n\t\t\theight:48px;\n\t\t\tdisplay:inline-flex;\n\t\t\talign-items:center;\n\t\t\tjustify-content:center;\n\t\t\tborder-radius:999px;\n\t\t\tpadding:0 22px;\n\t\t\tbackground:linear-gradient(135deg,#10A13B,#FDD60C);\n\t\t\tcolor:#052414 !important;\n\t\t\tfont-weight:950;\n\t\t\ttext-decoration:none !important;\n\t\t}\n\t\t\t\t\t\t\t\t\t   \n.pot-ruv-compare-box{\n    margin-top:26px;\n    padding:22px;\n    border-radius:26px;\n    background:\n        radial-gradient(circle at top right, rgba(253,214,12,.16), transparent 32%),\n        rgba(255,255,255,.09);\n    border:1px solid rgba(255,255,255,.14);\n    box-shadow:0 18px 50px rgba(0,0,0,.18);\n}\n\n.pot-ruv-compare-head span{\n    color:#FDD60C;\n    font-weight:950;\n    font-size:.78rem;\n    text-transform:uppercase;\n    letter-spacing:.6px;\n}\n\n.pot-ruv-compare-head h3{\n    margin:6px 0;\n    color:#fff;\n    font-size:clamp(1.5rem,3vw,2.5rem);\n    font-weight:950;\n}\n\n.pot-ruv-compare-head p{\n    margin:0;\n    color:rgba(255,255,255,.76);\n}\n\n.pot-ruv-compare-controls{\n    display:grid;\n    grid-template-columns:1fr 1fr auto;\n    gap:14px;\n    align-items:end;\n    margin-top:18px;\n}\n\n.pot-ruv-compare-controls label{\n    display:block;\n    color:#FDD60C;\n    font-weight:900;\n    font-size:.78rem;\n    margin-bottom:7px;\n}\n\n.pot-ruv-compare-controls select{\n    width:100%;\n    height:48px;\n    border-radius:14px;\n    border:1px solid rgba(255,255,255,.18);\n    padding:0 12px;\n    font-weight:800;\n}\n\n.pot-ruv-compare-controls button{\n    height:48px;\n    border:0;\n    border-radius:999px;\n    padding:0 24px;\n    background:linear-gradient(135deg,#FDD60C,#10A13B);\n    color:#062112;\n    font-weight:950;\n    cursor:pointer;\n}\n\n.pot-ruv-compare-kpis{\n    margin-top:22px;\n    display:grid;\n    grid-template-columns:repeat(3,1fr);\n    gap:14px;\n}\n\n.pot-ruv-compare-kpis article{\n    padding:18px;\n    border-radius:20px;\n    background:rgba(255,255,255,.10);\n    border:1px solid rgba(255,255,255,.14);\n}\n\n.pot-ruv-compare-kpis span{\n    display:block;\n    font-size:.70rem;\n    text-transform:uppercase;\n    opacity:.72;\n    font-weight:900;\n}\n\n.pot-ruv-compare-kpis strong{\n    display:block;\n    margin-top:8px;\n    color:#FDD60C;\n    font-size:1.25rem;\n    font-weight:950;\n}\n\n.pot-ruv-charts{\n    margin-top:18px;\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:16px;\n}\n\n.pot-ruv-chart-card{\n    padding:18px;\n    border-radius:22px;\n    background:rgba(0,0,0,.20);\n    border:1px solid rgba(255,255,255,.12);\n}\n\n.pot-ruv-chart-card h4{\n    margin:0 0 14px;\n    color:#fff;\n    font-weight:950;\n}\n\n@media(max-width:900px){\n    .pot-ruv-compare-controls,\n    .pot-ruv-charts{\n        grid-template-columns:1fr;\n    }\n\n    .pot-ruv-compare-kpis{\n        grid-template-columns:1fr;\n    }\n}\n\t\t\t\t\t\t\t   \n    <\/style>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', function(){\n        const ajaxUrl = \"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-admin\\\/admin-ajax.php\";\n        const municipioSelect = document.getElementById('potRuvMunicipio');\n        const btn = document.getElementById('potRuvConsultar');\n        const loading = document.getElementById('potRuvLoading');\n        const result = document.getElementById('potRuvResult');\n        const tbody = document.getElementById('potRuvHechosBody');\n\t\t\n\t\tconst municipioA = document.getElementById('potRuvMunicipioA');\n\t\tconst municipioB = document.getElementById('potRuvMunicipioB');\n\t\tconst btnComparar = document.getElementById('potRuvComparar');\n\t\tconst compareResult = document.getElementById('potRuvCompareResult');\n\n\t\tlet chartGeneral = null;\n\t\tlet chartHechos = null;\n\n        function money(n){\n            return new Intl.NumberFormat('es-CO').format(Number(n || 0));\n        }\n\n        function setLoading(state){\n            loading.style.display = state ? 'block' : 'none';\n        }\n\n        async function cargarMunicipios(){\n            const form = new FormData();\n            form.append('action','pot_ruv_municipios');\n\n            const res = await fetch(ajaxUrl, {\n                method:'POST',\n                body:form\n            });\n\n            const json = await res.json();\n\n            if (!json.success) return;\n\n            json.data.forEach(m => {\n                const opt = document.createElement('option');\n                opt.value = m.COD_MUN;\n                opt.textContent = m.MUNICIPIO;\n                municipioSelect.appendChild(opt);\n\t\t\t\t\n\t\t\t\tconst optA = opt.cloneNode(true);\n\t\t\t\tconst optB = opt.cloneNode(true);\n\t\t\t\tmunicipioA.appendChild(optA);\n\t\t\t\tmunicipioB.appendChild(optB);\n\t\t\t\t\n            });\n        }\n\n        async function consultar(){\n            const municipio = municipioSelect.value;\n            const municipioNombre = municipioSelect.options[municipioSelect.selectedIndex]?.textContent || '';\n\n            if (!municipio) {\n                alert('Seleccione un municipio');\n                return;\n            }\n\n            setLoading(true);\n            result.style.display = 'none';\n\n            const form = new FormData();\n            form.append('action','pot_ruv_consultar');\n            form.append('municipio', municipio);\n\n            const res = await fetch(ajaxUrl, {\n                method:'POST',\n                body:form\n            });\n\n            const json = await res.json();\n            setLoading(false);\n\n            if (!json.success) {\n                alert('No fue posible consultar la informaci\u00f3n.');\n                return;\n            }\n\n            const data = json.data;\n\n            document.querySelector('[data-kpi-ocurrencia]').textContent = money(data.resumen.VICTIMAS_OCURRENCIA);\n            document.querySelector('[data-kpi-declaracion]').textContent = money(data.resumen.VICTIMAS_DECLARACION);\n            document.querySelector('[data-kpi-sujetos]').textContent = money(data.resumen.SUJETOS_ATENCION);\n            document.querySelector('[data-kpi-eventos]').textContent = money(data.resumen.EVENTOS);\n\n            document.querySelector('[data-title-hechos]').textContent = 'Hechos victimizantes \u2014 ' + municipioNombre;\n\n            tbody.innerHTML = '';\n\n            data.hechos.forEach(r => {\n                tbody.innerHTML += `\n                    <tr>\n                        <td>${r.HECHO || ''}<\/td>\n                        <td>${money(r.VICTIMAS_OCURRENCIA)}<\/td>\n                        <td>${money(r.VICTIMAS_DECLARACION)}<\/td>\n                        <td>${money(r.VICTIMAS_UBICACION)}<\/td>\n                        <td>${money(r.SUJETOS_ATENCION)}<\/td>\n                        <td>${money(r.EVENTOS)}<\/td>\n                    <\/tr>\n                `;\n            });\n\n            result.style.display = 'block';\n        }\n\n\t\tasync function consultarMunicipioRuv(codMun){\n    const form = new FormData();\n    form.append('action','pot_ruv_consultar');\n    form.append('municipio', codMun);\n\n    const res = await fetch(ajaxUrl, {\n        method:'POST',\n        body:form\n    });\n\n    const json = await res.json();\n\n    if (!json.success) {\n        return null;\n    }\n\n    return json.data;\n}\n\nfunction totalHecho(data, hecho){\n    const row = (data.hechos || []).find(r => String(r.HECHO || '').toLowerCase() === hecho.toLowerCase());\n    return row ? Number(row.VICTIMAS_OCURRENCIA || 0) : 0;\n}\n\nasync function compararMunicipios(){\n    const a = municipioA.value;\n    const b = municipioB.value;\n\n    const nombreA = municipioA.options[municipioA.selectedIndex]?.textContent || '';\n    const nombreB = municipioB.options[municipioB.selectedIndex]?.textContent || '';\n\n    if (!a || !b) {\n        alert('Seleccione los dos municipios para comparar.');\n        return;\n    }\n\n    if (a === b) {\n        alert('Seleccione dos municipios diferentes.');\n        return;\n    }\n\n    setLoading(true);\n    compareResult.style.display = 'none';\n\n    const [dataA, dataB] = await Promise.all([\n        consultarMunicipioRuv(a),\n        consultarMunicipioRuv(b)\n    ]);\n\n    setLoading(false);\n\n    if (!dataA || !dataB) {\n        alert('No fue posible generar el comparativo.');\n        return;\n    }\n\n    const ocurrA = Number(dataA.resumen.VICTIMAS_OCURRENCIA || 0);\n    const ocurrB = Number(dataB.resumen.VICTIMAS_OCURRENCIA || 0);\n    const diff = ocurrA - ocurrB;\n\n    document.querySelector('[data-comp-a]').textContent = nombreA + ' \u00b7 ' + money(ocurrA);\n    document.querySelector('[data-comp-b]').textContent = nombreB + ' \u00b7 ' + money(ocurrB);\n    document.querySelector('[data-comp-diff]').textContent = money(Math.abs(diff)) + (diff >= 0 ? ' m\u00e1s en ' + nombreA : ' m\u00e1s en ' + nombreB);\n\n    compareResult.style.display = 'block';\n\n    const ctxGeneral = document.getElementById('potRuvChartGeneral');\n    const ctxHechos = document.getElementById('potRuvChartHechos');\n\n    if (chartGeneral) chartGeneral.destroy();\n    if (chartHechos) chartHechos.destroy();\n\n    chartGeneral = new Chart(ctxGeneral, {\n        type: 'bar',\n        data: {\n            labels: ['V\u00edctimas ocurrencia', 'V\u00edctimas declaraci\u00f3n', 'Sujetos atenci\u00f3n', 'Eventos'],\n            datasets: [\n                {\n                    label: nombreA,\n                    data: [\n                        dataA.resumen.VICTIMAS_OCURRENCIA || 0,\n                        dataA.resumen.VICTIMAS_DECLARACION || 0,\n                        dataA.resumen.SUJETOS_ATENCION || 0,\n                        dataA.resumen.EVENTOS || 0\n                    ],\n                    backgroundColor: 'rgba(253,214,12,.85)',\n                    borderColor: '#FDD60C',\n                    borderWidth: 2,\n                    borderRadius: 12\n                },\n                {\n                    label: nombreB,\n                    data: [\n                        dataB.resumen.VICTIMAS_OCURRENCIA || 0,\n                        dataB.resumen.VICTIMAS_DECLARACION || 0,\n                        dataB.resumen.SUJETOS_ATENCION || 0,\n                        dataB.resumen.EVENTOS || 0\n                    ],\n                    backgroundColor: 'rgba(16,161,59,.85)',\n                    borderColor: '#10A13B',\n                    borderWidth: 2,\n                    borderRadius: 12\n                }\n            ]\n        },\n        options: {\n            responsive: true,\n            plugins: {\n                legend: {\n                    labels: { color: '#fff', font: { weight: 'bold' } }\n                }\n            },\n            scales: {\n                x: {\n                    ticks: { color: '#fff', font: { weight: 'bold' } },\n                    grid: { color: 'rgba(255,255,255,.08)' }\n                },\n                y: {\n                    ticks: { color: '#fff' },\n                    grid: { color: 'rgba(255,255,255,.08)' }\n                }\n            }\n        }\n    });\n\n    const hechosBase = [\n        'Desplazamiento forzado',\n        'Homicidio',\n        'Amenaza',\n        'Acto terrorista \/ Atentados \/ Combates \/ Hostigamientos',\n        'Desaparici\u00f3n forzada',\n        'Secuestro'\n    ];\n\n    chartHechos = new Chart(ctxHechos, {\n        type: 'radar',\n        data: {\n            labels: hechosBase.map(h => h.length > 24 ? h.substring(0,24) + '...' : h),\n            datasets: [\n                {\n                    label: nombreA,\n                    data: hechosBase.map(h => totalHecho(dataA, h)),\n                    backgroundColor: 'rgba(253,214,12,.20)',\n                    borderColor: '#FDD60C',\n                    pointBackgroundColor: '#FDD60C',\n                    borderWidth: 3\n                },\n                {\n                    label: nombreB,\n                    data: hechosBase.map(h => totalHecho(dataB, h)),\n                    backgroundColor: 'rgba(16,161,59,.20)',\n                    borderColor: '#10A13B',\n                    pointBackgroundColor: '#10A13B',\n                    borderWidth: 3\n                }\n            ]\n        },\n        options: {\n            responsive: true,\n            plugins: {\n                legend: {\n                    labels: { color: '#fff', font: { weight: 'bold' } }\n                }\n            },\n            scales: {\n                r: {\n                    angleLines: { color: 'rgba(255,255,255,.18)' },\n                    grid: { color: 'rgba(255,255,255,.14)' },\n                    pointLabels: { color: '#fff', font: { weight: 'bold', size: 11 } },\n                    ticks: { color: '#fff', backdropColor: 'transparent' }\n                }\n            }\n        }\n    });\n}\n\t\t\n\t\t\n\t\t\n        btn.addEventListener('click', consultar);\n\t\tbtnComparar.addEventListener('click', compararMunicipios);\n        cargarMunicipios();\n    });\n    <\/script>\n\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-60ba06e e-con-full e-flex e-con e-child\" data-id=\"60ba06e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ca745f9 elementor-widget elementor-widget-heading\" data-id=\"ca745f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Datos dane 2025<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a5347b elementor-widget elementor-widget-text-editor\" data-id=\"4a5347b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Fuente oficial: La gran encuesta<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fbd7cde e-con-full e-flex e-con e-child\" data-id=\"fbd7cde\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t<div class=\"elementor-element elementor-element-9b89dc9 e-con-full e-flex e-con e-child\" data-id=\"9b89dc9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-931c421 elementor-widget elementor-widget-shortcode\" data-id=\"931c421\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\t<section class=\"pla-obs-pro-wrap\">\n\t\t<div class=\"pla-obs-pro-bg\"><\/div>\n\n\t\t<div class=\"pla-obs-pro-header\">\n\t\t\t<span class=\"pla-obs-pro-kicker\">Centro de Inteligencia Territorial<\/span>\n\t\t\t<h2>Observatorio Social Territorial de Nari\u00f1o<\/h2>\n\t\t\t<p>\n\t\t\t\tConsulte indicadores diferenciales calculados a partir de microdatos, f\u00f3rmulas din\u00e1micas\n\t\t\t\ty resultados territoriales del Departamento de Nari\u00f1o.\n\t\t\t<\/p>\n\t\t<\/div>\n\n\t\t<div class=\"pla-obs-tabs\" id=\"plaObsTabs\">\n\t\t\t<button data-categoria=\"mujeres\">Mujeres<\/button>\n\t\t\t<button data-categoria=\"primera_infancia_ninez\">Primera infancia y ni\u00f1ez<\/button>\n\t\t\t<button data-categoria=\"juventudes\">Juventudes<\/button>\n\t\t\t<button data-categoria=\"adultos_mayores\">Adultos mayores<\/button>\n\t\t\t<button data-categoria=\"comunidades_etnicas\">Comunidades \u00e9tnicas<\/button>\n\t\t\t<button data-categoria=\"personas_discapacidad\">Personas con discapacidad<\/button>\n\t\t<\/div>\n\n\t\t<div class=\"pla-obs-pro-panel\">\n\t\t\t<div class=\"pla-obs-field\">\n\t\t\t\t<label>Categor\u00eda poblacional<\/label>\n\t\t\t\t<select id=\"plaObsCategoria\">\n\t\t\t\t\t<option value=\"\">Seleccione una categor\u00eda<\/option>\n\t\t\t\t<\/select>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"pla-obs-field\">\n\t\t\t\t<label>Indicador<\/label>\n\t\t\t\t<select id=\"plaObsIndicador\" disabled>\n\t\t\t\t\t<option value=\"\">Seleccione un indicador<\/option>\n\t\t\t\t<\/select>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"pla-obs-field\">\n\t\t\t\t<label>A\u00f1o<\/label>\n\t\t\t\t<input type=\"number\" id=\"plaObsAnio\" value=\"\">\n\t\t\t<\/div>\n\n\t\t\t<button id=\"plaObsConsultar\" class=\"pla-obs-btn\" disabled>\n\t\t\t\tConsultar indicador\n\t\t\t<\/button>\n\t\t<\/div>\n\n\t\t<div id=\"plaObsLoading\" class=\"pla-obs-loading\" style=\"display:none;\">\n\t\t\tProcesando informaci\u00f3n territorial...\n\t\t<\/div>\n\n\t\t<div id=\"plaObsResultado\" class=\"pla-obs-result\" style=\"display:none;\">\n\n\t\t\t<div class=\"pla-obs-kpi-grid\">\n\t\t\t\t<div class=\"pla-obs-kpi\">\n\t\t\t\t\t<span>Segmentos<\/span>\n\t\t\t\t\t<strong id=\"plaObsTotal\">0<\/strong>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"pla-obs-kpi\">\n\t\t\t\t\t<span>Total base<\/span>\n\t\t\t\t\t<strong id=\"plaObsBase\">0<\/strong>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"pla-obs-kpi\">\n\t\t\t\t\t<span>Total cumple<\/span>\n\t\t\t\t\t<strong id=\"plaObsCumple\">0<\/strong>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"pla-obs-kpi\">\n\t\t\t\t\t<span>Promedio<\/span>\n\t\t\t\t\t<strong id=\"plaObsPromedio\">-<\/strong>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"pla-obs-visual-grid\">\n\t\t\t\t<div class=\"pla-obs-box\">\n\t\t\t\t\t<h3>Gr\u00e1fica del indicador<\/h3>\n\t\t\t\t\t<div class=\"pla-obs-chart-shell\">\n\t\t\t\t\t\t<canvas id=\"plaObsChart\"><\/canvas>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"pla-obs-box\">\n\t\t\t\t\t<h3>Resultados territoriales<\/h3>\n\n\t\t\t\t\t<div class=\"pla-obs-actions\">\n\t\t\t\t\t\t<button id=\"plaObsExportCsv\">Exportar CSV<\/button>\n\t\t\t\t\t\t<button id=\"plaObsExportPrint\">Imprimir \/ PDF<\/button>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"pla-obs-table-wrap\">\n\t\t\t\t\t\t<table class=\"pla-obs-table\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Departamento<\/th>\n\t\t\t\t\t\t\t\t\t<th>Clase<\/th>\n\t\t\t\t\t\t\t\t\t<th>Sexo<\/th>\n\t\t\t\t\t\t\t\t\t<th>A\u00f1o<\/th>\n\t\t\t\t\t\t\t\t\t<th>Base<\/th>\n\t\t\t\t\t\t\t\t\t<th>Cumple<\/th>\n\t\t\t\t\t\t\t\t\t<th>Resultado<\/th>\n\t\t\t\t\t\t\t\t\t<th>Unidad<\/th>\n\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<\/thead>\n\t\t\t\t\t\t\t<tbody id=\"plaObsTablaBody\">\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td colspan=\"8\">Sin informaci\u00f3n consultada.<\/td>\n\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<\/tbody>\n\t\t\t\t\t\t<\/table>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"pla-obs-box pla-obs-mapbox\">\n\t\t\t\t<h3>Mapa territorial<\/h3>\n\t\t\t\t<div id=\"plaObsMapa\" style=\"height:480px;\"><\/div>\n\t\t\t<\/div>\n\n\t\t<\/div>\n\t<\/section>\n\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-44a257a e-con-full e-flex e-con e-child\" data-id=\"44a257a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8944aa1 elementor-widget elementor-widget-ha-slider happy-addon ha-slider\" data-id=\"8944aa1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;animation_speed&quot;:300,&quot;autoplay&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:3000,&quot;loop&quot;:&quot;yes&quot;,&quot;slides_transition&quot;:&quot;slide&quot;,&quot;navigation&quot;:&quot;arrow&quot;}\" data-widget_type=\"ha-slider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"hajs-slick ha-slick ha-slick--slider\">\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<div class=\"ha-slick-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2025\/11\/Banner-1.png\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<a class=\"ha-slick-item\" href=\"https:\/\/cedre.udenar.edu.co\/centro-de-datos-regional\/\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/03\/BANNER-3.png\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<div class=\"ha-slick-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2025\/11\/1920x500-convocatoria-1.png\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<div class=\"ha-slick-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2025\/11\/Banner_PlandeDesarrollo-01.jpg\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<div class=\"ha-slick-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2025\/11\/1920x500-1-scaled-1.jpg\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<div class=\"ha-slick-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2025\/11\/1-1.jpg\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t<div class=\"ha-slick-slide slick-slide\">\n\t\t\t\t\t<div class=\"ha-slick-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"ha-slick-img\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2025\/11\/BANNER-GOB.-NARINO-1920-X-500.png\" alt=\"\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\n\t\t<\/div>\n\n\t\t\t\t\t<button type=\"button\" class=\"slick-prev\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-left\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"><\/path><\/svg><\/button>\n\t\t\n\t\t\t\t\t<button type=\"button\" class=\"slick-next\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-right\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"><\/path><\/svg><\/button>\n\t\t\n\t\t\t\t\t\t<\/div>\n\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>Modulo Observatorio Social Territorial El M\u00f3dulo Observatorio Social Territorial del Departamento de Nari\u00f1o es una herramienta estrat\u00e9gica orientada a la [&hellip;]<\/p>\n","protected":false},"author":6,"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":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","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-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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":""},"class_list":["post-4527","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages\/4527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/comments?post=4527"}],"version-history":[{"count":97,"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages\/4527\/revisions"}],"predecessor-version":[{"id":5003,"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages\/4527\/revisions\/5003"}],"wp:attachment":[{"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/media?parent=4527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}