{"id":5595,"date":"2025-09-17T23:31:37","date_gmt":"2025-09-17T21:31:37","guid":{"rendered":"https:\/\/puedata.com\/about-us\/"},"modified":"2026-03-10T15:55:23","modified_gmt":"2026-03-10T14:55:23","slug":"about-us","status":"publish","type":"page","link":"https:\/\/puedata.com\/en\/about-us\/","title":{"rendered":"About Us"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-small-visibility fusion-no-medium-visibility contenedor-animaciones hero\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-top:0px;--awb-margin-bottom:0px;--awb-min-height:660px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 100% + 0px );margin-left: calc(-0px \/ 2 );margin-right: calc(-0px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column columna-animaciones\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"figura-animada figura-queso-azul2\">\n  <video autoplay=\"\" muted=\"\" playsinline=\"\">\n    <source src=\"https:\/\/puedata.com\/wp-content\/uploads\/2025\/11\/queso-azul2.webm\" type=\"video\/webm\">\n  <\/source><\/video>\n<\/div>\n\n<div class=\"figura-animada figura-aro-rojo2\">\n  <video autoplay=\"\" muted=\"\" playsinline=\"\">\n    <source src=\"https:\/\/puedata.com\/wp-content\/uploads\/2025\/11\/aro-rojo2.webm\" type=\"video\/webm\">\n  <\/source><\/video>\n<\/div>\n\n<div class=\"figura-animada figura-circulo-azul\">\n  <video autoplay=\"\" muted=\"\" playsinline=\"\">\n    <source src=\"https:\/\/puedata.com\/wp-content\/uploads\/2025\/11\/circulo-azul.webm\" type=\"video\/webm\">\n  <\/source><\/video>\n<\/div>\n\n<div class=\"figura-animada figura-aro-azul4\">\n  <video autoplay=\"\" muted=\"\" playsinline=\"\">\n    <source src=\"https:\/\/puedata.com\/wp-content\/uploads\/2025\/11\/aro-azul4.webm\" type=\"video\/webm\">\n  <\/source><\/video>\n<\/div>\n\n<div class=\"figura-animada figura-quesoneg-rojo1\">\n  <video autoplay=\"\" muted=\"\" playsinline=\"\">\n    <source src=\"https:\/\/puedata.com\/wp-content\/uploads\/2025\/11\/quesoneg-rojo1.webm\" type=\"video\/webm\">\n  <\/source><\/video>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column columna-contenido\" style=\"--awb-padding-top:64px;--awb-padding-bottom:40px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:38px;--awb-spacing-right-large:calc( 0.15 * calc( 100% - 0px ) );--awb-margin-bottom-large:20px;--awb-spacing-left-large:calc( 0.15 * calc( 100% - 0px ) );--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:calc( 0.15 * calc( 100% - 0px ) );--awb-spacing-left-medium:calc( 0.15 * calc( 100% - 0px ) );--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#typewriter-container6 {\n  display: flex;\n  justify-content: left;\n  align-items: flex-start;\n  padding: 40px 0;\n  text-align: left;\n  height: 170px;\n  width: 1000px;\n  overflow: hidden;\n}\n\nh1#typewriter-text6 {\n  font-family: 'Poppins', sans-serif;\n  font-size: 88px;\n  font-weight: 600;\n  line-height: 1.05;\n  display: inline-block;\n  margin: 0;\n  white-space: pre-line;\n  word-break: break-word;\n  max-width: 100%;\n}\n\n.text-blue { color: #004a7c; }\n.text-pink { color: #e40d4d; }\n\n\/* Blue cursor (default at the end) *\/\n.cursor6 {\n  color: #004a7c;\n  display: inline-block;\n  animation: blink-during 0.4s step-start infinite;\n  margin-left: 2px;\n}\n\n@keyframes blink-during {\n  50% { opacity: 0; }\n}\n\n#typed-content6 { white-space: inherit; }\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  #typewriter-container6 { height: 90px; width: 100%; }\n  h1#typewriter-text6 { font-size: 40pt; }\n}\n@media (max-width: 480px) {\n  #typewriter-container6 { height: 70px; padding: 20px 0; }\n  h1#typewriter-text6 { font-size: 30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container6\">\n  <h1 id=\"typewriter-text6\"><\/h1>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const h1 = document.getElementById('typewriter-text6');\n\n  const content = document.createElement('span');\n  content.id = 'typed-content6';\n\n  const cursor = document.createElement('span');\n  cursor.className = 'cursor6';\n  cursor.textContent = '_';\n\n  h1.appendChild(content);\n  h1.appendChild(cursor);\n\n  \/\/ TEXT CONFIGURATION\n  const fullText = 'We are PUEDATA';\n  const part1 = 'We are '; \/\/ Magenta part\n\n  const typingSpeed = 50;\n  let currentIndex = 0;\n  let started = false;\n\n  function colorizeDynamic(text) {\n    \/\/ While typing \"We are \", it is Magenta.\n    \/\/ After that, \"We are \" stays Magenta and the rest is Blue.\n    if (text.length <= part1.length) {\n      return `<span class=\"text-pink\">${text}<\/span>`;\n    } else {\n      const rest = text.slice(part1.length);\n      return `<span class=\"text-pink\">${part1}<\/span><span class=\"text-blue\">${rest}<\/span>`;\n    }\n  }\n\n  function typeWriter() {\n    if (currentIndex <= fullText.length) {\n      const currentText = fullText.slice(0, currentIndex);\n      content.innerHTML = colorizeDynamic(currentText);\n      currentIndex++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor() {\n    cursor.style.animation = 'none';\n    let blinkCount = 0;\n    const blinkInterval = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '0' ? '1' : '0';\n      blinkCount++;\n      if (blinkCount >= 6) {\n        clearInterval(blinkInterval);\n        cursor.style.opacity = '1';\n      }\n    }, 400);\n  }\n\n  const observer = new IntersectionObserver(entries => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting && !started) {\n        started = true;\n        typeWriter();\n      }\n    });\n  }, { threshold: 0.5 });\n\n  observer.observe(h1);\n});\n<\/script>\n<div class=\"fusion-text fusion-text-1 fusion-animated borde-partner\" style=\"--awb-font-size:22px;--awb-text-color:var(--awb-color5);\" data-animationType=\"fadeInLeft\" data-animationDuration=\"1.3\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><p><span style=\"font-size: 1.2rem;\">From Data Driven to AI Driven.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-size: 1rem;\">We were founded in 2015 with a clear objective: to transform complex data into pragmatic solutions with a real impact on business.<br \/>Today, we are taking it a step further: We design, build, and activate the ecosystem for companies to evolve towards AI-Driven models.<br \/><\/span><\/p>\n<\/div><div style=\"text-align:left;\"><a class=\"fusion-button button-flat button-xlarge button-custom fusion-button-default button-1 fusion-button-default-span fusion-animated\" style=\"--button_accent_color:var(--awb-color5);--button_accent_hover_color:var(--awb-color1);--button_border_hover_color:var(--awb-color1);--button_gradient_top_color:rgba(255,255,255,0);--button_gradient_bottom_color:rgba(255,255,255,0);--button_gradient_top_color_hover:var(--awb-color5);--button_gradient_bottom_color_hover:var(--awb-color5);--button_margin-top:20px;\" data-animationType=\"fadeInLeft\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\" target=\"_self\" id=\"hablamos\"><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Shall we talk?<\/span><\/a><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-large-visibility contenedor-animaciones hero\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:25px;--awb-padding-bottom:0px;--awb-padding-left:25px;--awb-margin-top:0px;--awb-margin-bottom:0px;--awb-min-height:660px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 100% + 0px );margin-left: calc(-0px \/ 2 );margin-right: calc(-0px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column columna-contenido\" style=\"--awb-padding-top:64px;--awb-padding-bottom:40px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:38px;--awb-spacing-right-large:calc( 0.15 * calc( 100% - 0px ) );--awb-margin-bottom-large:20px;--awb-spacing-left-large:calc( 0.15 * calc( 100% - 0px ) );--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:calc( 0.15 * calc( 100% - 0px ) );--awb-spacing-left-medium:calc( 0.15 * calc( 100% - 0px ) );--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2705 NEW IDs: #typewriter-container-responsive + #typewriter-text-responsive *\/\n#typewriter-container-responsive{\n  display:flex;\n  justify-content:left;\n  align-items:flex-start;\n  padding:40px 0;\n  text-align:left;\n  height:170px;\n  width:1000px;\n  overflow:hidden;\n}\n\nh1#typewriter-text-responsive{\n  font-family:'Poppins',sans-serif;\n  font-size:88px;\n  font-weight:600;\n  line-height:1.05;\n  display:inline-block;\n  margin:0;\n  white-space:pre-line;\n  word-break:break-word;\n  max-width:100%;\n}\n\n.text-blue{color:#004a7c;}\n.text-pink{color:#e40d4d;}\n\n\/* Blue cursor (default at the end) *\/\n.cursor-responsive{\n  color:#004a7c;\n  display:inline-block;\n  animation:blink-during 0.4s step-start infinite;\n  margin-left:2px;\n}\n\n@keyframes blink-during{\n  50%{opacity:0;}\n}\n\n#typed-content-responsive{white-space:inherit;}\n\n\/* Responsive *\/\n@media (max-width:768px){\n  #typewriter-container-responsive{height:90px;width:100%;}\n  h1#typewriter-text-responsive{font-size:40pt;}\n}\n@media (max-width:480px){\n  #typewriter-container-responsive{height:70px;padding:20px 0;}\n  h1#typewriter-text-responsive{font-size:30pt;}\n}\n<\/style>\n\n<div id=\"typewriter-container-responsive\">\n  <h1 id=\"typewriter-text-responsive\"><\/h1>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const h1 = document.getElementById('typewriter-text-responsive');\n\n  const content = document.createElement('span');\n  content.id = 'typed-content-responsive';\n\n  const cursor = document.createElement('span');\n  cursor.className = 'cursor-responsive';\n  cursor.textContent = '_';\n\n  h1.appendChild(content);\n  h1.appendChild(cursor);\n\n  \/\/ TEXT CONFIGURATION\n  const fullText = 'We are PUEDATA';\n  const part1 = 'We are '; \/\/ Magenta part\n\n  const typingSpeed = 50;\n  let currentIndex = 0;\n  let started = false;\n\n  function colorizeDynamic(text) {\n    if (text.length <= part1.length) {\n      return `<span class=\"text-pink\">${text}<\/span>`;\n    } else {\n      const rest = text.slice(part1.length);\n      return `<span class=\"text-pink\">${part1}<\/span><span class=\"text-blue\">${rest}<\/span>`;\n    }\n  }\n\n  function typeWriter() {\n    if (currentIndex <= fullText.length) {\n      const currentText = fullText.slice(0, currentIndex);\n      content.innerHTML = colorizeDynamic(currentText);\n      currentIndex++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor() {\n    cursor.style.animation = 'none';\n    let blinkCount = 0;\n    const blinkInterval = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '0' ? '1' : '0';\n      blinkCount++;\n      if (blinkCount >= 6) {\n        clearInterval(blinkInterval);\n        cursor.style.opacity = '1';\n      }\n    }, 400);\n  }\n\n  const observer = new IntersectionObserver(entries => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting && !started) {\n        started = true;\n        typeWriter();\n      }\n    });\n  }, { threshold: 0.5 });\n\n  observer.observe(h1);\n});\n<\/script>\n<div class=\"fusion-text fusion-text-2 fusion-animated borde-partner\" style=\"--awb-font-size:22px;--awb-text-color:var(--awb-color5);\" data-animationType=\"fadeInLeft\" data-animationDuration=\"1.3\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><p><span style=\"font-size: 1.2rem;\">From Data Driven to AI Driven.<\/span><\/p>\n<p><span style=\"font-weight: 400; font-size: 1rem;\">We were founded in 2015 with a clear objective: to transform complex data into pragmatic solutions with a real impact on business.<br \/>Today, we are taking it a step further: We design, build, and activate the ecosystem for companies to evolve towards AI-Driven models.<br \/><\/span><\/p>\n<\/div><div style=\"text-align:left;\"><a class=\"fusion-button button-flat button-xlarge button-custom fusion-button-default button-2 fusion-button-default-span fusion-animated\" style=\"--button_accent_color:var(--awb-color5);--button_accent_hover_color:var(--awb-color1);--button_border_hover_color:var(--awb-color1);--button_gradient_top_color:rgba(255,255,255,0);--button_gradient_bottom_color:rgba(255,255,255,0);--button_gradient_top_color_hover:var(--awb-color5);--button_gradient_bottom_color_hover:var(--awb-color5);--button_margin-top:20px;\" data-animationType=\"fadeInLeft\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\" target=\"_self\" id=\"hablamos\"><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Shall we talk?<\/span><\/a><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-left:0%;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:104%;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-no-small-visibility fusion-no-medium-visibility margen\" style=\"--awb-padding-right:15%;--awb-padding-left:17%;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:0%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:0%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- ===============================\n TYPEWRITER ANIMATION (ID 31)\n \"How it all started\" (How it all magenta, started blue, blue cursor)\n=================================== -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#typewriter-container31{\n  display:flex;\n  justify-content:left;\n  align-items:flex-start;\n  padding:40px 0;\n  text-align:left;\n  height:140px;\n  overflow:hidden;\n  width:100%;\n}\n\nh2#typewriter-text31{\n  font-family:'Poppins', sans-serif;\n  font-size:60px;\n  font-weight:600;\n  line-height:1.1;\n  display:inline-block;\n  margin:0;\n  white-space:nowrap;\n  max-width:100%;\n}\n\n.text-blue{ color:#004a7c; }\n.text-pink{ color:#e40d4d; }\n\n\/* Cursor31 (blue) *\/\n.cursor31{\n  color:#004a7c;\n  display:inline-block;\n  animation: blink-during-31 0.4s step-start infinite;\n  margin-left:2px;\n}\n\n@keyframes blink-during-31{\n  50%{ opacity:0; }\n}\n\n\/* Responsive *\/\n@media (max-width:768px){\n  #typewriter-container31{ height:90px; }\n  h2#typewriter-text31{ font-size:40pt; }\n}\n@media (max-width:480px){\n  #typewriter-container31{ height:70px; padding:20px 0; }\n  h2#typewriter-text31{ font-size:30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container31\">\n  <h2 id=\"typewriter-text31\">\n    <span id=\"typed-content31\"><\/span><span class=\"cursor31\">_<\/span>\n  <\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const typedContent = document.getElementById('typed-content31');\n  const fullText = 'How it all started';\n  const typingSpeed = 50;\n\n  const pinkPart = 'How it all';\n  let currentIndex = 0;\n  let started = false;\n\n  function colorizeDynamic(text){\n    if (text.length <= pinkPart.length){\n      return `<span class=\"text-pink\">${text}<\/span>`;\n    } else {\n      const blueRemainder = text.slice(pinkPart.length);\n      return `<span class=\"text-pink\">${pinkPart}<\/span><span class=\"text-blue\">${blueRemainder}<\/span>`;\n    }\n  }\n\n  function typeWriter(){\n    if (currentIndex <= fullText.length){\n      const current = fullText.slice(0, currentIndex);\n      typedContent.innerHTML = colorizeDynamic(current);\n      currentIndex++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor(){\n    const cursor = document.querySelector('.cursor31');\n    if (!cursor) return;\n\n    cursor.style.animation = 'none';\n    let blinkCount = 0;\n\n    const blinkInterval = setInterval(() => {\n      cursor.style.opacity = (cursor.style.opacity === '0') ? '1' : '0';\n      blinkCount++;\n\n      if (blinkCount >= 6) { \/\/ 3 blinks\n        clearInterval(blinkInterval);\n        cursor.style.opacity = '1';\n      }\n    }, 400);\n  }\n\n  const observer = new IntersectionObserver(entries => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting && !started){\n        started = true;\n        typeWriter();\n      }\n    });\n  }, { threshold: 0.5 });\n\n  observer.observe(typedContent);\n});\n<\/script>\n<div class=\"fusion-text fusion-text-3 fusion-text-no-margin\" style=\"--awb-font-size:1.2rem;--awb-text-color:var(--awb-color5);--awb-margin-bottom:40px;\"><p>We started small, but soon the biggest companies trusted us.<\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-no-large-visibility margen\" style=\"--awb-padding-right:2%;--awb-padding-left:4%;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:0%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:0%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- ===============================\n TYPEWRITER ANIMATION (RESPONSIVE ID 2)\n \"How it all started\" (How it all magenta, started blue, blue cursor)\n=================================== -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2705 NEW IDs: #typewriter-container-responsive2 + #typewriter-text-responsive2 *\/\n#typewriter-container-responsive2{\n  display:flex;\n  justify-content:left;\n  align-items:flex-start;\n  padding:40px 0;\n  text-align:left;\n  height:140px;\n  overflow:hidden;\n  width:100%;\n}\n\nh2#typewriter-text-responsive2{\n  font-family:'Poppins', sans-serif;\n  font-size:60px;\n  font-weight:600;\n  line-height:1.1;\n  display:inline-block;\n  margin:0;\n  white-space:nowrap;\n  max-width:100%;\n}\n\n.text-blue{ color:#004a7c; }\n.text-pink{ color:#e40d4d; }\n\n\/* \u2705 Cursor class renamed too (avoid collisions) *\/\n.cursor-responsive2{\n  color:#004a7c;\n  display:inline-block;\n  animation: blink-during-responsive2 0.4s step-start infinite;\n  margin-left:2px;\n}\n\n@keyframes blink-during-responsive2{\n  50%{ opacity:0; }\n}\n\n\/* Responsive *\/\n@media (max-width:768px){\n  #typewriter-container-responsive2{ height:90px; }\n  h2#typewriter-text-responsive2{ font-size:40pt; }\n}\n@media (max-width:480px){\n  #typewriter-container-responsive2{ height:70px; padding:20px 0; }\n  h2#typewriter-text-responsive2{ font-size:30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container-responsive2\">\n  <h2 id=\"typewriter-text-responsive2\">\n    <span id=\"typed-content-responsive2\"><\/span><span class=\"cursor-responsive2\">_<\/span>\n  <\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const typedContent = document.getElementById('typed-content-responsive2');\n  const fullText = 'How it all started';\n  const typingSpeed = 50;\n\n  const pinkPart = 'How it all';\n  let currentIndex = 0;\n  let started = false;\n\n  function colorizeDynamic(text){\n    if (text.length <= pinkPart.length){\n      return `<span class=\"text-pink\">${text}<\/span>`;\n    } else {\n      const blueRemainder = text.slice(pinkPart.length);\n      return `<span class=\"text-pink\">${pinkPart}<\/span><span class=\"text-blue\">${blueRemainder}<\/span>`;\n    }\n  }\n\n  function typeWriter(){\n    if (currentIndex <= fullText.length){\n      const current = fullText.slice(0, currentIndex);\n      typedContent.innerHTML = colorizeDynamic(current);\n      currentIndex++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor(){\n    const cursor = document.querySelector('.cursor-responsive2');\n    if (!cursor) return;\n\n    cursor.style.animation = 'none';\n    let blinkCount = 0;\n\n    const blinkInterval = setInterval(() => {\n      cursor.style.opacity = (cursor.style.opacity === '0') ? '1' : '0';\n      blinkCount++;\n\n      if (blinkCount >= 6) { \/\/ 3 blinks\n        clearInterval(blinkInterval);\n        cursor.style.opacity = '1';\n      }\n    }, 400);\n  }\n\n  const observer = new IntersectionObserver(entries => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting && !started){\n        started = true;\n        typeWriter();\n      }\n    });\n  }, { threshold: 0.5 });\n\n  observer.observe(typedContent);\n});\n<\/script>\n<div class=\"fusion-text fusion-text-4\" style=\"--awb-font-size:1.2rem;--awb-text-color:var(--awb-color5);\"><p>We started small, but soon the biggest companies trusted us.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-margin-top:20px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:104%;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><style>\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;700&display=swap');\n\n  .panorama-timeline {\n    width: 100%;\n    height: 700px;\n    background: #ffffff;\n    overflow: hidden;\n    position: relative;\n    font-family: 'Poppins', sans-serif;\n  }\n\n  .timeline-canvas {\n    position: absolute;\n    inset: 0;\n    cursor: grab;\n    user-select: none;\n    touch-action: pan-y; \/* allows vertical scroll, horizontal drag *\/\n  }\n\n  .timeline-canvas:active {\n    cursor: grabbing;\n  }\n\n  .timeline-content {\n    position: relative;\n    width: 3626px;\n    height: 700px;\n    will-change: transform;\n    transform: translateX(0px);\n  }\n\n  .timeline-image-wrapper {\n    position: absolute;\n    left: 0;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 100%;\n    height: 63px;\n    pointer-events: none;\n  }\n\n  .timeline-image-wrapper img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    user-select: none;\n    pointer-events: none;\n  }\n\n  .timeline-event {\n    position: absolute;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    pointer-events: none;\n    user-select: none;\n    max-width: 250px;\n    transform: translateX(-50%);\n  }\n\n  .timeline-event.top {\n    top: 40px;\n  }\n\n  .timeline-event.bottom {\n    bottom: 40px;\n  }\n\n  .timeline-event .event-text {\n    font-size: 1rem;\n    line-height: 1.4;\n    text-align: left;\n    color: #154C7E;\n    font-weight: 400;\n    margin: 0;\n  }\n\n  .timeline-event .event-text.bold {\n    font-weight: 700;\n  }\n\n  .timeline-event.top .event-text {\n    margin-bottom: 20px;\n  }\n\n  .timeline-event.bottom .event-year {\n    margin-bottom: 20px;\n  }\n\n  .timeline-event .event-year {\n    font-weight: 700;\n    color: #154C7E;\n    font-size: 1.125rem;\n    align-self: center;\n  }\n\n  .timeline-event .event-year.large {\n    font-size: 1.875rem;\n  }\n\n  .timeline-event .event-year.active {\n    color: #E40D4D;\n  }\n\n  \/* ==============================\n     PIXEL PERFECT ADJUSTMENT (TOP)\n  =============================== *\/\n  .timeline-event .event-text,\n  .timeline-event .event-year {\n    position: relative;\n  }\n\n  .text-2015 { top: 130px; } .year-2015 { top: 130px; }\n  .text-2016 { top: -100px; } .year-2016 { top: -100px; }\n  .text-2017 { top: 80px; } .year-2017 { top: 90px; }\n  .text-2018 { top: -100px; } .year-2018 { top: -100px; }\n  .text-2019 { top: 135px; } .year-2019 { top: 135px; }\n  .text-2020 { top: -100px; } .year-2020 { top: -100px; }\n  .text-2021 { top: 110px; } .year-2021 { top: 110px; }\n  .text-2022 { top: -100px; } .year-2022 { top: -100px; }\n  .text-2023 { top: 90px; } .year-2023 { top: 90px; }\n  .text-2024 { top: -80px; } .year-2024 { top: -80px; }\n  .text-2025 { top: 130px; } .year-2025 { top: 120px; }\n  .text-2026 { top: -190px; } .year-2026 { top: -190px; }\n\n  .timeline-nav {\n    position: absolute;\n    bottom: 16px;\n    left: 0;\n    right: 0;\n    display: flex;\n    justify-content: center;\n    z-index: 10;\n  }\n\n  .timeline-nav-inner {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 8px 16px;\n    background: rgba(255, 255, 255, 0.9);\n    backdrop-filter: blur(4px);\n    border-radius: 9999px;\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n  }\n\n  .timeline-nav-btn {\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.875rem;\n    font-weight: 500;\n    padding: 4px 12px;\n    color: #154C7E;\n    background: none;\n    border: none;\n    cursor: pointer;\n    transition: color 0.2s;\n  }\n\n  .timeline-nav-btn:hover,\n  .timeline-nav-btn.active {\n    color: #E40D4D;\n  }\n\n  .timeline-nav-separator {\n    color: rgba(21, 76, 126, 0.3);\n    margin-left: 8px;\n  }\n\n  .timeline-gradient-left,\n  .timeline-gradient-right {\n    position: absolute;\n    top: 0;\n    bottom: 64px;\n    width: 64px;\n    pointer-events: none;\n    z-index: 5;\n  }\n\n  .timeline-gradient-left {\n    left: 0;\n    background: linear-gradient(to right, #ffffff, transparent);\n  }\n\n  .timeline-gradient-right {\n    right: 0;\n    background: linear-gradient(to left, #ffffff, transparent);\n  }\n\n  .timeline-arrow {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 44px;\n    height: 44px;\n    border-radius: 9999px;\n    border: 1px solid rgba(21, 76, 126, 0.18);\n    background: rgba(255, 255, 255, 0.92);\n    backdrop-filter: blur(6px);\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.12);\n    color: #154C7E;\n    cursor: pointer;\n    z-index: 11;\n    display: grid;\n    place-items: center;\n    line-height: 1;\n    font-size: 22px;\n    user-select: none;\n  }\n\n  .timeline-arrow:hover {\n    color: #E40D4D;\n    border-color: rgba(228, 13, 77, 0.25);\n  }\n\n  .timeline-arrow-left { left: 12px; }\n  .timeline-arrow-right { right: 12px; }\n<\/style>\n\n<div class=\"panorama-timeline\">\n  <div class=\"timeline-canvas\" id=\"timelineCanvas\">\n    <div class=\"timeline-content\" id=\"timelineContent\">\n      <div class=\"timeline-image-wrapper\">\n        <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%272560%27%20height%3D%2739%27%20viewBox%3D%270%200%202560%2039%27%3E%3Crect%20width%3D%272560%27%20height%3D%2739%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/timeline-crono-scaled-1.svg\" alt=\"Timeline\" draggable=\"false\">\n      <\/div>\n\n      <div class=\"timeline-event top\" style=\"left: 4.83%;\">\n        <p class=\"event-text text-2015\">Puedata is founded with the backing of industry leaders: Cloudera, Google Cloud and Azure.<\/p>\n        <span class=\"event-year year-2015\" data-year=\"2015\">2015<\/span>\n      <\/div>\n\n      <div class=\"timeline-event bottom\" style=\"left: 12.96%;\">\n        <span class=\"event-year year-2016\" data-year=\"2016\">2016<\/span>\n        <p class=\"event-text text-2016\">We sign with Telef\u00f3nica to develop the Movistar Recommender, a key project still active today.<\/p>\n      <\/div>\n\n      <div class=\"timeline-event top\" style=\"left: 21.24%;\">\n        <p class=\"event-text text-2017\">We begin our relationship with Carrefour through our first Managed Services contract and win Cloudera EMEA\u2019s \u201cInvest to Win Award\u201d.<\/p>\n        <span class=\"event-year year-2017\" data-year=\"2017\">2017<\/span>\n      <\/div>\n\n      <div class=\"timeline-event bottom\" style=\"left: 29.51%;\">\n        <span class=\"event-year year-2018\" data-year=\"2018\">2018<\/span>\n        <p class=\"event-text text-2018\">We cross borders with our first European client, ENEL Italy, and become Cloudera\u2019s first Gold Partner in EMEA.<\/p>\n      <\/div>\n\n      <div class=\"timeline-event top\" style=\"left: 37.70%;\">\n        <p class=\"event-text text-2019\">We expand our presence in EMEA by earning the trust of a strategic public-sector client: Eurocontrol.<\/p>\n        <span class=\"event-year year-2019\" data-year=\"2019\">2019<\/span>\n      <\/div>\n\n      <div class=\"timeline-event bottom\" style=\"left: 45.92%;\">\n        <span class=\"event-year year-2020\" data-year=\"2020\">2020<\/span>\n        <p class=\"event-text text-2020\">During the pandemic, we contribute by training more than 800 professionals free of charge.<\/p>\n      <\/div>\n\n      <div class=\"timeline-event top\" style=\"left: 54.05%;\">\n        <p class=\"event-text text-2021\">We become the first Cloudera Platinum Partner in EMEA and seal a strategic alliance with Databricks.<\/p>\n        <span class=\"event-year year-2021\" data-year=\"2021\">2021<\/span>\n      <\/div>\n\n      <div class=\"timeline-event bottom\" style=\"left: 62.24%;\">\n        <span class=\"event-year year-2022\" data-year=\"2022\">2022<\/span>\n        <p class=\"event-text text-2022\">We reach Google Cloud Premier Partner status, are named \u201cPartner of the Year\u201d by Cloudera, and partner with Collibra.<\/p>\n      <\/div>\n\n      <div class=\"timeline-event top\" style=\"left: 70.49%;\">\n        <p class=\"event-text text-2023\">We open our subsidiary in Saudi Arabia, achieve Cloudera\u2019s highest partnership level (Strategic), and add AWS and Starburst to our ecosystem.<\/p>\n        <span class=\"event-year year-2023\" data-year=\"2023\">2023<\/span>\n      <\/div>\n\n      <div class=\"timeline-event bottom\" style=\"left: 78.76%;\">\n        <span class=\"event-year year-2024\" data-year=\"2024\">2024<\/span>\n        <p class=\"event-text text-2024\">We develop a pioneering GenAI success case with Santaluc\u00eda and strengthen our tech stack through a key agreement with dbt Labs.<\/p>\n      <\/div>\n\n      <div class=\"timeline-event top\" style=\"left: 86.96%;\">\n        <p class=\"event-text text-2025 bold\">We mark a turning point in our history with the exclusive launch of the QRY platform.<\/p>\n        <span class=\"event-year year-2025 large\" data-year=\"2025\">2025<\/span>\n      <\/div>\n\n      <div class=\"timeline-event bottom\" style=\"left: 95.23%;\">\n        <span class=\"event-year year-2026\" data-year=\"2026\">2026<\/span>\n        <p class=\"event-text text-2026\">It will be a great year.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <button class=\"timeline-arrow timeline-arrow-left\" id=\"timelineArrowLeft\" aria-label=\"Previous\" type=\"button\">\u2039<\/button>\n  <button class=\"timeline-arrow timeline-arrow-right\" id=\"timelineArrowRight\" aria-label=\"Next\" type=\"button\">\u203a<\/button>\n\n  <div class=\"timeline-nav\">\n    <div class=\"timeline-nav-inner\">\n      <button class=\"timeline-nav-btn\" data-year=\"2015\">2015<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2016\">2016<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2017\">2017<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2018\">2018<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2019\">2019<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2020\">2020<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2021\">2021<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2022\">2022<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2023\">2023<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2024\">2024<span class=\"timeline-nav-separator\">\u2014<\/span><\/button>\n      <button class=\"timeline-nav-btn\" data-year=\"2025\">2025<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"timeline-gradient-left\"><\/div>\n  <div class=\"timeline-gradient-right\"><\/div>\n<\/div>\n\n\n<script>\n(function() {\n  'use strict';\n\n  const CANVAS_WIDTH = 3626;\n\n  const eventPositions = {\n    2015: 4.83,\n    2016: 12.96,\n    2017: 21.24,\n    2018: 29.51,\n    2019: 37.70,\n    2020: 45.92,\n    2021: 54.05,\n    2022: 62.24,\n    2023: 70.49,\n    2024: 78.76,\n    2025: 86.96,\n    2026: 95.23\n  };\n\n  const canvas = document.getElementById('timelineCanvas');     \/\/ viewport\n  const content = document.getElementById('timelineContent');   \/\/ strip\n  const navButtons = document.querySelectorAll('.timeline-nav-btn');\n  const yearElements = document.querySelectorAll('.event-year');\n\n  \/\/ NEW: arrows\n  const arrowLeft = document.getElementById('timelineArrowLeft');\n  const arrowRight = document.getElementById('timelineArrowRight');\n  const yearsOrdered = Object.keys(eventPositions).map(n => parseInt(n, 10)).sort((a,b) => a-b);\n\n  let isDragging = false;\n  let startX = 0;\n  let startPos = 0;\n  let currentX = 0;\n  let velocity = 0;\n\n  let rafAnim = null;     \/\/ animaci\u00f3n click\n  let rafMomentum = null; \/\/ inercia drag\n\n  function getMaxScroll() {\n    const containerWidth = canvas.offsetWidth;\n    return Math.max(0, CANVAS_WIDTH - containerWidth);\n  }\n\n  function clampX(x) {\n    const maxScroll = getMaxScroll();\n    return Math.max(-maxScroll, Math.min(0, x));\n  }\n\n  function setPosition(x) {\n    currentX = clampX(x);\n    content.style.transform = `translateX(${currentX}px)`;\n  }\n\n  function setActiveYear(year) {\n    navButtons.forEach(btn => btn.classList.toggle('active', btn.dataset.year == year));\n    yearElements.forEach(el => el.classList.toggle('active', el.dataset.year == year));\n  }\n\n  function stopAllAnimations() {\n    if (rafAnim) cancelAnimationFrame(rafAnim);\n    if (rafMomentum) cancelAnimationFrame(rafMomentum);\n    rafAnim = null;\n    rafMomentum = null;\n  }\n\n  function easeOutCubic(t) {\n    return 1 - Math.pow(1 - t, 3);\n  }\n\n  function animateTo(targetX) {\n    stopAllAnimations();\n\n    const from = currentX;\n    const to = clampX(targetX);\n    const distance = to - from;\n    const duration = 600;\n    const startTime = performance.now();\n\n    velocity = 0;\n\n    function step(now) {\n      const elapsed = now - startTime;\n      const t = Math.min(elapsed \/ duration, 1);\n      const eased = easeOutCubic(t);\n\n      setPosition(from + distance * eased);\n\n      if (t < 1) {\n        rafAnim = requestAnimationFrame(step);\n      } else {\n        rafAnim = null;\n      }\n    }\n\n    rafAnim = requestAnimationFrame(step);\n  }\n\n  function applyMomentum() {\n    if (Math.abs(velocity) < 0.5) {\n      velocity = 0;\n      rafMomentum = null;\n      return;\n    }\n\n    setPosition(currentX + velocity);\n    velocity *= 0.95; \/\/ fricci\u00f3n\n\n    rafMomentum = requestAnimationFrame(applyMomentum);\n  }\n\n  function scrollToYear(year) {\n    const percent = eventPositions[year];\n    if (percent === undefined) return;\n\n    const containerWidth = canvas.offsetWidth;\n    const pixelPosition = (percent \/ 100) * CANVAS_WIDTH;\n    const targetX = -(pixelPosition - containerWidth \/ 2);\n\n    setActiveYear(year);\n    animateTo(targetX); \/\/ \u2705 suavidad (NO teletransporte)\n  }\n\n  \/\/ NEW: find closest year to current center\n  function getClosestYearToCenter() {\n    const containerWidth = canvas.offsetWidth;\n    const centerPixelOnStrip = (-currentX) + (containerWidth \/ 2);\n\n    let bestYear = yearsOrdered[0];\n    let bestDist = Infinity;\n\n    for (const y of yearsOrdered) {\n      const px = (eventPositions[y] \/ 100) * CANVAS_WIDTH;\n      const d = Math.abs(px - centerPixelOnStrip);\n      if (d < bestDist) {\n        bestDist = d;\n        bestYear = y;\n      }\n    }\n    return bestYear;\n  }\n\n  \/\/ NEW: arrows click => prev\/next year\n  function goPrev() {\n    stopAllAnimations();\n    const current = getClosestYearToCenter();\n    const idx = yearsOrdered.indexOf(current);\n    const prev = yearsOrdered[Math.max(0, idx - 1)];\n    scrollToYear(prev);\n  }\n\n  function goNext() {\n    stopAllAnimations();\n    const current = getClosestYearToCenter();\n    const idx = yearsOrdered.indexOf(current);\n    const next = yearsOrdered[Math.min(yearsOrdered.length - 1, idx + 1)];\n    scrollToYear(next);\n  }\n\n  if (arrowLeft) arrowLeft.addEventListener('click', goPrev);\n  if (arrowRight) arrowRight.addEventListener('click', goNext);\n\n  \/\/ Mouse drag\n  canvas.addEventListener('mousedown', (e) => {\n    stopAllAnimations();\n\n    isDragging = true;\n    startX = e.pageX;\n    startPos = currentX;\n    velocity = 0;\n\n    canvas.style.cursor = 'grabbing';\n  });\n\n  document.addEventListener('mousemove', (e) => {\n    if (!isDragging) return;\n\n    e.preventDefault();\n\n    const dx = e.pageX - startX;\n    const nextX = startPos + dx;\n\n    velocity = nextX - currentX; \/\/ sensaci\u00f3n f\u00edsica\n    setPosition(nextX);\n  });\n\n  document.addEventListener('mouseup', () => {\n    if (!isDragging) return;\n\n    isDragging = false;\n    canvas.style.cursor = 'grab';\n\n    stopAllAnimations();\n    applyMomentum();\n  });\n\n  \/\/ Touch drag\n  canvas.addEventListener('touchstart', (e) => {\n    stopAllAnimations();\n\n    isDragging = true;\n    startX = e.touches[0].pageX;\n    startPos = currentX;\n    velocity = 0;\n  }, { passive: true });\n\n  canvas.addEventListener('touchmove', (e) => {\n    if (!isDragging) return;\n\n    const dx = e.touches[0].pageX - startX;\n    const nextX = startPos + dx;\n\n    velocity = nextX - currentX;\n    setPosition(nextX);\n  }, { passive: true });\n\n  canvas.addEventListener('touchend', () => {\n    if (!isDragging) return;\n\n    isDragging = false;\n\n    stopAllAnimations();\n    applyMomentum();\n  });\n\n  \/\/ Nav buttons\n  navButtons.forEach(btn => {\n    btn.addEventListener('click', () => {\n      scrollToYear(parseInt(btn.dataset.year, 10));\n    });\n  });\n\n  \/\/ Resize stable\n  window.addEventListener('resize', () => {\n    setPosition(currentX);\n  });\n\n  \/\/ Init\n  setPosition(0);\n  setActiveYear(2015);\n})();\n<\/script>\n<\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-small-visibility fusion-no-medium-visibility\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-right:15%;--awb-padding-left:15%;--awb-margin-bottom:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:104%;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_1_1 1_1 fusion-flex-column margin-izquierdo\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:40px;--awb-spacing-right-large:0%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#typewriter-container15 {\n  display: flex;\n  justify-content: left;\n  align-items: flex-start;\n  padding: 40px 0; \/* no lateral padding *\/\n  text-align: left;\n  height: 210px;\n  overflow: hidden;\n  width: 1000px;\n}\n\nh2#typewriter-text15 {\n  font-family: 'Poppins', sans-serif;\n  font-size: 60px;\n  font-weight: 600;\n  line-height: 1.2;\n  display: inline-block;\n  margin: 0;\n  white-space: nowrap;\n  word-break: break-word;\n  max-width: 100%;\n}\n\n.text-blue { color: #004a7c; }\n.text-pink { color: #e40d4d; }\n\n\/* Cursor2 (magenta active during typing) \u2014 isolated for ID15 *\/\n#cursor15 {\n  color: #e40d4d;\n  display: inline-block;\n  margin-left: 2px;\n  animation: blink-during-15 0.4s step-start infinite;\n}\n\n@keyframes blink-during-15 {\n  50% { opacity: 0; }\n}\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  #typewriter-container15 { height: 110px; }\n  h2#typewriter-text15 { font-size: 45pt; }\n}\n@media (max-width: 480px) {\n  #typewriter-container15 { height: 90px; padding: 20px 0; }\n  h2#typewriter-text15 { font-size: 30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container15\">\n  <h2 id=\"typewriter-text15\">\n    <span id=\"typed-content15\"><\/span><span id=\"cursor15\">_<\/span>\n  <\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const typed = document.getElementById('typed-content15');\n  const cursor = document.getElementById('cursor15');\n  \n  \/\/ UPDATED TEXT AND PARTS\n  const fullText = 'Our philosophy';\n  const part1 = 'Our '; \/\/ Includes the space for the color change\n  \n  const typingSpeed = 50;\n  let i = 0, started = false, finished = false, blinkIv = null;\n\n  function colorizeDynamic(text) {\n    \/\/ Logic: if the current text is shorter than or equal to \"Our \", it is blue.\n    \/\/ If it is longer, separate \"Our \" (blue) from the rest (magenta).\n    if (text.length <= part1.length) {\n      return `<span class=\"text-blue\">${text}<\/span>`;\n    } else {\n      const rest = text.slice(part1.length);\n      return `<span class=\"text-blue\">${part1}<\/span><span class=\"text-pink\">${rest}<\/span>`;\n    }\n  }\n\n  function typeWriter() {\n    if (i <= fullText.length) {\n      const currentText = fullText.slice(0, i);\n      typed.innerHTML = colorizeDynamic(currentText);\n      i++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor() {\n    if (finished) return;\n    finished = true;\n    cursor.style.animation = 'none';\n    cursor.style.opacity = '1';\n\n    \/\/ \ud83d\udd39 exactly 3 blinks before staying fixed\n    let cycles = 0;\n    blinkIv = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '1' ? '0' : '1';\n      if (cursor.style.opacity === '1') {\n        cycles++;\n        if (cycles >= 3) {\n          clearInterval(blinkIv);\n          cursor.style.opacity = '1'; \/\/ \u2705 stays visible\n        }\n      }\n    }, 400);\n  }\n\n  const obs = new IntersectionObserver(entries => {\n    entries.forEach(e => {\n      if (e.isIntersecting && !started) {\n        started = true;\n        typeWriter();\n        obs.unobserve(typed); \/\/ prevents animation restart\n      }\n    });\n  }, { threshold: 0.5 });\n\n  obs.observe(typed);\n});\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-7 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:0%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-5\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Make it simple<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We simplify complex challenges.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-8 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-6\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Specialization<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We believe in the excellence that comes from deep technical knowledge.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-9 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-7\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Nonconformity<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We seek the best solution, not the easiest.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-10 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:0%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-8\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Challenge ourselves<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">Complex challenges drive us.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-11 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-9\"><div class=\"card\">\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Transparency<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We build relationships based on trust and honesty.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-12 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-10\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">One Team<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">Radical collaboration: we know that together we go further.<\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-6 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-large-visibility\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-right:2%;--awb-padding-left:2%;--awb-margin-bottom:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:104%;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-13 fusion_builder_column_1_1 1_1 fusion-flex-column margin-izquierdo\" style=\"--awb-padding-bottom:100px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:40px;--awb-spacing-right-large:0%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2705 NEW IDs: #typewriter-container-responsive3 + #typewriter-text-responsive3 *\/\n#typewriter-container-responsive3{\n  display:flex;\n  justify-content:left;\n  align-items:flex-start;\n  padding:40px 0;\n  text-align:left;\n  height:210px;\n  overflow:hidden;\n  width:1000px;\n}\n\nh2#typewriter-text-responsive3{\n  font-family:'Poppins', sans-serif;\n  font-size:60px;\n  font-weight:600;\n  line-height:1.2;\n  display:inline-block;\n  margin:0;\n  white-space:nowrap;\n  word-break:break-word;\n  max-width:100%;\n}\n\n.text-blue{ color:#004a7c; }\n.text-pink{ color:#e40d4d; }\n\n\/* \u2705 Cursor renamed too (avoid collisions) *\/\n#cursor-responsive3{\n  color:#e40d4d;\n  display:inline-block;\n  margin-left:2px;\n  animation: blink-during-responsive3 0.4s step-start infinite;\n}\n\n@keyframes blink-during-responsive3{\n  50%{ opacity:0; }\n}\n\n\/* Responsive *\/\n@media (max-width:768px){\n  #typewriter-container-responsive3{ height:110px; width:100%; }\n  h2#typewriter-text-responsive3{ font-size:45pt; }\n}\n@media (max-width:480px){\n  #typewriter-container-responsive3{ height:90px; padding:20px 0; width:100%; }\n  h2#typewriter-text-responsive3{ font-size:30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container-responsive3\">\n  <h2 id=\"typewriter-text-responsive3\">\n    <span id=\"typed-content-responsive3\"><\/span><span id=\"cursor-responsive3\">_<\/span>\n  <\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const typed = document.getElementById('typed-content-responsive3');\n  const cursor = document.getElementById('cursor-responsive3');\n\n  \/\/ TEXT\n  const fullText = 'Our philosophy';\n  const part1 = 'Our '; \/\/ includes trailing space\n\n  const typingSpeed = 50;\n  let i = 0, started = false, finished = false, blinkIv = null;\n\n  function colorizeDynamic(text){\n    if (text.length <= part1.length){\n      return `<span class=\"text-blue\">${text}<\/span>`;\n    } else {\n      const rest = text.slice(part1.length);\n      return `<span class=\"text-blue\">${part1}<\/span><span class=\"text-pink\">${rest}<\/span>`;\n    }\n  }\n\n  function typeWriter(){\n    if (i <= fullText.length){\n      const currentText = fullText.slice(0, i);\n      typed.innerHTML = colorizeDynamic(currentText);\n      i++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor(){\n    if (finished) return;\n    finished = true;\n\n    cursor.style.animation = 'none';\n    cursor.style.opacity = '1';\n\n    \/\/ exactly 3 blinks, then stays visible\n    let cycles = 0;\n    blinkIv = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '1' ? '0' : '1';\n      if (cursor.style.opacity === '1'){\n        cycles++;\n        if (cycles >= 3){\n          clearInterval(blinkIv);\n          cursor.style.opacity = '1';\n        }\n      }\n    }, 400);\n  }\n\n  const obs = new IntersectionObserver(entries => {\n    entries.forEach(e => {\n      if (e.isIntersecting && !started){\n        started = true;\n        typeWriter();\n        obs.unobserve(typed); \/\/ prevent restart\n      }\n    });\n  }, { threshold: 0.5 });\n\n  obs.observe(typed);\n});\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-14 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:0%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-11\"><div class=\"card\">\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Make it simple<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We simplify complex challenges.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-15 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-12\"><div class=\"card\">\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Specialization<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We believe in the excellence that <br \/>comes from deep technical knowledge.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-16 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-13\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Nonconformity<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We seek the best solution, not the easiest.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-17 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:0%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-14\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Challenge ourselves<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">Complex challenges drive us.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-18 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-15\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">Transparency<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">We build relationships based on<br \/> trust and honesty.<\/div>\n<\/div>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-19 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-bg-size:cover;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeIn\" data-animationDuration=\"1.0\" data-animationDelay=\"1.0\" data-animationOffset=\"top-into-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-space-evenly fusion-content-layout-column\"><div class=\"fusion-text fusion-text-16\"><div class=\"card\">\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<div class=\"card-frente\">\n<h3 class=\"titulo\"><span style=\"font-size: 1.6rem;\">One Team<\/span><\/h3>\n<\/div>\n<div class=\"card-dorso\">Radical collaboration: we know <br \/>that together we go further.<\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-7 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-small-visibility fusion-no-medium-visibility\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-right:15%;--awb-padding-left:15%;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:104%;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-20 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#typewriter-container74 {\n  display: flex;\n  justify-content: left;\n  align-items: flex-start;\n  padding: 40px 0; \/* no lateral padding *\/\n  text-align: left;\n  height: 190px;\n  overflow: hidden;\n  width: 1000px;\n}\n\nh2#typewriter-text74 {\n  font-family: 'Poppins', sans-serif;\n  font-size: 60px;\n  font-weight: 600;\n  line-height: 1.2;\n  display: inline-block;\n  margin: 0;\n  white-space: nowrap;\n  word-break: break-word;\n  max-width: 100%;\n}\n\n.text-blue { color: #004a7c; }\n.text-pink { color: #e40d4d; }\n\n\/* Cursor (magenta active during typing) \u2014 isolated for ID74 *\/\n#cursor74 {\n  color: #e40d4d;\n  display: inline-block;\n  margin-left: 2px;\n  animation: blink-during-74 0.4s step-start infinite;\n}\n\n@keyframes blink-during-74 {\n  50% { opacity: 0; }\n}\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  #typewriter-container74 { height: 110px; }\n  h2#typewriter-text74 { font-size: 45pt; }\n}\n@media (max-width: 480px) {\n  #typewriter-container74 { height: 90px; padding: 20px 0; }\n  h2#typewriter-text74 { font-size: 30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container74\">\n  <h2 id=\"typewriter-text74\">\n    <span id=\"typed-content74\"><\/span><span id=\"cursor74\">_<\/span>\n  <\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const typed = document.getElementById('typed-content74');\n  const cursor = document.getElementById('cursor74');\n  \n  \/\/ UPDATED TEXT AND PARTS\n  const fullText = 'What we do every day';\n  const part1 = 'What we do '; \/\/ Blue part (includes trailing space)\n  \n  const typingSpeed = 50;\n  let i = 0, started = false, finished = false, blinkIv = null;\n\n  function colorizeDynamic(text) {\n    \/\/ Logic: first part is Blue, the rest (\"every day\") is Magenta\n    if (text.length <= part1.length) {\n      return `<span class=\"text-blue\">${text}<\/span>`;\n    } else {\n      const rest = text.slice(part1.length);\n      return `<span class=\"text-blue\">${part1}<\/span><span class=\"text-pink\">${rest}<\/span>`;\n    }\n  }\n\n  function typeWriter() {\n    if (i <= fullText.length) {\n      const currentText = fullText.slice(0, i);\n      typed.innerHTML = colorizeDynamic(currentText);\n      i++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor() {\n    if (finished) return;\n    finished = true;\n    cursor.style.animation = 'none';\n    cursor.style.opacity = '1';\n\n    \/\/ \ud83d\udd39 exactly 3 blinks before staying fixed\n    let cycles = 0;\n    blinkIv = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '1' ? '0' : '1';\n      if (cursor.style.opacity === '1') {\n        cycles++;\n        if (cycles >= 3) {\n          clearInterval(blinkIv);\n          cursor.style.opacity = '1'; \/\/ \u2705 stays visible\n        }\n      }\n    }, 400);\n  }\n\n  const obs = new IntersectionObserver(entries => {\n    entries.forEach(e => {\n      if (e.isIntersecting && !started) {\n        started = true;\n        typeWriter();\n        obs.unobserve(typed); \/\/ prevents animation restart\n      }\n    });\n  }, { threshold: 0.5 });\n\n  obs.observe(typed);\n});\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-21 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.84%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:3.84%;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:3.84%;--awb-spacing-left-medium:3.84%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-17\" style=\"--awb-content-alignment:left;--awb-font-size:1.2rem;--awb-text-color:var(--awb-color5);\"><p><span style=\"font-weight: 400;\">We convert complex technological capabilities into useful, agile Artificial Intelligence solutions with measurable impact.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We support our clients so that AI goes from idea to operation, integrating into their processes, decisions, and products.<\/span><\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-22 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-right:12%;--awb-padding-left:12%;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.84%;--awb-margin-bottom-large:27px;--awb-spacing-left-large:3.84%;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:3.84%;--awb-spacing-left-medium:3.84%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element \" style=\"--awb-margin-top:-30px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"600\" height=\"600\" title=\"nosotros_end\" src=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end.webp\" data-orig-src=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end.webp\" alt class=\"lazyload img-responsive wp-image-6807\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27600%27%20height%3D%27600%27%20viewBox%3D%270%200%20600%20600%27%3E%3Crect%20width%3D%27600%27%20height%3D%27600%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end-200x200.webp 200w, https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end-400x400.webp 400w, https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end.webp 600w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 600px\" \/><\/span><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-8 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-large-visibility\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-right:3%;--awb-padding-left:3%;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:104%;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-23 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2705 NEW IDs: #typewriter-container-responsive4 + #typewriter-text-responsive4 *\/\n#typewriter-container-responsive4{\n  display:flex;\n  justify-content:left;\n  align-items:flex-start;\n  padding:40px 0;\n  text-align:left;\n  height:190px;\n  overflow:hidden;\n  width:1000px;\n}\n\nh2#typewriter-text-responsive4{\n  font-family:'Poppins', sans-serif;\n  font-size:60px;\n  font-weight:600;\n  line-height:1.2;\n  display:inline-block;\n  margin:0;\n  white-space:nowrap;\n  word-break:break-word;\n  max-width:100%;\n}\n\n.text-blue{ color:#004a7c; }\n.text-pink{ color:#e40d4d; }\n\n\/* \u2705 Cursor renamed too (avoid collisions) *\/\n#cursor-responsive4{\n  color:#e40d4d;\n  display:inline-block;\n  margin-left:2px;\n  animation: blink-during-responsive4 0.4s step-start infinite;\n}\n\n@keyframes blink-during-responsive4{\n  50%{ opacity:0; }\n}\n\n\/* Responsive *\/\n@media (max-width:768px){\n  #typewriter-container-responsive4{ height:110px; width:100%; }\n  h2#typewriter-text-responsive4{ font-size:45pt; }\n}\n@media (max-width:480px){\n  #typewriter-container-responsive4{ height:90px; padding:20px 0; width:100%; }\n  h2#typewriter-text-responsive4{ font-size:30pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container-responsive4\">\n  <h2 id=\"typewriter-text-responsive4\">\n    <span id=\"typed-content-responsive4\"><\/span><span id=\"cursor-responsive4\">_<\/span>\n  <\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const typed = document.getElementById('typed-content-responsive4');\n  const cursor = document.getElementById('cursor-responsive4');\n\n  \/\/ TEXT\n  const fullText = 'What we do every day';\n  const part1 = 'What we do '; \/\/ Blue part (includes trailing space)\n\n  const typingSpeed = 50;\n  let i = 0, started = false, finished = false, blinkIv = null;\n\n  function colorizeDynamic(text){\n    if (text.length <= part1.length){\n      return `<span class=\"text-blue\">${text}<\/span>`;\n    } else {\n      const rest = text.slice(part1.length);\n      return `<span class=\"text-blue\">${part1}<\/span><span class=\"text-pink\">${rest}<\/span>`;\n    }\n  }\n\n  function typeWriter(){\n    if (i <= fullText.length){\n      const currentText = fullText.slice(0, i);\n      typed.innerHTML = colorizeDynamic(currentText);\n      i++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor(){\n    if (finished) return;\n    finished = true;\n\n    cursor.style.animation = 'none';\n    cursor.style.opacity = '1';\n\n    \/\/ exactly 3 blinks, then stays visible\n    let cycles = 0;\n    blinkIv = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '1' ? '0' : '1';\n      if (cursor.style.opacity === '1'){\n        cycles++;\n        if (cycles >= 3){\n          clearInterval(blinkIv);\n          cursor.style.opacity = '1';\n        }\n      }\n    }, 400);\n  }\n\n  const obs = new IntersectionObserver(entries => {\n    entries.forEach(e => {\n      if (e.isIntersecting && !started){\n        started = true;\n        typeWriter();\n        obs.unobserve(typed); \/\/ prevents restart\n      }\n    });\n  }, { threshold: 0.5 });\n\n  obs.observe(typed);\n});\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-24 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.84%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:3.84%;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:3.84%;--awb-spacing-left-medium:3.84%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-18\" style=\"--awb-content-alignment:left;--awb-font-size:1.2rem;--awb-text-color:var(--awb-color5);\"><p><span style=\"font-weight: 400;\">We convert complex technological capabilities into useful, agile Artificial Intelligence solutions with measurable impact.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We support our clients so that AI goes from idea to operation, integrating into their processes, decisions, and products.<\/span><\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-25 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-padding-right:12%;--awb-padding-left:12%;--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.84%;--awb-margin-bottom-large:27px;--awb-spacing-left-large:3.84%;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:3.84%;--awb-spacing-left-medium:3.84%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element \" style=\"--awb-margin-top:-30px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"600\" height=\"600\" title=\"nosotros_end\" src=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end.webp\" data-orig-src=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end.webp\" alt class=\"lazyload img-responsive wp-image-6807\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27600%27%20height%3D%27600%27%20viewBox%3D%270%200%20600%20600%27%3E%3Crect%20width%3D%27600%27%20height%3D%27600%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end-200x200.webp 200w, https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end-400x400.webp 400w, https:\/\/puedata.com\/wp-content\/uploads\/2026\/01\/nosotros_end.webp 600w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 600px\" \/><\/span><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-9 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-small-visibility fusion-no-medium-visibility contenedor-animaciones transformar\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-top:130px;--awb-margin-bottom:0px;--awb-min-height:220px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 100% + 0px );margin-left: calc(-0px \/ 2 );margin-right: calc(-0px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-26 fusion_builder_column_1_1 1_1 fusion-flex-column columna-contenido\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:-100px;--awb-spacing-right-large:calc( 0.05 * calc( 100% - 0px ) );--awb-margin-bottom-large:0px;--awb-spacing-left-large:calc( 0.15 * calc( 100% - 0px ) );--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:calc( 0.05 * calc( 100% - 0px ) );--awb-spacing-left-medium:calc( 0.15 * calc( 100% - 0px ) );--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-row\"><!-- ===============================\n TYPEWRITER ANIMATION H2 (ID 2)\n \"The best is yet to be built\"\n \"to be built\" in magenta + magenta cursor\n=================================== -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#typewriter-container-h2-2 {\n  display: flex;\n  justify-content: left;\n  align-items: flex-start;\n  padding: 30px 0;\n  text-align: left;\n  height: 120px;\n  width: 1000px;\n  overflow: hidden;\n}\n\nh2#typewriter-text-h2-2 {\n  font-family: 'Poppins', sans-serif;\n  font-size: 60px;\n  font-weight: 600;\n  line-height: 1.1;\n  display: inline-block;\n  margin: 0;\n  white-space: pre-line;\n  word-break: break-word;\n  max-width: 100%;\n}\n\n.text-blue { color: #004a7c; }\n.text-pink { color: #e40d4d; }\n\n\/* Magenta cursor *\/\n.cursor-h2-2 {\n  color: #e40d4d;\n  display: inline-block;\n  animation: blink-during 0.4s step-start infinite;\n  margin-left: 2px;\n}\n\n@keyframes blink-during {\n  50% { opacity: 0; }\n}\n\n#typed-content-h2-2 { white-space: inherit; }\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  #typewriter-container-h2-2 { height: 80px; width: 100%; }\n  h2#typewriter-text-h2-2 { font-size: 32pt; }\n}\n@media (max-width: 480px) {\n  #typewriter-container-h2-2 { height: 65px; padding: 20px 0; }\n  h2#typewriter-text-h2-2 { font-size: 24pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container-h2-2\">\n  <h2 id=\"typewriter-text-h2-2\"><\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const h2 = document.getElementById('typewriter-text-h2-2');\n  if (!h2) return;\n\n  \/* --- Anti-duplicate guard (Avada can re-render) --- *\/\n  if (h2.dataset.twInit === '1') return;\n  h2.dataset.twInit = '1';\n\n  \/* --- Ensure clean mount (prevents duplicated spans) --- *\/\n  h2.innerHTML = '';\n\n  const content = document.createElement('span');\n  content.id = 'typed-content-h2-2';\n\n  const cursor = document.createElement('span');\n  cursor.className = 'cursor-h2-2';\n  cursor.textContent = '_';\n\n  h2.appendChild(content);\n  h2.appendChild(cursor);\n\n  const fullText = 'The best is yet to be built';\n  const typingSpeed = 50;\n  let currentIndex = 0;\n  let started = false;\n\n  const part1 = 'The best is yet ';\n  const highlightStart = part1.length;\n\n  function colorizeDynamic(text) {\n    if (text.length <= highlightStart) {\n      return `<span class=\"text-blue\">${text}<\/span>`;\n    } else {\n      const before = text.slice(0, highlightStart);\n      const highlighted = text.slice(highlightStart);\n      return `<span class=\"text-blue\">${before}<\/span><span class=\"text-pink\">${highlighted}<\/span>`;\n    }\n  }\n\n  function typeWriter() {\n    if (currentIndex <= fullText.length) {\n      const currentText = fullText.slice(0, currentIndex);\n      content.innerHTML = colorizeDynamic(currentText);\n      currentIndex++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor() {\n    cursor.style.animation = 'none';\n    let blinkCount = 0;\n    const blinkInterval = setInterval(() => {\n      cursor.style.opacity = cursor.style.opacity === '0' ? '1' : '0';\n      blinkCount++;\n      if (blinkCount >= 6) {\n        clearInterval(blinkInterval);\n        cursor.style.opacity = '1';\n      }\n    }, 400);\n  }\n\n  const observer = new IntersectionObserver(entries => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting && !started) {\n        started = true;\n        typeWriter();\n      }\n    });\n  }, { threshold: 0.5 });\n\n  observer.observe(h2);\n});\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-27 fusion_builder_column_1_1 1_1 fusion-flex-column columna-contenido\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0px;--awb-margin-bottom-large:46px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div style=\"text-align:center;\"><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-3 fusion-button-default-span awb-b-icon-pos-left\" style=\"--button_accent_color:var(--awb-color5);--button_accent_hover_color:var(--awb-color1);--button_border_hover_color:var(--awb-color1);--button_gradient_top_color:var(--awb-color1);--button_gradient_bottom_color:var(--awb-color1);--button_gradient_top_color_hover:var(--awb-color5);--button_gradient_bottom_color_hover:var(--awb-color5);--button_font_size:1rem;--button_margin-top:40px;\" target=\"_self\" data-hover=\"icon_position\" id=\"hablamos\"><i class=\"fa-angle-double-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><i class=\"fa-angle-double-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Tell us about your next challenge<\/span><\/a><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-10 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling fusion-no-large-visibility contenedor-animaciones transformar\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-top:130px;--awb-margin-bottom:0px;--awb-min-height:220px;--awb-background-color:var(--awb-color1);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 100% + 0px );margin-left: calc(-0px \/ 2 );margin-right: calc(-0px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-28 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0px;--awb-margin-bottom-large:20px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- ===============================\n TYPEWRITER ANIMATION H2 (RESPONSIVE ID 5)\n \"The best is yet to be built\"\n \"to be built\" in magenta + magenta cursor\n=================================== -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* \u2705 NEW IDs: #typewriter-container-responsive5 + #typewriter-text-responsive5 *\/\n#typewriter-container-responsive5{\n  display:flex;\n  justify-content:left;\n  align-items:flex-start;\n  padding:30px 0;\n  height:210px;\n  text-align:left;\n  width:1000px;\n  overflow:hidden;\n}\n\nh2#typewriter-text-responsive5{\n  font-family:'Poppins', sans-serif;\n  font-size:60px;\n  font-weight:600;\n  line-height:1.1;\n  display:inline-block;\n  margin:0;\n  white-space:pre-line;\n  word-break:break-word;\n  max-width:100%;\n}\n\n.text-blue{ color:#004a7c; }\n.text-pink{ color:#e40d4d; }\n\n\/* \u2705 Cursor renamed too (avoid collisions) *\/\n.cursor-responsive5{\n  color:#e40d4d;\n  display:inline-block;\n  animation: blink-during-responsive5 0.4s step-start infinite;\n  margin-left:2px;\n}\n\n@keyframes blink-during-responsive5{\n  50%{ opacity:0; }\n}\n\n#typed-content-responsive5{ white-space:inherit; }\n\n\/* Responsive *\/\n@media (max-width:768px){\n  #typewriter-container-responsive5{ height:150px; width:100%; }\n  h2#typewriter-text-responsive5{ font-size:32pt; }\n}\n@media (max-width:480px){\n  #typewriter-container-responsive5{ height:90px; padding:20px 0; width:100%; }\n  h2#typewriter-text-responsive5{ font-size:24pt; }\n}\n<\/style>\n\n<div id=\"typewriter-container-responsive5\">\n  <h2 id=\"typewriter-text-responsive5\"><\/h2>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function(){\n  const h2 = document.getElementById('typewriter-text-responsive5');\n  if (!h2) return;\n\n  \/* --- Anti-duplicate guard (Avada can re-render) --- *\/\n  if (h2.dataset.twInit === '1') return;\n  h2.dataset.twInit = '1';\n\n  \/* --- Ensure clean mount (prevents duplicated spans) --- *\/\n  h2.innerHTML = '';\n\n  const content = document.createElement('span');\n  content.id = 'typed-content-responsive5';\n\n  const cursor = document.createElement('span');\n  cursor.className = 'cursor-responsive5';\n  cursor.textContent = '_';\n\n  h2.appendChild(content);\n  h2.appendChild(cursor);\n\n  const fullText = 'The best is yet to be\\n built';\n  const typingSpeed = 50;\n  let currentIndex = 0;\n  let started = false;\n\n  const part1 = 'The best is yet ';\n  const highlightStart = part1.length;\n\n  function colorizeDynamic(text){\n    if (text.length <= highlightStart){\n      return `<span class=\"text-blue\">${text}<\/span>`;\n    } else {\n      const before = text.slice(0, highlightStart);\n      const highlighted = text.slice(highlightStart);\n      return `<span class=\"text-blue\">${before}<\/span><span class=\"text-pink\">${highlighted}<\/span>`;\n    }\n  }\n\n  function typeWriter(){\n    if (currentIndex <= fullText.length){\n      const currentText = fullText.slice(0, currentIndex);\n      content.innerHTML = colorizeDynamic(currentText);\n      currentIndex++;\n      setTimeout(typeWriter, typingSpeed);\n    } else {\n      finalizeCursor();\n    }\n  }\n\n  function finalizeCursor(){\n    cursor.style.animation = 'none';\n    let blinkCount = 0;\n    const blinkInterval = setInterval(() => {\n      cursor.style.opacity = (cursor.style.opacity === '0') ? '1' : '0';\n      blinkCount++;\n      if (blinkCount >= 6){\n        clearInterval(blinkInterval);\n        cursor.style.opacity = '1';\n      }\n    }, 400);\n  }\n\n  const observer = new IntersectionObserver(entries => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting && !started){\n        started = true;\n        typeWriter();\n      }\n    });\n  }, { threshold: 0.5 });\n\n  observer.observe(h2);\n});\n<\/script>\n<\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-29 fusion_builder_column_1_1 1_1 fusion-flex-column columna-contenido\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0px;--awb-margin-bottom-large:46px;--awb-spacing-left-large:0px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:0px;--awb-spacing-left-medium:0px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:0px;--awb-spacing-left-small:0px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div style=\"text-align:center;\"><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-4 fusion-button-default-span awb-b-icon-pos-left\" style=\"--button_accent_color:var(--awb-color5);--button_accent_hover_color:var(--awb-color1);--button_border_hover_color:var(--awb-color1);--button_gradient_top_color:var(--awb-color1);--button_gradient_bottom_color:var(--awb-color1);--button_gradient_top_color_hover:var(--awb-color5);--button_gradient_bottom_color_hover:var(--awb-color5);--button_font_size:1rem;--button_margin-top:40px;\" target=\"_self\" data-hover=\"icon_position\" id=\"hablamos\"><i class=\"fa-angle-double-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><i class=\"fa-angle-double-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Tell us about your next challenge<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-5595","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/pages\/5595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/comments?post=5595"}],"version-history":[{"count":5,"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/pages\/5595\/revisions"}],"predecessor-version":[{"id":7298,"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/pages\/5595\/revisions\/7298"}],"wp:attachment":[{"href":"https:\/\/puedata.com\/en\/wp-json\/wp\/v2\/media?parent=5595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}