{"id":1108,"date":"2026-03-30T08:51:37","date_gmt":"2026-03-30T08:51:37","guid":{"rendered":"https:\/\/macarenatorralba.es\/?p=1108"},"modified":"2026-06-09T10:13:03","modified_gmt":"2026-06-09T10:13:03","slug":"como-elegir-el-tipo-de-ia-para-producto","status":"publish","type":"post","link":"https:\/\/macarenatorralba.es\/es\/como-elegir-el-tipo-de-ia-para-producto\/","title":{"rendered":"No todo necesita un chatbot: c\u00f3mo elegir bien el tipo de IA para un producto"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1108\" class=\"elementor elementor-1108\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9fafb15 e-flex e-con-boxed e-con e-parent\" data-id=\"9fafb15\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h1 data-interaction-id=\"98a365a\" class=\"H1 e-98a365a-a18d3d3 e-heading-base\">No todo necesita un chatbot: c\u00f3mo elegir bien el tipo de IA para un producto<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"805fbd0\">La inteligencia artificial no aporta valor por estar visible en una interfaz conversacional, sino por resolver mejor una tarea, una decisi\u00f3n o una fricci\u00f3n concreta. Antes de elegir tecnolog\u00eda, hay que entender el proceso, el usuario, el dato disponible y el tipo de mejora que se quiere provocar.<\/p>\n\t\t\t\t\t<p class=\"e-1dd29b9-777e70e Enphasis1 e-paragraph-base\" data-interaction-id=\"1dd29b9\">IA aplicada \u00b7 Product Strategy \u00b7 Machine Learning \u00b7 IA generativa \u00b7 RAG \u00b7 NLP \u00b7 Automatizaci\u00f3n<\/p>\n\t\t\t\t<div class=\"elementor-element elementor-element-27e2922 elementor-widget elementor-widget-html\" data-id=\"27e2922\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"hero-end\"><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5ae9d59 e-flex e-con-boxed e-con e-parent\" data-id=\"5ae9d59\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h2 data-interaction-id=\"00f2ba3\" class=\"H2 e-00f2ba3-6e7ef55 e-heading-base\">La IA empieza antes del modelo<\/h2>\n\t\t\t\t\t<p class=\"Enphasis2 e-paragraph-base\" data-interaction-id=\"f81d8b5\">Elegir bien la IA de un producto empieza por entender qu\u00e9 necesita el usuario: conversar, automatizar, decidir, anticipar, buscar o comprender informaci\u00f3n.<\/p>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"97be46b\">En muchos proyectos digitales, la conversaci\u00f3n sobre inteligencia artificial empieza demasiado tarde y, a la vez, demasiado pronto. Demasiado tarde, porque aparece cuando ya se ha decidido que \u201chay que meter IA\u201d sin haber entendido bien el problema. Y demasiado pronto, porque se empieza hablando de chatbots, modelos o asistentes antes de analizar qu\u00e9 necesita realmente el producto.<br><br>Cada vez tengo m\u00e1s claro que elegir bien el tipo de IA no empieza por comparar tecnolog\u00edas, sino por entender el proceso que queremos mejorar. Qu\u00e9 tarea consume tiempo. Qu\u00e9 decisi\u00f3n se repite. Qu\u00e9 informaci\u00f3n est\u00e1 dispersa. Qu\u00e9 usuario necesita apoyo. Qu\u00e9 dato existe, con qu\u00e9 calidad y en qu\u00e9 momento se genera. Qu\u00e9 nivel de riesgo hay si el sistema se equivoca. Y qu\u00e9 grado de control humano debe mantenerse.<br><br>Un asistente conversacional puede ser \u00fatil, pero no deber\u00eda ser la respuesta autom\u00e1tica a cualquier oportunidad de IA. A veces el valor est\u00e1 en una recomendaci\u00f3n, una alerta, un sistema de clasificaci\u00f3n, un modelo predictivo, una automatizaci\u00f3n inteligente, un buscador sem\u00e1ntico, una extracci\u00f3n de informaci\u00f3n o una ayuda contextual que ni siquiera parece \u201cIA\u201d para el usuario.<br><br>La IA no deber\u00eda aplicarse porque est\u00e1 de moda, sino sobre un producto bien entendido.<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7f0d61f e-flex e-con-boxed e-con e-parent\" data-id=\"7f0d61f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h2 data-interaction-id=\"dd22d0f\" class=\"H2 e-dd22d0f-997407a e-heading-base\">Cuando el chatbot se convierte en la respuesta por defecto<\/h2>\n\t\t<div class=\"elementor-element elementor-element-ece0136 e-con-full e-flex e-con e-child\" data-id=\"ece0136\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-ee88144 e-con-full e-flex e-con e-child\" data-id=\"ee88144\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body2 e-e3473b7-41f9134 e-paragraph-base\" data-interaction-id=\"e3473b7\">Uno de los errores m\u00e1s habituales en proyectos actuales es asumir que incorporar inteligencia artificial significa a\u00f1adir un asistente conversacional a la interfaz. Como antes se dec\u00eda \u201chagamos m\u00e1s dise\u00f1o\u201d y eso a veces se traduc\u00eda en \u201chagamos pantallas m\u00e1s bonitas\u201d, ahora muchas conversaciones se resumen en \u201cmetamos IA\u201d y, casi autom\u00e1ticamente, aparece la idea de poner un bot en una esquina.<br><br>El problema no es el chatbot. El problema es usarlo como soluci\u00f3n por defecto sin haber entendido qu\u00e9 tarea debe resolver. Un chatbot puede ayudar a consultar informaci\u00f3n, guiar procesos, resolver dudas o acompa\u00f1ar al usuario en tareas abiertas. Pero no todo problema necesita una conversaci\u00f3n. Hay situaciones en las que pedir al usuario que escriba, pregunte, espere una respuesta y valide manualmente el resultado a\u00f1ade m\u00e1s fricci\u00f3n de la que elimina.<br><br>En una plataforma con procesos sociales complejos, por ejemplo, puede ser tentador pensar en un asistente conversacional para ayudar a t\u00e9cnicos, coordinadores o equipos de gesti\u00f3n. Pero quiz\u00e1 el verdadero valor est\u00e1 en automatizar el registro de informaci\u00f3n, extraer datos de documentos, sugerir pr\u00f3ximos pasos, detectar inconsistencias, generar borradores de informes, recomendar recursos o priorizar casos seg\u00fan criterios definidos. En ese contexto, la IA puede tomar muchas formas, y el chatbot es solo una de ellas.<br><br>En salud digital ocurre algo parecido. Si el objetivo es anticipar situaciones de riesgo, quiz\u00e1 no necesitamos un asistente que converse con el profesional, sino modelos capaces de analizar se\u00f1ales, detectar anomal\u00edas, identificar desviaciones respecto al comportamiento habitual de un paciente o activar alertas tempranas. La interfaz puede ser un dashboard, una notificaci\u00f3n, una priorizaci\u00f3n de casos o una explicaci\u00f3n breve del motivo de la alerta. La inteligencia est\u00e1 en el an\u00e1lisis y en la decisi\u00f3n que facilita, no necesariamente en una conversaci\u00f3n.<br><br>Tambi\u00e9n es f\u00e1cil confundir automatizaci\u00f3n con inteligencia. Automatizar una tarea repetitiva puede aportar much\u00edsimo valor, pero no siempre requiere IA generativa. A veces basta con reglas, integraciones, formularios bien dise\u00f1ados o l\u00f3gica de negocio. Otras veces s\u00ed tiene sentido usar NLP, embeddings, modelos de clasificaci\u00f3n, RAG o LLMs. La clave est\u00e1 en elegir la capacidad adecuada para el problema adecuado.<br><br><br>Cuando se empieza por la tecnolog\u00eda, el producto corre el riesgo de convertirse en una demostraci\u00f3n de IA en vez de una herramienta \u00fatil. Se generan asistentes que responden, pero no resuelven. Automatizaciones que impresionan, pero no encajan en el flujo real. Modelos que producen contenido, pero obligan al usuario a revisarlo todo. O soluciones que parecen avanzadas, pero dependen de datos incompletos, mal estructurados o poco fiables.<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d58776b e-con-full e-flex e-con e-child\" data-id=\"d58776b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" class=\"e-image-base \" data-interaction-id=\"ca7f320\" id=\"1116\" src=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-scaled.jpg\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-scaled.jpg 2560w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-300x200.jpg 300w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-1024x683.jpg 1024w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-768x512.jpg 768w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-1536x1024.jpg 1536w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-2048x1365.jpg 2048w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/cody-engel-E8jI4iSq0tQ-unsplash-18x12.jpg 18w\" alt=\"fotograf\u00eda decorativa de una taza que pone conversaciones\"\/>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4abed1b e-flex e-con-boxed e-con e-parent\" data-id=\"4abed1b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h2 data-interaction-id=\"1e0893a\" class=\"H2 e-1e0893a-1e09b9b e-heading-base\">Aterrizar IA es elegir bien el tipo de valor<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-54bdc55-84ca9db e-paragraph-base\" data-interaction-id=\"54bdc55\">Antes de decidir si una soluci\u00f3n necesita IA generativa, machine learning cl\u00e1sico, NLP, RAG, embeddings o automatizaci\u00f3n inteligente, hay que entender qu\u00e9 tipo de valor se quiere crear. No todas las capacidades de IA sirven para lo mismo, ni todas deber\u00edan integrarse de la misma manera en el producto.<\/p>\n\t\t<div class=\"elementor-element elementor-element-7696944 e-con-full e-flex e-con e-child\" data-id=\"7696944\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-41bf3c3 e-con-full e-flex e-con e-child\" data-id=\"41bf3c3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-svg-base\" data-interaction-id=\"1498867\"><\/div>\t\t<div class=\"elementor-element elementor-element-b4ffe24 e-con-full e-flex e-con e-child\" data-id=\"b4ffe24\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"07d620d\" class=\"H3 e-heading-base\">Conversar no siempre es resolver<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"3ac84e4\">Un asistente conversacional tiene sentido cuando el usuario necesita explorar, preguntar, recibir orientaci\u00f3n o navegar por informaci\u00f3n compleja de forma flexible. Pero si la tarea es r\u00e1pida, repetitiva o muy estructurada, una conversaci\u00f3n puede ser innecesaria. En esos casos, el valor puede estar en completar campos, sugerir acciones, mostrar alertas o reducir pasos dentro del flujo existente.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b0b4c6 e-con-full e-flex e-con e-child\" data-id=\"2b0b4c6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-svg-base\" data-interaction-id=\"0e5e8c3\"><\/div>\t\t<div class=\"elementor-element elementor-element-451e053 e-con-full e-flex e-con e-child\" data-id=\"451e053\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"d8ae5fb\" class=\"H3 e-heading-base\">IA cl\u00e1sica y generativa pueden convivir<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"9354f9f\">La IA generativa no sustituye a los modelos predictivos, los clasificadores o los sistemas de recomendaci\u00f3n. Resuelve problemas distintos. Un modelo cl\u00e1sico puede anticipar riesgo, priorizar casos, segmentar usuarios o detectar patrones. Un LLM puede resumir, redactar, explicar, interpretar lenguaje natural o ayudar a consultar conocimiento. En muchos productos, el mejor enfoque no es elegir uno u otro, sino combinarlos con criterio.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-06ec40a e-con-full e-flex e-con e-child\" data-id=\"06ec40a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-svg-base\" data-interaction-id=\"e625111\"><\/div>\t\t<div class=\"elementor-element elementor-element-4e5f152 e-con-full e-flex e-con e-child\" data-id=\"4e5f152\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"474387c\" class=\"H3 e-heading-base\">El dato condiciona la soluci\u00f3n<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"98ecc54\">No se puede dise\u00f1ar IA sin mirar el dato disponible. Su calidad, estructura, trazabilidad, actualizaci\u00f3n y sesgos condicionan lo que se puede automatizar, predecir o generar. Un sistema RAG puede ser muy \u00fatil si existe una base documental fiable; un modelo predictivo puede aportar valor si hay datos hist\u00f3ricos consistentes; una automatizaci\u00f3n puede fallar si la informaci\u00f3n de entrada llega incompleta o en formatos heterog\u00e9neos.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0c4d868 e-con-full e-flex e-con e-child\" data-id=\"0c4d868\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-svg-base\" data-interaction-id=\"3e823e3\"><\/div>\t\t<div class=\"elementor-element elementor-element-341499f e-con-full e-flex e-con e-child\" data-id=\"341499f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"999072e\" class=\"H3 e-heading-base\">Riesgo, explicaci\u00f3n y control importan<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"c31371d\">Cuanto m\u00e1s sensible es el contexto, m\u00e1s importante es definir qu\u00e9 puede hacer la IA y qu\u00e9 debe seguir validando una persona. No es lo mismo sugerir una etiqueta que recomendar una intervenci\u00f3n, priorizar un caso o anticipar un riesgo cl\u00ednico. En productos complejos, la IA debe dise\u00f1arse con criterios de explicabilidad, revisi\u00f3n humana, confianza y responsabilidad. No basta con que funcione; tiene que poder entenderse, supervisarse y sostenerse.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e39e3b4 e-flex e-con-boxed e-con e-parent\" data-id=\"e39e3b4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h2 data-interaction-id=\"6432882\" class=\"H2 e-6432882-2edcff9 e-heading-base\">Del problema al tipo de IA<\/h2>\n\t\t<div class=\"elementor-element elementor-element-af450e1 e-con-full e-flex e-con e-child\" data-id=\"af450e1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-1738cea e-con-full e-flex e-con e-child\" data-id=\"1738cea\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"35839e6\" class=\"Enphasis2 e-heading-base\">Trabajo para identificar qu\u00e9 capacidad inteligente aporta valor antes de decidir c\u00f3mo hacerla visible en el producto.<\/h2>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cab7ced e-con-full e-flex e-con e-child\" data-id=\"cab7ced\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-a7168aa e-con-full e-flex e-con e-child\" data-id=\"a7168aa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"fa6c2ed\">Cuando trabajo oportunidades de IA aplicada, intento no empezar por el formato. No me pregunto primero si hace falta un chatbot, un copiloto o un modelo predictivo. Empiezo por entender qu\u00e9 parte del proceso necesita mejorar y qu\u00e9 tipo de ayuda tendr\u00eda sentido para el usuario.<br><br>La primera pregunta suele ser qu\u00e9 tarea o decisi\u00f3n queremos apoyar. Puede ser una tarea administrativa que consume demasiado tiempo, una b\u00fasqueda de informaci\u00f3n compleja, una decisi\u00f3n que depende de muchos datos, una clasificaci\u00f3n repetitiva, una necesidad de anticipar riesgos o un proceso donde el usuario necesita redactar, resumir o interpretar informaci\u00f3n. Cada una de esas necesidades apunta a capacidades distintas.<br><br>Despu\u00e9s miro el contexto de uso. Qui\u00e9n interact\u00faa con el sistema, en qu\u00e9 momento, con qu\u00e9 presi\u00f3n, con qu\u00e9 nivel de autonom\u00eda y con qu\u00e9 consecuencias si la IA falla. No es lo mismo asistir a un usuario experto que ya sabe interpretar resultados que ayudar a una persona con baja familiaridad tecnol\u00f3gica. Tampoco es lo mismo proponer una mejora operativa que intervenir en un proceso cl\u00ednico, social o regulado.<br><\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-86f1ff4 e-con-full e-flex e-con e-child\" data-id=\"86f1ff4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"599f531\">El siguiente punto es el dato. Aqu\u00ed se decide gran parte de la viabilidad. Si hay documentos fiables, actualizados y bien estructurados, un enfoque con RAG puede ayudar a consultar conocimiento sin depender solo de la memoria del modelo. Si hay lenguaje natural en formularios, entrevistas, tickets o curr\u00edculums, NLP y embeddings pueden ayudar a extraer, comparar o clasificar informaci\u00f3n. Si hay hist\u00f3rico suficiente y variables consistentes, el machine learning predictivo puede servir para anticipar patrones, priorizar casos o detectar anomal\u00edas.<br><br>Tambi\u00e9n hay que decidir c\u00f3mo se integra la salida en la experiencia. A veces la IA debe aparecer como una respuesta conversacional. Otras veces como una recomendaci\u00f3n ordenada, un score, una alerta, una sugerencia de autocompletado, un resumen editable, una explicaci\u00f3n contextual o una acci\u00f3n automatizada que el usuario puede aceptar, corregir o descartar. La interfaz debe responder al tipo de decisi\u00f3n, no al hype de la tecnolog\u00eda.<br><br>Por \u00faltimo, la IA necesita criterios de validaci\u00f3n. Qu\u00e9 significa que funcione bien. Qu\u00e9 errores son aceptables. Qu\u00e9 debe revisar una persona. C\u00f3mo se mide si reduce tiempo, mejora calidad del dato, aumenta precisi\u00f3n, facilita una decisi\u00f3n o mejora la experiencia. Sin esa capa de validaci\u00f3n, la IA puede parecer \u00fatil en una demo y fracasar en el uso real.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a6d9917 e-flex e-con-boxed e-con e-parent\" data-id=\"a6d9917\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h2 data-interaction-id=\"2d0a5ed\" class=\"H2 e-2d0a5ed-31a5d3c e-heading-base\">Aplicar IA es decidir d\u00f3nde aporta valor<\/h2>\n\t\t<div class=\"elementor-element elementor-element-bf8c5ad e-con-full e-flex e-con e-child\" data-id=\"bf8c5ad\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"bac3d41\" class=\"Enphasis2 e-heading-base\">No se trata de hacer que el producto parezca m\u00e1s inteligente, sino de conseguir que ayude mejor<\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"17463f6\">Elegir bien una soluci\u00f3n de inteligencia artificial no consiste en decidir si usamos un chatbot, un LLM, RAG, embeddings, machine learning predictivo o automatizaci\u00f3n inteligente como si fueran piezas intercambiables. Consiste en entender qu\u00e9 problema queremos resolver, qu\u00e9 tipo de dato tenemos, qu\u00e9 usuario interviene, qu\u00e9 decisi\u00f3n se quiere mejorar y qu\u00e9 nivel de riesgo estamos dispuestos a asumir.<br><br>Cuando esa reflexi\u00f3n se hace bien, la IA deja de ser una capa decorativa y se convierte en una capacidad real de producto. Puede ayudar a reducir carga manual, ordenar informaci\u00f3n, anticipar situaciones, generar borradores, recomendar acciones, detectar anomal\u00edas o facilitar decisiones complejas. Pero para que eso ocurra, tiene que estar conectada con el proceso, integrada en la experiencia y dise\u00f1ada con criterios de control, confianza y validaci\u00f3n humana.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-61e184d e-flex e-con-boxed e-con e-parent\" data-id=\"61e184d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-078a060 elementor-widget elementor-widget-html\" data-id=\"078a060\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- NAVEGACI\u00d3N REFLEXI\u00d3N ANTERIOR \/ SIGUIENTE -->\n<section class=\"mt-simple-post-nav is-loading\" id=\"mtSimplePostNav\" data-category-slug=\"insight\" aria-label=\"Navegaci\u00f3n entre reflexiones\">\n  <a class=\"mt-simple-post-nav-link mt-simple-post-nav-prev\" id=\"mtSimplePostPrev\" href=\"#\">\n    <span class=\"mt-simple-arrow mt-simple-arrow-left\"><\/span>\n    <span class=\"mt-simple-post-title\">Entrada anterior<\/span>\n  <\/a>\n\n  <a class=\"mt-simple-post-nav-link mt-simple-post-nav-next\" id=\"mtSimplePostNext\" href=\"#\">\n    <span class=\"mt-simple-post-title\">Entrada siguiente<\/span>\n    <span class=\"mt-simple-arrow mt-simple-arrow-right\"><\/span>\n  <\/a>\n<\/section>\n\n<style>\n\/* ===== INSIGHT DETAIL SIMPLE NAVIGATION ===== *\/\n\n.mt-simple-post-nav {\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  gap: 32px;\n  margin: 72px 0 0 0;\n  padding: 0;\n}\n\n.mt-simple-post-nav-link {\n  display: inline-flex;\n  align-items: center;\n  gap: 12px;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 15px !important;\n  font-weight: 500 !important;\n  line-height: 1.3 !important;\n  color: #4E9288 !important;\n  text-decoration: none !important;\n  transition: color 0.25s ease, transform 0.25s ease;\n}\n\n.mt-simple-post-nav-link:hover {\n  color: #2B5E56 !important;\n}\n\n.mt-simple-post-nav-prev:hover {\n  transform: translateX(-3px);\n}\n\n.mt-simple-post-nav-next:hover {\n  transform: translateX(3px);\n}\n\n.mt-simple-post-nav-next {\n  margin-left: auto;\n  text-align: right;\n}\n\n.mt-simple-arrow {\n  width: 8px;\n  height: 8px;\n  border-top: 1.6px solid currentColor;\n  border-right: 1.6px solid currentColor;\n  display: inline-block;\n  flex: 0 0 auto;\n}\n\n.mt-simple-arrow-left {\n  transform: rotate(-135deg);\n}\n\n.mt-simple-arrow-right {\n  transform: rotate(45deg);\n}\n\n.mt-simple-post-title {\n  display: inline-block;\n}\n\n.mt-simple-post-nav.is-loading {\n  opacity: 0;\n  pointer-events: none;\n}\n\n.mt-simple-post-nav.is-empty {\n  display: none !important;\n}\n\n\/* Responsive *\/\n@media (max-width: 767px) {\n  .mt-simple-post-nav {\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n    gap: 18px;\n    margin-top: 56px;\n    flex-wrap: nowrap;\n  }\n\n  .mt-simple-post-nav-link {\n    font-size: 15px !important;\n    line-height: 1.6 !important;\n    color: #4E9288 !important;\n    white-space: nowrap;\n  }\n\n  .mt-simple-post-nav-prev {\n    justify-content: flex-start;\n  }\n\n  .mt-simple-post-nav-next {\n    margin-left: auto;\n    justify-content: flex-end;\n    text-align: right;\n  }\n\n  .mt-simple-post-title {\n    white-space: nowrap;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  const DEFAULT_CATEGORY_SLUG = \"insight\";\n  let resizeTimer = null;\n\n  function isEnglish() {\n    const path = window.location.pathname || \"\";\n    return path.startsWith(\"\/en\/\") || path === \"\/en\";\n  }\n\n  function isMobileViewport() {\n    return window.innerWidth <= 767;\n  }\n\n  function getPrevFallbackText() {\n    return isEnglish() ? \"Previous entry\" : \"Entrada anterior\";\n  }\n\n  function getNextFallbackText() {\n    return isEnglish() ? \"Next entry\" : \"Entrada siguiente\";\n  }\n\n  function getPrevMobileText() {\n    return isEnglish() ? \"Previous\" : \"Anterior\";\n  }\n\n  function getNextMobileText() {\n    return isEnglish() ? \"Next\" : \"Siguiente\";\n  }\n\n  function cleanText(value) {\n    const div = document.createElement(\"div\");\n    div.innerHTML = value || \"\";\n\n    return (div.textContent || div.innerText || \"\")\n      .replace(\/\\s+\/g, \" \")\n      .trim();\n  }\n\n  function normalizeSlugFromPath(pathname) {\n    let path = pathname || window.location.pathname || \"\";\n\n    path = path\n      .replace(\/^\\\/es\\\/\/, \"\/\")\n      .replace(\/^\\\/en\\\/\/, \"\/\")\n      .replace(\/^\\\/+|\\\/+$\/g, \"\");\n\n    const parts = path.split(\"\/\").filter(Boolean);\n\n    return parts.length ? parts[parts.length - 1] : \"\";\n  }\n\n  function localizeUrl(url) {\n    if (!url) return \"#\";\n\n    const currentPath = window.location.pathname || \"\";\n    let cleanUrl = url.replace(window.location.origin, \"\");\n\n    if (currentPath.startsWith(\"\/es\/\")) {\n      cleanUrl = cleanUrl.replace(\/^\\\/en\\\/\/, \"\/es\/\");\n    }\n\n    if (currentPath.startsWith(\"\/en\/\")) {\n      cleanUrl = cleanUrl.replace(\/^\\\/es\\\/\/, \"\/en\/\");\n    }\n\n    return cleanUrl;\n  }\n\n  async function fetchCategoryId(categorySlug) {\n    const response = await fetch(\n      \"\/wp-json\/wp\/v2\/categories?slug=\" + encodeURIComponent(categorySlug)\n    );\n\n    if (!response.ok) {\n      throw new Error(\"No se pudo cargar la categor\u00eda\");\n    }\n\n    const categories = await response.json();\n\n    if (!categories || !categories.length) {\n      throw new Error(\"No existe la categor\u00eda \" + categorySlug);\n    }\n\n    return categories[0].id;\n  }\n\n  async function fetchInsightPosts(categoryId) {\n    const url =\n      \"\/wp-json\/wp\/v2\/posts\" +\n      \"?categories=\" + encodeURIComponent(categoryId) +\n      \"&per_page=100\" +\n      \"&orderby=date\" +\n      \"&order=desc\" +\n      \"&_fields=link,slug,title,date\";\n\n    const response = await fetch(url);\n\n    if (!response.ok) {\n      throw new Error(\"No se pudieron cargar las reflexiones\");\n    }\n\n    return await response.json();\n  }\n\n  function updatePostNavLabels() {\n    const prevLink = document.getElementById(\"mtSimplePostPrev\");\n    const nextLink = document.getElementById(\"mtSimplePostNext\");\n\n    if (!prevLink || !nextLink) return;\n\n    const prevTitleEl = prevLink.querySelector(\".mt-simple-post-title\");\n    const nextTitleEl = nextLink.querySelector(\".mt-simple-post-title\");\n\n    if (!prevTitleEl || !nextTitleEl) return;\n\n    const prevFullTitle = prevLink.dataset.fullTitle || getPrevFallbackText();\n    const nextFullTitle = nextLink.dataset.fullTitle || getNextFallbackText();\n\n    prevTitleEl.textContent = isMobileViewport() ? getPrevMobileText() : prevFullTitle;\n    nextTitleEl.textContent = isMobileViewport() ? getNextMobileText() : nextFullTitle;\n\n    prevLink.setAttribute(\"aria-label\", getPrevFallbackText() + \": \" + prevFullTitle);\n    nextLink.setAttribute(\"aria-label\", getNextFallbackText() + \": \" + nextFullTitle);\n  }\n\n  function renderInsightNav(posts) {\n    const nav = document.getElementById(\"mtSimplePostNav\");\n    const prevLink = document.getElementById(\"mtSimplePostPrev\");\n    const nextLink = document.getElementById(\"mtSimplePostNext\");\n\n    if (!nav || !prevLink || !nextLink || !posts || posts.length < 2) {\n      if (nav) nav.classList.add(\"is-empty\");\n      return;\n    }\n\n    const currentSlug = normalizeSlugFromPath(window.location.pathname);\n\n    const currentIndex = posts.findIndex(function (post) {\n      return post.slug === currentSlug;\n    });\n\n    if (currentIndex === -1) {\n      nav.classList.add(\"is-empty\");\n      return;\n    }\n\n    \/*\n      Orden por fecha descendente:\n      posts[0] = m\u00e1s reciente\n\n      Entrada anterior = m\u00e1s antigua.\n      Si estamos en la m\u00e1s antigua, vuelve a la m\u00e1s reciente.\n\n      Entrada siguiente = m\u00e1s reciente.\n      Si estamos en la m\u00e1s reciente, vuelve a la m\u00e1s antigua.\n    *\/\n    const prevIndex = currentIndex === posts.length - 1 ? 0 : currentIndex + 1;\n    const nextIndex = currentIndex === 0 ? posts.length - 1 : currentIndex - 1;\n\n    const prevPost = posts[prevIndex];\n    const nextPost = posts[nextIndex];\n\n    const prevTitle = cleanText(prevPost.title && prevPost.title.rendered) || getPrevFallbackText();\n    const nextTitle = cleanText(nextPost.title && nextPost.title.rendered) || getNextFallbackText();\n\n    prevLink.href = localizeUrl(prevPost.link);\n    nextLink.href = localizeUrl(nextPost.link);\n\n    prevLink.dataset.fullTitle = prevTitle;\n    nextLink.dataset.fullTitle = nextTitle;\n\n    updatePostNavLabels();\n\n    nav.classList.remove(\"is-loading\");\n  }\n\n  async function initSimplePostNavigation() {\n    const nav = document.getElementById(\"mtSimplePostNav\");\n\n    if (!nav) return;\n    if (nav.dataset.initialized === \"true\") return;\n\n    nav.dataset.initialized = \"true\";\n    nav.classList.add(\"is-loading\");\n\n    const categorySlug = nav.getAttribute(\"data-category-slug\") || DEFAULT_CATEGORY_SLUG;\n\n    try {\n      const categoryId = await fetchCategoryId(categorySlug);\n      const posts = await fetchInsightPosts(categoryId);\n      renderInsightNav(posts);\n    } catch (error) {\n      nav.classList.add(\"is-empty\");\n      console.warn(\"No se pudo inicializar la navegaci\u00f3n de reflexiones:\", error);\n    }\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initSimplePostNavigation);\n  } else {\n    initSimplePostNavigation();\n  }\n\n  window.addEventListener(\"load\", initSimplePostNavigation);\n\n  window.addEventListener(\"resize\", function () {\n    clearTimeout(resizeTimer);\n\n    resizeTimer = setTimeout(function () {\n      updatePostNavLabels();\n    }, 150);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f361c0d e-flex e-con-boxed e-con e-parent\" data-id=\"f361c0d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<h1 data-interaction-id=\"66a0915\" class=\"H2-W e-66a0915-ad4d10a e-heading-base\">Hablemos de IA aplicada con sentido de producto<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"cc84cef\">Podemos conversar sobre producto, UX e inteligencia artificial aplicada para identificar qu\u00e9 tipo de IA tiene sentido, c\u00f3mo integrarla en flujos reales y c\u00f3mo convertir una oportunidad tecnol\u00f3gica en valor \u00fatil para usuarios, negocio y equipos t\u00e9cnicos.<\/p>\n\t\t<div class=\"elementor-element elementor-element-c941544 e-con-full e-flex e-con e-child\" data-id=\"c941544\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c06e277 elementor-widget elementor-widget-button\" data-id=\"c06e277\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"mailto:emacarenatorralba@gmail.com\" id=\"contacto\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Contacto<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cb67590 e-flex e-con-boxed e-con e-parent\" data-id=\"cb67590\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-ca1ebf3 e-con-full e-flex e-con e-child\" data-id=\"ca1ebf3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f8b17c0 e-con-full e-flex e-con e-child\" data-id=\"f8b17c0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h1 data-interaction-id=\"9a5f30e\" class=\"Enphasis1 e-heading-base\">Macarena Torralba<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"1dffe89\">Product Innovacion \u00b7 UX Strategy \u00b7 IA &amp; Emerging Tech<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1be5f6c e-con-full e-flex e-con e-child\" data-id=\"1be5f6c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body1 e-7f5b368-0cfab22 e-paragraph-base\" data-interaction-id=\"7f5b368\"><a href=\"mailto:emacarenatorralba@gmail.com\" target=\"_self\" class=\"e-paragraph-link-base\">\n\t\tMail\n\t<\/a><\/p>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"957abd9\"><a href=\"https:\/\/www.linkedin.com\/in\/macarenatorralbagarcia\/\" target=\"_blank\" class=\"e-paragraph-link-base\">\n\t\tLinkedin\n\t<\/a><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b52953d e-con-full e-flex e-con e-child\" data-id=\"b52953d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h1 data-interaction-id=\"ae53df7\" class=\"e-ae53df7-cc7d293 Body1 e-heading-base\">Definiendo y aterrizando productos digitales complejos desde la intersecci\u00f3n entre experiencia, tecnolog\u00eda e innovaci\u00f3n.<\/h1>\n\t\t<div class=\"elementor-element elementor-element-aedef96 e-con-full e-flex e-con e-child\" data-id=\"aedef96\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7dc1a0f elementor-widget elementor-widget-html\" data-id=\"7dc1a0f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<header class=\"mt-header\" id=\"mtHeader\">\n  <div class=\"mt-header-inner\">\n    <a class=\"mt-brand\" href=\"\/es\/\">\n      <span class=\"mt-brand-name\">Macarena Torralba<\/span>\n      <span class=\"mt-brand-role\">Product Innovation \u00b7 UX Strategy \u00b7 IA & Emerging Tech<\/span>\n    <\/a>\n\n    <button class=\"mt-burger\" id=\"mtBurger\" type=\"button\" aria-label=\"Abrir men\u00fa\" aria-expanded=\"false\">\n      <span><\/span>\n      <span><\/span>\n    <\/button>\n  <\/div>\n\n  <nav class=\"mt-menu-overlay\" id=\"mtNav\" aria-label=\"Men\u00fa principal\">\n    <div class=\"mt-menu-inner\">\n\n      <div class=\"mt-menu-top\">\n        <a class=\"mt-menu-brand\" href=\"\/es\/\">\n          <span class=\"mt-menu-brand-name\">Macarena Torralba<\/span>\n          <span class=\"mt-menu-brand-role\">Product Innovation \u00b7 UX Strategy \u00b7 IA & Emerging Tech<\/span>\n        <\/a>\n\n        <button class=\"mt-menu-close\" id=\"mtMenuClose\" type=\"button\" aria-label=\"Cerrar men\u00fa\">\n          <span><\/span>\n          <span><\/span>\n        <\/button>\n      <\/div>\n\n      <div class=\"mt-menu-content\">\n        <div class=\"mt-menu-left\">\n          <a href=\"\/es\/\" class=\"mt-menu-link\" data-menu=\"home\">Sobre m\u00ed<\/a>\n          <a href=\"\/es\/proyectos\/\" class=\"mt-menu-link\" data-menu=\"proyectos\">Mis proyectos<\/a>\n          <a href=\"\/es\/reflexiones\/\" class=\"mt-menu-link\" data-menu=\"reflexiones\">Reflexiones<\/a>\n          <a href=\"\/es\/contacto\/\" class=\"mt-menu-link\" data-menu=\"contacto\">Contacto<\/a>\n          <a href=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Macarena_Torralba_CV.pdf\" class=\"mt-menu-cv\" target=\"_blank\" rel=\"noopener\">Descargar CV<\/a>\n        <\/div>\n\n        <div class=\"mt-menu-right\">\n          <div class=\"mt-contact-block\">\n            <span class=\"mt-contact-title\">Contacto<\/span>\n            <a href=\"mailto:emacarenatorralba@gmail.com\">emacarenatorralba@gmail.com<\/a>\n            <a href=\"https:\/\/www.linkedin.com\/in\/macarenatorralbagarcia\/\" target=\"_blank\" rel=\"noopener\">Linkedin<\/a>\n          <\/div>\n\n          <div class=\"mt-lang-switch\" aria-label=\"Cambiar idioma\">\n            <a href=\"#\" class=\"mt-lang-option\" id=\"mtLangEN\">EN<\/a>\n            <a href=\"#\" class=\"mt-lang-option\" id=\"mtLangES\">ES<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/nav>\n<\/header>\n\n<style>\n\/* ===== HEADER BASE ===== *\/\n\n.mt-header {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  z-index: 9999;\n  background: transparent !important;\n  box-shadow: none !important;\n  transition: background-color 0.28s ease, box-shadow 0.28s ease, backdrop-filter 0.28s ease;\n}\n\nbody.admin-bar .mt-header {\n  top: 32px;\n}\n\n@media (max-width: 782px) {\n  body.admin-bar .mt-header {\n    top: 46px;\n  }\n}\n\n.mt-header-inner,\n.mt-menu-inner {\n  width: min(calc(100% - 160px), 1320px);\n  margin-left: auto;\n  margin-right: auto;\n}\n\n.mt-header-inner {\n  padding: 22px 0;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.mt-brand {\n  display: flex;\n  flex-direction: column;\n  text-decoration: none;\n  gap: 2px;\n}\n\n.mt-brand-name {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 16px;\n  font-weight: 600;\n  line-height: 1.2;\n  color: #ffffff;\n  transition: color 0.28s ease;\n}\n\n.mt-brand-role {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1.25;\n  color: rgba(255,255,255,0.72);\n  transition: color 0.28s ease;\n}\n\n\/* Burger *\/\n.mt-burger {\n  width: 44px;\n  height: 44px;\n  border: 1px solid rgba(255,255,255,0.9);\n  border-radius: 999px;\n  background: #ffffff;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  gap: 6px;\n  cursor: pointer;\n  padding: 0;\n  appearance: none;\n  -webkit-appearance: none;\n  transition: border-color 0.28s ease, background-color 0.28s ease, box-shadow 0.28s ease;\n}\n\n.mt-burger span {\n  width: 18px;\n  height: 1.5px;\n  border-radius: 999px;\n  background: #2B5E56;\n  transition: transform 0.28s ease, background-color 0.28s ease;\n}\n\n.mt-burger:hover,\n.mt-burger:focus,\n.mt-burger:active {\n  border-color: #2B5E56 !important;\n  background: #2B5E56 !important;\n  box-shadow: 0 8px 20px rgba(43,94,86,0.22) !important;\n}\n\n.mt-burger:hover span,\n.mt-burger:focus span,\n.mt-burger:active span {\n  background: #ffffff !important;\n}\n\n\/* Estado oscuro sobre hero *\/\n.mt-header.is-dark {\n  background: rgba(16, 42, 36, 0.94) !important;\n  backdrop-filter: blur(10px);\n  box-shadow: 0 8px 24px rgba(0,0,0,0.08) !important;\n}\n\n.mt-header.is-dark .mt-burger {\n  border-color: rgba(255,255,255,0.9);\n  background: #ffffff;\n}\n\n.mt-header.is-dark .mt-burger span {\n  background: #2B5E56;\n}\n\n\/* Estado blanco despu\u00e9s del hero *\/\n.mt-header.is-cream {\n  background: rgba(255, 255, 255, 0.96) !important;\n  backdrop-filter: blur(10px);\n  box-shadow: 0 8px 24px rgba(172,140,125,0.12) !important;\n}\n\n.mt-header.is-cream .mt-brand-name {\n  color: #111111;\n}\n\n.mt-header.is-cream .mt-brand-role {\n  color: #A07C6B;\n}\n\n.mt-header.is-cream .mt-burger {\n  border-color: rgba(43,94,86,0.28);\n  background: rgba(43,94,86,0.06);\n}\n\n.mt-header.is-cream .mt-burger span {\n  background: #2B5E56;\n}\n\n.mt-header.is-cream .mt-burger:hover,\n.mt-header.is-cream .mt-burger:focus,\n.mt-header.is-cream .mt-burger:active {\n  border-color: #2B5E56 !important;\n  background: #2B5E56 !important;\n}\n\n.mt-header.is-cream .mt-burger:hover span,\n.mt-header.is-cream .mt-burger:focus span,\n.mt-header.is-cream .mt-burger:active span {\n  background: #ffffff !important;\n}\n\n\/* ===== OVERLAY MENU ===== *\/\n\n.mt-menu-overlay {\n  position: fixed;\n  left: 0;\n  right: 0;\n  top: 0;\n  background: #F7F1E8;\n  z-index: 10000;\n  opacity: 0;\n  visibility: hidden;\n  pointer-events: none;\n  transform: translateY(-28px);\n  transition: opacity 0.32s ease, transform 0.32s ease, visibility 0.32s ease;\n  overflow-y: auto;\n  max-height: 100vh;\n}\n\nbody.admin-bar .mt-menu-overlay {\n  top: 32px;\n  max-height: calc(100vh - 32px);\n}\n\n@media (max-width: 782px) {\n  body.admin-bar .mt-menu-overlay {\n    top: 46px;\n    max-height: calc(100vh - 46px);\n  }\n}\n\n.mt-menu-overlay.is-open {\n  opacity: 1;\n  visibility: visible;\n  pointer-events: auto;\n  transform: translateY(0);\n}\n\n.mt-menu-inner {\n  padding-top: 48px;\n  padding-bottom: 72px;\n  display: flex;\n  flex-direction: column;\n}\n\n.mt-menu-top {\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  margin-bottom: 96px;\n}\n\n.mt-menu-brand {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n  text-decoration: none;\n}\n\n.mt-menu-brand-name {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 18px;\n  font-weight: 600;\n  color: #111111;\n  line-height: 1.2;\n}\n\n.mt-menu-brand-role {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 14px;\n  font-weight: 400;\n  color: #A07C6B;\n  line-height: 1.3;\n}\n\n\/* Bot\u00f3n cerrar *\/\n.mt-menu-close {\n  width: 44px;\n  height: 44px;\n  min-width: 44px;\n  min-height: 44px;\n  border-radius: 999px;\n  border: 1px solid #111111;\n  background: transparent;\n  cursor: pointer;\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0;\n  appearance: none;\n  -webkit-appearance: none;\n  font-size: 0;\n  line-height: 0;\n  transition: background-color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;\n}\n\n.mt-menu-close span {\n  position: absolute;\n  width: 16px;\n  height: 1.4px;\n  background: #111111;\n  border-radius: 999px;\n  transition: background-color 0.25s ease;\n}\n\n.mt-menu-close span:first-child {\n  transform: rotate(45deg);\n}\n\n.mt-menu-close span:last-child {\n  transform: rotate(-45deg);\n}\n\n.mt-menu-close:hover,\n.mt-menu-close:focus,\n.mt-menu-close:active {\n  background: #2B5E56 !important;\n  border-color: #2B5E56 !important;\n  box-shadow: 0 8px 20px rgba(43,94,86,0.22) !important;\n}\n\n.mt-menu-close:hover span,\n.mt-menu-close:focus span,\n.mt-menu-close:active span {\n  background: #ffffff !important;\n}\n\n\/* Contenido *\/\n.mt-menu-content {\n  display: grid;\n  grid-template-columns: 1.2fr 1fr;\n  gap: 120px;\n  align-items: start;\n}\n\n.mt-menu-left {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  gap: 34px;\n}\n\n.mt-menu-left a {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 30px;\n  line-height: 1.15;\n  font-weight: 500;\n  color: #2B5E56;\n  text-decoration: none;\n  transition: color 0.25s ease, transform 0.25s ease, background-color 0.25s ease;\n}\n\n.mt-menu-left .mt-menu-link {\n  width: 100%;\n  padding: 18px 18px;\n  border-radius: 0;\n}\n\n.mt-menu-left .mt-menu-link:hover,\n.mt-menu-left .mt-menu-link.is-selected {\n  background: #F0E6D9;\n  color: #2B5E56;\n  transform: translateX(4px);\n}\n\n.mt-menu-left .mt-menu-cv {\n  width: fit-content;\n  margin-top: 8px;\n  font-size: 15px;\n  line-height: 1;\n  font-weight: 600;\n  color: #F7F7F5;\n  background: #2B5E56;\n  padding: 16px 24px;\n  border-radius: 999px;\n}\n\n.mt-menu-left .mt-menu-cv:hover {\n  color: #F7F7F5;\n  background: #4E9288;\n  transform: translateY(-2px);\n}\n\n.mt-menu-right {\n  display: flex;\n  flex-direction: column;\n  gap: 36px;\n}\n\n.mt-contact-block {\n  display: flex;\n  flex-direction: column;\n  gap: 22px;\n}\n\n.mt-contact-title {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 20px;\n  font-weight: 600;\n  color: #A07C6B;\n  line-height: 1.2;\n}\n\n.mt-contact-block a {\n  font-family: \"Poppins\", sans-serif;\n  font-size: 15px;\n  font-weight: 400;\n  color: #444444;\n  text-decoration: underline;\n  text-underline-offset: 3px;\n}\n\n.mt-contact-block a:hover {\n  color: #2B5E56;\n}\n\n.mt-lang-switch {\n  display: inline-flex;\n  width: fit-content;\n  border: 1px solid #2B5E56;\n  border-radius: 999px;\n  overflow: hidden;\n  margin-top: 8px;\n}\n\n.mt-lang-option {\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 14px !important;\n  font-weight: 500;\n  text-decoration: none;\n  color: #2B5E56;\n  padding: 10px 16px;\n  line-height: 1;\n  min-width: 52px;\n  text-align: center;\n  transition: background-color 0.25s ease, color 0.25s ease;\n}\n\n.mt-lang-option:hover {\n  background: #F0E6D9;\n  color: #2B5E56;\n}\n\n.mt-lang-option.is-active {\n  background: #2B5E56;\n  color: #F7F7F5;\n}\n\n\/* Animaci\u00f3n interna *\/\n.mt-menu-overlay .mt-menu-brand,\n.mt-menu-overlay .mt-menu-left,\n.mt-menu-overlay .mt-menu-right,\n.mt-menu-overlay .mt-menu-close {\n  opacity: 0;\n  transform: translateY(-18px);\n  transition: opacity 0.34s ease, transform 0.34s ease;\n}\n\n.mt-menu-overlay.is-open .mt-menu-brand,\n.mt-menu-overlay.is-open .mt-menu-left,\n.mt-menu-overlay.is-open .mt-menu-right,\n.mt-menu-overlay.is-open .mt-menu-close {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n.mt-menu-overlay.is-open .mt-menu-brand {\n  transition-delay: 0.04s;\n}\n\n.mt-menu-overlay.is-open .mt-menu-close {\n  transition-delay: 0.06s;\n}\n\n.mt-menu-overlay.is-open .mt-menu-left {\n  transition-delay: 0.12s;\n}\n\n.mt-menu-overlay.is-open .mt-menu-right {\n  transition-delay: 0.18s;\n}\n\nbody.mt-menu-open {\n  overflow: hidden;\n}\n\n\/* Responsive *\/\n@media (max-width: 1200px) {\n  .mt-header-inner,\n  .mt-menu-inner {\n    width: calc(100% - 64px);\n  }\n}\n\n@media (max-width: 767px) {\n  .mt-header-inner,\n  .mt-menu-inner {\n    width: calc(100% - 40px);\n  }\n\n  .mt-header-inner {\n    padding: 18px 0;\n  }\n\n  .mt-brand-name {\n    font-size: 15px;\n  }\n\n  .mt-brand-role {\n    font-size: 12px;\n  }\n\n  .mt-menu-inner {\n    padding-top: 32px;\n    padding-bottom: 56px;\n  }\n\n  .mt-menu-top {\n    margin-bottom: 64px;\n  }\n\n  .mt-menu-content {\n    grid-template-columns: 1fr;\n    gap: 64px;\n  }\n\n  .mt-menu-left {\n    gap: 24px;\n  }\n\n  .mt-menu-left a {\n    font-size: 28px;\n  }\n\n  .mt-menu-left .mt-menu-link {\n    padding: 16px 14px;\n  }\n\n  .mt-menu-left .mt-menu-cv {\n    font-size: 15px;\n  }\n\n  .mt-menu-right {\n    gap: 32px;\n  }\n\n  .mt-menu-close {\n    width: 42px;\n    height: 42px;\n    min-width: 42px;\n    min-height: 42px;\n  }\n\n  .mt-menu-close span {\n    width: 15px;\n  }\n\n  .mt-lang-option {\n    font-size: 14px !important;\n    padding: 10px 15px;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  function initMacarenaHeader() {\n    const header = document.getElementById(\"mtHeader\");\n    const burger = document.getElementById(\"mtBurger\");\n    const closeBtn = document.getElementById(\"mtMenuClose\");\n    const nav = document.getElementById(\"mtNav\");\n    const heroEnd = document.getElementById(\"hero-end\");\n    const langEN = document.getElementById(\"mtLangEN\");\n    const langES = document.getElementById(\"mtLangES\");\n\n    if (!header || !burger || !nav) return;\n\n    if (header.dataset.initialized === \"true\") return;\n    header.dataset.initialized = \"true\";\n\n    function updateHeaderState() {\n      const scrollY = window.scrollY || window.pageYOffset;\n\n      header.classList.remove(\"is-dark\", \"is-cream\");\n\n      if (!heroEnd) {\n        header.classList.add(\"is-cream\");\n        return;\n      }\n\n      const heroBottom = heroEnd.getBoundingClientRect().top + scrollY;\n\n      if (scrollY < 80) {\n        return;\n      }\n\n      if (scrollY < heroBottom - 90) {\n        header.classList.add(\"is-dark\");\n      } else {\n        header.classList.add(\"is-cream\");\n      }\n    }\n\n    function openMenu() {\n      nav.classList.add(\"is-open\");\n      document.body.classList.add(\"mt-menu-open\");\n      burger.setAttribute(\"aria-expanded\", \"true\");\n    }\n\n    function closeMenu() {\n      nav.classList.remove(\"is-open\");\n      document.body.classList.remove(\"mt-menu-open\");\n      burger.setAttribute(\"aria-expanded\", \"false\");\n    }\n\n    function toggleMenu(event) {\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (nav.classList.contains(\"is-open\")) {\n        closeMenu();\n      } else {\n        openMenu();\n      }\n    }\n\n    function updateSelectedMenuItem() {\n      const path = window.location.pathname;\n      const menuLinks = nav.querySelectorAll(\".mt-menu-link\");\n\n      menuLinks.forEach(function (link) {\n        link.classList.remove(\"is-selected\");\n      });\n\n      let active = \"home\";\n\n      if (path.includes(\"\/proyectos\")) {\n        active = \"proyectos\";\n      } else if (path.includes(\"\/reflexiones\")) {\n        active = \"reflexiones\";\n      } else if (path.includes(\"\/contacto\")) {\n        active = \"contacto\";\n      } else {\n        active = \"home\";\n      }\n\n      const activeLink = nav.querySelector('[data-menu=\"' + active + '\"]');\n\n      if (activeLink) {\n        activeLink.classList.add(\"is-selected\");\n      }\n    }\n\n    function updateLanguageLinks() {\n      if (!langEN || !langES) return;\n\n      const currentPath = window.location.pathname;\n      const search = window.location.search || \"\";\n      const hash = window.location.hash || \"\";\n\n      let pathWithoutLang = currentPath;\n\n      if (currentPath.startsWith(\"\/es\/\")) {\n        pathWithoutLang = currentPath.replace(\/^\\\/es\/, \"\");\n        langES.classList.add(\"is-active\");\n        langEN.classList.remove(\"is-active\");\n      } else if (currentPath.startsWith(\"\/en\/\")) {\n        pathWithoutLang = currentPath.replace(\/^\\\/en\/, \"\");\n        langEN.classList.add(\"is-active\");\n        langES.classList.remove(\"is-active\");\n      } else {\n        langES.classList.add(\"is-active\");\n        langEN.classList.remove(\"is-active\");\n      }\n\n      if (pathWithoutLang === \"\") {\n        pathWithoutLang = \"\/\";\n      }\n\n      langES.href = \"\/es\" + pathWithoutLang + search + hash;\n      langEN.href = \"\/en\" + pathWithoutLang + search + hash;\n    }\n\n    burger.addEventListener(\"click\", toggleMenu);\n\n    if (closeBtn) {\n      closeBtn.addEventListener(\"click\", function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n        closeMenu();\n      });\n    }\n\n    nav.querySelectorAll(\"a\").forEach(function (link) {\n      link.addEventListener(\"click\", function () {\n        closeMenu();\n      });\n    });\n\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Escape\") {\n        closeMenu();\n      }\n    });\n\n    window.addEventListener(\"scroll\", updateHeaderState);\n    window.addEventListener(\"resize\", updateHeaderState);\n\n    updateHeaderState();\n    updateSelectedMenuItem();\n    updateLanguageLinks();\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initMacarenaHeader);\n  } else {\n    initMacarenaHeader();\n  }\n\n  window.addEventListener(\"load\", initMacarenaHeader);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-031ac7a elementor-widget elementor-widget-html\" data-id=\"031ac7a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n.etiqueta {\n  display: inline-flex !important;\n  width: fit-content !important;\n  max-width: max-content !important;\n  white-space: nowrap !important;\n  align-items: center !important;\n  justify-content: center !important;\n  padding: 4px 10px !important;\n  border-radius: 999px !important;\n  border: 1px solid #4E9288 !important;\n  background: #4E92880D !important;\n  color: #4E9288 !important;\n  font-size: 12px !important;\n  font-weight: 500 !important;\n  line-height: 1 !important;\n}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8bfb5e0 elementor-widget elementor-widget-html\" data-id=\"8bfb5e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* ===== OCULTAR BLOQUE T\u00c9CNICO DE PROYECTOS EN DETALLE ===== *\/\n\n\/* Oculta en p\u00e1ginas de detalle cualquier bloque que contenga los marcadores t\u00e9cnicos *\/\nbody.single-post .elementor-widget-text-editor:has(.elementor-widget-container),\nbody.single-post .elementor-widget-text-editor:has(p) {\n}\n\n\/* Bloques t\u00e9cnicos escritos como texto *\/\nbody.single-post .project-technical-meta {\n  display: none !important;\n}\n<\/style>\n\n<script>\n(function () {\n  function hideProjectTechnicalMeta() {\n    if (!document.body.classList.contains(\"single-post\")) return;\n\n    const candidates = document.querySelectorAll(\n      \".elementor-widget-text-editor, .elementor-widget-container, p, div\"\n    );\n\n    candidates.forEach(function (el) {\n      const text = el.textContent || \"\";\n\n      const isTechnicalBlock =\n        text.includes(\"::sub::\") &&\n        text.includes(\"::desc::\") &&\n        text.includes(\"::tags::\");\n\n      if (!isTechnicalBlock) return;\n\n      \/* Evita ocultar media p\u00e1gina: solo oculta bloques peque\u00f1os\/t\u00e9cnicos *\/\n      if (text.length < 2500) {\n        el.style.setProperty(\"display\", \"none\", \"important\");\n        el.classList.add(\"project-technical-meta\");\n      }\n    });\n  }\n\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    setTimeout(hideProjectTechnicalMeta, 200);\n  });\n\n  window.addEventListener(\"load\", function () {\n    setTimeout(hideProjectTechnicalMeta, 300);\n    setTimeout(hideProjectTechnicalMeta, 1000);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b877a3a elementor-widget elementor-widget-html\" data-id=\"b877a3a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* Contenedor del paso detectado autom\u00e1ticamente *\/\n.work-step {\n  transition: box-shadow 0.3s ease, transform 0.3s ease;\n}\n\n\/* Estilos base del n\u00famero *\/\n.work-step .step-number {\n  color: #DCCFC0 !important;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 60px !important;\n  font-weight: 300 !important;\n  line-height: 1 !important;\n  transition: color 0.3s ease, opacity 0.3s ease;\n}\n\n\/* Estilos base del t\u00edtulo *\/\n.work-step .step-title {\n  color: #A07C6B !important;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 32px !important;\n  font-weight: 400 !important;\n  line-height: 1.2 !important;\n  transition: color 0.3s ease, opacity 0.3s ease;\n}\n\n\/* Hover sobre todo el contenedor del paso *\/\n.work-step:hover {\n  box-shadow: 10px 10px 10px 0 #AC8C7D33;\n}\n\n\/* Cambio de color al hacer hover *\/\n.work-step:hover .step-number {\n  color: #BFE1DB !important;\n}\n\n.work-step:hover .step-title {\n  color: #4E9288 !important;\n}\n\n\/* Estado activo al hacer scroll *\/\n.work-step.is-active {\n  box-shadow: 10px 10px 10px 0 #AC8C7D33;\n}\n\n.work-step.is-active .step-number {\n  color: #BFE1DB !important;\n}\n\n.work-step.is-active .step-title {\n  color: #4E9288 !important;\n}\n<\/style>\n\n<script>\n(function () {\n  function findStepContainer(element) {\n    let parent = element.parentElement;\n\n    while (parent && parent !== document.body) {\n      if (parent.querySelector(\".step-number\") && parent.querySelector(\".step-title\")) {\n        return parent;\n      }\n      parent = parent.parentElement;\n    }\n\n    return null;\n  }\n\n  function initWorkSteps() {\n    const numbers = document.querySelectorAll(\".step-number\");\n    const steps = [];\n\n    numbers.forEach((number) => {\n      const step = findStepContainer(number);\n\n      if (step && !step.classList.contains(\"work-step\")) {\n        step.classList.add(\"work-step\");\n        steps.push(step);\n      } else if (step && step.classList.contains(\"work-step\") && !steps.includes(step)) {\n        steps.push(step);\n      }\n    });\n\n    if (!steps.length) return;\n\n    const observer = new IntersectionObserver(\n      (entries) => {\n        const visibleSteps = entries\n          .filter((entry) => entry.isIntersecting)\n          .sort((a, b) => b.intersectionRatio - a.intersectionRatio);\n\n        if (visibleSteps.length > 0) {\n          steps.forEach((step) => step.classList.remove(\"is-active\"));\n          visibleSteps[0].target.classList.add(\"is-active\");\n        }\n      },\n      {\n        threshold: [0.25, 0.45, 0.65],\n        rootMargin: \"-20% 0px -40% 0px\"\n      }\n    );\n\n    steps.forEach((step) => observer.observe(step));\n  }\n\n  window.addEventListener(\"load\", initWorkSteps);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c99843 elementor-widget elementor-widget-html\" data-id=\"0c99843\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* ===== PROYECTOS DESTACADOS HOME - LAYOUT ===== *\/\n\n.proyectos-destacados-home {\n  display: flex !important;\n  flex-direction: column !important;\n  gap: 26px !important;\n  width: 100% !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n\/* Card horizontal *\/\n.proyectos-destacados-home article,\n.proyectos-destacados-home li,\n.proyectos-destacados-home .lps-post,\n.proyectos-destacados-home .lps-item,\n.proyectos-destacados-home .listing-item,\n.proyectos-destacados-home > * {\n  display: grid !important;\n  grid-template-columns: 300px 1fr !important;\n  align-items: stretch !important;\n  background: #ffffff !important;\n  border-radius: 22px !important;\n  overflow: hidden !important;\n  border: none !important;\n  box-shadow: none !important;\n  min-height: 300px !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  transition: background-color 0.28s ease, box-shadow 0.28s ease, transform 0.28s ease !important;\n}\n\n\/* Hover card *\/\n.proyectos-destacados-home article:hover,\n.proyectos-destacados-home li:hover,\n.proyectos-destacados-home .lps-post:hover,\n.proyectos-destacados-home .lps-item:hover,\n.proyectos-destacados-home .listing-item:hover,\n.proyectos-destacados-home > *:hover {\n  background: #EFE4D6 !important;\n  box-shadow: 10px 10px 10px 0 #AC8C7D33 !important;\n  transform: translateY(-2px) !important;\n}\n\n\/* Imagen izquierda: ocupa toda la altura de la card *\/\n.proyectos-destacados-home a:has(img),\n.proyectos-destacados-home figure,\n.proyectos-destacados-home .lps-image,\n.proyectos-destacados-home .lps-thumbnail,\n.proyectos-destacados-home .post-thumbnail,\n.proyectos-destacados-home .featured-image {\n  width: 300px !important;\n  min-width: 300px !important;\n  max-width: 300px !important;\n  height: 100% !important;\n  min-height: 100% !important;\n  align-self: stretch !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  overflow: hidden !important;\n  display: block !important;\n  border-radius: 0 !important;\n}\n\n\/* Imagen interna: efecto background cover *\/\n.proyectos-destacados-home img {\n  width: 100% !important;\n  height: 100% !important;\n  min-height: 100% !important;\n  object-fit: cover !important;\n  object-position: center center !important;\n  display: block !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n}\n\n\/* Contenido derecho *\/\n.proyectos-destacados-home article > div,\n.proyectos-destacados-home li > div,\n.proyectos-destacados-home .lps-content,\n.proyectos-destacados-home .content,\n.proyectos-destacados-home .entry-content,\n.proyectos-destacados-home .listing-item-content {\n  padding: 44px 44px !important;\n  margin: 0 !important;\n  min-width: 0 !important;\n  display: flex !important;\n  flex-direction: column !important;\n  justify-content: center !important;\n}\n\n\/* T\u00edtulo *\/\n.proyectos-destacados-home h3,\n.proyectos-destacados-home h3 a {\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 28px !important;\n  line-height: 1.2 !important;\n  font-weight: 500 !important;\n  color: #111111 !important;\n  text-decoration: none !important;\n  margin: 0 0 18px 0 !important;\n  padding: 0 !important;\n  transition: color 0.28s ease !important;\n}\n\n\/* Hover t\u00edtulo *\/\n.proyectos-destacados-home article:hover h3,\n.proyectos-destacados-home article:hover h3 a,\n.proyectos-destacados-home li:hover h3,\n.proyectos-destacados-home li:hover h3 a,\n.proyectos-destacados-home .lps-post:hover h3,\n.proyectos-destacados-home .lps-post:hover h3 a,\n.proyectos-destacados-home .lps-item:hover h3,\n.proyectos-destacados-home .lps-item:hover h3 a,\n.proyectos-destacados-home .listing-item:hover h3,\n.proyectos-destacados-home .listing-item:hover h3 a,\n.proyectos-destacados-home > *:hover h3,\n.proyectos-destacados-home > *:hover h3 a {\n  color: #2B5E56 !important;\n}\n\n\/* Texto formateado *\/\n.proyectos-destacados-home .project-subtitle {\n  display: block !important;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 17px !important;\n  line-height: 1.45 !important;\n  font-weight: 500 !important;\n  color: #A07C6B !important;\n  margin: 0 0 18px 0 !important;\n}\n\n.proyectos-destacados-home .project-desc {\n  display: block !important;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 15px !important;\n  line-height: 1.6 !important;\n  font-weight: 400 !important;\n  color: #444444 !important;\n  margin: 0 0 20px 0 !important;\n}\n\n.proyectos-destacados-home .project-tags {\n  display: block !important;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 13px !important;\n  line-height: 1.4 !important;\n  font-weight: 600 !important;\n  color: #2B5E56 !important;\n  margin: 0 !important;\n}\n\n\/* Ver m\u00e1s *\/\n.proyectos-destacados-home a:not(:has(img)):not(h3 a) {\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 14px !important;\n  font-weight: 500 !important;\n  color: #4E9288 !important;\n  text-decoration: none !important;\n  margin-top: 22px !important;\n  align-self: flex-end !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n}\n\n\/* Flecha dibujada con CSS para evitar emoji en iPhone *\/\n.proyectos-destacados-home a:not(:has(img)):not(h3 a)::after {\n  content: \"\" !important;\n  width: 8px !important;\n  height: 8px !important;\n  border-top: 1.5px solid currentColor !important;\n  border-right: 1.5px solid currentColor !important;\n  transform: rotate(45deg) !important;\n  display: inline-block !important;\n  margin-left: 2px !important;\n}\n\n.proyectos-destacados-home a:not(:has(img)):not(h3 a):hover {\n  color: #2B5E56 !important;\n}\n\n\/* Tablet *\/\n@media (max-width: 1024px) {\n  .proyectos-destacados-home article,\n  .proyectos-destacados-home li,\n  .proyectos-destacados-home .lps-post,\n  .proyectos-destacados-home .lps-item,\n  .proyectos-destacados-home .listing-item,\n  .proyectos-destacados-home > * {\n    grid-template-columns: 260px 1fr !important;\n    min-height: 260px !important;\n  }\n\n  .proyectos-destacados-home a:has(img),\n  .proyectos-destacados-home figure,\n  .proyectos-destacados-home .lps-image,\n  .proyectos-destacados-home .lps-thumbnail,\n  .proyectos-destacados-home .post-thumbnail,\n  .proyectos-destacados-home .featured-image {\n    width: 260px !important;\n    min-width: 260px !important;\n    max-width: 260px !important;\n    height: 100% !important;\n    min-height: 100% !important;\n    align-self: stretch !important;\n  }\n\n  .proyectos-destacados-home img {\n    width: 100% !important;\n    height: 100% !important;\n    min-height: 100% !important;\n    object-fit: cover !important;\n    object-position: center center !important;\n  }\n\n  .proyectos-destacados-home article > div,\n  .proyectos-destacados-home li > div,\n  .proyectos-destacados-home .lps-content,\n  .proyectos-destacados-home .content,\n  .proyectos-destacados-home .entry-content,\n  .proyectos-destacados-home .listing-item-content {\n    padding: 36px 34px !important;\n  }\n}\n\n\/* M\u00f3vil *\/\n@media (max-width: 767px) {\n  .proyectos-destacados-home article,\n  .proyectos-destacados-home li,\n  .proyectos-destacados-home .lps-post,\n  .proyectos-destacados-home .lps-item,\n  .proyectos-destacados-home .listing-item,\n  .proyectos-destacados-home > * {\n    grid-template-columns: 1fr !important;\n    min-height: auto !important;\n  }\n\n  .proyectos-destacados-home a:has(img),\n  .proyectos-destacados-home figure,\n  .proyectos-destacados-home .lps-image,\n  .proyectos-destacados-home .lps-thumbnail,\n  .proyectos-destacados-home .post-thumbnail,\n  .proyectos-destacados-home .featured-image {\n    width: 100% !important;\n    min-width: 100% !important;\n    max-width: 100% !important;\n    height: 220px !important;\n    min-height: 220px !important;\n    max-height: 220px !important;\n    overflow: hidden !important;\n  }\n\n  .proyectos-destacados-home img {\n    width: 100% !important;\n    height: 220px !important;\n    min-height: 220px !important;\n    max-height: 220px !important;\n    object-fit: cover !important;\n    object-position: center center !important;\n  }\n\n  .proyectos-destacados-home article > div,\n  .proyectos-destacados-home li > div,\n  .proyectos-destacados-home .lps-content,\n  .proyectos-destacados-home .content,\n  .proyectos-destacados-home .entry-content,\n  .proyectos-destacados-home .listing-item-content {\n    padding: 30px 26px !important;\n  }\n\n  .proyectos-destacados-home h3,\n  .proyectos-destacados-home h3 a {\n    font-size: 24px !important;\n  }\n\n  .proyectos-destacados-home a:not(:has(img)):not(h3 a) {\n    align-self: flex-start !important;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  function cleanProjectText(text) {\n    return text\n      .replace(\/\\s+\/g, \" \")\n      .trim();\n  }\n\n  function extractBetween(text, start, end) {\n    const startIndex = text.indexOf(start);\n    const endIndex = text.indexOf(end);\n\n    if (startIndex === -1 || endIndex === -1 || endIndex <= startIndex) {\n      return \"\";\n    }\n\n    return cleanProjectText(text.slice(startIndex + start.length, endIndex));\n  }\n\n  function formatProjectCards() {\n    const cards = document.querySelectorAll(\n      \".proyectos-destacados-home article, \" +\n      \".proyectos-destacados-home li, \" +\n      \".proyectos-destacados-home .lps-post, \" +\n      \".proyectos-destacados-home .lps-item, \" +\n      \".proyectos-destacados-home .listing-item, \" +\n      \".proyectos-destacados-home > *\"\n    );\n\n    cards.forEach(function (card) {\n      if (card.dataset.projectFormatted === \"true\") return;\n\n      const rawElements = Array.from(card.querySelectorAll(\"p, div, span\")).filter(function (el) {\n        const text = el.textContent || \"\";\n\n        return (\n          text.includes(\"::sub::\") ||\n          text.includes(\"::desc::\") ||\n          text.includes(\"::tags::\")\n        ) &&\n        !el.querySelector(\"h3\") &&\n        !el.querySelector(\"img\") &&\n        !el.querySelector(\"a\");\n      });\n\n      if (!rawElements.length) return;\n\n      const rawElement = rawElements[0];\n      const rawText = rawElement.textContent || \"\";\n\n      const subtitle = extractBetween(rawText, \"::sub::\", \"::\/sub::\");\n      const desc = extractBetween(rawText, \"::desc::\", \"::\/desc::\");\n      const tags = extractBetween(rawText, \"::tags::\", \"::\/tags::\");\n\n      rawElement.innerHTML =\n        (subtitle ? '<span class=\"project-subtitle\">' + subtitle + \"<\/span>\" : \"\") +\n        (desc ? '<span class=\"project-desc\">' + desc + \"<\/span>\" : \"\") +\n        (tags ? '<span class=\"project-tags\">' + tags + \"<\/span>\" : \"\");\n\n      card.dataset.projectFormatted = \"true\";\n    });\n  }\n\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    setTimeout(formatProjectCards, 300);\n  });\n\n  window.addEventListener(\"load\", function () {\n    setTimeout(formatProjectCards, 300);\n    setTimeout(formatProjectCards, 1000);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d10be0 elementor-widget elementor-widget-html\" data-id=\"6d10be0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* ===== INSIGHTS HOME CARDS ===== *\/\n\n\/* Card base *\/\n.insights-home article,\n.insights-home li,\n.insights-home .lps-post,\n.insights-home .lps-item,\n.insights-home .listing-item,\n.insights-home > * {\n  background: #ffffff !important;\n  border-radius: 22px !important;\n  overflow: hidden !important;\n  border: none !important;\n  box-shadow: none !important;\n  transition: box-shadow 0.28s ease, transform 0.28s ease !important;\n}\n\n\/* Imagen rectangular *\/\n.insights-home img {\n  width: 100% !important;\n  height: 190px !important;\n  max-height: 190px !important;\n  object-fit: cover !important;\n  object-position: center center !important;\n  display: block !important;\n  border-radius: 0 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n\/* Enlace o contenedor que envuelve la imagen *\/\n.insights-home a:has(img),\n.insights-home figure,\n.insights-home .lps-image,\n.insights-home .lps-thumbnail,\n.insights-home .post-thumbnail,\n.insights-home .featured-image {\n  width: 100% !important;\n  height: 190px !important;\n  max-height: 190px !important;\n  overflow: hidden !important;\n  display: block !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border-radius: 0 !important;\n}\n\n\/* T\u00edtulo *\/\n.insights-home h3,\n.insights-home h3 a {\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 22px !important;\n  line-height: 1.25 !important;\n  font-weight: 500 !important;\n  color: #111111 !important;\n  text-decoration: none !important;\n  transition: color 0.28s ease !important;\n}\n\n\/* Hover de card *\/\n.insights-home article:hover,\n.insights-home li:hover,\n.insights-home .lps-post:hover,\n.insights-home .lps-item:hover,\n.insights-home .listing-item:hover,\n.insights-home > *:hover {\n  box-shadow: 10px 10px 10px 0 #AC8C7D33 !important;\n  transform: translateY(-2px) !important;\n}\n\n\/* Hover del t\u00edtulo cuando haces hover en la card *\/\n.insights-home article:hover h3,\n.insights-home article:hover h3 a,\n.insights-home li:hover h3,\n.insights-home li:hover h3 a,\n.insights-home .lps-post:hover h3,\n.insights-home .lps-post:hover h3 a,\n.insights-home .lps-item:hover h3,\n.insights-home .lps-item:hover h3 a,\n.insights-home .listing-item:hover h3,\n.insights-home .listing-item:hover h3 a,\n.insights-home > *:hover h3,\n.insights-home > *:hover h3 a {\n  color: #2B5E56 !important;\n}\n\n\/* Leer m\u00e1s *\/\n.insights-home a:not(:has(img)):not(h3 a) {\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 14px !important;\n  font-weight: 500 !important;\n  color: #4E9288 !important;\n  text-decoration: none !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 8px !important;\n  transition: color 0.28s ease !important;\n}\n\n\/* Flecha angular dibujada con CSS *\/\n.insights-home a:not(:has(img)):not(h3 a)::after {\n  content: \"\" !important;\n  width: 8px !important;\n  height: 8px !important;\n  border-top: 1.5px solid currentColor !important;\n  border-right: 1.5px solid currentColor !important;\n  transform: rotate(45deg) !important;\n  display: inline-block !important;\n  margin-left: 2px !important;\n}\n\n.insights-home a:not(:has(img)):not(h3 a):hover {\n  color: #2B5E56 !important;\n}\n\n\/* Tablet *\/\n@media (max-width: 1024px) {\n  .insights-home img,\n  .insights-home a:has(img),\n  .insights-home figure,\n  .insights-home .lps-image,\n  .insights-home .lps-thumbnail,\n  .insights-home .post-thumbnail,\n  .insights-home .featured-image {\n    height: 180px !important;\n    max-height: 180px !important;\n  }\n}\n\n\/* M\u00f3vil *\/\n@media (max-width: 767px) {\n  .insights-home img,\n  .insights-home a:has(img),\n  .insights-home figure,\n  .insights-home .lps-image,\n  .insights-home .lps-thumbnail,\n  .insights-home .post-thumbnail,\n  .insights-home .featured-image {\n    height: 190px !important;\n    max-height: 190px !important;\n  }\n\n  .insights-home h3,\n  .insights-home h3 a {\n    font-size: 21px !important;\n  }\n\n  .insights-home a:not(:has(img)):not(h3 a) {\n    font-size: 14px !important;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  function cleanInsightsReadMoreArrows() {\n    const links = document.querySelectorAll(\".insights-home a:not(:has(img)):not(h3 a)\");\n\n    links.forEach(function(link) {\n      link.childNodes.forEach(function(node) {\n        if (node.nodeType === Node.TEXT_NODE) {\n          node.textContent = node.textContent\n            .replace(\/[\u2192\u2197\u279c\u279d\u279e\u2794]\/g, \"\")\n            .replace(\/\\s+\/g, \" \")\n            .trim();\n        }\n      });\n    });\n  }\n\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    setTimeout(cleanInsightsReadMoreArrows, 300);\n  });\n\n  window.addEventListener(\"load\", function () {\n    setTimeout(cleanInsightsReadMoreArrows, 300);\n    setTimeout(cleanInsightsReadMoreArrows, 1000);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23caee6 elementor-widget elementor-widget-html\" data-id=\"23caee6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>\n(function () {\n  function adjustFooterContactMobile() {\n    const footerContact = document.querySelector(\".footer-contact-links\");\n    if (!footerContact) return;\n\n    const links = footerContact.querySelectorAll(\"a\");\n    if (!links.length) return;\n\n    if (window.innerWidth > 767) {\n      footerContact.style.removeProperty(\"width\");\n      footerContact.style.removeProperty(\"display\");\n      footerContact.style.removeProperty(\"flex-direction\");\n      footerContact.style.removeProperty(\"align-items\");\n      footerContact.style.removeProperty(\"text-align\");\n      footerContact.style.removeProperty(\"gap\");\n\n      links.forEach(function (link) {\n        link.style.removeProperty(\"display\");\n        link.style.removeProperty(\"width\");\n        link.style.removeProperty(\"text-align\");\n        link.style.removeProperty(\"align-self\");\n      });\n\n      return;\n    }\n\n    footerContact.style.setProperty(\"width\", \"100%\", \"important\");\n    footerContact.style.setProperty(\"display\", \"flex\", \"important\");\n    footerContact.style.setProperty(\"flex-direction\", \"column\", \"important\");\n    footerContact.style.setProperty(\"align-items\", \"flex-end\", \"important\");\n    footerContact.style.setProperty(\"text-align\", \"right\", \"important\");\n    footerContact.style.setProperty(\"gap\", \"8px\", \"important\");\n\n    links.forEach(function (link) {\n      link.style.setProperty(\"display\", \"inline-block\", \"important\");\n      link.style.setProperty(\"width\", \"auto\", \"important\");\n      link.style.setProperty(\"text-align\", \"right\", \"important\");\n      link.style.setProperty(\"align-self\", \"flex-end\", \"important\");\n    });\n  }\n\n  function runFooterContactAdjustment() {\n    adjustFooterContactMobile();\n\n    setTimeout(adjustFooterContactMobile, 300);\n    setTimeout(adjustFooterContactMobile, 1000);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", runFooterContactAdjustment);\n  } else {\n    runFooterContactAdjustment();\n  }\n\n  window.addEventListener(\"load\", runFooterContactAdjustment);\n\n  window.addEventListener(\"resize\", function () {\n    setTimeout(adjustFooterContactMobile, 150);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-060c86e elementor-widget elementor-widget-html\" data-id=\"060c86e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>\n\n(function () {\n\n  function updateCvDownloadLink() {\n\n    const cvSpanishUrl = \"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Macarena_Torralba_CV.pdf\";\n\n    const cvEnglishUrl = \"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Macarena_Torralba_CV_EN.pdf\";\n\n\n\n    const path = window.location.pathname || \"\";\n\n    const isEnglish = path.startsWith(\"\/en\/\") || path === \"\/en\";\n\n\n\n    const cvUrl = isEnglish ? cvEnglishUrl : cvSpanishUrl;\n\n    const cvText = isEnglish ? \"Download CV\" : \"Descargar CV\";\n\n\n\n    const buttons = document.querySelectorAll(\n\n      \"#cv-download, a[href*='.pdf'], .mt-cv-link, .mt-menu-cv\"\n\n    );\n\n\n\n    buttons.forEach(function (button) {\n\n      const text = (button.textContent || \"\").trim().toLowerCase();\n\n\n\n      const looksLikeCvButton =\n\n        button.id === \"cv-download\" ||\n\n        button.classList.contains(\"mt-cv-link\") ||\n\n        button.classList.contains(\"mt-menu-cv\") ||\n\n        text.includes(\"cv\") ||\n\n        text.includes(\"descargar\") ||\n\n        text.includes(\"download\");\n\n\n\n      if (!looksLikeCvButton) return;\n\n\n\n      button.setAttribute(\"href\", cvUrl);\n\n      button.setAttribute(\"target\", \"_blank\");\n\n      button.setAttribute(\"rel\", \"noopener\");\n\n\n\n      if (text.includes(\"descargar\") || text.includes(\"download\")) {\n\n        button.textContent = cvText;\n\n      }\n\n    });\n\n  }\n\n\n\n  if (document.readyState === \"loading\") {\n\n    document.addEventListener(\"DOMContentLoaded\", updateCvDownloadLink);\n\n  } else {\n\n    updateCvDownloadLink();\n\n  }\n\n\n\n  window.addEventListener(\"load\", updateCvDownloadLink);\n\n})();\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-72e3dae e-con-full e-flex e-con e-child\" data-id=\"72e3dae\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body1 e-daba896-c8a3ccc e-paragraph-base\" data-interaction-id=\"daba896\"><a href=\"https:\/\/macarenatorralba.es\/es\/politica-de-privacidad\/\" target=\"_self\" class=\"e-paragraph-link-base\">\n\t\tPol\u00edtica de Privacidad\n\t<\/a><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>No todo necesita un chatbot: c\u00f3mo elegir bien el tipo de IA para un producto La inteligencia artificial no aporta valor por estar visible en una interfaz conversacional, sino por resolver mejor una tarea, una decisi\u00f3n o una fricci\u00f3n concreta. Antes de elegir tecnolog\u00eda, hay que entender el proceso, el usuario, el dato disponible y [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[44,58,45,51,52,42,59,55,60,43,54,57,17,46,53,56,16],"class_list":["post-1108","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-insight","tag-ai","tag-automatizacion","tag-consutoria","tag-emerging-tech","tag-ia-data","tag-ia-aplicada","tag-ia-clasica","tag-ia-generativa","tag-ia-moderna","tag-inteligencia-artificial","tag-machine-learning","tag-nlp","tag-product","tag-product-design","tag-product-strategy","tag-rag","tag-ux"],"_links":{"self":[{"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts\/1108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/comments?post=1108"}],"version-history":[{"count":52,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts\/1108\/revisions"}],"predecessor-version":[{"id":1970,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts\/1108\/revisions\/1970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/media\/233"}],"wp:attachment":[{"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/media?parent=1108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/categories?post=1108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/tags?post=1108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}