{"id":5661,"date":"2026-09-27T20:00:19","date_gmt":"2026-09-27T20:00:19","guid":{"rendered":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/?page_id=5661"},"modified":"2026-09-27T23:05:46","modified_gmt":"2026-09-27T23:05:46","slug":"colombia-ecuador","status":"publish","type":"page","link":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/colombia-ecuador\/","title":{"rendered":"Colombia ecuador"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5661\" class=\"elementor elementor-5661\" 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-df34453 e-con-full e-flex e-con e-parent\" data-id=\"df34453\" 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-2482959 elementor-widget elementor-widget-image\" data-id=\"2482959\" 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 fetchpriority=\"high\" decoding=\"async\" width=\"1920\" height=\"640\" src=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/09\/alianza-colombo-ecuatoriana.webp\" class=\"attachment-2048x2048 size-2048x2048 wp-image-5656\" alt=\"\" srcset=\"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/09\/alianza-colombo-ecuatoriana.webp 1920w, https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/09\/alianza-colombo-ecuatoriana-300x100.webp 300w, https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/09\/alianza-colombo-ecuatoriana-1024x341.webp 1024w, https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/09\/alianza-colombo-ecuatoriana-768x256.webp 768w, https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-content\/uploads\/2026\/09\/alianza-colombo-ecuatoriana-1536x512.webp 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/>\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-19fca6f e-con-full e-flex e-con e-parent\" data-id=\"19fca6f\" 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-e02e81b elementor-widget elementor-widget-shortcode\" data-id=\"e02e81b\" 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 class=\"podfr-real\" style=\"--podfr-height:620px\">\n\n        <div id=\"podfrRealMap_67450\" class=\"podfr-real-map\"><\/div>\n\n        <header class=\"podfr-hero\">\n            <div class=\"podfr-hero-kicker\">Observatorio POD \u00b7 Colombia \u2014 Ecuador<\/div>\n            <h3>Especies en nuestra frontera<\/h3>\n            <p>Lectura interactiva del territorio lim\u00edtrofe entre el departamento de Nari\u00f1o y la provincia del Carchi.<\/p>\n        <\/header>\n\n        <div class=\"podfr-actions\">\n            <button type=\"button\" class=\"podfr-action\" data-podfr-home title=\"Extensi\u00f3n Nari\u00f1o\u2013Carchi\" aria-label=\"Extensi\u00f3n Nari\u00f1o\u2013Carchi\">\u2302<\/button>\n        <\/div>\n\n        <div class=\"podfr-country podfr-country--co\">Colombia \u00b7 Nari\u00f1o<\/div>\n        <div class=\"podfr-country podfr-country--ec\">Ecuador \u00b7 Carchi<\/div>\n\n        <div class=\"podfr-legend\">\n            <span class=\"podfr-legend-item\"><i class=\"podfr-dot podfr-dot--fauna\"><\/i>Fauna \u00b7 movimiento lento<\/span>\n            <span class=\"podfr-legend-item\"><i class=\"podfr-dot podfr-dot--flora\"><\/i>Flora \u00b7 punto fijo<\/span>\n            <span class=\"podfr-legend-item\"><i class=\"podfr-proximity\"><\/i>Municipios resaltados<\/span>\n        <\/div>\n\n\n\n\n        <div class=\"podfr-source\">Nari\u00f1o: GeoJSON institucional del Observatorio \u00b7 Resaltados: Barbacoas, Ricaurte, Cuaspud Carlosama, Aldana, Cumbal e Ipiales \u00b7 Puntos: referencias visuales aproximadas concentradas sobre el corredor fronterizo.<\/div>\n\n    <\/section>\n\n        <section class=\"podfr-dashboard\" aria-label=\"Tablero de biodiversidad transfronteriza\">\n            <div class=\"podfr-db-head\">\n                <div>\n                    <div class=\"podfr-db-kicker\">\u25cf Biodiversidad transfronteriza en cifras<\/div>\n                    <h3 class=\"podfr-db-title\">Carchi \u00b7 Nari\u00f1o<\/h3>\n                    <p class=\"podfr-db-sub\">Lectura ejecutiva del cat\u00e1logo de especies de las \u00e1reas lim\u00edtrofes entre Colombia y Ecuador. Los indicadores corresponden al cat\u00e1logo fuente; los puntos del mapa son una representaci\u00f3n visual del corredor.<\/p>\n                <\/div>\n                <div class=\"podfr-db-source\">Fuente del cat\u00e1logo<br><strong>ANP Carchi\u2013Nari\u00f1o<\/strong><\/div>\n            <\/div>\n            <div class=\"podfr-kpis\">\n                <div class=\"podfr-kpi\"><small>Registros del cat\u00e1logo<\/small><strong>225<\/strong><span>Fauna + flora<\/span><\/div>\n                <div class=\"podfr-kpi podfr-kpi--fauna\"><small>Fauna<\/small><strong>156<\/strong><span>69,3 % del cat\u00e1logo<\/span><\/div>\n                <div class=\"podfr-kpi podfr-kpi--flora\"><small>Flora<\/small><strong>69<\/strong><span>30,7 % del cat\u00e1logo<\/span><\/div>\n                <div class=\"podfr-kpi podfr-kpi--co\"><small>Territorio<\/small><strong>2<\/strong><span>Colombia \u00b7 Ecuador<\/span><\/div>\n            <\/div>\n            <div class=\"podfr-db-grid\">\n                <div class=\"podfr-db-card\">\n                    <h4>Composici\u00f3n del cat\u00e1logo<\/h4><p>Distribuci\u00f3n entre registros de fauna y flora.<\/p>\n                    <div class=\"podfr-composition\">\n                        <div class=\"podfr-donut\" role=\"img\" aria-label=\"69,3 por ciento fauna y 30,7 por ciento flora\"><div class=\"podfr-donut-center\"><strong>225<\/strong><span>Total<\/span><\/div><\/div>\n                        <div>\n                            <div class=\"podfr-legend-row\"><span class=\"podfr-legend-name\"><i class=\"podfr-dot podfr-dot--fauna\"><\/i>Fauna<\/span><strong>156 \u00b7 69,3%<\/strong><\/div>\n                            <div class=\"podfr-legend-row\"><span class=\"podfr-legend-name\"><i class=\"podfr-dot podfr-dot--flora\"><\/i>Flora<\/span><strong>69 \u00b7 30,7%<\/strong><\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"podfr-db-card\">\n                    <h4>Registros por pa\u00eds<\/h4><p>Distribuci\u00f3n territorial indicada por el cat\u00e1logo fuente.<\/p>\n                    <div class=\"podfr-db-country\"><div class=\"podfr-country-head\"><span>\ud83c\udde8\ud83c\uddf4 Colombia<\/span><span>167 \u00b7 74,2%<\/span><\/div><div class=\"podfr-country-track\"><div class=\"podfr-country-fill podfr-country-fill--co\"><\/div><\/div><\/div>\n                    <div class=\"podfr-db-country\"><div class=\"podfr-country-head\"><span>\ud83c\uddea\ud83c\udde8 Ecuador<\/span><span>58 \u00b7 25,8%<\/span><\/div><div class=\"podfr-country-track\"><div class=\"podfr-country-fill podfr-country-fill--ec\"><\/div><\/div><\/div>\n                    <div class=\"podfr-db-note\">Los totales describen los registros publicados en el cat\u00e1logo fuente y no deben interpretarse como un censo exhaustivo de toda la biodiversidad existente en la frontera.<\/div>\n                <\/div>\n            <\/div>\n            <div class=\"podfr-explorer\">\n                <div class=\"podfr-explorer-head\">\n                    <div><h4>Explorador de especies<\/h4><p>Busque y filtre las especies publicadas por el cat\u00e1logo ANP Carchi\u2013Nari\u00f1o. Las fichas ampl\u00edan informaci\u00f3n directamente desde la fuente.<\/p><\/div>\n                    <div class=\"podfr-explorer-count\"><strong data-podfr-count>24<\/strong> especies visibles<\/div>\n                <\/div>\n                <div class=\"podfr-filterbar\">\n                    <div class=\"podfr-field\"><span class=\"podfr-search-icon\">\u2315<\/span><input type=\"search\" data-podfr-search placeholder=\"Buscar por nombre com\u00fan o cient\u00edfico\u2026\"><\/div>\n                    <div class=\"podfr-field\"><select data-podfr-country><option value=\"\">Colombia + Ecuador<\/option><option value=\"colombia\">Colombia<\/option><option value=\"ecuador\">Ecuador<\/option><\/select><\/div>\n                    <div class=\"podfr-field\"><select data-podfr-type><option value=\"\">Fauna + Flora<\/option><option value=\"fauna\">Fauna<\/option><option value=\"flora\">Flora<\/option><\/select><\/div>\n                    <div class=\"podfr-field\"><select data-podfr-area><option value=\"\">Todas las \u00e1reas \/ cat\u00e1logos<\/option><\/select><\/div>\n                <\/div>\n                <div class=\"podfr-species-grid\" data-podfr-grid>\n                    <article class=\"podfr-spec-card\" data-name=\"parula tropical\" data-scientific=\"setophaga pitiayumi\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/parula-tropical\/\" data-index=\"0\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Parula tropical<\/b><em>Setophaga pitiayumi<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"cusumbo\" data-scientific=\"nasuella oliv\u00e1cea\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/cusumbo\/\" data-index=\"1\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Cusumbo<\/b><em>Nasuella oliv\u00e1cea<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"cachudito paramuno\" data-scientific=\"anairetes agilis\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/cachudito-paramuno\/\" data-index=\"2\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Cachudito paramuno<\/b><em>Anairetes agilis<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"venado colorado del p\u00e1ramo\" data-scientific=\"mazama rufina\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/venado-colorado-del-paramo\/\" data-index=\"3\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Venado colorado del p\u00e1ramo<\/b><em>Mazama rufina<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"loro andino\" data-scientific=\"amazona mercenarius\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/loro-andino\/\" data-index=\"4\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Loro andino<\/b><em>Amazona mercenarius<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"mirla andina\" data-scientific=\"turdus fuscater\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/mirla-andina\/\" data-index=\"5\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Mirla andina<\/b><em>Turdus fuscater<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"agut\u00ed\" data-scientific=\"agouti taczanowskii (sachacuyes)\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/aguti\/\" data-index=\"6\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Agut\u00ed<\/b><em>Agouti taczanowskii (sachacuyes)<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"helecho arb\u00f3reo\" data-scientific=\"cyathea sp\" data-type=\"flora\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/flora\/helecho-arboreo\/\" data-index=\"7\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u2726<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Helecho arb\u00f3reo<\/b><em>Cyathea sp<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--flora\">Flora<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"zarig\u00fceya andina de orejas blancas\" data-scientific=\"didelphis pernigra\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/zarigueya-andina-de-orejas-blancas-raposa-de-orejas-blancas\/\" data-index=\"8\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Zarig\u00fceya andina de orejas blancas<\/b><em>Didelphis pernigra<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"colibr\u00ed cola larga negra\" data-scientific=\"lesbia victoriae\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/colibri-cola-larga-negra\/\" data-index=\"9\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Colibr\u00ed cola larga negra<\/b><em>Lesbia victoriae<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"\u00e1guila pechinegra\" data-scientific=\"geranoaetus melanoleucus\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/aguila-pechinegra\/\" data-index=\"10\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>\u00c1guila pechinegra<\/b><em>Geranoaetus melanoleucus<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"mosquero negro\" data-scientific=\"sayornis nigricans\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/mosquero-negro\/\" data-index=\"11\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Mosquero Negro<\/b><em>Sayornis nigricans<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"andarr\u00edos solitario\" data-scientific=\"tringa solitaria\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/andarrios-solitario\/\" data-index=\"12\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Andarr\u00edos solitario<\/b><em>Tringa solitaria<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"cortadera\" data-scientific=\"rhynchospora sp.\" data-type=\"flora\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/flora\/cortadera\/\" data-index=\"13\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u2726<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Cortadera<\/b><em>Rhynchospora sp.<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--flora\">Flora<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"puma\" data-scientific=\"puma concolor\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/puma\/\" data-index=\"14\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Puma<\/b><em>Puma concolor<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"colaespina de azara \/ chamicero\" data-scientific=\"synallaxis azarae\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/colaespina-de-azara-chamicero\/\" data-index=\"15\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Colaespina de azara \/ Chamicero<\/b><em>Synallaxis azarae<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"rana de torrente del suro\" data-scientific=\"hyloscirtus pantostictus\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/rana-de-torrente-del-suro\/\" data-index=\"16\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Rana de torrente del suro<\/b><em>Hyloscirtus pantostictus<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"avefr\u00eda andina\" data-scientific=\"vanellus resplendens\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/avefria-andina\/\" data-index=\"17\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Avefr\u00eda Andina<\/b><em>Vanellus resplendens<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"zorro andino\" data-scientific=\"lycalopex culpaeus\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/zorro-andino\/\" data-index=\"18\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Zorro andino<\/b><em>Lycalopex culpaeus<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"quilico \/ cern\u00edcalo americano \/ halc\u00f3n\" data-scientific=\"falco sparverius\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/quilico-cernicalo-americano-halcon\/\" data-index=\"19\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Quilico \/ Cern\u00edcalo americano \/ Halc\u00f3n<\/b><em>Falco sparverius<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"colibr\u00edes\" data-scientific=\"trochilidae\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/colibries\/\" data-index=\"20\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Colibr\u00edes<\/b><em>Trochilidae<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"chuquiragua blanca\" data-scientific=\"chuquiraga insignis\" data-type=\"flora\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/flora\/chuquiragua-blanca\/\" data-index=\"21\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u2726<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Chuquiragua blanca<\/b><em>Chuquiraga insignis<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--flora\">Flora<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"achupalla\" data-scientific=\"puya clava-herculis\" data-type=\"flora\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/flora\/achupalla\/\" data-index=\"22\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u2726<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Achupalla<\/b><em>Puya clava-herculis<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--flora\">Flora<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article><article class=\"podfr-spec-card\" data-name=\"colibr\u00ed terciopelo \/ colibr\u00ed piquicurvo\" data-scientific=\"lafresnaya lafresnayi\" data-type=\"fauna\" data-country=\"\" data-area=\"\" data-url=\"https:\/\/anpcarchinarino.com\/fauna\/colibri-terciopelo-colibri-piquicurvo\/\" data-index=\"23\">\n                        <div class=\"podfr-spec-photo\"><div class=\"podfr-spec-fallback\">\u25cf<\/div><\/div>\n                        <div class=\"podfr-spec-body\"><b>Colibr\u00ed terciopelo \/ Colibr\u00ed piquicurvo<\/b><em>Lafresnaya lafresnayi<\/em><div class=\"podfr-spec-meta\"><span class=\"podfr-spec-tag podfr-spec-tag--fauna\">Fauna<\/span><\/div><div class=\"podfr-spec-open\">Ver ficha PRO \u2192<\/div><\/div>\n                    <\/article>\n                <\/div>\n                <div class=\"podfr-empty\" data-podfr-empty>No se encontraron especies con los filtros seleccionados.<\/div>\n                <div class=\"podfr-loadrow\">\n                    <a class=\"podfr-sourcebtn\" href=\"https:\/\/anpcarchinarino.com\/explorar\/\" target=\"_blank\" rel=\"noopener\">Consultar cat\u00e1logo completo \u00b7 225 registros \u2197<\/a>\n                <\/div>\n            <\/div>\n        <\/section>\n\n    <div class=\"podfr-modal\" data-podfr-modal aria-hidden=\"true\">\n        <div class=\"podfr-modal-card\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Ficha de especie\">\n            <button type=\"button\" class=\"podfr-modal-close\" data-podfr-close aria-label=\"Cerrar\">\u00d7<\/button>\n            <div data-podfr-modalbody><div class=\"podfr-loading\">Seleccione una especie para consultar su ficha.<\/div><\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', async function(){\n\n        if (typeof L === 'undefined') return;\n\n        const el = document.getElementById(\"podfrRealMap_67450\");\n        if (!el || el.dataset.podfrLoaded === '1') return;\n        el.dataset.podfrLoaded = '1';\n\n        const wrap = el.closest('.podfr-real');\n        const isMobile = window.matchMedia('(max-width:767.98px)').matches;\n\n        const map = L.map(el,{\n            zoomControl:true,\n            attributionControl:true,\n            scrollWheelZoom:!isMobile,\n            preferCanvas:false\n        }).setView([1.05,-77.75], parseInt(\"8\",10) || 8);\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        map.createPane('carchiPane');\n        map.getPane('carchiPane').style.zIndex = 405;\n\n        map.createPane('narinoPane');\n        map.getPane('narinoPane').style.zIndex = 410;\n\n        map.createPane('speciesPane');\n        map.getPane('speciesPane').style.zIndex = 640;\n\n        const carchiData = {\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"nombre\":\"CARCHI\",\"pais\":\"Ecuador\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-77.531867,0.652364],[-77.656426,0.647553],[-77.679159,0.561124],[-77.75081,0.506131],[-77.813067,0.403411],[-77.812719,0.356768],[-77.923703,0.401279],[-78.014736,0.473516],[-78.092664,0.481051],[-78.129261,0.530528],[-78.140414,0.625031],[-78.271287,0.784274],[-78.387172,0.825436],[-78.453598,0.875927],[-78.546731,0.941382],[-78.544137,1.045698],[-78.504416,1.072061],[-78.508583,1.188649],[-78.418338,1.159808],[-78.314183,1.190652],[-78.282118,1.057422],[-78.209216,1.004847],[-78.198089,0.949844],[-78.107263,0.927883],[-77.966111,0.824356],[-77.866984,0.801549],[-77.720848,0.849945],[-77.67314,0.823935],[-77.6964,0.740191],[-77.662774,0.705929],[-77.531867,0.652364]]]}}]};\n        const carchiCoords = carchiData.features[0].geometry.coordinates[0];\n\n        function esc(v){\n            return String(v ?? '').replace(\/[&<>\"']\/g,function(c){\n                return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[c];\n            });\n        }\n\n        function municipioNombre(p){\n            return p.NOMBRE || p.nombre || p.NOM_MUN || p.MPIO_CNMBR ||\n                   p.MUNICIPIO || p.municipio || p.NAME_2 || 'Municipio';\n        }\n\n        function toXY(lng,lat,refLat){\n            const k = Math.cos(refLat*Math.PI\/180);\n            return [lng*k,lat];\n        }\n\n        function pointSegmentDistance(px,py,ax,ay,bx,by){\n            const vx=bx-ax, vy=by-ay;\n            const wx=px-ax, wy=py-ay;\n            const c1=vx*wx+vy*wy;\n            if(c1<=0) return Math.hypot(px-ax,py-ay);\n            const c2=vx*vx+vy*vy;\n            if(c2<=c1) return Math.hypot(px-bx,py-by);\n            const t=c1\/c2;\n            const qx=ax+t*vx, qy=ay+t*vy;\n            return Math.hypot(px-qx,py-qy);\n        }\n\n        function distanceToCarchi(lat,lng){\n            const refLat=lat;\n            const p=toXY(lng,lat,refLat);\n            let min=Infinity;\n            for(let i=0;i<carchiCoords.length-1;i++){\n                const a=toXY(Number(carchiCoords[i][0]),Number(carchiCoords[i][1]),refLat);\n                const b=toXY(Number(carchiCoords[i+1][0]),Number(carchiCoords[i+1][1]),refLat);\n                min=Math.min(min,pointSegmentDistance(p[0],p[1],a[0],a[1],b[0],b[1]));\n            }\n            return min;\n        }\n\n        function proximityColor(distance,minD,maxD){\n            const span=Math.max(.000001,maxD-minD);\n            const t=Math.max(0,Math.min(1,(distance-minD)\/span));\n            if(t<=.10) return '#006d31';\n            if(t<=.22) return '#008b3c';\n            if(t<=.38) return '#28a653';\n            if(t<=.56) return '#68bb7f';\n            if(t<=.75) return '#a6d7b2';\n            return '#e7f5eb';\n        }\n\n        const carchiLayer = L.geoJSON(carchiData,{\n            pane:'carchiPane',\n            style:{\n                color:'#FFD600',\n                weight:2.4,\n                opacity:1,\n                fillColor:'#d8b600',\n                fillOpacity:.28\n            },\n            onEachFeature:function(feature,layer){\n                layer.bindTooltip('<strong>Provincia del Carchi<\/strong><br>Ecuador',{\n                    sticky:true,\n                    className:'podfr-tooltip'\n                });\n                layer.bindPopup(\n                    '<article class=\"podfr-pop\">'+\n                    '<div class=\"podfr-pop-head podfr-pop-head--ecuador\">'+\n                    '<small>Ecuador<\/small><strong>Provincia del Carchi<\/strong><\/div>'+\n                    '<div class=\"podfr-pop-body\"><p>Territorio fronterizo representado geogr\u00e1ficamente en el mismo sistema cartogr\u00e1fico de Nari\u00f1o.<\/p><\/div>'+\n                    '<\/article>'\n                );\n            }\n        }).addTo(map);\n\n        const contornoLayer = L.geoJSON(null,{\n            pane:'narinoPane',\n            style:{color:'red',weight:2.2,opacity:.94,fillOpacity:0}\n        }).addTo(map);\n\n        const municipiosLayer = L.geoJSON(null,{pane:'narinoPane'}).addTo(map);\n\n        let homeBounds=null;\n        const faunaMovil=[];\n\n        function normalizeSpecies(data){\n            if(Array.isArray(data)) return data;\n            if(data && data.type==='FeatureCollection'){\n                return (data.features||[]).map(function(f){\n                    const p=Object.assign({},f.properties||{});\n                    if(f.geometry && f.geometry.type==='Point'){\n                        p.lng=f.geometry.coordinates[0];\n                        p.lat=f.geometry.coordinates[1];\n                    }\n                    return p;\n                });\n            }\n            return [];\n        }\n\n        function speciesType(p){\n            return String(p.tipo || p.type || p.grupo || p.categoria || '').trim().toLowerCase();\n        }\n\n        const podfrMapFichaEndpoint=\"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-json\\\/observatorio-pot\\\/v1\\\/anp-ficha\";\n        const podfrMapFichaCache=new Map();\n\n        async function podfrMapFicha(p){\n            const url=String((p && (p.url || p.enlace || p.link)) || '').trim();\n            if(!url) return p;\n            if(p.imagen || p.image) return p;\n            if(podfrMapFichaCache.has(url)) return podfrMapFichaCache.get(url);\n\n            const job=(async function(){\n                try{\n                    const r=await fetch(podfrMapFichaEndpoint+'?url='+encodeURIComponent(url),{\n                        credentials:'same-origin',\n                        cache:'no-store'\n                    });\n                    if(!r.ok) return p;\n                    const d=await r.json();\n                    if(d && d.imagen){\n                        p.imagen=d.imagen;\n                        p.image=d.imagen;\n                    }\n                    return p;\n                }catch(e){\n                    return p;\n                }\n            })();\n\n            podfrMapFichaCache.set(url,job);\n            return job;\n        }\n\n        function speciesPopup(p,type){\n            const title=p.nombre || p.name || p.especie || p.titulo || (type==='fauna'?'Fauna':'Flora');\n            const scientific=p.nombre_cientifico || p.cientifico || p.scientific_name || '';\n            const habitat=p.habitat || '';\n            const dieta=p.dieta || '';\n            const comportamiento=p.comportamiento || '';\n            const catalogo=p.catalogo || '';\n            const pais=p.pais || '';\n            const image=p.imagen || p.image || '';\n            const url=p.url || p.enlace || p.link || '';\n\n            return '<article class=\"podfr-pop podfr-pop--species\">'+\n                (image?'<div class=\"podfr-pop-photo\"><img decoding=\"async\" src=\"'+esc(image)+'\" alt=\"'+esc(title)+'\" loading=\"lazy\" onerror=\"this.closest(\\'.podfr-pop-photo\\').remove()\"><\/div>':'')+\n                '<div class=\"podfr-pop-head '+(type==='fauna'?'podfr-pop-head--fauna':'podfr-pop-head--flora')+'\">'+\n                '<small>'+esc(type)+(pais?' \u00b7 '+esc(pais):'')+'<\/small><strong>'+esc(title)+'<\/strong>'+\n                (scientific?'<em>'+esc(scientific)+'<\/em>':'')+'<\/div>'+\n                '<div class=\"podfr-pop-body\">'+\n                (habitat?'<div class=\"podfr-data\"><b>H\u00e1bitat<\/b><span>'+esc(habitat)+'<\/span><\/div>':'')+\n                (dieta?'<div class=\"podfr-data\"><b>'+(type==='flora'?'Nutrici\u00f3n':'Dieta')+'<\/b><span>'+esc(dieta)+'<\/span><\/div>':'')+\n                (comportamiento?'<div class=\"podfr-data\"><b>Comportamiento<\/b><span>'+esc(comportamiento)+'<\/span><\/div>':'')+\n                (catalogo?'<div class=\"podfr-catalog\">'+esc(catalogo)+'<\/div>':'')+\n                (url?'<a class=\"podfr-pop-link\" href=\"'+esc(url)+'\" target=\"_blank\" rel=\"noopener noreferrer\">Consultar ficha original \u2197<\/a>':'')+\n                '<\/div><\/article>';\n        }\n\n        function addSpecies(data){\n            normalizeSpecies(data).forEach(function(p,index){\n                const lat=Number(p.lat ?? p.latitude);\n                const lng=Number(p.lng ?? p.lon ?? p.longitude);\n                const type=speciesType(p);\n\n                if(!Number.isFinite(lat) || !Number.isFinite(lng)) return;\n                if(type!=='fauna' && type!=='flora') return;\n\n                const icon=L.divIcon({\n                    className:type==='fauna'?'podfr-fauna-icon':'podfr-flora-icon',\n                    html:'<span class=\"'+(type==='fauna'?'podfr-fauna-point':'podfr-flora-point')+'\"><\/span>',\n                    iconSize:[14,14],\n                    iconAnchor:[7,7]\n                });\n\n                const marker=L.marker([lat,lng],{\n                    icon:icon,\n                    pane:'speciesPane'\n                }).addTo(map);\n\n                marker.bindPopup(speciesPopup(p,type),{maxWidth:300});\n\n                marker.on('popupopen',async function(){\n                    const popup=marker.getPopup();\n                    const currentToken=String(Date.now())+'-'+Math.random();\n                    marker._podfrPopupToken=currentToken;\n\n                    \/* Si a\u00fan no existe foto, se consulta exclusivamente la ficha\n                       correspondiente a ESTE marcador. *\/\n                    if(!(p.imagen || p.image)){\n                        const original=popup.getContent();\n                        popup.setContent(\n                            '<article class=\"podfr-pop podfr-pop--species\">'+\n                            '<div class=\"podfr-pop-loading\">Cargando fotograf\u00eda de la especie\u2026<\/div>'+\n                            original+\n                            '<\/article>'\n                        );\n                        popup.update();\n                    }\n\n                    await podfrMapFicha(p);\n\n                    if(marker._podfrPopupToken!==currentToken || !marker.isPopupOpen()) return;\n                    popup.setContent(speciesPopup(p,type));\n                    popup.update();\n                });\n\n                const nm=p.nombre || p.name || p.especie || '';\n                if(nm){\n                    marker.bindTooltip(esc(nm),{\n                        direction:'top',\n                        offset:[0,-8],\n                        className:'podfr-tooltip'\n                    });\n                }\n\n                if(type==='fauna'){\n                    const radioLat=Math.max(.00800,Math.min(.02200,Number(p.radio_lat || .01400)));\n                    const radioLng=Math.max(.01000,Math.min(.02800,Number(p.radio_lng || .01800)));\n\n                    faunaMovil.push({\n                        marker:marker,\n                        baseLat:lat,\n                        baseLng:lng,\n\n                        \/\/ Cada punto rojo tiene su propio ciclo aleatorio.\n                        currentLat:lat,\n                        currentLng:lng,\n                        startLat:lat,\n                        startLng:lng,\n                        targetLat:lat,\n                        targetLng:lng,\n                        startTime:performance.now(),\n                        duration:1200 + Math.random()*1800,\n                        pauseUntil:performance.now() + Math.random()*2200,\n\n                        radiusLat:radioLat,\n                        radiusLng:radioLng,\n                        verticalBias:.65 + Math.random()*.75,\n                        horizontalBias:.65 + Math.random()*.75\n                    });\n                }\n            });\n        }\n\n        try{\n            const responses=await Promise.all([\n                fetch(\"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-content\\\/uploads\\\/observatorio-pot\\\/geo\\\/municipios_narino.geojson\",{cache:'no-store'}),\n                fetch(\"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-content\\\/uploads\\\/observatorio-pot\\\/geo\\\/contorno_narino.geojson\",{cache:'no-store'})\n            ]);\n\n            if(!responses[0].ok) throw new Error('Municipios GeoJSON HTTP '+responses[0].status);\n            if(!responses[1].ok) throw new Error('Contorno Nari\u00f1o HTTP '+responses[1].status);\n\n            const gjMunicipios=await responses[0].json();\n            const gjContorno=await responses[1].json();\n\n            contornoLayer.addData(gjContorno);\n            municipiosLayer.addData(gjMunicipios);\n\n            \/\/ \u00daNICOS municipios resaltados, definidos expresamente.\n            const municipiosResaltados = [\n                'BARBACOAS',\n                'RICAURTE',\n                'CUASPUD CARLOSAMA',\n                'CUASPUD',\n                'CARLOSAMA',\n                'ALDANA',\n                'CUMBAL',\n                'IPIALES'\n            ];\n\n            function normalizarMunicipio(texto){\n                return String(texto || '')\n                    .normalize('NFD')\n                    .replace(\/[\\u0300-\\u036f]\/g,'')\n                    .trim()\n                    .toUpperCase();\n            }\n\n            function esMunicipioResaltado(nombre){\n                const n=normalizarMunicipio(nombre);\n                return municipiosResaltados.some(function(municipio){\n                    return n===municipio || n.includes(municipio);\n                });\n            }\n\n            const capasFrontera = [];\n\n            municipiosLayer.eachLayer(function(layer){\n                const props=(layer.feature && layer.feature.properties) || {};\n                const nombre=municipioNombre(props);\n                const resaltado=esMunicipioResaltado(nombre);\n\n                if(resaltado){\n                    capasFrontera.push({layer:layer,nombre:nombre});\n                }\n\n                function normalStyle(){\n                    layer.setStyle({\n                        color:resaltado ? '#FFD600' : 'rgba(255,255,255,.70)',\n                        weight:resaltado ? 2.2 : .75,\n                        opacity:1,\n                        fillColor:resaltado ? '#00923F' : '#dfe8e2',\n                        fillOpacity:resaltado ? .88 : .30\n                    });\n                }\n\n                normalStyle();\n\n                layer.bindTooltip('<strong>'+esc(nombre)+'<\/strong>',{\n                    sticky:true,\n                    className:'podfr-tooltip'\n                });\n\n                layer.on('mouseover',function(){\n                    layer.setStyle({\n                        color:'#FFD600',\n                        weight:2.5,\n                        fillColor:resaltado ? '#007c36' : '#b8d8c2',\n                        fillOpacity:.92\n                    });\n                });\n\n                layer.on('mouseout',normalStyle);\n\n                layer.on('click',function(){\n                    layer.bindPopup(\n                        '<article class=\"podfr-pop\">'+\n                        '<div class=\"podfr-pop-head\"><small>Nari\u00f1o \u00b7 Colombia<\/small><strong>'+esc(nombre)+'<\/strong><\/div>'+\n                        '<div class=\"podfr-pop-body\"><p>'+(resaltado ? 'Municipio resaltado en el corredor territorial definido para esta visualizaci\u00f3n.' : 'Municipio del departamento de Nari\u00f1o.')+'<\/p><\/div>'+\n                        '<\/article>'\n                    ).openPopup();\n                });\n            });\n\n            const group=L.featureGroup([contornoLayer,carchiLayer]);\n            homeBounds=group.getBounds();\n\n            if(homeBounds.isValid()){\n                map.fitBounds(homeBounds,{\n                    paddingTopLeft:isMobile?[18,100]:[35,125],\n                    paddingBottomRight:[35,55]\n                });\n            }\n\n            \/*\n             * CORREDOR BIOL\u00d3GICO VISUAL: EXACTAMENTE 20 PUNTOS\n             * 10 fauna (rojos) + 10 flora (blancos).\n             *\n             * Se construyen \u00fanicamente con v\u00e9rtices\/segmentos de los municipios\n             * resaltados que est\u00e9n m\u00e1s pr\u00f3ximos al per\u00edmetro de Carchi.\n             * No se agregan puntos independientes dentro de Carchi, eliminando\n             * los puntos exteriores se\u00f1alados en la revisi\u00f3n visual.\n             *\/\n            function extraerAnillos(geometry){\n                if(!geometry || !geometry.coordinates) return [];\n                if(geometry.type==='Polygon') return geometry.coordinates;\n                if(geometry.type==='MultiPolygon'){\n                    return geometry.coordinates.reduce(function(acc,poly){return acc.concat(poly);},[]);\n                }\n                return [];\n            }\n\n            const candidatosGlobales=[];\n\n            capasFrontera.forEach(function(item){\n                extraerAnillos(item.layer.feature && item.layer.feature.geometry).forEach(function(ring){\n                    if(!Array.isArray(ring) || ring.length<2) return;\n                    for(let i=0;i<ring.length-1;i++){\n                        const a=ring[i], b=ring[i+1];\n                        if(!a || !b) continue;\n                        const mid=[(Number(a[0])+Number(b[0]))\/2,(Number(a[1])+Number(b[1]))\/2];\n                        [a,mid].forEach(function(c){\n                            const lng=Number(c[0]), lat=Number(c[1]);\n                            if(!Number.isFinite(lat)||!Number.isFinite(lng)) return;\n                            candidatosGlobales.push({\n                                coord:[lng,lat],\n                                dist:distanceToCarchi(lat,lng),\n                                municipio:item.nombre\n                            });\n                        });\n                    }\n                });\n            });\n\n            \/\/ Primero conservamos s\u00f3lo la franja m\u00e1s cercana al l\u00edmite de Carchi.\n            candidatosGlobales.sort(function(a,b){return a.dist-b.dist;});\n            const limiteDistancia=candidatosGlobales.length\n                ? candidatosGlobales[Math.min(candidatosGlobales.length-1,Math.max(30,Math.floor(candidatosGlobales.length*.16)))].dist\n                : .02;\n\n            const franja=candidatosGlobales\n                .filter(function(c){return c.dist<=limiteDistancia;})\n                .sort(function(a,b){return a.coord[0]-b.coord[0];});\n\n            \/\/ Distribuci\u00f3n longitudinal para evitar concentraciones y conservar\n            \/\/ visualmente el corredor completo de occidente a oriente.\n            const elegidos=[];\n            if(franja.length){\n                const total=20;\n                for(let i=0;i<total;i++){\n                    const pos=Math.round(i*(franja.length-1)\/(total-1));\n                    let candidato=franja[pos];\n\n                    \/\/ Evita puntos pr\u00e1cticamente superpuestos.\n                    let desplazamiento=0;\n                    while(candidato && elegidos.some(function(e){\n                        const dx=candidato.coord[0]-e.coord[0], dy=candidato.coord[1]-e.coord[1];\n                        return Math.sqrt(dx*dx+dy*dy)<.012;\n                    }) && desplazamiento<franja.length){\n                        desplazamiento++;\n                        candidato=franja[Math.min(franja.length-1,pos+desplazamiento)];\n                    }\n                    if(candidato) elegidos.push(candidato);\n                }\n            }\n\n            \/*\n             * 20 marcadores = 20 fichas distintas.\n             * Los \u00edndices NO se reciclan: 10 fauna + 10 flora.\n             *\/\n            const faunaCatalogo=[\n                {nombre:'Parula tropical',nombre_cientifico:'Setophaga pitiayumi',habitat:'Bosques y bordes de vegetaci\u00f3n de monta\u00f1a.',dieta:'Principalmente insect\u00edvora; complementa su dieta con peque\u00f1os artr\u00f3podos.',comportamiento:'Ave activa que se desplaza entre el follaje buscando alimento.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/parula-tropical\/'},\n                {nombre:'Cusumbo',nombre_cientifico:'Nasuella olivacea',habitat:'Bosques montanos y ambientes andinos de altura.',dieta:'Omn\u00edvora; consume frutos, invertebrados y peque\u00f1os vertebrados.',comportamiento:'Mam\u00edfero terrestre y trepador, activo en b\u00fasqueda de alimento.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/cusumbo\/'},\n                {nombre:'Cachudito paramuno',nombre_cientifico:'Anairetes agilis',habitat:'Matorrales y vegetaci\u00f3n altoandina asociada a p\u00e1ramos.',dieta:'Insect\u00edvora; captura peque\u00f1os artr\u00f3podos entre ramas y follaje.',comportamiento:'Ave peque\u00f1a, inquieta y activa entre arbustos de monta\u00f1a.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/cachudito-paramuno\/'},\n                {nombre:'Venado colorado del p\u00e1ramo',nombre_cientifico:'Mazama rufina',habitat:'Bosques altoandinos, p\u00e1ramos y zonas de vegetaci\u00f3n densa.',dieta:'Herb\u00edvora; consume hojas, brotes, frutos y vegetaci\u00f3n tierna.',comportamiento:'Generalmente solitario y discreto; se refugia en vegetaci\u00f3n densa.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/venado-colorado-del-paramo\/'},\n                {nombre:'Loro andino',nombre_cientifico:'Amazona mercenarius',habitat:'Bosques montanos y altoandinos.',dieta:'Frutos, semillas, brotes y otros recursos vegetales.',comportamiento:'Gregario; suele desplazarse en parejas o grupos.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/loro-andino\/'},\n                {nombre:'Mirla andina',nombre_cientifico:'Turdus fuscater',habitat:'Bosque montano h\u00famedo, bordes de bosque y matorral altoandino.',dieta:'Omn\u00edvora: artr\u00f3podos, frutos y peque\u00f1os invertebrados.',comportamiento:'Activa durante el d\u00eda; forrajea en suelo, arbustos y \u00e1reas abiertas.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/mirla-andina\/'},\n                {nombre:'Agut\u00ed',nombre_cientifico:'Dasyprocta \/ Agouti taczanowskii',habitat:'Bosques andinos y zonas con cobertura vegetal.',dieta:'Frutos, semillas y material vegetal.',comportamiento:'Terrestre; participa en la dispersi\u00f3n de semillas.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/aguti\/'},\n                {nombre:'Zarig\u00fceya andina de orejas blancas',nombre_cientifico:'Didelphis pernigra',habitat:'Bosques andinos, bordes y ambientes intervenidos.',dieta:'Omn\u00edvora; consume frutos, invertebrados y peque\u00f1os animales.',comportamiento:'Principalmente nocturna y de h\u00e1bitos oportunistas.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/zarigueya-andina-de-orejas-blancas-raposa-de-orejas-blancas\/'},\n                {nombre:'Colibr\u00ed cola larga negra',nombre_cientifico:'Lesbia victoriae',habitat:'Bosques montanos, matorrales y jardines de los Andes.',dieta:'N\u00e9ctar y peque\u00f1os artr\u00f3podos.',comportamiento:'Vuelo \u00e1gil; visita flores y participa activamente en la polinizaci\u00f3n.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/colibri-cola-larga-negra\/'},\n                {nombre:'\u00c1guila pechinegra',nombre_cientifico:'Geranoaetus melanoleucus',habitat:'\u00c1reas abiertas, monta\u00f1as y ambientes altoandinos.',dieta:'Carn\u00edvora; peque\u00f1os mam\u00edferos, aves y otros vertebrados.',comportamiento:'Planeadora y territorial; utiliza corrientes de aire para patrullar grandes \u00e1reas.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/fauna\/aguila-pechinegra\/'}\n            ];\n\n            const floraCatalogo=[\n                {nombre:'Helecho arb\u00f3reo',nombre_cientifico:'Cyathea sp.',habitat:'Bosques h\u00famedos montanos y sectores con alta humedad ambiental.',dieta:'Aut\u00f3trofa; obtiene energ\u00eda mediante fotos\u00edntesis.',comportamiento:'Forma estratos vegetales importantes y favorece microh\u00e1bitats h\u00famedos.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/flora\/helecho-arboreo\/'},\n                {nombre:'Cortadera',nombre_cientifico:'Rhynchospora sp.',habitat:'Humedales, pajonales y ambientes abiertos de monta\u00f1a.',dieta:'Aut\u00f3trofa; realiza fotos\u00edntesis.',comportamiento:'Herb\u00e1cea adaptada a suelos h\u00famedos y condiciones altoandinas.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/flora\/cortadera\/'},\n                {nombre:'Chuquiragua blanca',nombre_cientifico:'Chuquiraga insignis',habitat:'P\u00e1ramo seco y matorral altoandino, especialmente en zonas expuestas al viento.',dieta:'Aut\u00f3trofa: fotos\u00edntesis; hojas cori\u00e1ceas reducen la p\u00e9rdida de agua.',comportamiento:'Arbusto le\u00f1oso de crecimiento lento y floraci\u00f3n atractora de polinizadores.',catalogo:'P\u00c1RAMO PAJA BLANCA',pais:'Colombia',imagen:'',url:'https:\/\/anpcarchinarino.com\/flora\/chuquiragua-blanca\/'},\n                {nombre:'Achupalla',nombre_cientifico:'Puya clava-herculis',habitat:'P\u00e1ramo y subp\u00e1ramo de alta monta\u00f1a.',dieta:'Aut\u00f3trofa; realiza fotos\u00edntesis y acumula agua en su roseta.',comportamiento:'Planta de roseta adaptada a condiciones fr\u00edas de alta monta\u00f1a.',catalogo:'ANP Carchi\u2013Nari\u00f1o',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/flora\/achupalla\/'},\n                {nombre:'Chaquilulo \/ Uva Camarona',nombre_cientifico:'Macleania rupestris',habitat:'Bosque montano y bordes de bosque de media y alta monta\u00f1a.',dieta:'Aut\u00f3trofa; realiza fotos\u00edntesis para producir su materia org\u00e1nica.',comportamiento:'Produce flores ricas en n\u00e9ctar y frutos carnosos aprovechados por fauna dispersora.',catalogo:'CUENCA ALTA R\u00cdO GUAITARA',pais:'Colombia',imagen:'',url:'https:\/\/anpcarchinarino.com\/flora\/chaquilulo-uva-camarona\/'},\n                {nombre:'Monticalia de tallo piloso',nombre_cientifico:'Monticalia trichopus',habitat:'P\u00e1ramo y matorrales altoandinos.',dieta:'Aut\u00f3trofa; fotos\u00edntesis en hojas y tallos verdes.',comportamiento:'Subarbusto resistente al fr\u00edo asociado a comunidades de p\u00e1ramo.',catalogo:'COMPLEJO DE P\u00c1RAMOS CERRO NEGRO',pais:'Colombia',imagen:'',url:'https:\/\/anpcarchinarino.com\/flora\/monticalia-de-tallo-piloso\/'},\n                {nombre:'Frailej\u00f3n',nombre_cientifico:'Espeletia sp.',habitat:'P\u00e1ramos y zonas altoandinas fr\u00edas y h\u00famedas.',dieta:'Aut\u00f3trofa; transforma energ\u00eda solar mediante fotos\u00edntesis.',comportamiento:'Su roseta ayuda a conservar humedad y protege tejidos frente a bajas temperaturas.',catalogo:'Referencia vegetal del corredor altoandino',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/explorar\/'},\n                {nombre:'Paja de p\u00e1ramo',nombre_cientifico:'Calamagrostis sp.',habitat:'Pajonales de p\u00e1ramo y laderas altoandinas.',dieta:'Aut\u00f3trofa; realiza fotos\u00edntesis.',comportamiento:'Forma macollas densas que protegen el suelo y retienen humedad.',catalogo:'Referencia vegetal del corredor altoandino',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/explorar\/'},\n                {nombre:'Morti\u00f1o andino',nombre_cientifico:'Vaccinium sp.',habitat:'Matorrales, bosques montanos y zonas de p\u00e1ramo.',dieta:'Aut\u00f3trofa; fotos\u00edntesis.',comportamiento:'Arbusto productor de frutos que sirven de alimento a fauna silvestre.',catalogo:'Referencia vegetal del corredor altoandino',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/explorar\/'},\n                {nombre:'Romerillo de p\u00e1ramo',nombre_cientifico:'Hypericum sp.',habitat:'Matorrales altoandinos y p\u00e1ramos.',dieta:'Aut\u00f3trofa; realiza fotos\u00edntesis.',comportamiento:'Arbusto resistente a bajas temperaturas y alta radiaci\u00f3n de monta\u00f1a.',catalogo:'Referencia vegetal del corredor altoandino',pais:'Colombia \/ Ecuador',imagen:'',url:'https:\/\/anpcarchinarino.com\/explorar\/'}\n            ];\n\n            const puntosAproximados=[];\n            let idxFauna=0, idxFlora=0;\n            elegidos.slice(0,20).forEach(function(c,i){\n                const tipo=(i%2===0)?'fauna':'flora';\n                const ficha=tipo==='fauna'\n                    ? faunaCatalogo[idxFauna++]\n                    : floraCatalogo[idxFlora++];\n\n                if(!ficha) return;\n                puntosAproximados.push(Object.assign({},ficha,{\n                    tipo:tipo,\n                    especie_id:(tipo==='fauna'?'F':'FL')+'-'+String(tipo==='fauna'?idxFauna:idxFlora).padStart(2,'0'),\n                    lat:Number(c.coord[1]),\n                    lng:Number(c.coord[0]),\n                    municipio:c.municipio,\n                    \/\/ Movimiento de fauna extremadamente peque\u00f1o para conservar\n                    \/\/ el marcador sobre el corredor fronterizo.\n                    radio_lat:tipo==='fauna'?.01400:0,\n                    radio_lng:tipo==='fauna'?.01800:0\n                }));\n            });\n\n            addSpecies(puntosAproximados);\n\n            \/* Precarga silenciosa: cada punto conserva su propia ficha e imagen. *\/\n            puntosAproximados.forEach(function(ficha){\n                if(ficha.url && \/^https:\\\/\\\/anpcarchinarino\\.com\\\/(fauna|flora)\\\/\/i.test(ficha.url)){\n                    podfrMapFicha(ficha);\n                }\n            });\n\n            \/\/ Si posteriormente se suministra un JSON\/GeoJSON real, se agrega\n            \/\/ sin eliminar la representaci\u00f3n aproximada solicitada.\n            const puntosUrl=\"\";\n            if(puntosUrl){\n                const rp=await fetch(puntosUrl,{cache:'no-store'});\n                if(!rp.ok) throw new Error('Puntos especies HTTP '+rp.status);\n                addSpecies(await rp.json());\n            }\n\n            requestAnimationFrame(function(){map.invalidateSize();});\n\n        }catch(error){\n            console.error('Especies frontera:',error);\n        }\n\n        wrap.querySelector('[data-podfr-home]')?.addEventListener('click',function(){\n            if(homeBounds && homeBounds.isValid()){\n                map.fitBounds(homeBounds,{\n                    paddingTopLeft:isMobile?[18,100]:[35,125],\n                    paddingBottomRight:[35,55]\n                });\n            }\n        });\n\n        \/*\n         * SIMULACI\u00d3N DE DESPLAZAMIENTO ALEATORIO DE FAUNA\n         * ---------------------------------------------------------------\n         * Cada marcador rojo ejecuta su propio ciclo independiente:\n         * izquierda\/derecha, arriba\/abajo y diagonales.\n         * El destino cambia aleatoriamente al terminar cada recorrido.\n         * Los desplazamientos son peque\u00f1os para conservar visualmente\n         * cada especie dentro de su corredor fronterizo.\n         *\/\n        function easeFauna(t){\n            return t<.5 ? 2*t*t : 1-Math.pow(-2*t+2,2)\/2;\n        }\n\n        function nuevoDestinoFauna(o,now){\n            \/\/ \u00c1ngulo completamente aleatorio: produce movimientos horizontales,\n            \/\/ verticales y diagonales diferentes para cada punto.\n            const angulo=Math.random()*Math.PI*2;\n\n            \/\/ Distancia variable: algunos ciclos son cortos y otros m\u00e1s amplios.\n            const intensidad=.30 + Math.random()*.70;\n\n            let dLat=Math.sin(angulo)*o.radiusLat*intensidad*o.verticalBias;\n            let dLng=Math.cos(angulo)*o.radiusLng*intensidad*o.horizontalBias;\n\n            \/\/ De forma aleatoria reforzamos un eje para que se perciban claramente\n            \/\/ desplazamientos arriba\/abajo o izquierda\/derecha.\n            const modo=Math.floor(Math.random()*4);\n            if(modo===0) dLat*=.08;       \/\/ principalmente horizontal\n            if(modo===1) dLng*=.08;       \/\/ principalmente vertical\n            if(modo===2){dLat*=.90;dLng*=.90;} \/\/ diagonal corto\n\n            o.startLat=o.currentLat;\n            o.startLng=o.currentLng;\n            o.targetLat=o.baseLat+dLat;\n            o.targetLng=o.baseLng+dLng;\n            o.startTime=now;\n\n            \/\/ Entre 1.2 y 3.0 segundos por recorrido: desplazamiento amplio y claramente perceptible.\n            o.duration=1200+Math.random()*1800;\n        }\n\n        function animateFauna(now){\n            faunaMovil.forEach(function(o){\n                if(now<o.pauseUntil) return;\n\n                let t=(now-o.startTime)\/o.duration;\n\n                if(t>=1){\n                    o.currentLat=o.targetLat;\n                    o.currentLng=o.targetLng;\n                    o.marker.setLatLng([o.currentLat,o.currentLng]);\n\n                    \/\/ Peque\u00f1a pausa aleatoria antes de elegir otro rumbo.\n                    o.pauseUntil=now+40+Math.random()*180;\n                    nuevoDestinoFauna(o,o.pauseUntil);\n                    return;\n                }\n\n                t=Math.max(0,Math.min(1,t));\n                const e=easeFauna(t);\n\n                o.currentLat=o.startLat+(o.targetLat-o.startLat)*e;\n                o.currentLng=o.startLng+(o.targetLng-o.startLng)*e;\n\n                o.marker.setLatLng([o.currentLat,o.currentLng]);\n            });\n\n            requestAnimationFrame(animateFauna);\n        }\n\n        const inicioFauna=performance.now();\n        faunaMovil.forEach(function(o,i){\n            o.pauseUntil=inicioFauna+(i*180)+Math.random()*1200;\n            nuevoDestinoFauna(o,o.pauseUntil);\n        });\n\n        requestAnimationFrame(animateFauna);\n\n        window.addEventListener('resize',function(){\n            map.invalidateSize();\n        },{passive:true});\n\n        setTimeout(function(){map.invalidateSize();},300);\n\n        \/* ===== Explorador ANP Carchi\u2013Nari\u00f1o ===== *\/\n        const explorer=document.querySelector('.podfr-explorer');\n        const modal=document.querySelector('[data-podfr-modal]');\n        const modalBody=document.querySelector('[data-podfr-modalbody]');\n        const fichaEndpoint=\"https:\\\/\\\/planeacion.narino.gov.co\\\/observatorio-pot\\\/wp-json\\\/observatorio-pot\\\/v1\\\/anp-ficha\";\n        const fichaCache=new Map();\n\n        function escHtml(v){\n            return String(v??'').replace(\/[&<>\"']\/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[m]));\n        }\n        async function getFicha(card){\n            const url=card.dataset.url;\n            if(fichaCache.has(url)) return fichaCache.get(url);\n            const r=await fetch(fichaEndpoint+'?url='+encodeURIComponent(url),{credentials:'same-origin'});\n            if(!r.ok) throw new Error('No se pudo consultar la ficha');\n            const d=await r.json();\n            fichaCache.set(url,d);\n            if(d.pais) card.dataset.country=String(d.pais).toLowerCase();\n            if(d.catalogo) card.dataset.area=String(d.catalogo).toLowerCase();\n            if(d.cientifico){\n                card.dataset.scientific=String(d.cientifico).toLowerCase();\n                const em=card.querySelector('em'); if(em) em.textContent=d.cientifico;\n            }\n            const meta=card.querySelector('.podfr-spec-meta');\n            if(meta && d.pais && !meta.querySelector('.podfr-spec-tag--country')){\n                meta.insertAdjacentHTML('beforeend','<span class=\"podfr-spec-tag podfr-spec-tag--country\">'+escHtml(d.pais)+'<\/span>');\n            }\n            if(d.imagen){\n                const ph=card.querySelector('.podfr-spec-photo');\n                if(ph && !ph.querySelector('img')) ph.innerHTML='<img decoding=\"async\" loading=\"lazy\" src=\"'+escHtml(d.imagen)+'\" alt=\"'+escHtml(d.nombre||'Especie')+'\" onerror=\"this.parentNode.innerHTML=\\'<div class=&quot;podfr-spec-fallback&quot;>\u2726<\/div>\\'\">';\n            }\n            return d;\n        }\n        function applyExplorerFilters(){\n            if(!explorer) return;\n            const q=(explorer.querySelector('[data-podfr-search]').value||'').trim().toLowerCase();\n            const country=explorer.querySelector('[data-podfr-country]').value;\n            const type=explorer.querySelector('[data-podfr-type]').value;\n            const area=explorer.querySelector('[data-podfr-area]').value;\n            let visible=0;\n            explorer.querySelectorAll('.podfr-spec-card').forEach(card=>{\n                const hay=(card.dataset.name+' '+card.dataset.scientific).includes(q);\n                const okType=!type||card.dataset.type===type;\n                const okCountry=!country||card.dataset.country===country;\n                const okArea=!area||card.dataset.area===area;\n                const show=hay&&okType&&okCountry&&okArea;\n                card.style.display=show?'flex':'none';\n                if(show) visible++;\n            });\n            const count=explorer.querySelector('[data-podfr-count]'); if(count) count.textContent=visible;\n            const empty=explorer.querySelector('[data-podfr-empty]'); if(empty) empty.style.display=visible?'none':'block';\n        }\n        function refreshAreas(){\n            if(!explorer) return;\n            const sel=explorer.querySelector('[data-podfr-area]');\n            const current=sel.value;\n            const areas=[...new Set([...explorer.querySelectorAll('.podfr-spec-card')].map(c=>c.dataset.area).filter(Boolean))].sort();\n            sel.innerHTML='<option value=\"\">Todas las \u00e1reas \/ cat\u00e1logos<\/option>'+areas.map(a=>'<option value=\"'+escHtml(a)+'\">'+escHtml(a.replace(\/\\b\\w\/g,m=>m.toUpperCase()))+'<\/option>').join('');\n            if(areas.includes(current)) sel.value=current;\n        }\n        if(explorer){\n            explorer.querySelectorAll('input,select').forEach(el=>el.addEventListener(el.tagName==='INPUT'?'input':'change',applyExplorerFilters));\n            explorer.querySelectorAll('.podfr-spec-card').forEach((card,i)=>{\n                card.addEventListener('click',async()=>{\n                    modal.classList.add('is-open'); modal.setAttribute('aria-hidden','false'); document.body.classList.add('podfr-modal-open');\n                    modalBody.innerHTML='<div class=\"podfr-loading\">Consultando ficha original ANP Carchi\u2013Nari\u00f1o\u2026<\/div>';\n                    try{\n                        const d=await getFicha(card); refreshAreas();\n                        const modalImage=d.imagen\n                            ? '<img decoding=\"async\" src=\"'+escHtml(d.imagen)+'\" alt=\"'+escHtml(d.nombre||'Especie')+'\" onerror=\"this.parentNode.innerHTML=\\'<div class=&quot;podfr-modal-media-empty&quot;>Fotograf\u00eda temporalmente no disponible.<\/div>\\'\">'\n                            : '<div class=\"podfr-modal-media-empty\">Fotograf\u00eda temporalmente no disponible.<\/div>';\n\n                        modalBody.innerHTML=\n                          '<div class=\"podfr-modal-layout\">'+\n                            '<div class=\"podfr-modal-media\"><div class=\"podfr-modal-media-frame\">'+modalImage+'<\/div><\/div>'+\n                            '<div class=\"podfr-modal-side\">'+\n                              '<div class=\"podfr-modal-kicker\">'+escHtml((d.tipo||card.dataset.type).toUpperCase())+(d.pais?' \u00b7 '+escHtml(d.pais.toUpperCase()):'')+'<\/div>'+\n                              '<h3>'+escHtml(d.nombre||card.querySelector('b').textContent)+'<\/h3>'+\n                              '<div class=\"podfr-modal-scientific\">'+escHtml(d.cientifico||card.querySelector('em').textContent)+'<\/div>'+\n                              '<div class=\"podfr-modal-stack\">'+\n                                '<div class=\"podfr-modal-info\"><strong>H\u00e1bitat<\/strong><p>'+escHtml(d.habitat||'Consultar ficha fuente.')+'<\/p><\/div>'+\n                                '<div class=\"podfr-modal-info\"><strong>Dieta \/ nutrici\u00f3n<\/strong><p>'+escHtml(d.dieta||'Consultar ficha fuente.')+'<\/p><\/div>'+\n                                '<div class=\"podfr-modal-info\"><strong>Comportamiento<\/strong><p>'+escHtml(d.comportamiento||'Consultar ficha fuente.')+'<\/p><\/div>'+\n                              '<\/div>'+\n                            '<\/div>'+\n                            '<div class=\"podfr-modal-bottom\">'+\n                              '<div class=\"podfr-modal-source\">'+(d.catalogo?'<strong>\u00c1rea \/ cat\u00e1logo:<\/strong> '+escHtml(d.catalogo)+'<br>':'')+'Fuente: ANP Carchi\u2013Nari\u00f1o<\/div>'+\n                              '<a class=\"podfr-modal-link\" href=\"'+escHtml(d.url)+'\" target=\"_blank\" rel=\"noopener\">Ver ficha original \u2197<\/a>'+\n                            '<\/div>'+\n                          '<\/div>';\n                    }catch(e){\n                        modalBody.innerHTML='<div class=\"podfr-loading\">No fue posible consultar la ficha en este momento.<br><br><a class=\"podfr-modal-link\" href=\"'+escHtml(card.dataset.url)+'\" target=\"_blank\" rel=\"noopener\">Abrir ficha original \u2197<\/a><\/div>';\n                    }\n                });\n                \/* Precarga progresiva solo de las primeras tarjetas visibles *\/\n                if(i<8) setTimeout(()=>getFicha(card).then(()=>{refreshAreas();applyExplorerFilters();}).catch(()=>{}),600+i*260);\n            });\n        }\n        document.querySelector('[data-podfr-close]')?.addEventListener('click',()=>{modal.classList.remove('is-open');modal.setAttribute('aria-hidden','true');document.body.classList.remove('podfr-modal-open')});\n        modal?.addEventListener('click',e=>{if(e.target===modal){modal.classList.remove('is-open');modal.setAttribute('aria-hidden','true');document.body.classList.remove('podfr-modal-open')}});\n        document.addEventListener('keydown',e=>{if(e.key==='Escape'&&modal?.classList.contains('is-open')){modal.classList.remove('is-open');modal.setAttribute('aria-hidden','true');document.body.classList.remove('podfr-modal-open')}});\n\n\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","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-5661","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages\/5661","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=5661"}],"version-history":[{"count":37,"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages\/5661\/revisions"}],"predecessor-version":[{"id":5708,"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/pages\/5661\/revisions\/5708"}],"wp:attachment":[{"href":"https:\/\/planeacion.narino.gov.co\/observatorio-pot\/wp-json\/wp\/v2\/media?parent=5661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}