{"id":260,"date":"2025-08-16T17:16:15","date_gmt":"2025-08-16T17:16:15","guid":{"rendered":"https:\/\/staging.globalsocialimpact.es\/?page_id=260"},"modified":"2026-03-03T12:23:04","modified_gmt":"2026-03-03T12:23:04","slug":"santa-comba","status":"publish","type":"page","link":"https:\/\/globalsocialimpact.es\/es\/santa-comba\/","title":{"rendered":"Santa Comba"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"260\" class=\"elementor elementor-260\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7725653 e-con-full e-flex e-con e-parent\" data-id=\"7725653\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-455509b3 animated-slow elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"455509b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:0,&quot;motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Santa Comba<\/h2>\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-440a5ac9 e-con-full e-flex e-con e-parent\" data-id=\"440a5ac9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5c7145ba e-con-full e-flex e-con e-child\" data-id=\"5c7145ba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1617da99 elementor-widget__width-inherit elementor-widget elementor-widget-image\" data-id=\"1617da99\" 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 loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"37\" src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/09\/logoSCnegro4x-300x37.png\" class=\"attachment-medium size-medium wp-image-923347\" alt=\"\" srcset=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/09\/logoSCnegro4x-300x37.png 300w, https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/09\/logoSCnegro4x-1024x128.png 1024w, https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/09\/logoSCnegro4x-768x96.png 768w, https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/09\/logoSCnegro4x.png 1361w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>\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 class=\"elementor-element elementor-element-16c71aec elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"16c71aec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A family ecosystem where knowledge, values and impact come together<\/h2>\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-4683fd e-con-full e-flex e-con e-child\" data-id=\"4683fd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-569e57ea elementor-widget elementor-widget-n-accordion\" data-id=\"569e57ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;max_items_expended&quot;:&quot;multiple&quot;,&quot;default_state&quot;:&quot;expanded&quot;,&quot;n_accordion_animation_duration&quot;:{&quot;unit&quot;:&quot;ms&quot;,&quot;size&quot;:400,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-n-accordion\" aria-label=\"Accordion. Open links with Enter or Space, close with Escape, and navigate with Arrow Keys\">\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1450\" class=\"e-n-accordion-item\" open>\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"1\" tabindex=\"0\" aria-expanded=\"true\" aria-controls=\"e-n-accordion-item-1450\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> GSI is part of Santa Comba, a family-led ecosystem <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-1450\" class=\"elementor-element elementor-element-7c64081e e-con-full e-flex e-con e-child\" data-id=\"7c64081e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-285f3a01 elementor-widget elementor-widget-text-editor\" data-id=\"285f3a01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Where investment, business and philanthropy come together to drive long-term impact under \u2028a shared approach rooted in value investing.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1451\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"2\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1451\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Founded by Mar\u00eda \u00c1ngeles Le\u00f3n and Francisco Garc\u00eda Param\u00e9s <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-1451\" class=\"elementor-element elementor-element-2e77c85e e-con-full e-flex e-con e-child\" data-id=\"2e77c85e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16e3df60 elementor-widget elementor-widget-text-editor\" data-id=\"16e3df60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The group \u2028is built on a core belief: that personal freedom grows \u2028through knowledge.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1452\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"3\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1452\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> Each initiative operates independently <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-1452\" class=\"elementor-element elementor-element-25847859 e-con-full e-flex e-con e-child\" data-id=\"25847859\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-603d66ba elementor-widget elementor-widget-text-editor\" data-id=\"603d66ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Yet Santa Comba is a connected ecosystem where capital, ideas and talent flow \u2028across entities.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t\t<details id=\"e-n-accordion-item-1453\" class=\"e-n-accordion-item\" >\n\t\t\t\t<summary class=\"e-n-accordion-item-title\" data-accordion-index=\"4\" tabindex=\"-1\" aria-expanded=\"false\" aria-controls=\"e-n-accordion-item-1453\" >\n\t\t\t\t\t<span class='e-n-accordion-item-title-header'><div class=\"e-n-accordion-item-title-text\"> All teams are aligned by a common philosophy and long-term vision <\/div><\/span>\n\t\t\t\t\t\t\t<span class='e-n-accordion-item-title-icon'>\n\t\t\t<span class='e-opened' ><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t<span class='e-closed'><i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i><\/span>\n\t\t<\/span>\n\n\t\t\t\t\t\t<\/summary>\n\t\t\t\t<div role=\"region\" aria-labelledby=\"e-n-accordion-item-1453\" class=\"elementor-element elementor-element-5f9b7131 e-con-full e-flex e-con e-child\" data-id=\"5f9b7131\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1694636 elementor-widget elementor-widget-text-editor\" data-id=\"1694636\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">Financial returns generated in one area are reinvested into others; knowledge and insights are exchanged continuously.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/details>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c99eff4 e-con-full texto-con-imagen e-flex elementor-invisible e-con e-parent\" data-id=\"c99eff4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8fbef0e elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"8fbef0e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html>\n<head>\n<style>\n\/* SUBTLE GRADIENT ANIMATION - ELEMENTOR *\/\n.gradient-container {\n  width: 100%;\n  text-align: center;\n  padding: 64px 64px 24px 64px;\n  background: linear-gradient(135deg, #F1F8E3 0%, #f8faf9 50%, #F1F8E3 100%);\n  position: relative;\n  min-height: 200px;\n}\n\n.gradient-title {\n  font-size: 32px!important;\n  font-weight: 600;\n  background: linear-gradient(45deg, #354E46 0%, #354E46 10%, #a2c827 100%);\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n  background-clip: text;\n  margin-bottom: 3rem;\n  opacity: 0;\n  transform: scale(0.9);\n  transition: all 2s ease-out;\n}\n\n.gradient-title.active {\n  opacity: 1;\n  transform: scale(1);\n}\n\n.gradient-paragraph {\n  font-size: 1.2rem;\n  color: #354E46;\n  line-height: 1.7;\n  max-width: 780px;\n  margin: 0 auto;\n  opacity: 0;\n  transform: translateY(30px);\n  transition: all 1.8s ease-out 1s;\n}\n\n.gradient-paragraph.active {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.gradient-bg {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background: radial-gradient(circle at 30% 70%, rgba(162, 200, 39, 0.08) 0%, transparent 50%),\n              radial-gradient(circle at 70% 30%, rgba(162, 200, 39, 0.05) 0%, transparent 50%);\n  opacity: 0;\n  transition: opacity 3s ease-out;\n  pointer-events: none;\n}\n\n.gradient-bg.active {\n  opacity: 1;\n}\n\n.floating-element {\n  position: absolute;\n  width: 6px;\n  height: 6px;\n  background: rgba(162, 200, 39, 0.3);\n  border-radius: 50%;\n  animation: float 8s ease-in-out infinite;\n  pointer-events: none;\n}\n\n.float-1 { \n  top: 25%; \n  left: 20%; \n  animation-delay: 0s; \n}\n\n.float-2 { \n  top: 70%; \n  right: 25%; \n  animation-delay: 3s; \n}\n\n.float-3 { \n  top: 40%; \n  left: 70%; \n  animation-delay: 6s; \n}\n\n@keyframes float {\n  0%, 100% { \n    transform: translateY(0) rotate(0deg); \n    opacity: 0.3; \n  }\n  50% { \n    transform: translateY(-30px) rotate(180deg); \n    opacity: 0.8; \n  }\n}\n\n\/* Responsive Design *\/\n@media (max-width: 768px) {\n  .gradient-container {\n    padding: 60px 15px;\n  }\n  .gradient-title { \n    font-size: 2.2rem; \n    margin-bottom: 2rem;\n  }\n  .gradient-paragraph { \n    font-size: 1rem; \n    line-height: 1.6;\n  }\n}\n\n@media (max-width: 480px) {\n  .gradient-title { \n    font-size: 1.8rem; \n  }\n  .gradient-paragraph { \n    font-size: 0.9rem; \n  }\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"gradient-container\" id=\"gradientContainer\">\n  <div class=\"gradient-bg\" id=\"gradientBg\"><\/div>\n  <div class=\"floating-element float-1\"><\/div>\n  <div class=\"floating-element float-2\"><\/div>\n  <div class=\"floating-element float-3\"><\/div>\n\n  <h1 class=\"gradient-title\" id=\"gradientTitle\">\n    This intentional collaboration creates synergies that amplify both financial and social impact, multiplying the value of each individual part.\n  <\/h1>\n \n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  \/\/ Activar animaci\u00f3n despu\u00e9s de 800ms\n  setTimeout(function() {\n    const gradientBg = document.getElementById('gradientBg');\n    const gradientTitle = document.getElementById('gradientTitle');\n    const gradientParagraph = document.getElementById('gradientParagraph');\n    \n    if (gradientBg) gradientBg.classList.add('active');\n    if (gradientTitle) gradientTitle.classList.add('active');\n    if (gradientParagraph) gradientParagraph.classList.add('active');\n  }, 800);\n});\n\n\/\/ Opcional: Activar animaci\u00f3n cuando el elemento sea visible (Intersection Observer)\nif ('IntersectionObserver' in window) {\n  const observer = new IntersectionObserver(function(entries) {\n    entries.forEach(function(entry) {\n      if (entry.isIntersecting && entry.intersectionRatio >= 0.3) {\n        const gradientBg = entry.target.querySelector('.gradient-bg');\n        const gradientTitle = entry.target.querySelector('.gradient-title');\n        const gradientParagraph = entry.target.querySelector('.gradient-paragraph');\n        \n        if (gradientBg && !gradientBg.classList.contains('active')) {\n          setTimeout(function() {\n            gradientBg.classList.add('active');\n            gradientTitle.classList.add('active');\n            gradientParagraph.classList.add('active');\n          }, 300);\n        }\n      }\n    });\n  }, {\n    threshold: 0.3,\n    rootMargin: '0px 0px -50px 0px'\n  });\n  \n  const container = document.getElementById('gradientContainer');\n  if (container) {\n    observer.observe(container);\n  }\n}\n<\/script>\n\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eb31d12 e-con-full elementor-hidden-mobile elementor-hidden-tablet e-flex e-con e-parent\" data-id=\"eb31d12\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-70a427f elementor-widget__width-inherit elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"70a427f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\n<html lang=\"es\">\n  <head>\n    <meta charset=\"UTF-8\" \/>\n    <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" \/>\n    <title>Santa Comba Ecosystem<\/title>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/svg.js\/3.2.0\/svg.min.js\"><\/script>\n    <style>\n      :root {\n        --primary-color: #869a78;\n        --secondary-color: #98bc43;\n        --accent-color: #e2f2ca;\n        --dark-color: #314841;\n        --highlight-color: #a2c827;\n        --office-color: #e6baa6;\n        --credit-color: #a2c827;\n        --equity-color: #446b5e;\n        --background-light: #ffffff;\n        --text-color: #293229;\n        --neutral-light: #d9d9e6;\n        --neutral-medium: #8d8686;\n        --bullet-office: #e6baa6;\n      }\n\n      * {\n        box-sizing: border-box;\n        margin: 0;\n        padding: 0;\n      }\n      body {\n        font-family: \"Proxima Nova\", Arial, sans-serif;\n        color: var(--text-color);\n        line-height: 1.6;\n        background-color: #ffffff;\n      }\n\n      .filter-container {\n        display: flex;\n        justify-content: center;\n        gap: 12px;\n        margin: 32px 0;\n        flex-wrap: wrap;\n      }\n\n      button.filter-slider {\n        position: relative;\n        cursor: pointer;\n        width: auto;\n        height: 32px;\n        background-color: #0e475c !important;\n        border-radius: 16px;\n        transition: all 0.3s ease;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        padding: 0 37px;\n        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n        border: 1px solid rgba(0, 0, 0, 0.1);\n        color: #ffffff !important;\n        font-family: \"Proxima Nova\", Arial, sans-serif;\n        font-size: 16px;\n        font-weight: 300;\n        margin: 0;\n        outline: none;\n      }\n      button.filter-slider::before {\n        position: absolute;\n        content: \"\";\n        height: 25px;\n        width: 25px;\n        left: 4px;\n        bottom: 3px;\n        background-color: white;\n        transition: all 0.3s ease;\n        border-radius: 50%;\n      }\n      button.filter-slider.active {\n        background-color: var(--highlight-color) !important;\n      }\n      button.filter-slider:hover {\n        background-color: var(--highlight-color) !important;\n      }\n      button.filter-slider.active::before {\n        left: auto;\n        right: 4px;\n      }\n\n      .ecosystem-container {\n        display: flex;\n        width: 100%;\n        margin: 32px auto;\n        padding: 24px 0 24px 0;\n        background-color: #eeeeee;\n      }\n\n      .info-panel {\n        position: relative;\n        width: 300px;\n        margin-left: 64px;\n        background: white;\n        padding: 1.2em;\n        font-size: 0.9rem;\n        min-height: 75vh;\n        max-height: 70vh;\n        overflow-y: auto;\n        opacity: 0.95;\n        box-shadow: 0 0 0 rgba(0, 0, 0, 0.15);\n        border-radius: 8px;\n        border: 0 solid #e0e0e0;\n      }\n      .info-panel h2 {\n        margin: 0 0 16px 0;\n        font-size: 20px;\n        color: var(--dark-color);\n        border-bottom: 2px solid var(--highlight-color);\n        padding-bottom: 8px;\n      }\n      .flow-block {\n        border-left: 2px solid;\n        padding: 16px;\n        margin: 16px 0;\n        background: #f9f9f9;\n        border-radius: 0 6px 6px 0;\n        display: none;\n      }\n      .flow-block.capital-block {\n        border-color: #073b4c;\n      }\n      .flow-block.knowledge-block {\n        border-color: #8aa981;\n      }\n      .flow-block.impact-block {\n        border-color: #b1d140;\n      }\n      .flow-block h3 {\n        font-size: 16px;\n        font-weight: bold;\n        color: var(--dark-color);\n        margin-bottom: 8px;\n      }\n      .flow-block ul {\n        padding-left: 1.2rem;\n        list-style: disc;\n        margin: 0;\n        color: #111;\n        font-size: 0.95rem;\n        line-height: 1.5;\n      }\n\n      .ecosystem-diagram {\n        background-color: #eeeeee;\n        position: relative;\n        width: 970px;\n        height: 650px;\n      }\n\n      .entity {\n        position: absolute;\n        width: 180px;\n        height: 162px;\n        z-index: 5 !important;\n        transition: transform 0.3s ease;\n      }\n      .entity svg {\n        width: 100%;\n        height: auto;\n        z-index: 5 !important;\n        stroke: none !important;\n      }\n      .entity img {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        max-width: 70%;\n        max-height: 70%;\n        object-fit: contain;\n        pointer-events: none;\n        z-index: 20 !important;\n      }\n\n      .santa-comba {\n        top: 50px;\n        left: 50%;\n        transform: translateX(-50%);\n      }\n      .santa-comba.pulse {\n        animation: heartbeat 2s infinite;\n      }\n      @keyframes heartbeat {\n        0% {\n          transform: translateX(-50%) scale(1);\n        }\n        25% {\n          transform: translateX(-50%) scale(1.05);\n        }\n        50% {\n          transform: translateX(-50%) scale(1);\n        }\n        75% {\n          transform: translateX(-50%) scale(1.05);\n        }\n        100% {\n          transform: translateX(-50%) scale(1);\n        }\n      }\n\n      .cobas {\n        top: 320px;\n        left: 25%;\n        transform: translate(-50%, -50%);\n      }\n      .gsi {\n        top: 320px;\n        left: 50%;\n        transform: translate(-50%, -50%);\n      }\n      .ovf {\n        top: 320px;\n        left: 75%;\n        transform: translate(-50%, -50%);\n      }\n      .value-school {\n        top: 510px;\n        left: 50%;\n        transform: translate(-50%, -50%);\n      }\n\n      @media (max-width: 768px) {\n        .ecosystem-container {\n          flex-direction: column;\n          align-items: center;\n        }\n        .ecosystem-diagram {\n          width: 400px;\n          height: 400px;\n        }\n        .entity {\n          width: 120px;\n          height: 105px;\n          z-index: 5 !important;\n        }\n        .info-panel {\n          width: 100%;\n          max-width: 480px;\n          padding: 1.5rem;\n        }\n        .filter-container {\n          flex-wrap: wrap;\n        }\n      }\n\n      .capital-flow {\n        stroke: #073b4c;\n      }\n      .knowledge-flow {\n        stroke: #8aa981;\n      }\n      .impact-flow {\n        stroke: #b1d140;\n      }\n    <\/style>\n  <\/head>\n  <body>\n    <div class=\"filter-container\">\n      <button class=\"filter-slider active\" id=\"allBtn\">\n        <span class=\"filter-label\">All flows<\/span>\n      <\/button>\n      <button class=\"filter-slider\" id=\"capitalBtn\">\n        <span class=\"filter-label\">Capital flows<\/span>\n      <\/button>\n      <button class=\"filter-slider\" id=\"knowledgeBtn\">\n        <span class=\"filter-label\">Knowledge flows<\/span>\n      <\/button>\n      <button class=\"filter-slider\" id=\"impactBtn\">\n        <span class=\"filter-label\">Impact flows<\/span>\n      <\/button>\n    <\/div>\n\n    <div class=\"ecosystem-container\">\n      <div class=\"info-panel\">\n        <h2>Selected: <span id=\"selectedText\"><\/span><\/h2>\n\n        <div class=\"flow-block capital-block\">\n          <h3>Capital<\/h3>\n          <ul>\n            <li>\n              Capital circulates across the group to fuel growth and expand\n              impact.\n            <\/li>\n          <\/ul>\n        <\/div>\n\n        <div class=\"flow-block knowledge-block\">\n          <h3>Knowledge and know-how<\/h3>\n          <ul>\n            <li>\n              Expertise and insights flow across entities to strengthen one\n              another.\n            <\/li>\n          <\/ul>\n        <\/div>\n\n        <div class=\"flow-block impact-block\">\n          <h3>Knowledge sharing with society<\/h3>\n          <ul>\n            <li>\n              Each entity shares knowledge to foster financial innovation and\n              social well-being.\n            <\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n\n      <div class=\"ecosystem-diagram\" id=\"diagram\">\n        <div class=\"entity santa-comba\">\n          <a href=\"https:\/\/santacombagestion.com\/\" target=\"_blank\">\n            <svg\n              fill=\"none\"\n              viewBox=\"0 0 180 162\"\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n            >\n              <path\n                d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                fill=\"#ffffff\"\n                stroke=\"#073b4c\"\n                stroke-width=\"0\"\n              \/><\/svg\n          ><\/a>\n          <img decoding=\"async\"\n            alt=\"Santa Comba\"\n            src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/santaCombaLogo01-1.png\"\n          \/>\n        <\/div>\n\n        <div class=\"entity cobas\">\n          <a href=\"https:\/\/www.cobasam.com\/\" target=\"_blank\">\n            <svg\n              fill=\"none\"\n              viewBox=\"0 0 180 162\"\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n            >\n              <path\n                d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                fill=\"#ffffff\"\n                stroke=\"#073b4c\"\n                stroke-width=\"0\"\n              \/><\/svg\n          ><\/a>\n          <img decoding=\"async\"\n            alt=\"Cobas AM\"\n            src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/cobas01.png\"\n          \/>\n        <\/div>\n\n        <div class=\"entity gsi\">\n          <a href=\"https:\/\/globalsocialimpact.es\/\" target=\"_blank\">\n            <svg\n              fill=\"none\"\n              viewBox=\"0 0 180 162\"\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n            >\n              <path\n                d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                fill=\"#ffffff\"\n                stroke=\"#073b4c\"\n                stroke-width=\"0\"\n              \/><\/svg\n          ><\/a>\n          <img decoding=\"async\"\n            alt=\"GSI\"\n            src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/logo03.png\"\n          \/>\n        <\/div>\n\n        <div class=\"entity ovf\">\n          <a href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n            <svg\n              fill=\"none\"\n              viewBox=\"0 0 180 162\"\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n            >\n              <path\n                d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                fill=\"#ffffff\"\n                stroke=\"#073b4c\"\n                stroke-width=\"0\"\n              \/><\/svg\n          ><\/a>\n          <img decoding=\"async\"\n            alt=\"Open Value Foundation\"\n            src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/openValue2.png\"\n          \/>\n        <\/div>\n\n        <div class=\"entity value-school\">\n          <a href=\"https:\/\/valueschool.es\/\" target=\"_blank\">\n            <svg\n              fill=\"none\"\n              viewBox=\"0 0 180 162\"\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n            >\n              <path\n                d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                fill=\"#ffffff\"\n                stroke=\"#073b4c\"\n                stroke-width=\"0\"\n              \/><\/svg\n          ><\/a>\n          <img decoding=\"async\"\n            alt=\"Value School\"\n            src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/valueSchoolLogo.png\"\n          \/>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <script>\n      document.addEventListener(\"DOMContentLoaded\", function () {\n        const SVG = window.SVG;\n        if (!SVG) return;\n\n        const diagram = document.getElementById(\"diagram\");\n        if (!diagram) return;\n\n        \/\/ Estilos para capas\n        const style = document.createElement(\"style\");\n        style.textContent = `\n      .lines-layer  { position:absolute; top:0; left:0; z-index: 1  !important; pointer-events:none; }\n      .donuts-layer { position:absolute; top:0; left:0; z-index: 10 !important; pointer-events:none; }\n      .effects-layer{ position:absolute; top:0; left:0; z-index: 30 !important; pointer-events:none; }\n    `;\n        document.head.appendChild(style);\n\n        \/\/ Tres canvas SVG: l\u00edneas (abajo), donuts (medio), efectos\/plus (arriba)\n        const linesCanvas = SVG()\n          .addTo(\"#diagram\")\n          .size(\"100%\", \"100%\")\n          .addClass(\"lines-layer\");\n        const donutsCanvas = SVG()\n          .addTo(\"#diagram\")\n          .size(\"100%\", \"100%\")\n          .addClass(\"donuts-layer\");\n        const effectsCanvas = SVG()\n          .addTo(\"#diagram\")\n          .size(\"100%\", \"100%\")\n          .addClass(\"effects-layer\");\n\n        const entities = {\n          santaComba: { x: 410, y: 90 },\n          cobas: { x: 242.5, y: 401 },\n          gsi: { x: 485, y: 401 },\n          ovf: { x: 727.5, y: 401 },\n          valueSchool: { x: 485, y: 591 },\n        };\n\n        let capitalFlows = [];\n        let knowledgeFlows = [];\n        let impactFlows = [];\n        let activeFlows = {\n          capital: false,\n          knowledge: false,\n          impact: false,\n          all: false,\n        };\n        let animationHandles = [];\n        let santaCombaPulsing = false;\n        let isAnimating = false;\n\n        function createFlow(start, end, className, curveLeft) {\n          const dx = end.x - start.x;\n          const dy = end.y - start.y;\n          const distance = Math.sqrt(dx * dx + dy * dy);\n          const radius = distance \/ 1.755;\n          const sweepFlag = curveLeft ? 0 : 1;\n          const pathString = `M${start.x},${start.y} A${radius},${radius} 0 0,${sweepFlag} ${end.x},${end.y}`;\n\n          const color =\n            className === \"capital-flow\"\n              ? \"#073b4c\"\n              : className === \"knowledge-flow\"\n                ? \"#8aa981\"\n                : \"#b1d140\";\n\n          const basePath = linesCanvas\n            .path(pathString)\n            .stroke({ width: 7, color: \"#cccccc\" })\n            .fill(\"none\")\n            .addClass(\"flow-line flow-line-base\")\n            .show();\n\n          const coloredPath = linesCanvas\n            .path(pathString)\n            .stroke({\n              width: 7,\n              color,\n              dasharray: distance,\n              dashoffset: distance,\n            })\n            .fill(\"none\")\n            .addClass(\"flow-line flow-line-colored\")\n            .addClass(className)\n            .hide();\n\n          const donut = donutsCanvas\n            .circle(14)\n            .stroke({ width: 7, color })\n            .fill(\"#ffffff\")\n            .addClass(\"flow-line\")\n            .center(start.x, start.y)\n            .hide();\n\n          return {\n            basePath,\n            coloredPath,\n            donut,\n            pathString,\n            distance,\n            className,\n            start: { x: start.x, y: start.y },\n            end: { x: end.x, y: end.y },\n          };\n        }\n\n        \/\/ Efecto shockwave + cruces \"+\"\n        const createCrosses = (x, y) => {\n          const svg = effectsCanvas.node; \/\/ CAPA DE EFECTOS (por encima)\n          const particleCount = 60;\n          const colors = [\n            \"#A2C827\",\n            \"#8BB020\",\n            \"#74981A\",\n            \"#5D8014\",\n            \"#0d475c\",\n          ];\n\n          \/\/ Anillo\n          const ring = document.createElementNS(\n            \"http:\/\/www.w3.org\/2000\/svg\",\n            \"circle\",\n          );\n          ring.setAttribute(\"cx\", x.toString());\n          ring.setAttribute(\"cy\", y.toString());\n          ring.setAttribute(\"r\", \"0\");\n          ring.setAttribute(\"fill\", \"none\");\n          ring.setAttribute(\"stroke\", \"#A2C827\");\n          ring.setAttribute(\"stroke-width\", \"3\");\n          ring.setAttribute(\"opacity\", \"1\");\n          svg.appendChild(ring);\n\n          let ringRadius = 0;\n          const maxRingRadius = 180;\n          const animateRing = () => {\n            if (ringRadius < maxRingRadius) {\n              ringRadius += 4;\n              const opacity = Math.max(0, 1 - ringRadius \/ maxRingRadius);\n              const strokeWidth = 3 * opacity;\n              ring.setAttribute(\"r\", ringRadius.toString());\n              ring.setAttribute(\"opacity\", opacity.toString());\n              ring.setAttribute(\"stroke-width\", strokeWidth.toString());\n              requestAnimationFrame(animateRing);\n            } else {\n              ring.remove();\n            }\n          };\n          requestAnimationFrame(animateRing);\n\n          \/\/ Part\u00edculas \"+\"\n          for (let i = 0; i < particleCount; i++) {\n            const angle = Math.random() * Math.PI * 2;\n            const startDistance = Math.random() * 40 + 15;\n            const speed = Math.random() * 5 + 2;\n            const maxDistance = Math.random() * 250 + 180;\n            const size = Math.random() * 12 + 6;\n\n            const g = document.createElementNS(\n              \"http:\/\/www.w3.org\/2000\/svg\",\n              \"g\",\n            );\n            const startX = x + Math.cos(angle) * startDistance;\n            const startY = y + Math.sin(angle) * startDistance;\n\n            const horizontal = document.createElementNS(\n              \"http:\/\/www.w3.org\/2000\/svg\",\n              \"line\",\n            );\n            const vertical = document.createElementNS(\n              \"http:\/\/www.w3.org\/2000\/svg\",\n              \"line\",\n            );\n\n            horizontal.setAttribute(\"x1\", (-size \/ 2).toString());\n            horizontal.setAttribute(\"y1\", \"0\");\n            horizontal.setAttribute(\"x2\", (size \/ 2).toString());\n            horizontal.setAttribute(\"y2\", \"0\");\n            horizontal.setAttribute(\"stroke\", colors[i % colors.length]);\n            horizontal.setAttribute(\"stroke-width\", \"3\");\n            horizontal.setAttribute(\"stroke-linecap\", \"round\");\n\n            vertical.setAttribute(\"x1\", \"0\");\n            vertical.setAttribute(\"y1\", (-size \/ 2).toString());\n            vertical.setAttribute(\"x2\", \"0\");\n            vertical.setAttribute(\"y2\", (size \/ 2).toString());\n            vertical.setAttribute(\"stroke\", colors[i % colors.length]);\n            vertical.setAttribute(\"stroke-width\", \"3\");\n            vertical.setAttribute(\"stroke-linecap\", \"round\");\n\n            g.appendChild(horizontal);\n            g.appendChild(vertical);\n            g.setAttribute(\"transform\", `translate(${startX}, ${startY})`);\n            g.setAttribute(\"opacity\", \"0\");\n            svg.appendChild(g);\n\n            let currentDistance = startDistance;\n            let opacity = 0;\n            let rotation = 0;\n\n            const animateParticle = () => {\n              if (currentDistance < maxDistance && opacity >= 0) {\n                if (ringRadius > startDistance - 15)\n                  opacity = Math.min(1, opacity + 0.12);\n\n                currentDistance += speed;\n                rotation += 8;\n\n                const newX = x + Math.cos(angle) * currentDistance;\n                const newY = y + Math.sin(angle) * currentDistance;\n                const fadeOpacity =\n                  opacity *\n                  Math.max(\n                    0,\n                    1 -\n                      (currentDistance - startDistance) \/\n                        (maxDistance - startDistance),\n                  );\n\n                g.setAttribute(\n                  \"transform\",\n                  `translate(${newX}, ${newY}) rotate(${rotation})`,\n                );\n                g.setAttribute(\"opacity\", fadeOpacity.toString());\n\n                requestAnimationFrame(animateParticle);\n              } else {\n                g.remove();\n              }\n            };\n            requestAnimationFrame(animateParticle);\n          }\n        };\n\n        function stopAllAnimations() {\n          animationHandles.forEach((item) => {\n            if (item.animationHandle)\n              cancelAnimationFrame(item.animationHandle);\n          });\n          animationHandles = [];\n\n          [...capitalFlows, ...knowledgeFlows, ...impactFlows].forEach(\n            (flow) => {\n              if (flow.animationHandle)\n                cancelAnimationFrame(flow.animationHandle);\n            },\n          );\n\n          if (santaCombaPulsing) {\n            document.querySelector(\".santa-comba\").classList.remove(\"pulse\");\n            santaCombaPulsing = false;\n          }\n\n          \/\/ Limpieza de restos (si hubiese)\n          linesCanvas.find(\"g\").forEach((group) => {\n            if (group.children().length === 2) group.remove();\n          });\n        }\n\n        function clearAllFlows() {\n          stopAllAnimations();\n          linesCanvas.clear();\n          donutsCanvas.clear();\n          effectsCanvas.clear(); \/\/ limpiar tambi\u00e9n la capa de efectos\n          capitalFlows = [];\n          knowledgeFlows = [];\n          impactFlows = [];\n        }\n\n        function updateButtons() {\n          document\n            .getElementById(\"allBtn\")\n            .classList.toggle(\"active\", activeFlows.all);\n          document\n            .getElementById(\"capitalBtn\")\n            .classList.toggle(\"active\", activeFlows.capital);\n          document\n            .getElementById(\"knowledgeBtn\")\n            .classList.toggle(\"active\", activeFlows.knowledge);\n          document\n            .getElementById(\"impactBtn\")\n            .classList.toggle(\"active\", activeFlows.impact);\n        }\n\n        function updateInfoPanel() {\n          const selectedTextEl = document.getElementById(\"selectedText\");\n          const selected = [];\n          if (activeFlows.capital) selected.push(\"Capital\");\n          if (activeFlows.knowledge) selected.push(\"Knowledge\");\n          if (activeFlows.impact) selected.push(\"Impact\");\n\n          if (selected.length === 0) {\n            selectedTextEl.innerHTML = '<span style=\"color: #999;\">None<\/span>';\n          } else {\n            selectedTextEl.innerHTML = selected\n              .map(\n                (label) =>\n                  `<span style=\"color: var(--text-color);\">${label}<\/span>`,\n              )\n              .join(`<span style=\"color: #98BC43;\"> + <\/span>`);\n          }\n\n          document.querySelector(\".capital-block\").style.display =\n            activeFlows.capital ? \"block\" : \"none\";\n          document.querySelector(\".knowledge-block\").style.display =\n            activeFlows.knowledge ? \"block\" : \"none\";\n          document.querySelector(\".impact-block\").style.display =\n            activeFlows.impact ? \"block\" : \"none\";\n        }\n\n        function toggleFlow(flowType) {\n          if (isAnimating) return;\n          isAnimating = true;\n\n          if (flowType === \"all\") {\n            const newState = !activeFlows.all;\n            activeFlows = {\n              capital: newState,\n              knowledge: newState,\n              impact: newState,\n              all: newState,\n            };\n          } else {\n            activeFlows[flowType] = !activeFlows[flowType];\n            activeFlows.all =\n              activeFlows.capital &&\n              activeFlows.knowledge &&\n              activeFlows.impact;\n          }\n\n          \/\/ Reset y recreaci\u00f3n\n          clearAllFlows();\n\n          if (activeFlows.capital) {\n            createCapitalFlows();\n            setTimeout(() => animateFlowSequentially(capitalFlows), 50);\n          }\n          if (activeFlows.knowledge) {\n            createKnowledgeFlows();\n            animateKnowledgeFlow();\n          }\n          if (activeFlows.impact) {\n            createImpactFlows();\n            animateImpactFlows(); \/\/ SIEMPRE dispara los \u201c+\u201d al finalizar\n          }\n\n          updateButtons();\n          updateInfoPanel();\n          isAnimating = false;\n        }\n\n        function createCapitalFlows() {\n          capitalFlows = [];\n\n          const cobasToSanta = createFlow(\n            { x: entities.cobas.x, y: entities.cobas.y - 150 },\n            { x: entities.santaComba.x, y: entities.santaComba.y + 10 },\n            \"capital-flow\",\n            false,\n          );\n          capitalFlows.push(cobasToSanta);\n\n          const santaToOvf = createFlow(\n            { x: entities.santaComba.x + 155, y: entities.santaComba.y + 15 },\n            { x: entities.ovf.x, y: entities.ovf.y - 165 },\n            \"capital-flow\",\n            false,\n          );\n          santaToOvf.isSimultaneous = true;\n          capitalFlows.push(santaToOvf);\n\n          const santaToGsi = createFlow(\n            { x: entities.santaComba.x + 5, y: entities.santaComba.y + 80 },\n            { x: entities.gsi.x - 85, y: entities.gsi.y - 100 },\n            \"capital-flow\",\n            true,\n          );\n          santaToGsi.isSimultaneous = true;\n          capitalFlows.push(santaToGsi);\n\n          const santaToValue = createFlow(\n            { x: entities.santaComba.x + 135, y: entities.santaComba.y + 105 },\n            { x: entities.valueSchool.x + 75, y: entities.valueSchool.y - 115 },\n            \"capital-flow\",\n            false,\n          );\n          santaToValue.isSimultaneous = true;\n          capitalFlows.push(santaToValue);\n\n          const gsiToOvfCurve = createFlow(\n            { x: entities.gsi.x + 50, y: entities.gsi.y - 5 },\n            { x: entities.ovf.x, y: entities.ovf.y - 5 },\n            \"capital-flow\",\n            true,\n          );\n          gsiToOvfCurve.isSimultaneous = true;\n          capitalFlows.push(gsiToOvfCurve);\n\n          return capitalFlows;\n        }\n\n        function animateFlowSequentially(flows, index = 0) {\n          function variableSpeed(t) {\n            if (t < 0.25) return 2 * t * t;\n            else if (t < 0.75) return 0.125 + (t - 0.25) * 1.5;\n            const r = (t - 0.75) \/ 0.25;\n            return 0.875 + 0.125 * (2 * r - r * r);\n          }\n\n          if (index >= flows.length) {\n            setTimeout(() => animateFlowSequentially(flows), 1000);\n            return;\n          }\n\n          const duration = index === 0 ? 1500 : 3000;\n\n          if (index === 1 && flows[index].isSimultaneous) {\n            const simultaneous = flows.slice(1, 4);\n            let completed = 0;\n\n            simultaneous.forEach((flow) => {\n              const pathLength = flow.coloredPath.length();\n              flow.coloredPath\n                .show()\n                .attr({\n                  \"stroke-dasharray\": pathLength,\n                  \"stroke-dashoffset\": pathLength,\n                });\n              flow.donut.center(flow.start.x, flow.start.y).show();\n\n              let startTime = null;\n              function step(timestamp) {\n                if (!startTime) startTime = timestamp;\n                const elapsed = timestamp - startTime;\n                const raw = Math.min(elapsed \/ duration, 1);\n                const prog = variableSpeed(raw);\n                const offset = (1 - prog) * pathLength;\n\n                flow.coloredPath.attr(\"stroke-dashoffset\", offset);\n\n                if (raw < 1) {\n                  const point = flow.coloredPath.pointAt(prog * pathLength);\n                  flow.donut.center(point.x, point.y);\n                  flow.animationHandle = requestAnimationFrame(step);\n                } else {\n                  flow.coloredPath.attr(\"stroke-dashoffset\", 0);\n                  const endPoint = flow.coloredPath.pointAt(pathLength);\n                  flow.donut.center(endPoint.x, endPoint.y);\n                  completed++;\n                  if (completed === simultaneous.length) {\n                    setTimeout(\n                      () => animateFlowSequentially(flows, index + 3),\n                      300,\n                    );\n                  }\n                }\n              }\n              flow.animationHandle = requestAnimationFrame(step);\n              animationHandles.push(flow);\n            });\n            return;\n          }\n\n          const currentFlow = flows[index];\n          const pathLength = currentFlow.coloredPath.length();\n\n          currentFlow.coloredPath\n            .show()\n            .attr({\n              \"stroke-dasharray\": pathLength,\n              \"stroke-dashoffset\": pathLength,\n            });\n          currentFlow.donut\n            .center(currentFlow.start.x, currentFlow.start.y)\n            .show();\n\n          let startTime = null;\n          function step(timestamp) {\n            if (!startTime) startTime = timestamp;\n            const elapsed = timestamp - startTime;\n            const raw = Math.min(elapsed \/ duration, 1);\n            const prog = variableSpeed(raw);\n            const offset = (1 - prog) * pathLength;\n\n            currentFlow.coloredPath.attr(\"stroke-dashoffset\", offset);\n\n            if (raw < 1) {\n              const point = currentFlow.coloredPath.pointAt(prog * pathLength);\n              currentFlow.donut.center(point.x, point.y);\n              currentFlow.animationHandle = requestAnimationFrame(step);\n            } else {\n              currentFlow.coloredPath.attr(\"stroke-dashoffset\", 0);\n              const endPoint = currentFlow.coloredPath.pointAt(pathLength);\n              currentFlow.donut.center(endPoint.x, endPoint.y);\n              setTimeout(\n                () => animateFlowSequentially(flows, index + 1),\n                index === 0 ? 150 : 300,\n              );\n            }\n          }\n          currentFlow.animationHandle = requestAnimationFrame(step);\n          animationHandles.push(currentFlow);\n        }\n\n        function createKnowledgeFlows() {\n          knowledgeFlows = [];\n\n          const topLevel = -120; \/\/ superior\n          const midLevel = -60; \/\/ cruce\n          const bottomLevel = -60; \/\/ inferior\n\n          const cobasToGsi = createFlow(\n            { x: entities.cobas.x + 50, y: entities.cobas.y + topLevel },\n            { x: entities.gsi.x - 50, y: entities.gsi.y + topLevel },\n            \"knowledge-flow\",\n            false,\n          );\n          knowledgeFlows.push(cobasToGsi);\n\n          const gsiToOvf = createFlow(\n            { x: entities.gsi.x + 40, y: entities.gsi.y + midLevel },\n            { x: entities.ovf.x - 40, y: entities.ovf.y + bottomLevel },\n            \"knowledge-flow\",\n            true,\n          );\n          knowledgeFlows.push(gsiToOvf);\n\n          const ovfToGsi = createFlow(\n            { x: entities.ovf.x - 50, y: entities.ovf.y + topLevel },\n            { x: entities.gsi.x + 50, y: entities.gsi.y + topLevel },\n            \"knowledge-flow\",\n            true,\n          );\n          knowledgeFlows.push(ovfToGsi);\n\n          const gsiToCobas = createFlow(\n            { x: entities.gsi.x - 40, y: entities.gsi.y + midLevel },\n            { x: entities.cobas.x + 40, y: entities.cobas.y + bottomLevel },\n            \"knowledge-flow\",\n            false,\n          );\n          knowledgeFlows.push(gsiToCobas);\n\n          return knowledgeFlows;\n        }\n\n        function animateKnowledgeFlow() {\n          stopAllAnimations();\n          if (knowledgeFlows.length === 0) return;\n\n          knowledgeFlows.forEach((flow) => {\n            flow.basePath\n              .show()\n              .stroke({ color: \"#e0e0e0\", width: 7 })\n              .attr(\"stroke-opacity\", 1);\n            flow.coloredPath\n              .show()\n              .stroke({ color: \"#8aa981\", width: 7 })\n              .attr({ \"stroke-dasharray\": \"0,10000\", \"stroke-dashoffset\": 0 });\n          });\n\n          const donutSize = 16;\n          const masterDonut = donutsCanvas\n            .circle(donutSize)\n            .stroke({ width: 7, color: \"#8aa981\", opacity: 0.95 })\n            .fill(\"#ffffff\")\n            .addClass(\"knowledge-donut\")\n            .center(knowledgeFlows[0].start.x, knowledgeFlows[0].start.y)\n            .show();\n\n          const duration = 3000;\n          const trailLength = 150;\n          let startTime = null;\n\n          function animate(timestamp) {\n            if (!startTime) startTime = timestamp;\n            const elapsed = (timestamp - startTime) % duration;\n            const progress = elapsed \/ duration;\n\n            const totalLength = knowledgeFlows.reduce(\n              (sum, f) => sum + f.distance,\n              0,\n            );\n            const currentPos = progress * totalLength;\n\n            let accumulated = 0,\n              currentSegment = 0,\n              segmentProgress = 0;\n            for (let i = 0; i < knowledgeFlows.length; i++) {\n              if (currentPos <= accumulated + knowledgeFlows[i].distance) {\n                currentSegment = i;\n                segmentProgress =\n                  (currentPos - accumulated) \/ knowledgeFlows[i].distance;\n                break;\n              }\n              accumulated += knowledgeFlows[i].distance;\n            }\n\n            const point = knowledgeFlows[currentSegment].coloredPath.pointAt(\n              segmentProgress * knowledgeFlows[currentSegment].distance,\n            );\n            masterDonut.center(point.x, point.y);\n\n            knowledgeFlows.forEach((flow, i) => {\n              const segmentStart = knowledgeFlows\n                .slice(0, i)\n                .reduce((s, f) => s + f.distance, 0);\n              const segmentEnd = segmentStart + flow.distance;\n              const visibleStart = Math.max(0, currentPos - trailLength);\n              const visibleEnd = currentPos + 1;\n\n              if (visibleEnd <= segmentStart || visibleStart >= segmentEnd) {\n                flow.coloredPath.attr(\"stroke-dasharray\", \"0,10000\");\n              } else {\n                const localStart = Math.max(0, visibleStart - segmentStart);\n                const localEnd = Math.min(\n                  flow.distance,\n                  visibleEnd - segmentStart,\n                );\n                const overshoot = 10;\n                const visibleLen = Math.max(\n                  0,\n                  localEnd - localStart + overshoot,\n                );\n                flow.coloredPath.attr({\n                  \"stroke-dasharray\": `${visibleLen},${flow.distance}`,\n                  \"stroke-dashoffset\": -localStart,\n                });\n              }\n            });\n\n            animationHandles.push({\n              animationHandle: requestAnimationFrame(animate),\n            });\n          }\n\n          animationHandles.push({\n            animationHandle: requestAnimationFrame(animate),\n          });\n        }\n\n        function createImpactFlows() {\n          impactFlows = [];\n\n          const cobasToSanta = createFlow(\n            { x: entities.cobas.x - 85, y: entities.cobas.y - 90 },\n            { x: entities.santaComba.x + 30, y: entities.santaComba.y - 30 },\n            \"impact-flow\",\n            false,\n          );\n          impactFlows.push(cobasToSanta);\n\n          const ovfToSanta = createFlow(\n            { x: entities.ovf.x + 85, y: entities.ovf.y - 85 },\n            { x: entities.santaComba.x + 120, y: entities.santaComba.y - 30 },\n            \"impact-flow\",\n            true,\n          );\n          impactFlows.push(ovfToSanta);\n\n          const gsiToSanta = createFlow(\n            { x: entities.gsi.x - 45, y: entities.gsi.y - 7 },\n            { x: entities.santaComba.x - 10, y: entities.santaComba.y + 35 },\n            \"impact-flow\",\n            false,\n          );\n          impactFlows.push(gsiToSanta);\n\n          const valueToSanta = createFlow(\n            { x: entities.valueSchool.x + 50, y: entities.valueSchool.y - 10 },\n            { x: entities.santaComba.x + 160, y: entities.santaComba.y + 40 },\n            \"impact-flow\",\n            true,\n          );\n          impactFlows.push(valueToSanta);\n\n          return impactFlows;\n        }\n\n        function animateImpactFlows() {\n          function variableSpeed(t) {\n            if (t < 0.25) return 2 * t * t;\n            else if (t < 0.75) return 0.125 + (t - 0.25) * 1.5;\n            const r = (t - 0.75) \/ 0.25;\n            return 0.875 + 0.125 * (2 * r - r * r);\n          }\n\n          if (impactFlows.length === 0) return;\n\n          let completed = 0;\n          const flowsToAnimate = impactFlows;\n          const baseDuration = 1500;\n          const arrivalTime = Date.now() + baseDuration;\n\n          const resetDonuts = () => {\n            flowsToAnimate.forEach((flow) => {\n              flow.donut.center(flow.start.x, flow.start.y);\n            });\n          };\n\n          resetDonuts();\n\n          flowsToAnimate.forEach((flow, index) => {\n            const delay = index * 100;\n\n            setTimeout(() => {\n              const pathLength = flow.coloredPath.length();\n              const adjustedDuration = Math.max(400, arrivalTime - Date.now()); \/\/ evita duraciones negativas\n\n              flow.coloredPath\n                .show()\n                .attr({\n                  \"stroke-dasharray\": pathLength,\n                  \"stroke-dashoffset\": pathLength,\n                });\n              flow.donut.center(flow.start.x, flow.start.y).show();\n\n              let startTime = null;\n\n              function step(timestamp) {\n                if (!startTime) startTime = timestamp;\n                const elapsed = timestamp - startTime;\n                const raw = Math.min(elapsed \/ adjustedDuration, 1);\n                const prog = variableSpeed(raw);\n                const offset = (1 - prog) * pathLength;\n\n                flow.coloredPath.attr(\"stroke-dashoffset\", offset);\n\n                if (raw < 1) {\n                  const point = flow.coloredPath.pointAt(prog * pathLength);\n                  flow.donut.center(point.x, point.y);\n                  flow.animationHandle = requestAnimationFrame(step);\n                } else {\n                  flow.coloredPath.attr(\"stroke-dashoffset\", 0);\n                  const endPoint = flow.coloredPath.pointAt(pathLength);\n                  flow.donut.center(endPoint.x, endPoint.y);\n                  completed++;\n\n                  if (completed === flowsToAnimate.length) {\n                    const santaComba = document.querySelector(\".santa-comba\");\n                    santaComba.classList.add(\"pulse\");\n                    santaCombaPulsing = true;\n\n                    \/\/ SIEMPRE: shockwave + \u201c+\u201d al FINAL de Impact\n                    createCrosses(\n                      entities.santaComba.x + 75,\n                      entities.santaComba.y - 50,\n                    );\n\n                    setTimeout(() => {\n                      if (santaCombaPulsing) {\n                        santaComba.classList.remove(\"pulse\");\n                        santaCombaPulsing = false;\n                      }\n                      resetDonuts();\n                      setTimeout(() => animateImpactFlows(), 50);\n                    }, 2000);\n                  }\n                }\n              }\n\n              flow.animationHandle = requestAnimationFrame(step);\n              animationHandles.push(flow);\n            }, delay);\n          });\n        }\n\n        function initialize() {\n          createCapitalFlows();\n          createKnowledgeFlows();\n          createImpactFlows();\n\n          activeFlows = {\n            capital: false,\n            knowledge: false,\n            impact: false,\n            all: false,\n          };\n          \/\/ Arranca en \"Impact\" para ver el efecto \u201c+\u201d de inmediato.\n          toggleFlow(\"all\");\n          updateButtons();\n          updateInfoPanel();\n        }\n\n        document\n          .getElementById(\"allBtn\")\n          .addEventListener(\"click\", () => toggleFlow(\"all\"));\n        document\n          .getElementById(\"capitalBtn\")\n          .addEventListener(\"click\", () => toggleFlow(\"capital\"));\n        document\n          .getElementById(\"knowledgeBtn\")\n          .addEventListener(\"click\", () => toggleFlow(\"knowledge\"));\n        document\n          .getElementById(\"impactBtn\")\n          .addEventListener(\"click\", () => toggleFlow(\"impact\"));\n\n        initialize();\n      });\n    <\/script>\n  <\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-744bcc0 e-con-full elementor-hidden-desktop e-flex e-con e-parent\" data-id=\"744bcc0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-372270d elementor-widget__width-inherit elementor-hidden-desktop elementor-widget elementor-widget-html\" data-id=\"372270d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<meta charset=\"UTF-8\">\n<meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/svg.js\/3.2.0\/svg.min.js\"><\/script>\n<style>\n    :root {\n        --primary-color: #869A78;\n        --secondary-color: #98BC43;\n        --accent-color: #E2F2CA;\n        --dark-color: #314841;\n        --highlight-color: #A2C827;\n        --office-color: #E6BAA6;\n        --credit-color: #A2C827;\n        --equity-color: #446b5e;\n        --background-light: #ffffff;\n        --text-color: #293229;\n        --neutral-light: #D9D9E6;\n        --neutral-medium: #8D8686;\n        --bullet-office: #E6BAA6;\n    }\n\n    * { box-sizing: border-box; margin: 0; padding: 0; }\n    body { font-family: 'Proxima Nova', Arial, sans-serif; color: var(--text-color); line-height: 1.6; background-color: #ffffff; }\n\n    .mobile-filter-container {\n        display: flex;\n        justify-content: center;\n        gap: 8px;\n        margin: 15px 0; flex-wrap: wrap; padding: 0 10px;\n    }\n\n    button.mobile-filter-slider {\n        height: 23px;\n        border-radius: 13px;\n        width: auto !important;\n        min-width: 70px !important;\n        font-size: 13px;\n       position: relative;\n        cursor: pointer;\n       background-color: #0E475C;\n        transition: all 0.3s ease;\n        display: flex;\n        align-items: center;\n        padding: 0px 0px 0px 24px;\n        box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n        border: 1px solid rgba(0,0,0,0.1);\n        color: #ffffff!important;\n    }\n    button.mobile-filter-slider::before {\n          position: absolute;\n        content: \"\";\n        height: 25px;\n        width: 25px;\n        left: 4px; \/* posici\u00f3n por defecto *\/\n        bottom: 3px;\n        background-color: white;\n        transition: all 0.3s ease;\n        border-radius: 50%;\n    }\n    button.mobile-filter-slider.active { background-color: var(--highlight-color)!important; }\n    button.mobile-filter-slider:hover { background-color: var(--highlight-color)!important; }\n    button.mobile-filter-slider.active::before { left: auto; right: 4px; }\n\n    .mobile-ecosystem-container {\n        display: flex; flex-direction: column; width:100%; margin: 0 auto; padding: 15px 0; background-color: #eeeeee;\n    }\n\n    .mobile-info-container {\n        display: flex; flex-direction: row; width: 100%;height: 130px; padding: 0 10px;\n        margin-bottom: 15px;\n    }\n\n    .mobile-info-panel {\n        position: relative; width: 100%; background: white; padding: 12px; font-size: 0.85rem;\n        min-height: auto; overflow-y: auto; opacity: 0.95; box-shadow: 0 0 0 rgba(0,0,0,0.15);\n        border-radius: 8px; border: 0 solid #e0e0e0;\n    }\n    .mobile-info-panel h2 {\n        margin: 0 0 10px 0; font-size: 16px; color: var(--dark-color); border-bottom: 2px solid var(--highlight-color); padding-bottom: 6px;\n    }\n    .mobile-flow-block { border-left: 2px solid; padding: 10px; margin: 10px 0; background: #f9f9f9; border-radius: 0 6px 6px 0; display: none; }\n    .mobile-flow-block.capital-block { border-color: #073b4c; }\n    .mobile-flow-block.knowledge-block { border-color: #8aa981; }\n    .mobile-flow-block.impact-block { border-color: #b1d140; }\n    .mobile-flow-block h3 { font-size: 14px; font-weight: bold; color: var(--dark-color); margin-bottom: 6px; }\n    .mobile-flow-block ul { padding-left: 1rem; list-style: disc; margin: 0; color: #111; font-size: 0.85rem; line-height: 1.4; }\n\n    .mobile-ecosystem-diagram {\n        background-color: #eeeeee; position: relative; width: 100%; height: 50vh; min-height: 350px;\n    }\n\n    .mobile-entity { position: absolute; width: 90px; height: 81px; z-index: 5 !important; transition: transform 0.3s ease; }\n    .mobile-entity svg { width: 100%; height: auto; z-index: 5 !important; stroke: none !important; }\n    .mobile-entity img {\n        position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\n        max-width: 70%; max-height: 70%; object-fit: contain; pointer-events: none; z-index: 20!important;\n    }\n\n    .mobile-santa-comba { top: 10%; left: 55%; transform: translateX(-50%); }\n    .mobile-santa-comba.pulse { animation: mobile-heartbeat 2s infinite; }\n    @keyframes mobile-heartbeat {\n        0% { transform: translateX(-50%) scale(1); }\n        25% { transform: translateX(-50%) scale(1.05); }\n        50% { transform: translateX(-50%) scale(1); }\n        75% { transform: translateX(-50%) scale(1.05); }\n        100% { transform: translateX(-50%) scale(1); }\n    }\n\n    .mobile-cobas { top: 55%; left: 22%; transform: translate(-50%, -50%); }\n    .mobile-gsi { top: 55%; left: 52%; transform: translate(-50%, -50%); }\n    .mobile-ovf { top: 55%; left: 80%; transform: translate(-50%, -50%); }\n    .mobile-value-school { top: 85%; left: 52%; transform: translate(-50%, -50%); }\n\n    .mobile-capital-flow { stroke: #073b4c; }\n    .mobile-knowledge-flow { stroke: #8aa981; }\n    .mobile-impact-flow { stroke: #b1d140; }\n\n    \/* Mobile-specific adjustments *\/\n    @media (max-width: 480px) {\n        .mobile-filter-container { gap: 6px; }\n\n        button.mobile-filter-slider::before { height: 15px; width: 15px; }\n\n        .mobile-entity { width: 80px; height: 72px; }\n\n        .mobile-info-panel { padding: 10px; font-size: 0.8rem; }\n        .mobile-info-panel h2 { font-size: 15px; }\n        .mobile-flow-block { padding: 8px; margin: 8px 0; }\n        .mobile-flow-block h3 { font-size: 13px; }\n        .mobile-flow-block ul { font-size: 0.8rem; }\n    }\n\n    @media (max-width: 360px) {\n\n        .mobile-entity { width: 70px; height: 63px; }\n        .mobile-ecosystem-diagram { height: 45vh; min-height: 300px; }\n    }\n    \n    \/* ===========================\n   TABLET VERSION (768px\u20131024px)\n   =========================== *\/\n@media (min-width: 768px) and (max-width: 1024px) {\n\n  .mobile-filter-container {\n    gap: 12px;\n    margin: 25px 0;\n    padding: 0 16px;\n  }\n\n  button.mobile-filter-slider {\n    height: 30px;\n    font-size: 18px;\n    min-width: 90px !important;\n    border-radius: 16px;\n    padding: 0 28px 0 36px;\n  }\n  button.mobile-filter-slider::before {\n    height: 20px;\n    width: 20px;\n    bottom: 4px;\n  }\n\n  .mobile-ecosystem-container {\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding: 25px 0 40px 0;\n    background-color: #eeeeee;\n  }\n\n  .mobile-info-container {\n    height: 150px;\n    margin-bottom: 25px;\n    justify-content: center;\n  }\n\n  .mobile-info-panel {\n    width: 85%;\n    max-width: 640px;\n    padding: 18px;\n    font-size: 1rem;\n    border-radius: 10px;\n    box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n  }\n\n  .mobile-info-panel h2 {\n    font-size: 18px;\n    margin-bottom: 12px;\n  }\n  .mobile-flow-block {\n    padding: 12px;\n    margin: 12px 0;\n  }\n  .mobile-flow-block h3 {\n    font-size: 15px;\n  }\n  .mobile-flow-block ul {\n    font-size: 0.95rem;\n    line-height: 1.45;\n  }\n\n  .mobile-ecosystem-diagram {\n    width: 95%;\n    max-width: 720px;\n    height: 60vh;\n    min-height: 420px;\n    position: relative;\n    margin: 0 auto;\n  }\n\n  \/* Tama\u00f1o y posiciones de entidades *\/\n  .mobile-entity {\n    width: 120px;\n    height: 108px;\n  }\n\n  .mobile-santa-comba { top: 5%; left: 52%; transform: translateX(-50%); }\n  .mobile-cobas        { top: 50%; left: 24%; transform: translate(-50%, -50%); }\n  .mobile-gsi          { top: 50%; left: 52%; transform: translate(-50%, -50%); }\n  .mobile-ovf          { top: 50%; left: 80%; transform: translate(-50%, -50%); }\n  .mobile-value-school { top: 83%; left: 52%; transform: translate(-50%, -50%); }\n\n  \/* Ajustes visuales *\/\n  .mobile-entity img {\n    max-width: 72%;\n    max-height: 72%;\n  }\n\n  .mobile-ecosystem-diagram svg {\n    width: 100% !important;\n    height: 100% !important;\n    overflow: visible !important;\n  }\n\n  \/* Donuts y flujos *\/\n  .mobile-capital-flow { stroke-width: 6; }\n  .mobile-knowledge-flow { stroke-width: 6; }\n  .mobile-impact-flow { stroke-width: 6; }\n}\n\n<\/style>\n\n<div class=\"mobile-filter-container\">\n    <button class=\"mobile-filter-slider active\" id=\"mobileAllBtn\">\n        <span class=\"mobile-filter-label\">All<\/span>\n    <\/button>\n    <button class=\"mobile-filter-slider\" id=\"mobileCapitalBtn\">\n        <span class=\"mobile-filter-label\">Capital<\/span>\n    <\/button>\n    <button class=\"mobile-filter-slider\" id=\"mobileKnowledgeBtn\">\n        <span class=\"mobile-filter-label\">Knowledge<\/span>\n    <\/button>\n    <button class=\"mobile-filter-slider\" id=\"mobileImpactBtn\">\n        <span class=\"mobile-filter-label\">Impact<\/span>\n    <\/button>\n<\/div>\n\n<div class=\"mobile-ecosystem-container\">\n    <div class=\"mobile-info-container\">\n        <div class=\"mobile-info-panel\">\n            <h2>Selected: <span id=\"mobileSelectedText\"><\/span><\/h2>\n\n            <div class=\"mobile-flow-block capital-block\">\n                <h3>Capital<\/h3>\n                <ul>\n                    <li>Capital circulates across the group to fuel growth and expand impact.<\/li>\n                <\/ul>\n            <\/div>\n\n            <div class=\"mobile-flow-block knowledge-block\">\n                <h3>Knowledge and know-how<\/h3>\n                <ul>\n                    <li>Expertise and insights flow across entities to strengthen one another.<\/li>\n                <\/ul>\n            <\/div>\n\n            <div class=\"mobile-flow-block impact-block\">\n                <h3>Knowledge sharing with society<\/h3>\n                <ul>\n                    <li>Each entity shares knowledge to foster financial innovation and social well-being.<\/li>\n                <\/ul>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"mobile-ecosystem-diagram\" id=\"mobileDiagram\">\n        <div class=\"mobile-entity mobile-santa-comba\">\n            <a href=\"https:\/\/santacombagestion.com\/\" target=\"_blank\">\n                <svg fill=\"none\" viewBox=\"0 0 180 162\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                          fill=\"#ffffff\" stroke=\"#073b4c\" stroke-width=\"0\"\/>\n                <\/svg><\/a>\n            <img decoding=\"async\" alt=\"Santa Comba\" src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/santaCombaLogo01-1.png\"\/>\n        <\/div>\n\n        <div class=\"mobile-entity mobile-cobas\">\n            <a href=\"https:\/\/www.cobasam.com\/\" target=\"_blank\">\n                <svg fill=\"none\" viewBox=\"0 0 180 162\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                          fill=\"#ffffff\" stroke=\"#073b4c\" stroke-width=\"0\"\/>\n                <\/svg><\/a>\n            <img decoding=\"async\" alt=\"Cobas AM\" src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/cobas01.png\"\/>\n        <\/div>\n\n        <div class=\"mobile-entity mobile-gsi\">\n            <a href=\"https:\/\/globalsocialimpact.es\/\" target=\"_blank\">\n                <svg fill=\"none\" viewBox=\"0 0 180 162\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                          fill=\"#ffffff\" stroke-color=#073b4c\" stroke-width=\"0\"\/>\n                <\/svg><\/a>\n            <img decoding=\"async\" alt=\"GSI\" src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/logo03.png\"\/>\n        <\/div>\n\n        <div class=\"mobile-entity mobile-ovf\">\n            <a href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n                <svg fill=\"none\" viewBox=\"0 0 180 162\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                          fill=\"#ffffff\" stroke-color=#073b4c\" stroke-width=\"0\"\/>\n                <\/svg><\/a>\n            <img decoding=\"async\" alt=\"Open Value Foundation\" src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/openValue2.png\"\/>\n        <\/div>\n\n        <div class=\"mobile-entity mobile-value-school\">\n            <a href=\"https:\/\/valueschool.es\/\" target=\"_blank\">\n                <svg fill=\"none\" viewBox=\"0 0 180 162\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M122.826 0.581923C131.4 0.581925 139.323 5.1563 143.61 12.5819L176.336 69.2642C180.623 76.6898 180.623 85.8386 176.336 93.2642L143.61 149.946C139.323 157.372 131.4 161.946 122.826 161.946L57.3748 161.946C48.8004 161.946 40.8774 157.372 36.5902 149.946L3.86469 93.2642C-0.422493 85.8386 -0.422498 76.6898 3.86469 69.2642L36.5902 12.5819C40.8774 5.1563 48.8004 0.581922 57.3748 0.581924L122.826 0.581923Z\"\n                          fill=\"#ffffff\" stroke-color=\"#073b4c\" stroke-width=\"0\"\/>\n                <\/svg><\/a>\n            <img decoding=\"async\" alt=\"Value School\" src=\"https:\/\/globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/valueSchoolLogo.png\"\/>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    document.addEventListener('DOMContentLoaded', function () {\n        const SVG = window.SVG;\n        if (!SVG) return;\n\n        const diagram = document.getElementById('mobileDiagram');\n        if (!diagram) return;\n\n        \/\/ Estilos para capas\n        const style = document.createElement('style');\n        style.textContent = `\n      .mobile-lines-layer  { position:absolute; top:0; left:0; z-index: 1  !important; pointer-events:none; }\n      .mobile-donuts-layer { position:absolute; top:0; left:0; z-index: 10 !important; pointer-events:none; }\n      .mobile-effects-layer{ position:absolute; top:0; left:0; z-index: 30 !important; pointer-events:none; }\n    `;\n        document.head.appendChild(style);\n\n        \/\/ Tres canvas SVG: l\u00edneas (abajo), donuts (medio), efectos\/plus (arriba)\n        const linesCanvas   = SVG().addTo('#mobileDiagram').size('100%', '100%').addClass('mobile-lines-layer');\n        const donutsCanvas  = SVG().addTo('#mobileDiagram').size('100%', '100%').addClass('mobile-donuts-layer');\n        const effectsCanvas = SVG().addTo('#mobileDiagram').size('100%', '100%').addClass('mobile-effects-layer');\n\n        \/\/ Coordenadas adaptadas para m\u00f3vil\n        const diagramWidth = diagram.offsetWidth;\n        const diagramHeight = diagram.offsetHeight;\n\n        const entities = {\n            santaComba: {x: diagramWidth * 0.5, y: diagramHeight * 0.15},\n            cobas: {x: diagramWidth * 0.2, y: diagramHeight * 0.6},\n            gsi: {x: diagramWidth * 0.5, y: diagramHeight * 0.6},\n            ovf: {x: diagramWidth * 0.8, y: diagramHeight * 0.6},\n            valueSchool: {x: diagramWidth * 0.5, y: diagramHeight * 0.85}\n        };\n\n        let capitalFlows = [];\n        let knowledgeFlows = [];\n        let impactFlows = [];\n        let activeFlows = { capital: false, knowledge: false, impact: false, all: false };\n        let animationHandles = [];\n        let santaCombaPulsing = false;\n        let isAnimating = false;\n\n        function createFlow(start, end, className, curveLeft) {\n            const dx = end.x - start.x;\n            const dy = end.y - start.y;\n            const distance = Math.sqrt(dx * dx + dy * dy);\n            const radius = distance \/ 1.755;\n            const sweepFlag = curveLeft ? 0 : 1;\n            const pathString = `M${start.x},${start.y} A${radius},${radius} 0 0,${sweepFlag} ${end.x},${end.y}`;\n\n            const color = className === 'mobile-capital-flow' ? '#073b4c' :\n                className === 'mobile-knowledge-flow' ? '#8aa981' : '#b1d140';\n\n            const basePath = linesCanvas.path(pathString)\n                .stroke({width: 5, color: '#cccccc'})\n                .fill('none')\n                .addClass('mobile-flow-line mobile-flow-line-base')\n                .show();\n\n            const coloredPath = linesCanvas.path(pathString)\n                .stroke({ width: 5, color, dasharray: distance, dashoffset: distance })\n                .fill('none')\n                .addClass('mobile-flow-line mobile-flow-line-colored')\n                .addClass(className)\n                .hide();\n\n            const donut = donutsCanvas.circle(8)\n                .stroke({width: 5, color})\n                .fill('#ffffff')\n                .addClass('mobile-flow-line')\n                .center(start.x, start.y)\n                .hide();\n\n            return { basePath, coloredPath, donut, pathString, distance, className, start: {x:start.x,y:start.y}, end: {x:end.x,y:end.y} };\n        }\n\n        \/\/ Efecto shockwave + cruces \"+\" (optimizado para m\u00f3vil)\n        const createCrosses = (x, y) => {\n            const svg = effectsCanvas.node;\n            const particleCount = 40; \/\/ Reducido para mejor rendimiento en m\u00f3vil\n            const colors = ['#A2C827', '#8BB020', '#74981A', '#5D8014', '#0d475c'];\n\n            \/\/ Anillo\n            const ring = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'circle');\n            ring.setAttribute('cx', x.toString());\n            ring.setAttribute('cy', y.toString());\n            ring.setAttribute('r', '0');\n            ring.setAttribute('fill', 'none');\n            ring.setAttribute('stroke', '#A2C827');\n            ring.setAttribute('stroke-width', '2');\n            ring.setAttribute('opacity', '1');\n            svg.appendChild(ring);\n\n            let ringRadius = 0;\n            const maxRingRadius = 120; \/\/ Reducido para m\u00f3vil\n            const animateRing = () => {\n                if (ringRadius < maxRingRadius) {\n                    ringRadius += 3;\n                    const opacity = Math.max(0, 1 - (ringRadius \/ maxRingRadius));\n                    const strokeWidth = 2 * opacity;\n                    ring.setAttribute('r', ringRadius.toString());\n                    ring.setAttribute('opacity', opacity.toString());\n                    ring.setAttribute('stroke-width', strokeWidth.toString());\n                    requestAnimationFrame(animateRing);\n                } else {\n                    ring.remove();\n                }\n            };\n            requestAnimationFrame(animateRing);\n\n            \/\/ Part\u00edculas \"+\"\n            for (let i = 0; i < particleCount; i++) {\n                const angle = Math.random() * Math.PI * 2;\n                const startDistance = Math.random() * 30 + 10;\n                const speed = Math.random() * 3 + 1.5;\n                const maxDistance = Math.random() * 150 + 120;\n                const size = Math.random() * 8 + 4;\n\n                const g = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'g');\n                const startX = x + Math.cos(angle) * startDistance;\n                const startY = y + Math.sin(angle) * startDistance;\n\n                const horizontal = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'line');\n                const vertical   = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'line');\n\n                horizontal.setAttribute('x1', (-size\/2).toString());\n                horizontal.setAttribute('y1', '0');\n                horizontal.setAttribute('x2', (size\/2).toString());\n                horizontal.setAttribute('y2', '0');\n                horizontal.setAttribute('stroke', colors[i % colors.length]);\n                horizontal.setAttribute('stroke-width', '2');\n                horizontal.setAttribute('stroke-linecap', 'round');\n\n                vertical.setAttribute('x1', '0');\n                vertical.setAttribute('y1', (-size\/2).toString());\n                vertical.setAttribute('x2', '0');\n                vertical.setAttribute('y2', (size\/2).toString());\n                vertical.setAttribute('stroke', colors[i % colors.length]);\n                vertical.setAttribute('stroke-width', '2');\n                vertical.setAttribute('stroke-linecap', 'round');\n\n                g.appendChild(horizontal);\n                g.appendChild(vertical);\n                g.setAttribute('transform', `translate(${startX}, ${startY})`);\n                g.setAttribute('opacity', '0');\n                svg.appendChild(g);\n\n                let currentDistance = startDistance;\n                let opacity = 0;\n                let rotation = 0;\n\n                const animateParticle = () => {\n                    if (currentDistance < maxDistance && opacity >= 0) {\n                        if (ringRadius > startDistance - 10) opacity = Math.min(1, opacity + 0.1);\n\n                        currentDistance += speed;\n                        rotation += 6;\n\n                        const newX = x + Math.cos(angle) * currentDistance;\n                        const newY = y + Math.sin(angle) * currentDistance;\n                        const fadeOpacity = opacity * Math.max(0, 1 - ((currentDistance - startDistance) \/ (maxDistance - startDistance)));\n\n                        g.setAttribute('transform', `translate(${newX}, ${newY}) rotate(${rotation})`);\n                        g.setAttribute('opacity', fadeOpacity.toString());\n\n                        requestAnimationFrame(animateParticle);\n                    } else {\n                        g.remove();\n                    }\n                };\n                requestAnimationFrame(animateParticle);\n            }\n        };\n\n        function stopAllAnimations() {\n            animationHandles.forEach(item => {\n                if (item.animationHandle) cancelAnimationFrame(item.animationHandle);\n            });\n            animationHandles = [];\n\n            [...capitalFlows, ...knowledgeFlows, ...impactFlows].forEach(flow => {\n                if (flow.animationHandle) cancelAnimationFrame(flow.animationHandle);\n            });\n\n            if (santaCombaPulsing) {\n                document.querySelector('.mobile-santa-comba').classList.remove('pulse');\n                santaCombaPulsing = false;\n            }\n\n            \/\/ Limpieza de restos (si hubiese)\n            linesCanvas.find('g').forEach(group => {\n                if (group.children().length === 2) group.remove();\n            });\n        }\n\n        function clearAllFlows() {\n            stopAllAnimations();\n            linesCanvas.clear();\n            donutsCanvas.clear();\n            effectsCanvas.clear();\n            capitalFlows = [];\n            knowledgeFlows = [];\n            impactFlows = [];\n        }\n\n        function updateButtons() {\n            document.getElementById('mobileAllBtn').classList.toggle('active', activeFlows.all);\n            document.getElementById('mobileCapitalBtn').classList.toggle('active', activeFlows.capital);\n            document.getElementById('mobileKnowledgeBtn').classList.toggle('active', activeFlows.knowledge);\n            document.getElementById('mobileImpactBtn').classList.toggle('active', activeFlows.impact);\n        }\n\n        function updateInfoPanel() {\n            const selectedTextEl = document.getElementById('mobileSelectedText');\n            const selected = [];\n            if (activeFlows.capital) selected.push('Capital');\n            if (activeFlows.knowledge) selected.push('Knowledge');\n            if (activeFlows.impact) selected.push('Impact');\n\n            if (selected.length === 0) {\n                selectedTextEl.innerHTML = '<span style=\"color: #999;\">None<\/span>';\n            } else {\n                selectedTextEl.innerHTML = selected\n                    .map(label => `<span style=\"color: var(--text-color);\">${label}<\/span>`)\n                    .join(`<span style=\"color: #98BC43;\"> + <\/span>`);\n            }\n\n            document.querySelector('.mobile-flow-block.capital-block').style.display   = activeFlows.capital   ? 'block' : 'none';\n            document.querySelector('.mobile-flow-block.knowledge-block').style.display = activeFlows.knowledge ? 'block' : 'none';\n            document.querySelector('.mobile-flow-block.impact-block').style.display    = activeFlows.impact    ? 'block' : 'none';\n        }\n\n     function toggleFlow(flowType) {\n    if (isAnimating) return;\n\n    if (flowType === 'all') {\n        const newState = !activeFlows.all;\n        activeFlows = { capital: newState, knowledge: newState, impact: newState, all: newState };\n    } else {\n        activeFlows[flowType] = !activeFlows[flowType];\n        activeFlows.all = activeFlows.capital && activeFlows.knowledge && activeFlows.impact;\n    }\n\n    clearAllFlows();\n\n    if (activeFlows.capital) {\n        createCapitalFlows();\n        setTimeout(() => animateFlowSequentially(capitalFlows), 50);\n    }\n    if (activeFlows.knowledge) {\n        createKnowledgeFlows();\n        animateKnowledgeFlow();\n    }\n    if (activeFlows.impact) {\n        createImpactFlows();\n        animateImpactFlows();\n    }\n\n    updateButtons();\n    updateInfoPanel();\n}\n\n\/\/ \u2705 un solo listener por bot\u00f3n, sirve para desktop y mobile\n['all', 'capital', 'knowledge', 'impact'].forEach(type => {\n    document.getElementById(`mobile${type.charAt(0).toUpperCase() + type.slice(1)}Btn`)\n        .addEventListener('click', () => toggleFlow(type));\n});\n\n\n        function createCapitalFlows() {\n            capitalFlows = [];\n\n            const cobasToSanta = createFlow(\n                {x: entities.cobas.x, y: entities.cobas.y - 60},\n                {x: entities.santaComba.x, y: entities.santaComba.y + -20},\n                'mobile-capital-flow', false\n            );\n            capitalFlows.push(cobasToSanta);\n\n            const santaToOvf = createFlow(\n                {x: entities.santaComba.x + 40 , y: entities.santaComba.y -20},\n                {x: entities.ovf.x, y: entities.ovf.y - 60},\n                'mobile-capital-flow', false\n            );\n            santaToOvf.isSimultaneous = true;\n            capitalFlows.push(santaToOvf);\n\n            const santaToGsi = createFlow(\n                {x: entities.santaComba.x + 45, y: entities.santaComba.y + 30},\n                {x: entities.gsi.x - 30, y: entities.gsi.y - 40},\n                'mobile-capital-flow', true\n            );\n            santaToGsi.isSimultaneous = true;\n            capitalFlows.push(santaToGsi);\n\n            const santaToValue = createFlow(\n                {x: entities.santaComba.x + 45, y: entities.santaComba.y + 45},\n                {x: entities.valueSchool.x + 25, y: entities.valueSchool.y - 40},\n                'mobile-capital-flow', false\n            );\n            santaToValue.isSimultaneous = true;\n            capitalFlows.push(santaToValue);\n\n            const gsiToOvfCurve = createFlow(\n                {x: entities.gsi.x + 20, y: entities.gsi.y - 5},\n                {x: entities.ovf.x , y: entities.ovf.y - 5},\n                'mobile-capital-flow', true\n            );\n            gsiToOvfCurve.isSimultaneous = true;\n            capitalFlows.push(gsiToOvfCurve);\n\n            return capitalFlows;\n        }\n\n        function animateFlowSequentially(flows, index = 0) {\n            function variableSpeed(t) {\n                if (t < 0.25) return 2 * t * t;\n                else if (t < 0.75) return 0.125 + (t - 0.25) * 1.5;\n                const r = (t - 0.75) \/ 0.25; return 0.875 + 0.125 * (2 * r - r * r);\n            }\n\n            if (index >= flows.length) {\n                setTimeout(() => animateFlowSequentially(flows), 800);\n                return;\n            }\n\n            const duration = index === 0 ? 1200 : 2500;\n\n            if (index === 1 && flows[index].isSimultaneous) {\n                const simultaneous = flows.slice(1, 4);\n                let completed = 0;\n\n                simultaneous.forEach((flow) => {\n                    const pathLength = flow.coloredPath.length();\n                    flow.coloredPath.show().attr({ 'stroke-dasharray': pathLength, 'stroke-dashoffset': pathLength });\n                    flow.donut.center(flow.start.x, flow.start.y).show();\n\n                    let startTime = null;\n                    function step(timestamp) {\n                        if (!startTime) startTime = timestamp;\n                        const elapsed = timestamp - startTime;\n                        const raw = Math.min(elapsed \/ duration, 1);\n                        const prog = variableSpeed(raw);\n                        const offset = (1 - prog) * pathLength;\n\n                        flow.coloredPath.attr('stroke-dashoffset', offset);\n\n                        if (raw < 1) {\n                            const point = flow.coloredPath.pointAt(prog * pathLength);\n                            flow.donut.center(point.x, point.y);\n                            flow.animationHandle = requestAnimationFrame(step);\n                        } else {\n                            flow.coloredPath.attr('stroke-dashoffset', 0);\n                            const endPoint = flow.coloredPath.pointAt(pathLength);\n                            flow.donut.center(endPoint.x, endPoint.y);\n                            completed++;\n                            if (completed === simultaneous.length) {\n                                setTimeout(() => animateFlowSequentially(flows, index + 3), 200);\n                            }\n                        }\n                    }\n                    flow.animationHandle = requestAnimationFrame(step);\n                    animationHandles.push(flow);\n                });\n                return;\n            }\n\n            const currentFlow = flows[index];\n            const pathLength = currentFlow.coloredPath.length();\n\n            currentFlow.coloredPath.show().attr({ 'stroke-dasharray': pathLength, 'stroke-dashoffset': pathLength });\n            currentFlow.donut.center(currentFlow.start.x, currentFlow.start.y).show();\n\n            let startTime = null;\n            function step(timestamp) {\n                if (!startTime) startTime = timestamp;\n                const elapsed = timestamp - startTime;\n                const raw = Math.min(elapsed \/ duration, 1);\n                const prog = variableSpeed(raw);\n                const offset = (1 - prog) * pathLength;\n\n                currentFlow.coloredPath.attr('stroke-dashoffset', offset);\n\n                if (raw < 1) {\n                    const point = currentFlow.coloredPath.pointAt(prog * pathLength);\n                    currentFlow.donut.center(point.x, point.y);\n                    currentFlow.animationHandle = requestAnimationFrame(step);\n                } else {\n                    currentFlow.coloredPath.attr('stroke-dashoffset', 0);\n                    const endPoint = currentFlow.coloredPath.pointAt(pathLength);\n                    currentFlow.donut.center(endPoint.x, endPoint.y);\n                    setTimeout(() => animateFlowSequentially(flows, index + 1), index === 0 ? 100 : 200);\n                }\n            }\n            currentFlow.animationHandle = requestAnimationFrame(step);\n            animationHandles.push(currentFlow);\n        }\n\n        function createKnowledgeFlows() {\n            knowledgeFlows = [];\n\n            const topLevel = -40;\n            const midLevel = -20;\n            const bottomLevel = -20;\n\n            const cobasToGsi = createFlow(\n                {x: entities.cobas.x + 20, y: entities.cobas.y + topLevel},\n                {x: entities.gsi.x - 20, y: entities.gsi.y + topLevel},\n                'mobile-knowledge-flow', false\n            );\n            knowledgeFlows.push(cobasToGsi);\n\n            const gsiToOvf = createFlow(\n                {x: entities.gsi.x + 15, y: entities.gsi.y + midLevel},\n                {x: entities.ovf.x - 15, y: entities.ovf.y + bottomLevel},\n                'mobile-knowledge-flow', true\n            );\n            knowledgeFlows.push(gsiToOvf);\n\n            const ovfToGsi = createFlow(\n                {x: entities.ovf.x - 20, y: entities.ovf.y + topLevel},\n                {x: entities.gsi.x + 20, y: entities.gsi.y + topLevel},\n                'mobile-knowledge-flow', true\n            );\n            knowledgeFlows.push(ovfToGsi);\n\n            const gsiToCobas = createFlow(\n                {x: entities.gsi.x - 15, y: entities.gsi.y + midLevel},\n                {x: entities.cobas.x + 15, y: entities.cobas.y + bottomLevel},\n                'mobile-knowledge-flow', false\n            );\n            knowledgeFlows.push(gsiToCobas);\n\n            return knowledgeFlows;\n        }\n\n        function animateKnowledgeFlow() {\n            stopAllAnimations();\n            if (knowledgeFlows.length === 0) return;\n\n            knowledgeFlows.forEach(flow => {\n                flow.basePath.show().stroke({ color: '#e0e0e0', width: 5 }).attr('stroke-opacity', 1);\n                flow.coloredPath.show().stroke({ color: '#8aa981', width: 5 })\n                    .attr({ 'stroke-dasharray': '0,10000', 'stroke-dashoffset': 0 });\n            });\n\n            const donutSize = 14;\n            const masterDonut = donutsCanvas.circle(donutSize)\n                .stroke({ width: 5, color: '#8aa981', opacity: 0.95 })\n                .fill('#ffffff')\n                .addClass('mobile-knowledge-donut')\n                .center(knowledgeFlows[0].start.x, knowledgeFlows[0].start.y)\n                .show();\n\n            const duration = 2500;\n            const trailLength = 100;\n            let startTime = null;\n\n            function animate(timestamp) {\n                if (!startTime) startTime = timestamp;\n                const elapsed = (timestamp - startTime) % duration;\n                const progress = elapsed \/ duration;\n\n                const totalLength = knowledgeFlows.reduce((sum, f) => sum + f.distance, 0);\n                const currentPos = progress * totalLength;\n\n                let accumulated = 0, currentSegment = 0, segmentProgress = 0;\n                for (let i = 0; i < knowledgeFlows.length; i++) {\n                    if (currentPos <= accumulated + knowledgeFlows[i].distance) {\n                        currentSegment = i;\n                        segmentProgress = (currentPos - accumulated) \/ knowledgeFlows[i].distance;\n                        break;\n                    }\n                    accumulated += knowledgeFlows[i].distance;\n                }\n\n                const point = knowledgeFlows[currentSegment].coloredPath.pointAt(segmentProgress * knowledgeFlows[currentSegment].distance);\n                masterDonut.center(point.x, point.y);\n\n                knowledgeFlows.forEach((flow, i) => {\n                    const segmentStart = knowledgeFlows.slice(0, i).reduce((s, f) => s + f.distance, 0);\n                    const segmentEnd = segmentStart + flow.distance;\n                    const visibleStart = Math.max(0, currentPos - trailLength);\n                    const visibleEnd = currentPos + 1;\n\n                    if (visibleEnd <= segmentStart || visibleStart >= segmentEnd) {\n                        flow.coloredPath.attr('stroke-dasharray', '0,10000');\n                    } else {\n                        const localStart = Math.max(0, visibleStart - segmentStart);\n                        const localEnd   = Math.min(flow.distance, visibleEnd - segmentStart);\n                        const overshoot  = 8;\n                        const visibleLen = Math.max(0, localEnd - localStart + overshoot);\n                        flow.coloredPath.attr({\n                            'stroke-dasharray': `${visibleLen},${flow.distance}`,\n                            'stroke-dashoffset': -localStart\n                        });\n                    }\n                });\n\n                animationHandles.push({ animationHandle: requestAnimationFrame(animate) });\n            }\n\n            animationHandles.push({ animationHandle: requestAnimationFrame(animate) });\n        }\n\n        function createImpactFlows() {\n            impactFlows = [];\n\n            const cobasToSanta = createFlow(\n                {x: entities.cobas.x - 30, y: entities.cobas.y - 30},\n                {x: entities.santaComba.x - 10, y: entities.santaComba.y - 5},\n                'mobile-impact-flow', false\n            );\n            impactFlows.push(cobasToSanta);\n\n            const ovfToSanta = createFlow(\n                {x: entities.ovf.x + 30, y: entities.ovf.y - 30},\n                {x: entities.santaComba.x + 45, y: entities.santaComba.y - 10},\n                'mobile-impact-flow', true\n            );\n            impactFlows.push(ovfToSanta);\n\n            const gsiToSanta = createFlow(\n                {x: entities.gsi.x - 25, y: entities.gsi.y - 7},\n                {x: entities.santaComba.x - 15, y: entities.santaComba.y + 15},\n                'mobile-impact-flow', false\n            );\n            impactFlows.push(gsiToSanta);\n\n            const valueToSanta = createFlow(\n                {x: entities.valueSchool.x + 15, y: entities.valueSchool.y - 10},\n                {x: entities.santaComba.x + 60, y: entities.santaComba.y + 15},\n                'mobile-impact-flow', true\n            );\n            impactFlows.push(valueToSanta);\n\n            return impactFlows;\n        }\n\n        function animateImpactFlows() {\n            function variableSpeed(t) {\n                if (t < 0.25) return 2 * t * t;\n                else if (t < 0.75) return 0.125 + (t - 0.25) * 1.5;\n                const r = (t - 0.75) \/ 0.25; return 0.875 + 0.125 * (2 * r - r * r);\n            }\n\n            if (impactFlows.length === 0) return;\n\n            let completed = 0;\n            const flowsToAnimate = impactFlows;\n            const baseDuration = 1200;\n            const arrivalTime = Date.now() + baseDuration;\n\n            const resetDonuts = () => {\n                flowsToAnimate.forEach(flow => {\n                    flow.donut.center(flow.start.x, flow.start.y);\n                });\n            };\n\n            resetDonuts();\n\n            flowsToAnimate.forEach((flow, index) => {\n                const delay = index * 80;\n\n                setTimeout(() => {\n                    const pathLength = flow.coloredPath.length();\n                    const adjustedDuration = Math.max(300, arrivalTime - Date.now());\n\n                    flow.coloredPath.show().attr({ 'stroke-dasharray': pathLength, 'stroke-dashoffset': pathLength });\n                    flow.donut.center(flow.start.x, flow.start.y).show();\n\n                    let startTime = null;\n\n                    function step(timestamp) {\n                        if (!startTime) startTime = timestamp;\n                        const elapsed = timestamp - startTime;\n                        const raw = Math.min(elapsed \/ adjustedDuration, 1);\n                        const prog = variableSpeed(raw);\n                        const offset = (1 - prog) * pathLength;\n\n                        flow.coloredPath.attr('stroke-dashoffset', offset);\n\n                        if (raw < 1) {\n                            const point = flow.coloredPath.pointAt(prog * pathLength);\n                            flow.donut.center(point.x, point.y);\n                            flow.animationHandle = requestAnimationFrame(step);\n                        } else {\n                            flow.coloredPath.attr('stroke-dashoffset', 0);\n                            const endPoint = flow.coloredPath.pointAt(pathLength);\n                            flow.donut.center(endPoint.x, endPoint.y);\n                            completed++;\n\n                            if (completed === flowsToAnimate.length) {\n                                const santaComba = document.querySelector('.mobile-santa-comba');\n                                santaComba.classList.add('pulse');\n                                santaCombaPulsing = true;\n\n                                createCrosses(entities.santaComba.x + 25, entities.santaComba.y - 15);\n\n                                setTimeout(() => {\n                                    if (santaCombaPulsing) {\n                                        santaComba.classList.remove('pulse');\n                                        santaCombaPulsing = false;\n                                    }\n                                    resetDonuts();\n                                    setTimeout(() => animateImpactFlows(), 50);\n                                }, 1500);\n                            }\n                        }\n                    }\n\n                    flow.animationHandle = requestAnimationFrame(step);\n                    animationHandles.push(flow);\n                }, delay);\n            });\n        }\n\n        function initialize() {\n            createCapitalFlows();\n            createKnowledgeFlows();\n            createImpactFlows();\n\n            activeFlows = { capital: false, knowledge: false, impact: false, all: false };\n            toggleFlow('all');\n            updateButtons();\n            updateInfoPanel();\n        }\n\n        \/\/ Event listeners con soporte t\u00e1ctil\n        document.getElementById('mobileAllBtn').addEventListener('click', () => toggleFlow('all'));\n        document.getElementById('mobileCapitalBtn').addEventListener('click', () => toggleFlow('capital'));\n        document.getElementById('mobileKnowledgeBtn').addEventListener('click', () => toggleFlow('knowledge'));\n        document.getElementById('mobileImpactBtn').addEventListener('click', () => toggleFlow('impact'));\n\n        \/\/ Tambi\u00e9n agregar eventos t\u00e1ctiles para mejor experiencia m\u00f3vil\n        document.getElementById('mobileAllBtn').addEventListener('touchstart', (e) => {\n            e.preventDefault();\n            toggleFlow('all');\n        }, {passive: false});\n\n        document.getElementById('mobileCapitalBtn').addEventListener('touchstart', (e) => {\n            e.preventDefault();\n            toggleFlow('capital');\n        }, {passive: false});\n\n        document.getElementById('mobileKnowledgeBtn').addEventListener('touchstart', (e) => {\n            e.preventDefault();\n            toggleFlow('knowledge');\n        }, {passive: false});\n\n        document.getElementById('mobileImpactBtn').addEventListener('touchstart', (e) => {\n            e.preventDefault();\n            toggleFlow('impact');\n        }, {passive: false});\n\n        \/\/ Recalcular posiciones al redimensionar\n        window.addEventListener('resize', function() {\n            const diagramWidth = diagram.offsetWidth;\n            const diagramHeight = diagram.offsetHeight;\n\n            entities.santaComba = {x: diagramWidth * 0.5, y: diagramHeight * 0.15};\n            entities.cobas = {x: diagramWidth * 0.2, y: diagramHeight * 0.6};\n            entities.gsi = {x: diagramWidth * 0.5, y: diagramHeight * 0.6};\n            entities.ovf = {x: diagramWidth * 0.8, y: diagramHeight * 0.6};\n            entities.valueSchool = {x: diagramWidth * 0.5, y: diagramHeight * 0.85};\n\n            \/\/ Recrear flujos si est\u00e1n activos\n            if (activeFlows.capital || activeFlows.knowledge || activeFlows.impact) {\n                const currentState = {...activeFlows};\n                clearAllFlows();\n                activeFlows = { capital: false, knowledge: false, impact: false, all: false };\n\n                if (currentState.capital) toggleFlow('capital');\n                if (currentState.knowledge) toggleFlow('knowledge');\n                if (currentState.impact) toggleFlow('impact');\n            }\n        });\n\n        initialize();\n    });\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-965ebcf e-con-full e-flex e-con e-parent\" data-id=\"965ebcf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3c9f65e elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"3c9f65e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"http:\/\/staging.globalsocialimpact.es\/wp-content\/uploads\/2025\/06\/openValue2.png\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27830dc elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"27830dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A key partner in our mission to create lasting impact<\/h2>\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-7d55bce e-con-full elementor-hidden-tablet e-flex e-con e-parent\" data-id=\"7d55bce\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0889018 elementor-arrows-position-outside elementor-widget__width-initial elementor-pagination-position-inside elementor-pagination-type-bullets elementor-widget elementor-widget-n-carousel\" data-id=\"0889018\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;carousel_items&quot;:[{&quot;slide_title&quot;:&quot;Slide #1&quot;,&quot;_id&quot;:&quot;3b98797&quot;},{&quot;slide_title&quot;:&quot;Slide #2&quot;,&quot;_id&quot;:&quot;ba92964&quot;},{&quot;slide_title&quot;:&quot;Slide #3&quot;,&quot;_id&quot;:&quot;dd25c0b&quot;},{&quot;slide_title&quot;:&quot;Slide #4&quot;,&quot;_id&quot;:&quot;6ea1f8c&quot;}],&quot;slides_to_show&quot;:&quot;1&quot;,&quot;slides_to_show_tablet&quot;:&quot;2&quot;,&quot;slides_to_show_mobile&quot;:&quot;1&quot;,&quot;infinite&quot;:&quot;yes&quot;,&quot;speed&quot;:500,&quot;offset_sides&quot;:&quot;none&quot;,&quot;arrows&quot;:&quot;yes&quot;,&quot;pagination&quot;:&quot;bullets&quot;,&quot;image_spacing_custom&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;image_spacing_custom_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;image_spacing_custom_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-n-carousel swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carousel\" dir=\"ltr\">\n\t\t\t<div class=\"swiper-wrapper\" aria-live=\"polite\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"1\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 4\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-de3c0f5 e-con-full e-flex e-con e-child\" data-id=\"de3c0f5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7122ac63 e-con-full e-flex e-con e-child\" data-id=\"7122ac63\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-204e433b e-con-full e-flex e-con e-child\" data-id=\"204e433b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ccfb34b elementor-widget elementor-widget-heading\" data-id=\"5ccfb34b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A foundation rooted in venture philanthropy<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-34bf1c96 elementor-widget elementor-widget-text-editor\" data-id=\"34bf1c96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Open Value Foundation (OVF) is a pioneering venture philanthropy foundation that supports early-stage social enterprises, primarily in Spain and Sub-Saharan Africa. Through a unique combination of grants, repayable funding and technical assistance, OVF helps purpose-driven entrepreneurs build strong foundations and prepare for growth.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ec76a77 elementor-widget elementor-widget-button\" data-id=\"ec76a77\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-54125ef6 e-con-full e-flex e-con e-child\" data-id=\"54125ef6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"2\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 4\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2685c1f e-con-full e-flex e-con e-child\" data-id=\"2685c1f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5b1b303c e-con-full e-flex e-con e-child\" data-id=\"5b1b303c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-797ede19 e-con-full e-flex e-con e-child\" data-id=\"797ede19\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6f3b6072 elementor-widget elementor-widget-heading\" data-id=\"6f3b6072\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A builder of the impact ecosystem<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-34810785 elementor-widget elementor-widget-text-editor\" data-id=\"34810785\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Beyond its work with entrepreneurs, OVF actively contributes to shaping the impact investing field in Spain. It co-leads strategic initiatives such as the Fondo de Fundaciones, Acumen Academy Spain, and SpainNAB, playing a key role in strengthening the ecosystem and promoting cross-sector collaboration.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed17f91 elementor-widget elementor-widget-button\" data-id=\"ed17f91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-294201be e-con-full e-flex e-con e-child\" data-id=\"294201be\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"3\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 of 4\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a26b320 e-con-full e-flex e-con e-child\" data-id=\"a26b320\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-6dd97c72 e-con-full e-flex e-con e-child\" data-id=\"6dd97c72\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-490d8731 e-con-full e-flex e-con e-child\" data-id=\"490d8731\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-27e52e82 elementor-widget elementor-widget-heading\" data-id=\"27e52e82\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Independent in form, deeply connected in purpose\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2079a8e5 elementor-widget elementor-widget-text-editor\" data-id=\"2079a8e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>GSI and OVF are two independent organizations within the Santa Comba ecosystem, one an impact fund manager, the other a philanthropic foundation.<\/p><p>While we operate through different models, we share much more than a mission. We work side by side sharing learnings, networks, field knowledge across regions, office space, and a daily culture of collaboration that creates genuine synergies and reinforces the integrity of our work.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6945159 elementor-widget elementor-widget-button\" data-id=\"6945159\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-6968301f e-con-full e-flex e-con e-child\" data-id=\"6968301f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"4\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 of 4\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-487ad22 e-con-full e-flex e-con e-child\" data-id=\"487ad22\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7c2162d8 e-con-full e-flex e-con e-child\" data-id=\"7c2162d8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7902f643 e-con-full e-flex e-con e-child\" data-id=\"7902f643\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1139161a elementor-widget elementor-widget-heading\" data-id=\"1139161a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A rare model in the impact space<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72c43a2f elementor-widget elementor-widget-text-editor\" data-id=\"72c43a2f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">This close and ongoing exchange is part of what sets GSI apart. It reflects a model where <\/span><b>impact is not just a goal, but a shared commitment embedded in how we work, think, and grow.<\/b><\/p><p><span style=\"font-weight: 400;\">As GSI evolves, <\/span><b>part of its success is designed to reinforce this shared mission<\/b><span style=\"font-weight: 400;\">.<\/span><\/p><p><b>Learn more about Open Value Foundation at openvaluefoundation.org<\/b><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d238e6f elementor-widget elementor-widget-button\" data-id=\"d238e6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-5987f760 e-con-full e-flex e-con e-child\" data-id=\"5987f760\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\" aria-label=\"Anterior\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-chevron-left-circle\"><\/i>\t\t\t<\/div>\n\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\" aria-label=\"Siguiente\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"icon icon-chevron-right-circle\"><\/i>\t\t\t<\/div>\n\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-38a0e65 e-con-full elementor-hidden-desktop elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"38a0e65\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-88918b4 e-con-full e-flex e-con e-child\" data-id=\"88918b4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-aa85549 e-con-full e-flex e-con e-child\" data-id=\"aa85549\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d9b57df elementor-widget elementor-widget-heading\" data-id=\"d9b57df\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A foundation rooted in venture philanthropy<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2585b6a elementor-widget elementor-widget-text-editor\" data-id=\"2585b6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Open Value Foundation (OVF) is a pioneering venture philanthropy foundation that supports early-stage social enterprises, primarily in Spain and Sub-Saharan Africa. Through a unique combination of grants, repayable funding and technical assistance, OVF helps purpose-driven entrepreneurs build strong foundations and prepare for growth.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e536c43 elementor-widget elementor-widget-button\" data-id=\"e536c43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-816b228 e-con-full e-flex e-con e-child\" data-id=\"816b228\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7199690 e-con-full e-flex e-con e-child\" data-id=\"7199690\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d3711fa e-con-full e-flex e-con e-child\" data-id=\"d3711fa\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ac4b87 elementor-widget elementor-widget-heading\" data-id=\"9ac4b87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A builder of the impact ecosystem<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-811e699 elementor-widget elementor-widget-text-editor\" data-id=\"811e699\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Beyond its work with entrepreneurs, OVF actively contributes to shaping the impact investing field in Spain. It co-leads strategic initiatives such as the Fondo de Fundaciones, Acumen Academy Spain, and SpainNAB, playing a key role in strengthening the ecosystem and promoting cross-sector collaboration.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-86d2ef3 elementor-widget elementor-widget-button\" data-id=\"86d2ef3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-03aa1a0 e-con-full e-flex e-con e-child\" data-id=\"03aa1a0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-20985c6 e-con-full e-flex e-con e-child\" data-id=\"20985c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-33ef420 e-con-full e-flex e-con e-child\" data-id=\"33ef420\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec4243f elementor-widget elementor-widget-heading\" data-id=\"ec4243f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Independent in form, deeply connected in purpose\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd4a8a0 elementor-widget elementor-widget-text-editor\" data-id=\"dd4a8a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>GSI and OVF are two independent organizations within the Santa Comba ecosystem, one an impact fund manager, the other a philanthropic foundation.<\/p><p>While we operate through different models, we share much more than a mission. We work side by side sharing learnings, networks, field knowledge across regions, office space, and a daily culture of collaboration that creates genuine synergies and reinforces the integrity of our work.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c2da21 elementor-widget elementor-widget-button\" data-id=\"3c2da21\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.openvaluefoundation.org\/es\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Learn more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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-5268136 e-con-full e-flex e-con e-child\" data-id=\"5268136\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0b443f4 e-con-full e-flex e-con e-parent\" data-id=\"0b443f4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-7248231 e-con-full e-flex e-con e-child\" data-id=\"7248231\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b83662 elementor-widget__width-initial elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"5b83662\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Helping shape the <br>\nimpact ecosystem in Spain <br>\nand beyond<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9545fde elementor-widget__width-inherit elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"9545fde\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:200}\" 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<div class=\"scroll-underline-container\">\n<p>Since 2017, through Open Value Foundation and later GSI, our founder, Mar\u00eda \u00c1ngeles Le\u00f3n, has played a key role in promoting a culture of investment that is both purpose-driven and financially disciplined.<br><br><\/p>\n<p>Her leadership has helped shape how capital is mobilized for social change not just as a funding tool, but as a force for transformation.<\/p>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-35e6408 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"35e6408\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ca0b881 elementor-widget elementor-widget-text-editor\" data-id=\"ca0b881\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: left;\"><em>\u201cWhat matters most is creating opportunities for others to go further. Building the impact ecosystem means opening doors and watching many more thrive, together.\u201d\n<\/em>&#8211; Mar\u00eda \u00c1ngeles Le\u00f3n, Founder &amp; CEO, Global Social Impact Investments<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0163c4f e-con-full e-flex e-con e-child\" data-id=\"0163c4f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-11a0bf9 e-flex e-con-boxed e-con e-parent\" data-id=\"11a0bf9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-9d6a684 section05 e-con-full e-flex e-con e-child\" data-id=\"9d6a684\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b886639 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"b886639\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Interested in partnering with us to grow the impact ecosystem?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-306d702 elementor-widget elementor-widget-text-editor\" data-id=\"306d702\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Discover our unique ecosystem of initiatives.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-76980ff elementor-align-center elementor-widget__width-initial elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-button\" data-id=\"76980ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/globalsocialimpact.es\/contact\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-plus\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Get in Touch<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Santa Comba A family ecosystem where knowledge, values and impact come together GSI is part of Santa Comba, a family-led ecosystem Where investment, business and philanthropy come together to drive long-term impact under \u2028a shared approach rooted in value investing. Founded by Mar\u00eda \u00c1ngeles Le\u00f3n and Francisco Garc\u00eda Param\u00e9s The group \u2028is built on a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":23,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"news_content_type":[],"class_list":["post-260","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/pages\/260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/comments?post=260"}],"version-history":[{"count":885,"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/pages\/260\/revisions"}],"predecessor-version":[{"id":925091,"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/pages\/260\/revisions\/925091"}],"wp:attachment":[{"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/media?parent=260"}],"wp:term":[{"taxonomy":"news_content_type","embeddable":true,"href":"https:\/\/globalsocialimpact.es\/es\/wp-json\/wp\/v2\/news_content_type?post=260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}