{"id":2434,"date":"2026-02-18T18:03:04","date_gmt":"2026-02-18T23:03:04","guid":{"rendered":"https:\/\/santropicalproduce.com\/?page_id=2434"},"modified":"2026-03-12T16:21:49","modified_gmt":"2026-03-12T21:21:49","slug":"mapa-de-antioquia","status":"publish","type":"page","link":"https:\/\/santropicalproduce.com\/es\/mapa-de-antioquia\/","title":{"rendered":"MAP OF ANTIOQUIA"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2434\" class=\"elementor elementor-2434\">\n\t\t\t\t<div class=\"elementor-element elementor-element-70008513 e-flex e-con-boxed e-con e-parent\" data-id=\"70008513\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-48df36a9 elementor-widget elementor-widget-text-editor\" data-id=\"48df36a9\" 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\n<div><style>\n  .fincas-map-wrap * { margin: 0; padding: 0; box-sizing: border-box; }\n  .fincas-map-wrap {\n    font-family: 'DM Sans', sans-serif;\n    background: #f4f1ec;\n    padding: 40px 20px;\n    width: 100%;\n  }\n  .fincas-container { max-width: 1100px; width: 100%; margin: 0 auto; }\n  .fincas-header { text-align: center; margin-bottom: 32px; }\n  .fincas-header h1 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(28px, 5vw, 46px);\n    color: #1a3a1a; margin-bottom: 6px;\n  }\n  .fincas-header p { font-size: 15px; color: #5a6b5a; text-transform: uppercase; letter-spacing: 1px; }\n\n  .fincas-main-layout { display: grid; grid-template-columns: 1fr 340px; gap: 28px; align-items: start; }\n  @media (max-width: 860px) { .fincas-main-layout { grid-template-columns: 1fr; } }\n\n  .fincas-map-wrapper {\n    background: #fffdf8; border-radius: 28px; padding: 28px;\n    box-shadow: 0 10px 40px rgba(26,58,26,0.10);\n  }\n  .fincas-map-container {\n    position: relative; width: 100%; margin: 0 auto;\n    border-radius: 16px; overflow: hidden;\n  }\n  .fincas-map-container img { width: 100%; height: auto; display: block; user-select: none; }\n\n  .region-poly {\n    fill: transparent; stroke: transparent; stroke-width: 1;\n    cursor: pointer;\n    transition: fill 0.3s ease, stroke 0.3s ease;\n  }\n  .region-poly:hover, .region-poly.active { stroke-width: 2.5; stroke: rgba(255,255,255,0.9); }\n  .region-poly[data-region=\"uraba\"]:hover,         .region-poly[data-region=\"uraba\"].active         { fill: rgba(74,156,74,0.40); }\n  .region-poly[data-region=\"bajocauca\"]:hover,      .region-poly[data-region=\"bajocauca\"].active      { fill: rgba(156,74,200,0.40); }\n  .region-poly[data-region=\"nordeste\"]:hover,       .region-poly[data-region=\"nordeste\"].active       { fill: rgba(255,231,76,0.45); }\n  .region-poly[data-region=\"norte\"]:hover,          .region-poly[data-region=\"norte\"].active          { fill: rgba(255,158,184,0.40); }\n  .region-poly[data-region=\"occidente\"]:hover,      .region-poly[data-region=\"occidente\"].active      { fill: rgba(255,159,76,0.40); }\n  .region-poly[data-region=\"valleaburra\"]:hover,    .region-poly[data-region=\"valleaburra\"].active    { fill: rgba(217,122,79,0.45); }\n  .region-poly[data-region=\"oriente\"]:hover,        .region-poly[data-region=\"oriente\"].active        { fill: rgba(255,180,60,0.40); }\n  .region-poly[data-region=\"suroeste\"]:hover,       .region-poly[data-region=\"suroeste\"].active       { fill: rgba(196,110,212,0.40); }\n  .region-poly[data-region=\"magdalenamedio\"]:hover, .region-poly[data-region=\"magdalenamedio\"].active { fill: rgba(232,121,147,0.40); }\n\n  .fincas-map-tooltip {\n    position: absolute; background: #1a3a1a; color: #fff;\n    padding: 10px 16px; border-radius: 12px; font-size: 13.5px; font-weight: 600;\n    pointer-events: none; opacity: 0; transition: all 0.25s ease;\n    z-index: 20; white-space: nowrap;\n    box-shadow: 0 8px 24px rgba(0,0,0,0.3);\n    transform: translate(-50%, -110%);\n  }\n  .fincas-map-tooltip::after {\n    content: ''; position: absolute; top: 100%; left: 50%;\n    transform: translateX(-50%); border: 7px solid transparent; border-top-color: #1a3a1a;\n  }\n  .fincas-map-tooltip.visible { opacity: 1; }\n  .fincas-map-tooltip .fc { font-weight: 400; font-size: 11.5px; opacity: 0.7; margin-left: 5px; }\n\n  .fincas-legend { display: flex; justify-content: center; gap: 12px; margin-top: 24px; flex-wrap: wrap; }\n  .fincas-legend-item {\n    display: flex; align-items: center; gap: 7px;\n    font-size: 12.5px; color: #4a5f4a; font-weight: 600;\n    cursor: pointer; padding: 5px 10px; border-radius: 8px;\n    transition: all 0.3s;\n  }\n  .fincas-legend-item:hover, .fincas-legend-item.active {\n    background: rgba(26,58,26,0.08); color: #1a3a1a; transform: scale(1.05);\n  }\n  .fincas-legend-dot {\n    width: 14px; height: 14px; border-radius: 4px;\n    border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n  }\n\n  .fincas-filter-bar {\n    display: flex; justify-content: center; gap: 10px;\n    margin-bottom: 24px; flex-wrap: wrap;\n  }\n  .filter-btn {\n    display: flex; align-items: center; gap: 7px;\n    padding: 8px 18px; border-radius: 20px; border: 2px solid transparent;\n    font-size: 13px; font-weight: 600; cursor: pointer;\n    transition: all 0.3s ease; background: #f0ece5; color: #5a6b5a;\n  }\n  .filter-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,0.1); }\n  .filter-btn.active-gulupa {\n    background: #7b3fa0; color: #fff; border-color: #7b3fa0;\n    box-shadow: 0 4px 14px rgba(123,63,160,0.3);\n  }\n  .filter-btn.active-aguacate {\n    background: #2d7a3a; color: #fff; border-color: #2d7a3a;\n    box-shadow: 0 4px 14px rgba(45,122,58,0.3);\n  }\n  .filter-btn.active-all {\n    background: #1a3a1a; color: #fff; border-color: #1a3a1a;\n  }\n\n  .fincas-instruction {\n    text-align: center; margin-top: 16px; font-size: 12.5px; color: #a09a8e;\n    display: flex; align-items: center; justify-content: center; gap: 6px;\n  }\n  .fincas-pulse-dot {\n    width: 8px; height: 8px; background: #4a9c4a; border-radius: 50%;\n    animation: fincasPulse 2s ease-in-out infinite; display: inline-block;\n  }\n  @keyframes fincasPulse {\n    0%,100% { opacity: 0.4; transform: scale(1); }\n    50%     { opacity: 1;   transform: scale(1.3); }\n  }\n\n  .fincas-panel {\n    background: #fffdf8; border-radius: 24px;\n    box-shadow: 0 10px 40px rgba(26,58,26,0.10);\n    overflow: hidden; position: sticky; top: 40px;\n  }\n  .fincas-panel-header {\n    padding: 24px 24px 16px; border-bottom: 1px solid rgba(26,58,26,0.08);\n    position: relative; overflow: hidden;\n  }\n  .fincas-panel-header::before {\n    content: ''; position: absolute; top: 0; left: 0; right: 0;\n    height: 4px; background: var(--rc, #1a3a1a); transition: background 0.4s;\n  }\n  .fincas-panel-header h3 {\n    font-family: 'Playfair Display', serif; font-size: 22px;\n    color: #1a3a1a; margin-bottom: 4px;\n  }\n  .fincas-region-badge {\n    display: inline-flex; align-items: center; gap: 6px;\n    font-size: 12px; font-weight: 600; color: #5a6b5a;\n    text-transform: uppercase; letter-spacing: 0.8px;\n  }\n  .fincas-badge-dot {\n    width: 10px; height: 10px; border-radius: 3px;\n    background: var(--rc, #1a3a1a); transition: background 0.4s;\n  }\n  .fincas-panel-placeholder { padding: 48px 24px; text-align: center; color: #8a8578; }\n  .fincas-panel-placeholder .icon { font-size: 48px; margin-bottom: 16px; opacity: 0.35; }\n  .fincas-panel-placeholder p { font-size: 14px; line-height: 1.7; }\n  .fincas-list { padding: 16px; max-height: 520px; overflow-y: auto; }\n  .fincas-list::-webkit-scrollbar { width: 4px; }\n  .fincas-list::-webkit-scrollbar-thumb { background: #c8c3b8; border-radius: 4px; }\n\n  .finca-card {\n    background: #f9f7f2; border: 1px solid rgba(26,58,26,0.08);\n    border-radius: 16px; padding: 14px 16px; margin-bottom: 10px;\n    display: flex; align-items: center; gap: 14px;\n    color: #1a3a1a; cursor: pointer;\n    animation: fincaSlideIn 0.35s ease forwards;\n    opacity: 0; transform: translateY(12px);\n    transition: background 0.3s, transform 0.3s, box-shadow 0.3s;\n  }\n  .finca-card:nth-child(1){animation-delay:.04s} .finca-card:nth-child(2){animation-delay:.08s}\n  .finca-card:nth-child(3){animation-delay:.12s} .finca-card:nth-child(4){animation-delay:.16s}\n  .finca-card:nth-child(5){animation-delay:.20s} .finca-card:nth-child(6){animation-delay:.24s}\n  .finca-card:nth-child(7){animation-delay:.28s} .finca-card:nth-child(8){animation-delay:.32s}\n  @keyframes fincaSlideIn { to { opacity: 1; transform: translateY(0); } }\n  .finca-card:hover {\n    background: #1a3a1a; color: #fff;\n    transform: translateX(4px); box-shadow: 0 8px 20px rgba(26,58,26,0.15);\n  }\n  .finca-card:hover .finca-municipio { color: rgba(255,255,255,0.6) !important; }\n  .finca-card:hover .producto-badge { opacity: 0.85; }\n\n  .finca-icon {\n    width: 42px; height: 42px; border-radius: 12px;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 20px; flex-shrink: 0;\n  }\n  .finca-info { flex: 1; min-width: 0; }\n  .finca-info .name { font-weight: 700; font-size: 13.5px; margin-bottom: 3px; }\n  .finca-municipio { font-size: 12px; color: #7a8a7a; }\n  .finca-arrow { font-size: 16px; opacity: 0.25; transition: all 0.3s; flex-shrink: 0; }\n  .finca-card:hover .finca-arrow { opacity: 1; transform: translateX(3px); }\n\n  .producto-badge {\n    display: inline-flex; align-items: center; gap: 4px;\n    font-size: 10.5px; font-weight: 700; padding: 2px 8px;\n    border-radius: 20px; margin-top: 4px; letter-spacing: 0.3px;\n  }\n  .badge-gulupa  { background: #f0e6f8; color: #7b3fa0; }\n  .badge-aguacate{ background: #e3f4e6; color: #2d7a3a; }\n  .badge-ambos   { background: #e8f0ff; color: #2a5ab8; }\n\n  .fincas-panel-footer {\n    padding: 14px 24px; border-top: 1px solid rgba(26,58,26,0.08);\n    display: flex; justify-content: space-between; font-size: 12px; color: #8a8578;\n    flex-wrap: wrap; gap: 4px;\n  }\n  .fincas-panel-footer strong { color: #1a3a1a; }\n\n  .producto-legend {\n    display: flex; justify-content: center; gap: 20px;\n    margin-bottom: 18px; flex-wrap: wrap;\n  }\n  .pl-item { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: #5a6b5a; font-weight: 600; }\n  .pl-dot { width: 12px; height: 12px; border-radius: 50%; }\n<\/style><\/div>\n<div class=\"fincas-map-wrap\">\n<div class=\"fincas-container\">\n<div class=\"fincas-header\">\n<h1>Our farms in Antioquia<\/h1>\n<p>Explore each region to discover our farms.<\/p>\n<\/div>\n<!-- \u2705 FIX TRANSLATEPRESS #1:\n         - Eliminados los onclick=\"setFilter(...)\" inline (TranslatePress los traduc\u00eda)\n         - Reemplazados por data-filter=\"...\" (atributo de datos, no se traduce)\n         - Agregado data-no-translation en cada bot\u00f3n para proteger el atributo\n    -->\n<div class=\"fincas-filter-bar\"><button id=\"filterAll\" class=\"filter-btn active-all\" data-filter=\"all\" data-no-translation=\"\">\ud83d\uddfa\ufe0f All the farms<\/button> <button id=\"filterGulupa\" class=\"filter-btn\" data-filter=\"gulupa\" data-no-translation=\"\">\ud83d\udfe3 Only Gulupa<\/button> <button id=\"filterAguacate\" class=\"filter-btn\" data-filter=\"Hass Avocado\" data-no-translation=\"\">\ud83e\udd51 Hass Avocado Only<\/button><\/div>\n<div class=\"producto-legend\">\n<div class=\"pl-item\">\n<div class=\"pl-dot\" style=\"background: #7b3fa0;\">\u00a0<\/div>\nGulupa<\/div>\n<div class=\"pl-item\">\n<div class=\"pl-dot\" style=\"background: #2d7a3a;\">\u00a0<\/div>\nHass Avocado<\/div>\n<div class=\"pl-item\">\n<div class=\"pl-dot\" style=\"background: #2a5ab8;\">\u00a0<\/div>\nBoth crops<\/div>\n<\/div>\n<div class=\"fincas-main-layout\"><!-- MAPA -->\n<div class=\"fincas-map-wrapper\">\n<div id=\"fincasMapContainer\" class=\"fincas-map-container\"><!-- \u2705 FIX TRANSLATEPRESS imagen:\n               El src est\u00e1 VAC\u00cdO en el HTML.\n               TranslatePress no puede modificar lo que no existe.\n               El src real se inyecta desde JS (dentro del bloque tp:ignore).\n          --> <img id=\"fincasMapImg\" style=\"width: 100%; height: auto; display: block;\" draggable=\"false\" alt=\"\" \/>\n<div id=\"fincasMapTooltip\" class=\"fincas-map-tooltip\">\u00a0<\/div>\n<\/div>\n<div id=\"fincasLegend\" class=\"fincas-legend\">\u00a0<\/div>\n<div class=\"fincas-instruction\">Hover your cursor over a region to see its farms.<\/div>\n<\/div>\n<!-- PANEL LATERAL -->\n<div class=\"fincas-panel\">\n<div id=\"fincasPanelHeader\" class=\"fincas-panel-header\" style=\"--rc: #1a3a1a;\">\n<div class=\"fincas-region-badge\"><span id=\"fincasPanelBadge\">Select a region<\/span><\/div>\n<h3 id=\"fincasPanelTitle\">Farms<\/h3>\n<\/div>\n<div id=\"fincasPanelContent\">\n<div class=\"fincas-panel-placeholder\">\n<div class=\"icon\">\ud83d\uddfa\ufe0f<\/div>\n<p>Hover the cursor over a region<br \/>of the map to see the farms<br \/>available in that area.<\/p>\n<\/div>\n<\/div>\n<div class=\"fincas-panel-footer\">Total: <strong id=\"fincasTotal\">0<\/strong> farms \u00a0\u00b7\u00a0 Active regions: <strong id=\"regionesActivas\">0<\/strong><\/div>\n<\/div>\n<\/div>\n<!-- \/main-layout --><\/div>\n<!-- \/container --><\/div>\n<!-- \/wrap --><!-- \u2705 FIX TRANSLATEPRESS #3:\n     El script est\u00e1 envuelto en el comentario especial de TranslatePress\n     <!--tp:ignore-->\n<!--\/tp:ignore-->\n<!--tp:ignore-->\n<div><script translate=\"no\">\n(function(){\n\n\/* ============================================================\n   \u2705 FIX IMAGEN: src asignado desde JS \u2014 TranslatePress nunca lo ve en el HTML\n============================================================ *\/\nvar _mapImg = document.getElementById(\"fincasMapImg\");\n_mapImg.src = \"https:\/\/santropicalproduce.com\/wp-content\/uploads\/2026\/03\/Mapa_de_Antioquia_subregiones.svg.png\";\n\n\/* ============================================================\n   DATA DE FINCAS\n   \u2705 Las claves \"gulupa\", \"Hass Avocado\", \"both\" son internas\n      y NUNCA deben cambiar \u2014 est\u00e1n protegidas por tp:ignore\n============================================================ *\/\n\nvar fincasData = {\n\n  norte:{\n    nombre:\"Norte\",\n    color:\"#d45f7f\",\n    fincas:[\n      {nombre:\"Farms Entrerr\u00edos\",  municipio:\"Entrerr\u00edos\",          producto:\"gulupa\"},\n      {nombre:\"Farms Santa Rosa\",  municipio:\"Santa Rosa de Osos\",  producto:\"both\"},\n      {nombre:\"Farms Carolina\",    municipio:\"Carolina del Pr\u00edncipe\",producto:\"both\"},\n      {nombre:\"Farms Yarumal\",     municipio:\"Yarumal\",              producto:\"both\"}\n    ]\n  },\n\n  oriente:{\n    nombre:\"Oriente\",\n    color:\"#b88000\",\n    fincas:[\n      {nombre:\"Farms Rionegro\", municipio:\"Rionegro\", producto:\"gulupa\"}\n    ]\n  },\n\n  suroeste:{\n    nombre:\"Suroeste\",\n    color:\"#c46ed4\",\n    fincas:[\n      {nombre:\"Farms Jeric\u00f3\",  municipio:\"Jeric\u00f3\",  producto:\"gulupa\"},\n      {nombre:\"Farms T\u00e1mesis\", municipio:\"T\u00e1mesis\", producto:\"gulupa\"},\n      {nombre:\"Farms Jard\u00edn\",  municipio:\"Jard\u00edn\",  producto:\"gulupa\"}\n    ]\n  },\n\n  occidente:{\n    nombre:\"Occidente\",\n    color:\"#c87030\",\n    fincas:[\n      {nombre:\"Farms Caicedo\", municipio:\"Caicedo\", producto:\"Hass Avocado\"}\n    ]\n  },\n\n  uraba:          {nombre:\"Urab\u00e1\",           color:\"#4a9c4a\", fincas:[]},\n  bajocauca:      {nombre:\"Bajo Cauca\",      color:\"#9c4ac8\", fincas:[]},\n  nordeste:       {nombre:\"Nordeste\",        color:\"#c8a800\", fincas:[]},\n  valleaburra:    {nombre:\"Valle de Aburr\u00e1\", color:\"#d97a4f\", fincas:[]},\n  magdalenamedio: {nombre:\"Magdalena Medio\", color:\"#c85070\", fincas:[]}\n\n};\n\n\/* ============================================================\n   POL\u00cdGONOS\n============================================================ *\/\n\nvar regionPolygons = {\n  uraba:          \"4,8 4,68 17,74 19,63 13,52 17,38 22,22 17,11 9,6\",\n  bajocauca:      \"46,3 70,3 75,18 68,28 54,22 46,17\",\n  nordeste:       \"70,3 98,8 98,42 82,44 72,28 68,16\",\n  norte:          \"21,6 46,3 46,17 54,22 50,34 36,31 24,25\",\n  magdalenamedio: \"82,44 98,42 98,68 86,72 76,57 76,46\",\n  occidente:      \"4,52 19,50 21,63 17,74 9,79 4,72\",\n  valleaburra:    \"40,51 53,49 57,57 51,65 40,63\",\n  oriente:        \"70,40 82,40 86,72 76,66 66,61 60,51\",\n  suroeste:       \"9,71 40,64 47,71 45,92 28,100 9,91\"\n};\n\n\/* ============================================================\n   CONFIG PRODUCTOS \u2014 claves internas, nunca visibles al usuario\n============================================================ *\/\n\nvar productoConfig = {\n  \"gulupa\":      {label:\"\ud83d\udfe3 Gulupa\",      cls:\"badge-gulupa\"},\n  \"Hass Avocado\":{label:\"\ud83e\udd51 Hass Avocado\",cls:\"badge-aguacate\"},\n  \"both\":        {label:\"\ud83d\udfe3\ud83e\udd51 Both\",      cls:\"badge-ambos\"}\n};\n\n\/* ============================================================\n   VARIABLES\n============================================================ *\/\n\nvar mapContainer  = document.getElementById(\"fincasMapContainer\");\nvar img           = document.getElementById(\"fincasMapImg\");\nvar tooltip       = document.getElementById(\"fincasMapTooltip\");\nvar panelHeader   = document.getElementById(\"fincasPanelHeader\");\nvar panelTitle    = document.getElementById(\"fincasPanelTitle\");\nvar panelBadge    = document.getElementById(\"fincasPanelBadge\");\nvar panelContent  = document.getElementById(\"fincasPanelContent\");\nvar legendEl      = document.getElementById(\"fincasLegend\");\n\nvar currentFilter = \"all\";\nvar activeRegion  = null;\n\n\/* ============================================================\n   \u2705 FIX TRANSLATEPRESS #4:\n   Los botones ya NO tienen onclick inline.\n   Aqu\u00ed asignamos los eventos desde JS leyendo data-filter,\n   as\u00ed TranslatePress nunca toca el valor del filtro.\n============================================================ *\/\n\ndocument.querySelectorAll(\".filter-btn\").forEach(function(btn){\n  btn.addEventListener(\"click\", function(){\n    setFilter(this.getAttribute(\"data-filter\"));\n  });\n});\n\n\/* ============================================================\n   FILTRO\n============================================================ *\/\n\nfunction setFilter(f){\n  currentFilter = f;\n\n  \/* Limpiar clases activas *\/\n  document.getElementById(\"filterAll\").classList.remove(\"active-all\");\n  document.getElementById(\"filterGulupa\").classList.remove(\"active-gulupa\");\n  document.getElementById(\"filterAguacate\").classList.remove(\"active-aguacate\");\n\n  \/* Aplicar clase activa al correcto *\/\n  if(f === \"all\")          document.getElementById(\"filterAll\").classList.add(\"active-all\");\n  if(f === \"gulupa\")       document.getElementById(\"filterGulupa\").classList.add(\"active-gulupa\");\n  if(f === \"Hass Avocado\") document.getElementById(\"filterAguacate\").classList.add(\"active-aguacate\");\n\n  updateTotals();\n  if(activeRegion) showRegion(activeRegion);\n}\n\nfunction matchFilter(p){\n  if(currentFilter === \"all\")          return true;\n  if(currentFilter === \"gulupa\")       return p === \"gulupa\" || p === \"both\";\n  if(currentFilter === \"Hass Avocado\") return p === \"Hass Avocado\" || p === \"both\";\n  return true;\n}\n\n\/* ============================================================\n   TOTALES\n============================================================ *\/\n\nfunction updateTotals(){\n  var total   = 0;\n  var regiones = 0;\n  Object.keys(fincasData).forEach(function(r){\n    var filtered = fincasData[r].fincas.filter(function(f){ return matchFilter(f.producto); });\n    total    += filtered.length;\n    if(filtered.length > 0) regiones++;\n  });\n  document.getElementById(\"fincasTotal\").textContent    = total;\n  document.getElementById(\"regionesActivas\").textContent = regiones;\n}\n\n\/* ============================================================\n   SVG OVERLAY\n============================================================ *\/\n\nfunction buildSVG(){\n  var old = mapContainer.querySelector(\"svg.fincas-overlay\");\n  if(old) old.remove();\n\n  var svg = document.createElementNS(\"http:\/\/www.w3.org\/2000\/svg\",\"svg\");\n  svg.setAttribute(\"class\",\"fincas-overlay\");\n  svg.setAttribute(\"viewBox\",\"0 0 100 100\");\n  svg.setAttribute(\"preserveAspectRatio\",\"none\");\n  svg.style.cssText = \"position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;\";\n\n  Object.keys(regionPolygons).forEach(function(r){\n    var poly = document.createElementNS(\"http:\/\/www.w3.org\/2000\/svg\",\"polygon\");\n    poly.setAttribute(\"points\", regionPolygons[r]);\n    poly.setAttribute(\"class\",\"region-poly\");\n    poly.dataset.region = r;\n    svg.appendChild(poly);\n  });\n\n  mapContainer.appendChild(svg);\n}\n\n\/* ============================================================\n   LEYENDA\n============================================================ *\/\n\nObject.keys(fincasData).forEach(function(r){\n  var d = fincasData[r];\n  if(!d.fincas.length) return;\n\n  var item = document.createElement(\"div\");\n  item.className       = \"fincas-legend-item\";\n  item.dataset.region  = r;\n  item.innerHTML =\n    '<div class=\"fincas-legend-dot\" style=\"background:'+d.color+'\"><\/div>'+d.nombre;\n  item.addEventListener(\"click\", function(){ showRegion(r); });\n  legendEl.appendChild(item);\n});\n\n\/* ============================================================\n   PANEL REGI\u00d3N\n============================================================ *\/\n\nfunction showRegion(id){\n  var data = fincasData[id];\n  if(!data) return;\n\n  activeRegion = id;\n\n  var filtered = data.fincas.filter(function(f){ return matchFilter(f.producto); });\n\n  panelHeader.style.setProperty(\"--rc\", data.color);\n  panelTitle.textContent = data.nombre;\n\n  if(!filtered.length){\n    panelBadge.textContent = \"No farms here\";\n    panelContent.innerHTML =\n      '<div class=\"fincas-panel-placeholder\">'+\n        '<div class=\"icon\">\ud83c\udf31<\/div>'+\n        '<p>No farms available in<br><strong>'+data.nombre+'<\/strong><\/p>'+\n      '<\/div>';\n    return;\n  }\n\n  panelBadge.textContent = filtered.length+\" farm\"+(filtered.length!==1?\"s\":\"\")+\" \u00b7 \"+data.nombre;\n\n  var html = '<div class=\"fincas-list\">';\n  filtered.forEach(function(f){\n    var pc   = productoConfig[f.producto] || productoConfig[\"gulupa\"];\n    var icon = f.producto===\"Hass Avocado\" ? \"\ud83e\udd51\" : f.producto===\"both\" ? \"\ud83c\udf3f\" : \"\ud83d\udfe3\";\n    html +=\n      '<div class=\"finca-card\">'+\n        '<div class=\"finca-icon\" style=\"background:'+data.color+'20\">'+icon+'<\/div>'+\n        '<div class=\"finca-info\">'+\n          '<div class=\"name\">'+f.nombre+'<\/div>'+\n          '<div class=\"finca-municipio\">\ud83d\udccd '+f.municipio+'<\/div>'+\n          '<span class=\"producto-badge '+pc.cls+'\">'+pc.label+'<\/span>'+\n        '<\/div>'+\n        '<span class=\"finca-arrow\">\u2192<\/span>'+\n      '<\/div>';\n  });\n  html += '<\/div>';\n  panelContent.innerHTML = html;\n\n  document.querySelectorAll(\".region-poly\").forEach(function(p){\n    p.classList.toggle(\"active\", p.dataset.region === id);\n  });\n  document.querySelectorAll(\".fincas-legend-item\").forEach(function(l){\n    l.classList.toggle(\"active\", l.dataset.region === id);\n  });\n}\n\n\/* ============================================================\n   EVENTOS MAPA\n============================================================ *\/\n\nfunction attachEvents(){\n  document.querySelectorAll(\".region-poly\").forEach(function(poly){\n\n    poly.addEventListener(\"mousemove\", function(){\n      var rid  = this.dataset.region;\n      var data = fincasData[rid];\n      if(!data) return;\n\n      var svg = mapContainer.querySelector(\"svg\");\n      var w   = svg.clientWidth;\n      var h   = svg.clientHeight;\n      var pts = regionPolygons[rid].split(\" \");\n      var cx  = 0, cy = 0;\n\n      pts.forEach(function(p){\n        var v = p.split(\",\");\n        cx += parseFloat(v[0]);\n        cy += parseFloat(v[1]);\n      });\n\n      cx = (cx\/pts.length)\/100*w;\n      cy = (cy\/pts.length)\/100*h;\n\n      var n = data.fincas.filter(function(f){ return matchFilter(f.producto); }).length;\n\n      tooltip.innerHTML = data.nombre+' <span class=\"fc\">\u00b7 '+n+' farms<\/span>';\n      tooltip.style.left = cx+\"px\";\n      tooltip.style.top  = cy+\"px\";\n      tooltip.classList.add(\"visible\");\n\n      showRegion(rid);\n    });\n\n    poly.addEventListener(\"mouseleave\", function(){\n      tooltip.classList.remove(\"visible\");\n    });\n\n    poly.addEventListener(\"click\", function(){\n      showRegion(this.dataset.region);\n    });\n\n  });\n}\n\n\/* ============================================================\n   INIT\n============================================================ *\/\n\nfunction init(){\n  buildSVG();\n  attachEvents();\n  updateTotals();\n}\n\nif(img.complete) init();\nelse img.addEventListener(\"load\", init);\n\nwindow.addEventListener(\"resize\", function(){\n  buildSVG();\n  attachEvents();\n});\n\n})();\n<\/script><\/div>\n<!--\/tp:ignore-->\n<p>&nbsp;<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Our farms in Antioquia Explore each region to discover our farms. \ud83d\uddfa\ufe0f All the farms \ud83d\udfe3 Only Gulupa \ud83e\udd51 Hass Avocado Only \u00a0 Gulupa \u00a0 Hass Avocado \u00a0 Both crops \u00a0 \u00a0 Hover your cursor over a region to see its farms. Select a region Farms \ud83d\uddfa\ufe0f Hover the cursor over a regionof the map [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-2434","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/pages\/2434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/comments?post=2434"}],"version-history":[{"count":94,"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/pages\/2434\/revisions"}],"predecessor-version":[{"id":2710,"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/pages\/2434\/revisions\/2710"}],"wp:attachment":[{"href":"https:\/\/santropicalproduce.com\/es\/wp-json\/wp\/v2\/media?parent=2434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}