{"id":945,"date":"2026-05-31T15:41:28","date_gmt":"2026-05-31T15:41:28","guid":{"rendered":"https:\/\/macarenatorralba.es\/?p=945"},"modified":"2026-06-09T10:06:23","modified_gmt":"2026-06-09T10:06:23","slug":"ecosistema-de-ssi","status":"publish","type":"post","link":"https:\/\/macarenatorralba.es\/es\/ecosistema-de-ssi\/","title":{"rendered":"Ecosistema de SSI"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"945\" class=\"elementor elementor-945\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ebe218 e-flex e-con-boxed e-con e-parent\" data-id=\"0ebe218\" 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-2bc6427 elementor-widget elementor-widget-text-editor\" data-id=\"2bc6427\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>::sub::Ecosistema SSI para identidad digital, interoperabilidad y credenciales verificables::\/sub::<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>::desc::Producto de identidad digital descentralizada orientado a emisi\u00f3n, gesti\u00f3n y verificaci\u00f3n de credenciales verificables para ciudadanos y organizaciones. He participado en la evoluci\u00f3n funcional y UX del producto durante distintas fases de crecimiento, interoperabilidad y adaptaci\u00f3n enterprise.::\/desc::<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>::tags::SSI \u00b7 Interoperabilidad \u00b7 Producto \u00b7 Blockchain::\/tags::<\/p>\n<p><!-- \/wp:paragraph --><\/p>\t\t\t\t\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-ab6df4d e-flex e-con-boxed e-con e-parent\" data-id=\"ab6df4d\" 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=\"4e926dd\" class=\"H1 e-4e926dd-865ae4b e-heading-base\">Ecosistema de SSI<\/h1>\n\t\t\t\t\t<h1 data-interaction-id=\"66adf2c\" class=\"e-66adf2c-80e00d5 H2-W e-heading-base\">Soluci\u00f3n para la gesti\u00f3n de identidad digital y credenciales verificables adaptable a m\u00faltiples verticales de negocio<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"83286bb\">Plataforma empresarial de confianza digital verificable orientada a emitir, gestionar y verificar credenciales y atestaciones electr\u00f3nicas entre organizaciones, ciudadanos, clientes y sistemas. La soluci\u00f3n prepara a empresas e instituciones para el intercambio de datos verificables en el marco de eIDAS2, por lo que es una soluci\u00f3n alineada con EUDIW. Combina wallets digitales, verificaci\u00f3n criptogr\u00e1fica e integraci\u00f3n con sistemas existentes. Mi participaci\u00f3n se ha centrado en la evoluci\u00f3n funcional y UX del producto, ayudando a convertir un ecosistema t\u00e9cnico complejo en flujos m\u00e1s claros, escalables y adaptados a escenarios enterprise e institucionales.<\/p>\n\t\t\t\t\t<p class=\"e-50e51e3-2348336 Enphasis1 e-paragraph-base\" data-interaction-id=\"50e51e3\">Identidad Digital \u00b7 Web3 \u00b7 Credenciales Verificables \u00b7 UX Estrat\u00e9gica \u00b7 Producto Digital<\/p>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffb8149 elementor-widget elementor-widget-html\" data-id=\"ffb8149\" 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-b5d2794 e-flex e-con-boxed e-con e-parent\" data-id=\"b5d2794\" 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=\"e5ee11e\" class=\"H2 e-e5ee11e-15bb79a e-heading-base\">El problema<\/h2>\n\t\t\t\t\t<p class=\"Enphasis2 e-paragraph-base\" data-interaction-id=\"09dcd9a\">El reto de convertir un ecosistema complejo de identidad digital, credenciales verificables y regulaci\u00f3n europea en una experiencia clara para empresas, instituciones y usuarios.<\/p>\n\t\t\t\t\t<p class=\"e-cd51d6d-4ffbb3d Body2 e-paragraph-base\" data-interaction-id=\"cd51d6d\">El producto parte de un contexto donde organizaciones, ciudadanos y sistemas necesitan intercambiar datos verificables con mayor seguridad e interoperabilidad. El desaf\u00edo radica en traducir conceptos t\u00e9cnicos y regulatorios \u2014como eIDAS2, EUDIW, OIDC o Web3,\u2014 en flujos de producto comprensibles, escalables y preparados para escenarios reales de uso enterprise.<\/p>\n\t\t<div class=\"elementor-element elementor-element-1f73964 e-con-full e-flex e-con e-child\" data-id=\"1f73964\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-9648f77 e-con-full e-flex e-con e-child\" data-id=\"9648f77\" 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=\"mt-icon-beige e-svg-base\" data-interaction-id=\"b87f4f6\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st0{fill:#F0E6D9;} .st1{fill:#A07C6B;} <\/style> <path class=\"st0\" d=\"M37,0L37,0c20.4,0,37,16.6,37,37l0,0c0,20.4-16.6,37-37,37l0,0C16.6,74,0,57.4,0,37l0,0C0,16.6,16.6,0,37,0z\"><\/path> <g> <path class=\"st1\" d=\"M44,36.1c0.3-0.5,0.5-0.9,0.3-1.4c-0.2-0.5-0.6-0.7-1.1-1l-0.8-0.4c-0.1,0-0.1-0.1-0.1-0.1c0,0,0-0.1,0-0.1 l-0.1-0.8c-0.1-0.6-0.2-1-0.6-1.3c-0.4-0.3-0.9-0.2-1.5-0.2L39.2,31c-0.1,0-0.1,0-0.2,0c0,0-0.1-0.1-0.1-0.1l-0.6-0.6 c-0.4-0.4-0.8-0.7-1.3-0.7c-0.5,0-0.9,0.3-1.3,0.7l-0.6,0.6C35,30.9,35,30.9,35,31c0,0-0.1,0-0.2,0l-0.9-0.1 c-0.6-0.1-1-0.1-1.5,0.2c-0.4,0.3-0.5,0.8-0.6,1.3l-0.1,0.8c0,0.1,0,0.1,0,0.1c0,0-0.1,0-0.1,0.1l-0.8,0.4c-0.5,0.3-0.9,0.5-1.1,1 c-0.2,0.5,0,0.9,0.3,1.4l0.4,0.7c0,0,0,0.1,0.1,0.1c0,0,0,0.1-0.1,0.1L30,37.9c-0.3,0.5-0.5,0.9-0.3,1.4c0.2,0.5,0.6,0.7,1.1,1 l0.8,0.4c0.1,0,0.1,0.1,0.1,0.1c0,0,0,0.1,0,0.1l0.1,0.8c0.1,0.6,0.2,1,0.6,1.3c0.4,0.3,0.9,0.2,1.5,0.1l0.9-0.1c0.1,0,0.1,0,0.2,0 c0,0,0.1,0.1,0.1,0.1l0.6,0.6c0.4,0.4,0.8,0.7,1.3,0.7c0.5,0,0.9-0.3,1.3-0.7l0.6-0.6c0.1,0,0.1-0.1,0.1-0.1c0,0,0.1,0,0.2,0 l0.9,0.1c0.6,0.1,1,0.1,1.5-0.2c0.4-0.3,0.5-0.8,0.6-1.3l0.2-0.8c0-0.1,0-0.1,0-0.1c0,0,0.1,0,0.1-0.1l0.8-0.4 c0.5-0.3,0.9-0.5,1.1-1c0.2-0.5,0-0.9-0.3-1.4l-0.4-0.7c0,0,0-0.1-0.1-0.1c0,0,0-0.1,0.1-0.1L44,36.1z M42.3,37.8l0.4,0.7 c0,0.1,0.1,0.2,0.1,0.2c-0.1,0-0.2,0.1-0.3,0.1l-0.8,0.4c-0.3,0.1-0.5,0.3-0.7,0.5c-0.2,0.2-0.2,0.5-0.3,0.8l-0.1,0.8 c0,0.1,0,0.2-0.1,0.3c-0.1,0-0.2,0-0.4,0l-0.9-0.1c-0.3,0-0.5-0.1-0.8,0c-0.3,0.1-0.5,0.3-0.7,0.5l-0.6,0.6 c-0.1,0.1-0.2,0.2-0.3,0.2c-0.1-0.1-0.2-0.2-0.3-0.2L36.1,42c-0.2-0.2-0.4-0.4-0.7-0.5c-0.1,0-0.2-0.1-0.4-0.1c-0.1,0-0.3,0-0.5,0 l-0.9,0.1c-0.1,0-0.2,0-0.4,0c0-0.1,0-0.2-0.1-0.3l-0.1-0.8c-0.1-0.3-0.1-0.5-0.3-0.8c-0.2-0.2-0.4-0.4-0.7-0.5l-0.8-0.4 c-0.1,0-0.2-0.1-0.3-0.1c0-0.1,0.1-0.2,0.1-0.2l0.4-0.7c0.1-0.3,0.3-0.5,0.3-0.8c0-0.3-0.1-0.5-0.3-0.8l-0.4-0.7 c0-0.1-0.1-0.2-0.1-0.2c0.1,0,0.2-0.1,0.3-0.1l0.8-0.4c0.3-0.1,0.5-0.3,0.7-0.5c0.2-0.2,0.2-0.5,0.3-0.8l0.1-0.8 c0-0.1,0-0.2,0.1-0.3c0.1,0,0.2,0,0.4,0l0.9,0.1c0.3,0,0.6,0.1,0.8,0c0.3-0.1,0.5-0.3,0.7-0.5l0.6-0.6v0c0.1-0.1,0.2-0.2,0.3-0.2 c0.1,0.1,0.2,0.2,0.3,0.2l0.6,0.6c0.2,0.2,0.4,0.4,0.7,0.5c0.3,0.1,0.5,0.1,0.8,0l0.9-0.1c0.1,0,0.2,0,0.3,0c0,0.1,0,0.2,0.1,0.3 l0.2,0.8c0.1,0.3,0.1,0.5,0.3,0.8c0.2,0.2,0.4,0.3,0.7,0.5l0.8,0.4c0.1,0,0.2,0.1,0.3,0.1c0,0.1-0.1,0.2-0.1,0.2l-0.4,0.7 c-0.1,0.3-0.3,0.5-0.3,0.8C42.1,37.3,42.2,37.5,42.3,37.8z\"><\/path> <path class=\"st1\" d=\"M51.1,37c0-7.8-6.3-14.1-14.1-14.1c-2.6,0-5.1,0.7-7.3,2c-0.6-0.4-1.3-0.7-2.1-0.7c-1.9,0-3.4,1.5-3.4,3.4 c0,0.7,0.2,1.5,0.7,2.1c-1.3,2.2-2,4.7-2,7.3c0,7.8,6.3,14.1,14.1,14.1c2.6,0,5.1-0.7,7.3-2c0.6,0.4,1.3,0.7,2.1,0.7 c1.9,0,3.4-1.5,3.4-3.4c0-0.8-0.3-1.5-0.7-2.1C50.4,42.1,51.1,39.6,51.1,37z M27.7,25.8c0.5,0,1.1,0.2,1.4,0.6c0,0,0,0,0,0 c0.3,0.4,0.5,0.8,0.5,1.3c0,1.1-0.9,1.9-1.9,1.9c-0.5,0-0.9-0.2-1.3-0.5c0,0,0,0,0,0c-0.4-0.4-0.6-0.9-0.6-1.4 C25.8,26.6,26.6,25.8,27.7,25.8z M46.3,48.3c-0.5,0-1.1-0.2-1.4-0.6c0,0,0,0,0,0c-0.3-0.4-0.5-0.8-0.5-1.3c0-1.1,0.9-1.9,1.9-1.9 s1.9,0.9,1.9,1.9S47.4,48.3,46.3,48.3z M47.9,43.3c-0.5-0.2-1-0.4-1.6-0.4c-1.9,0-3.4,1.5-3.4,3.4c0,0.5,0.1,1.1,0.4,1.6 c-1.9,1.1-4.1,1.7-6.3,1.7c-6.9,0-12.6-5.6-12.6-12.6c0-2.2,0.6-4.4,1.7-6.3c0.5,0.2,1,0.4,1.6,0.4c1.9,0,3.4-1.5,3.4-3.4 c0-0.5-0.1-1.1-0.4-1.6c1.9-1.1,4.1-1.7,6.3-1.7c6.9,0,12.6,5.6,12.6,12.6C49.6,39.2,49,41.4,47.9,43.3z\"><\/path> <\/g> <\/svg><\/div>\t\t\t\t\t<h2 data-interaction-id=\"2d89378\" class=\"H3 e-heading-base\">Un dominio t\u00e9cnico dif\u00edcil de aterrizar<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"813b85f\">La identidad digital descentralizada combina est\u00e1ndares, wallets, credenciales verificables, modelos de confianza y verificaci\u00f3n criptogr\u00e1fica. El reto estaba en transformar esa complejidad t\u00e9cnica en una experiencia de producto clara, donde cada usuario pudiera entender qu\u00e9 est\u00e1 emitiendo, verificando o compartiendo.<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3981375 e-con-full e-flex e-con e-child\" data-id=\"3981375\" 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=\"mt-icon-beige e-svg-base\" data-interaction-id=\"1fc12ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st0{fill:#F0E6D9;} .st1{fill:#A07C6B;} <\/style> <path class=\"st0\" d=\"M37,0L37,0c20.4,0,37,16.6,37,37l0,0c0,20.4-16.6,37-37,37l0,0C16.6,74,0,57.4,0,37l0,0C0,16.6,16.6,0,37,0z\"><\/path> <path class=\"st1\" d=\"M49.7,33.6c-1.3-1.3-3.2-1.4-6.6-1.4c-0.4-5.2-4.7-9.3-10-9.3c-5.6,0-10.1,4.5-10.1,10.1c0,5.3,4.1,9.7,9.3,10 c0,3.5,0.1,5.3,1.4,6.6c1.4,1.4,3.4,1.4,7.4,1.4h1.3c4,0,6,0,7.4-1.4c1.4-1.4,1.4-3.4,1.4-7.4V41C51.1,37,51.1,35,49.7,33.6z M32.2,41v0.5c-4.4-0.4-7.8-4.1-7.8-8.5c0-4.7,3.9-8.6,8.6-8.6c4.5,0,8.2,3.5,8.5,7.8H41c-4,0-6,0-7.4,1.4C32.2,35,32.2,37,32.2,41z M49.6,42.3c0,3.6,0,5.3-1,6.3c-1,1-2.7,1-6.3,1H41c-3.6,0-5.3,0-6.3-1c-1-1-1-2.7-1-6.3V41c0-3.6,0-5.3,1-6.3c1-1,2.7-1,6.3-1h1.3 c3.6,0,5.3,0,6.3,1c1,1,1,2.7,1,6.3V42.3z\"><\/path> <\/svg><\/div>\t\t\t\t\t<h2 data-interaction-id=\"fac7c55\" class=\"H3 e-heading-base\">Interoperabilidad entre actores y sistemas<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"18c4b77\">La soluci\u00f3n deb\u00eda conectar organizaciones, ciudadanos, wallets, entidades emisoras, verificadores y sistemas externos dentro de un mismo ecosistema de confianza. Esto exig\u00eda ordenar flujos, roles y permisos para facilitar el intercambio de datos verificables sin romper la experiencia ni aumentar la fricci\u00f3n operativa.<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3275712 e-con-full e-flex e-con e-child\" data-id=\"3275712\" 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=\"mt-icon-beige e-svg-base\" data-interaction-id=\"a4a451f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st0{fill:#F0E6D9;} .st1{fill:#A07C6B;} <\/style> <path class=\"st0\" d=\"M37,0L37,0c20.4,0,37,16.6,37,37l0,0c0,20.4-16.6,37-37,37l0,0C16.6,74,0,57.4,0,37l0,0C0,16.6,16.6,0,37,0z\"><\/path> <g> <path class=\"st1\" d=\"M50.7,32.4c-0.7-1.5-2-2.5-4.7-4.5l-1.9-1.4c-3.3-2.4-5-3.6-7.1-3.6c-2.1,0-3.8,1.2-7.1,3.6L28,27.9 c-2.7,1.9-4,2.9-4.7,4.5c-0.7,1.6-0.4,3.2,0.1,6.4l0.4,2.6c0.7,4.5,1,6.8,2.8,8.3c1.8,1.5,4.1,1.5,8.9,1.5h3c4.7,0,7.1,0,8.9-1.5 c1.8-1.5,2.1-3.7,2.8-8.3l0.4-2.6C51.1,35.5,51.3,33.9,50.7,32.4z M49.1,38.5l-0.4,2.6c-0.6,4.2-1,6.2-2.3,7.3 c-1.3,1.1-3.5,1.1-7.9,1.1h-3c-4.4,0-6.6,0-7.9-1.1c-1.3-1.1-1.7-3.2-2.3-7.3l-0.4-2.6c-0.4-2.9-0.7-4.4-0.2-5.5 c0.5-1.2,1.7-2.1,4.2-3.8l1.9-1.4c6.1-4.4,6.3-4.4,12.4,0l1.9,1.4c2.5,1.8,3.7,2.7,4.2,3.8C49.8,34.1,49.6,35.6,49.1,38.5z\"><\/path> <path class=\"st1\" d=\"M42.6,37.9c-0.6-0.8-1.7-2-2.7-3.1s-2.3-2.1-3.1-2.7c0.2-0.3,0.1-0.7-0.1-0.9c-0.3-0.3-0.8-0.3-1.1,0l-0.5,0.5 c0,0,0,0,0,0l-3.3,3.3c-0.3,0.3-0.3,0.8,0,1.1c0.3,0.3,0.6,0.3,0.9,0.1c0.5,0.6,1.3,1.6,2.2,2.5l-4.5,4.5c-0.3,0.3-0.3,0.8,0,1.1 c0.1,0.1,0.3,0.2,0.5,0.2s0.4-0.1,0.5-0.2l4.5-4.5c0.9,0.9,1.9,1.7,2.5,2.2c-0.2,0.3-0.1,0.7,0.1,0.9c0.3,0.3,0.8,0.3,1.1,0 l0.5-0.5c0,0,0,0,0,0l3.3-3.3c0.3-0.3,0.3-0.8,0-1.1C43.3,37.7,42.9,37.7,42.6,37.9z M39.6,40.9c-0.7-0.6-2-1.7-3.1-2.7 c-1.1-1.1-2.1-2.4-2.7-3.1l1.9-1.9c0.7,0.6,2,1.7,3.1,2.7c1.1,1.1,2.1,2.4,2.7,3.1L39.6,40.9z\"><\/path> <\/g> <\/svg><\/div>\t\t\t\t\t<h2 data-interaction-id=\"ecda4ef\" class=\"H3 e-heading-base\">Adaptaci\u00f3n a escenarios enterprise y regulados<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"4abcf7e\">El producto ten\u00eda que evolucionar hacia casos de uso m\u00e1s exigentes, con necesidades propias de empresas e instituciones: control, trazabilidad, seguridad, escalabilidad y cumplimiento normativo. El desaf\u00edo era hacer que la plataforma resultara robusta para entornos regulados, pero usable para perfiles no necesariamente t\u00e9cnicos.<\/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<div class=\"elementor-element elementor-element-f872c5d e-flex e-con-boxed e-con e-parent\" data-id=\"f872c5d\" 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=\"3f9cab9\" class=\"H2 e-3f9cab9-477dbe6 e-heading-base\">La soluci\u00f3n<\/h2>\n\t\t<div class=\"elementor-element elementor-element-dfe8ecc e-con-full e-flex e-con e-child\" data-id=\"dfe8ecc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e11fec2 e-con-full e-flex e-con e-child\" data-id=\"e11fec2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"38970b9\" class=\"H3 e-heading-base\">Personal wallet<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-8d949df-43a25f5 e-paragraph-base\" data-interaction-id=\"8d949df\">App m\u00f3vil orientada a ciudadanos  que necesitan recibir, custodiar y presentar atestaciones electr\u00f3nicas de forma segura. Su objetivo es dar control a la persona sobre sus datos, quienes pueden custodiar y decidir con qui\u00e9n y cuando compartir su informaci\u00f3n personal.<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"9eae461\" class=\"H3 e-heading-base\">Business wallet<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-fe74cc7-2f50d5b e-paragraph-base\" data-interaction-id=\"fe74cc7\">Aplicaci\u00f3n web destinada a ermite. Permite gestionar la identidad digital de una persona jur\u00eddica, as\u00ed como las credenciales asociadas a la misma.. Facilita escenarios donde una entidad necesita identificarse, acreditar atributos, recibir o presentar informaci\u00f3n verificable y participar en ecosistemas de confianza con otras organizaciones, clientes o administraciones.<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"b117fac\" class=\"H3 e-heading-base\">Wallet connector<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-57b6dcb-e380a7d e-paragraph-base\" data-interaction-id=\"57b6dcb\">Servicio web transparente al usuario que act\u00faa como capa de conexi\u00f3n entre los sistemas de los clientes, las wallets y la capa de SSI. Permite integrar la soluci\u00f3n en procesos existentes de negocio, facilitando que empresas e instituciones incorporen identidad digital de forma m\u00e1s escalable, interoperable y accionable.<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b9cd191 e-con-full e-flex e-con e-child\" data-id=\"b9cd191\" 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=\"b6cc438\" id=\"966\" src=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Group-190.png\" width=\"1356\" height=\"1383\" srcset=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Group-190.png 1356w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Group-190-294x300.png 294w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Group-190-1004x1024.png 1004w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Group-190-768x783.png 768w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/05\/Group-190-12x12.png 12w\" alt=\"Captura de una interfaz de identidad digital para gestionar, presentar o verificar credenciales verificables.\"\/>\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-275b451 e-flex e-con-boxed e-con e-parent\" data-id=\"275b451\" 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-425284a e-con-full e-flex e-con e-child\" data-id=\"425284a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-34a415c e-con-full e-flex e-con e-child\" data-id=\"34a415c\" 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=\"mt-icon-green e-svg-base\" data-interaction-id=\"87795a1\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st2{fill:#4E9288;} .st3{fill:#FFFFFF;} <\/style> <rect y=\"0\" class=\"st2\" width=\"74\" height=\"74\"><\/rect> <g> <path class=\"st3\" d=\"M49.3,26.7c-1.8-1.8-4.4-1.8-9.6-1.8h-5.3c-5.2,0-7.9,0-9.6,1.8s-1.8,4.4-1.8,9.6v1.3c0,5.2,0,7.9,1.8,9.6 c1.8,1.8,4.4,1.8,9.6,1.8h5.3c5.2,0,7.9,0,9.6-1.8c1.8-1.8,1.8-4.4,1.8-9.6v-1.3C51.1,31.1,51.1,28.5,49.3,26.7z M49.6,37.7 c0,4.8,0,7.2-1.3,8.6c-1.3,1.3-3.8,1.3-8.6,1.3h-5.3c-4.8,0-7.2,0-8.6-1.3c-1.3-1.3-1.3-3.8-1.3-8.6v-1.3c0-4.8,0-7.2,1.3-8.6 s3.8-1.3,8.6-1.3h5.3c4.8,0,7.2,0,8.6,1.3c1.3,1.3,1.3,3.8,1.3,8.6V37.7z\"><\/path> <path class=\"st3\" d=\"M31.7,38.9c-2.1,0-4,1.2-4.7,3.1c-0.2,0.4,0,0.8,0.4,1c0.4,0.1,0.8,0,1-0.4c0.5-1.3,1.8-2.2,3.3-2.2 c1.5,0,2.7,0.8,3.3,2.2c0.1,0.3,0.4,0.5,0.7,0.5c0.1,0,0.2,0,0.3-0.1c0.4-0.2,0.6-0.6,0.4-1C35.6,40.1,33.8,38.9,31.7,38.9z\"><\/path> <path class=\"st3\" d=\"M31.7,37.1c1.7,0,3.1-1.4,3.1-3.1s-1.4-3.1-3.1-3.1s-3.1,1.4-3.1,3.1S30,37.1,31.7,37.1z M31.7,32.4 c0.9,0,1.6,0.7,1.6,1.6s-0.7,1.6-1.6,1.6s-1.6-0.7-1.6-1.6S30.8,32.4,31.7,32.4z\"><\/path> <path class=\"st3\" d=\"M46.3,36.2h-6.7c-0.4,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8h6.7c0.4,0,0.8-0.3,0.8-0.8S46.7,36.2,46.3,36.2z\"><\/path> <path class=\"st3\" d=\"M43,40.9h-3.3c-0.4,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8H43c0.4,0,0.8-0.3,0.8-0.8S43.4,40.9,43,40.9z\"><\/path> <path class=\"st3\" d=\"M46.3,31.6h-6.7c-0.4,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8h6.7c0.4,0,0.8-0.3,0.8-0.8S46.7,31.6,46.3,31.6z\"><\/path> <\/g> <\/svg><\/div>\t\t<div class=\"elementor-element elementor-element-c07c2d3 e-con-full e-flex e-con e-child\" data-id=\"c07c2d3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"ebfba03\" class=\"H3 e-ebfba03-9262b7a e-heading-base\">Gesti\u00f3n de credenciales y SSI<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"7027a56\">La soluci\u00f3n permite emitir, gestionar, presentar y verificar credenciales verificables vinculadas a personas, organizaciones o procesos. A trav\u00e9s de m\u00f3dulos y wallets, el producto facilita la administraci\u00f3n de atributos digitales acreditados, permitiendo que ciudadanos, empresas y entidades emisoras operen con informaci\u00f3n confiable. El objetivo es ordenar la identidad digital en flujos claros, seguros y reutilizables, reduciendo la dependencia de documentos est\u00e1ticos o validaciones manuales.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ec38913 e-con-full e-flex e-con e-child\" data-id=\"ec38913\" 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=\"mt-icon-green e-svg-base\" data-interaction-id=\"8c7b270\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st2{fill:#4E9288;} .st3{fill:#FFFFFF;} <\/style> <rect y=\"0\" class=\"st2\" width=\"74\" height=\"74\"><\/rect> <path class=\"st3\" d=\"M48.3,34.3c-1.3,0-2.3,0.8-2.6,2h-5.3c0-0.9-0.1-1.6-0.6-2.1c-0.5-0.5-1.1-0.6-2-0.6c0.1-1.9,0.9-6,5.1-6.5 c0,0.9,0.1,1.5,0.6,2c0.6,0.6,1.4,0.6,2.8,0.6s2.2,0,2.8-0.6s0.6-1.4,0.6-2.8c0-1.4,0-2.2-0.6-2.8s-1.4-0.6-2.8-0.6s-2.2,0-2.8,0.6 c-0.5,0.5-0.6,1.1-0.6,2.1c-4.6,0.4-6.4,4.3-6.6,8c-0.9,0-1.6,0.1-2.1,0.6c-0.5,0.5-0.6,1.1-0.6,2.1h-5.3c-0.3-1.2-1.4-2-2.6-2 c-1.5,0-2.8,1.2-2.8,2.8s1.2,2.8,2.8,2.8c1.3,0,2.3-0.8,2.6-2h5.3c0,0.9,0.1,1.6,0.6,2.1c0.5,0.5,1.1,0.6,2,0.6 c-0.1,1.9-0.9,6-5.1,6.5c0-0.9-0.1-1.5-0.6-2c-0.6-0.6-1.4-0.6-2.8-0.6c-1.4,0-2.2,0-2.8,0.6s-0.6,1.4-0.6,2.8c0,1.4,0,2.2,0.6,2.8 s1.4,0.6,2.8,0.6c1.4,0,2.2,0,2.8-0.6c0.5-0.5,0.6-1.1,0.6-2.1c4.6-0.4,6.4-4.3,6.6-8c0.9,0,1.6-0.1,2.1-0.6 c0.5-0.5,0.6-1.1,0.6-2.1h5.3c0.3,1.2,1.4,2,2.6,2c1.5,0,2.8-1.2,2.8-2.8S49.9,34.3,48.3,34.3z M46.3,24.4c0.9,0,1.6,0,1.7,0.2 s0.2,0.8,0.2,1.7c0,0.9,0,1.6-0.2,1.7s-0.8,0.2-1.7,0.2s-1.6,0-1.7-0.2c-0.2-0.2-0.2-0.8-0.2-1.7c0,0,0,0,0,0s0,0,0,0 c0-0.9,0-1.6,0.2-1.7C44.8,24.4,45.4,24.4,46.3,24.4z M29.4,49.4c-0.2,0.2-0.8,0.2-1.7,0.2c-0.9,0-1.6,0-1.7-0.2s-0.2-0.8-0.2-1.7 s0-1.6,0.2-1.7s0.8-0.2,1.7-0.2c0.9,0,1.6,0,1.7,0.2s0.2,0.8,0.2,1.7S29.6,49.2,29.4,49.4z M25.7,38.3c-0.7,0-1.2-0.6-1.2-1.2 s0.6-1.2,1.2-1.2s1.2,0.6,1.2,1.2S26.4,38.3,25.7,38.3z M37,38.9c-0.9,0-1.6,0-1.7-0.2c-0.2-0.2-0.2-0.8-0.2-1.7 c0-0.9,0-1.6,0.2-1.7s0.8-0.2,1.7-0.2c0.9,0,1.6,0,1.7,0.2c0.2,0.2,0.2,0.8,0.2,1.7c0,0,0,0,0,0c0,0,0,0,0,0c0,0.9,0,1.6-0.2,1.7 C38.6,38.9,37.9,38.9,37,38.9z M48.3,38.3c-0.7,0-1.2-0.6-1.2-1.2s0.6-1.2,1.2-1.2s1.2,0.6,1.2,1.2S49,38.3,48.3,38.3z\"><\/path> <\/svg><\/div>\t\t<div class=\"elementor-element elementor-element-34733cc e-con-full e-flex e-con e-child\" data-id=\"34733cc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"749cb15\" class=\"H3 e-749cb15-2533e21 e-heading-base\">Interoperabilidad con confianza<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"0225d64\">La soluci\u00f3n est\u00e1 orientado a escenarios donde conviven distintos est\u00e1ndares, wallets, actores y modelos de confianza. La soluci\u00f3n busca facilitar la interoperabilidad entre ecosistemas, permitiendo que las credenciales puedan emitirse, compartirse y verificarse en contextos alineados con eIDAS2, EUDI Wallet . El reto es traducir esa complejidad normativa y t\u00e9cnica en flujos de producto comprensibles, escalables y preparados para operar entre m\u00faltiples actores.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f110657 e-con-full e-flex e-con e-child\" data-id=\"f110657\" 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=\"mt-icon-green e-svg-base\" data-interaction-id=\"33a0f40\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st2{fill:#4E9288;} .st3{fill:#FFFFFF;} <\/style> <rect y=\"0\" class=\"st2\" width=\"74\" height=\"74\"><\/rect> <g> <path class=\"st3\" d=\"M51.1,37c0-1.2-0.8-2-2.4-3.5c-0.8-0.8-1-1.3-1-2.4c0-0.2,0-0.3,0-0.5c0-1.1,0.1-2.5-0.9-3.4 c-0.9-0.9-2.3-0.9-3.4-0.8c-1.3,0-2-0.2-2.9-1c-1.5-1.5-2.3-2.3-3.5-2.3c-1.2,0-2,0.8-3.5,2.4c-0.9,0.9-1.6,1.1-2.9,1 c-1.1,0-2.5-0.1-3.4,0.9c-0.9,0.9-0.9,2.3-0.8,3.4c0,0.2,0,0.4,0,0.5c0,1-0.3,1.6-1,2.4c-1.5,1.5-2.4,2.4-2.4,3.5 c0,1.2,0.8,2,2.4,3.5c0.8,0.8,1,1.3,1,2.4c0,0.2,0,0.3,0,0.5c0,1.1-0.1,2.5,0.9,3.4c0.9,0.9,2.3,0.9,3.4,0.8c0.2,0,0.4,0,0.5,0 c1.1,0,1.5,0.2,2.3,1c0.1,0.1,0.3,0.3,0.4,0.4c0.8,0.8,1.8,2,3.2,2c1.4,0,2.4-1.1,3.2-2c0.1-0.2,0.3-0.3,0.4-0.4 c0.8-0.8,1.2-1,2.3-1c0.2,0,0.3,0,0.5,0c1.1,0,2.5,0.1,3.4-0.8c0.9-0.9,0.9-2.4,0.9-3.4c0-0.2,0-0.4,0-0.5c0-1.1,0.2-1.5,1-2.4 C50.2,39,51.1,38.2,51.1,37z M47.7,39.5c-1.1,1.1-1.5,1.9-1.5,3.4c0,0.2,0,0.4,0,0.6c0,0.9,0.1,1.8-0.4,2.3 c-0.5,0.5-1.4,0.4-2.3,0.4c-1.9-0.1-2.7,0.2-3.9,1.4c-0.1,0.1-0.3,0.3-0.5,0.5c-0.6,0.7-1.4,1.5-2.1,1.5s-1.5-0.8-2.1-1.5 c-0.2-0.2-0.3-0.3-0.5-0.5c-1.1-1.1-1.9-1.4-3.4-1.4c-0.2,0-0.4,0-0.6,0c-0.9,0-1.8,0.1-2.3-0.4c-0.5-0.5-0.4-1.4-0.4-2.3 c0-0.2,0-0.4,0-0.6c0-1.5-0.3-2.3-1.5-3.4c-1.3-1.3-1.9-1.9-1.9-2.5c0-0.5,0.6-1.2,1.9-2.5c1-1,1.5-2.1,1.5-3.4c0-0.2,0-0.4,0-0.6 c0-0.9-0.1-1.8,0.4-2.3c0.5-0.5,1.4-0.4,2.3-0.4c0.2,0,0.4,0,0.6,0c1.4,0,2.4-0.4,3.4-1.5c1.3-1.3,1.9-1.9,2.5-1.9 c0.5,0,1.2,0.6,2.5,1.9c1,1,2.1,1.5,3.4,1.5c0.2,0,0.4,0,0.6,0c0.9,0,1.8-0.1,2.3,0.4c0.5,0.5,0.4,1.4,0.4,2.3c0,0.2,0,0.4,0,0.6 c0,1.5,0.3,2.3,1.5,3.4c1.3,1.3,1.9,1.9,1.9,2.5C49.6,37.5,49,38.2,47.7,39.5z\"><\/path> <path class=\"st3\" d=\"M40.7,33c-2.5,1.3-4.5,4.4-5.4,6c-0.9-0.9-1.9-1.4-1.9-1.5c-0.4-0.2-0.8-0.1-1,0.3c-0.2,0.4-0.1,0.8,0.3,1 c0,0,1.4,0.8,2.1,1.9c0.1,0.2,0.4,0.4,0.6,0.4c0,0,0,0,0,0c0.3,0,0.5-0.2,0.6-0.4c0,0,2.3-4.8,5.3-6.3c0.4-0.2,0.5-0.6,0.3-1 C41.5,33,41,32.8,40.7,33z\"><\/path> <\/g> <\/svg><\/div>\t\t<div class=\"elementor-element elementor-element-7dedf47 e-con-full e-flex e-con e-child\" data-id=\"7dedf47\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"be24a11\" class=\"H3 e-be24a11-6c4f588 e-heading-base\">Verificaci\u00f3n segura y trazable<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"4047e1f\">La plataforma incorpora mecanismos de verificaci\u00f3n que permiten comprobar la autenticidad, integridad y validez de las credenciales presentadas. Esto facilita que una organizaci\u00f3n pueda confiar en la informaci\u00f3n recibida sin depender exclusivamente de procesos manuales, documentos aislados o intermediarios adicionales. El objetivo es reforzar la confianza entre partes, mejorar la trazabilidad de las operaciones y reducir riesgos asociados a fraude, manipulaci\u00f3n o falta de evidencias verificables.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-843bb9a e-con-full e-flex e-con e-child\" data-id=\"843bb9a\" 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=\"mt-icon-green e-svg-base\" data-interaction-id=\"b2dcb59\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" fill=\"currentColor\" id=\"Capa_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 74 74\" style=\"enable-background:new 0 0 74 74; width: 100%; height: 100%; overflow: unset;\" xml:space=\"preserve\"> <style type=\"text\/css\"> .st2{fill:#4E9288;} .st3{fill:#FFFFFF;} <\/style> <rect y=\"0\" class=\"st2\" width=\"74\" height=\"74\"><\/rect> <g> <path class=\"st3\" d=\"M37,22.9c-7.8,0-14.1,6.3-14.1,14.1S29.2,51.1,37,51.1l0.3,0c0.1,0,0.2,0,0.3,0c0.8,0,1.7-0.1,2.3-0.6 c0.4-0.4,0.5-0.8,0.5-1.4c0-1-0.5-1.8-1-2.5c-0.6-0.9-1-1.4-0.4-2.5c0.7-1.3,1.6-1.4,4-1.4c1.1,0,2.5,0,4.1-0.2 c3.5-0.5,4-2.9,4-5.4C51.1,29.2,44.8,22.9,37,22.9z M46.9,40.9c-1.5,0.2-2.8,0.2-3.9,0.2c-2.4,0-4.2,0-5.3,2.2 c-0.9,1.8-0.1,3.1,0.5,4c0.4,0.6,0.7,1.1,0.7,1.6c0,0.2,0,0.3-0.1,0.4c-0.2,0.2-1,0.2-1.5,0.2l-0.3,0c-6.9,0-12.6-5.6-12.6-12.6 S30.1,24.4,37,24.4S49.6,30.1,49.6,37C49.6,39.7,48.9,40.6,46.9,40.9z\"><\/path> <path class=\"st3\" d=\"M33.7,29.6c-1.5,0-2.8,1.2-2.8,2.8s1.2,2.8,2.8,2.8s2.8-1.2,2.8-2.8S35.2,29.6,33.7,29.6z M33.7,33.6 c-0.7,0-1.2-0.6-1.2-1.2s0.6-1.2,1.2-1.2s1.2,0.6,1.2,1.2S34.4,33.6,33.7,33.6z\"><\/path> <path class=\"st3\" d=\"M43,30.9c-1.5,0-2.8,1.2-2.8,2.8s1.2,2.8,2.8,2.8s2.8-1.2,2.8-2.8S44.5,30.9,43,30.9z M43,34.9 c-0.7,0-1.2-0.6-1.2-1.2s0.6-1.2,1.2-1.2s1.2,0.6,1.2,1.2S43.7,34.9,43,34.9z\"><\/path> <path class=\"st3\" d=\"M30.3,39.9c-0.6,0-1.1,0.5-1.1,1.1s0.5,1.1,1.1,1.1c0.6,0,1.1-0.5,1.1-1.1S30.9,39.9,30.3,39.9z\"><\/path> <\/g> <\/svg><\/div>\t\t<div class=\"elementor-element elementor-element-c11eaf2 e-con-full e-flex e-con e-child\" data-id=\"c11eaf2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"f26a523\" class=\"H3 e-f26a523-103db5e e-heading-base\">UX para usuarios no t\u00e9cnicos<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"d0066f3\">Uno de los principales retos es convertir un dominio altamente t\u00e9cnico en una experiencia comprensible para perfiles de negocio, administraci\u00f3n y operaci\u00f3n. La soluci\u00f3n debe hacer  m\u00e1s accesibles conceptos como credenciales verificables, wallets, emisores, verificadores o marcos de confianza, sin perder rigor funcional ni seguridad. El foco est\u00e1 en dise\u00f1ar flujos guiados, pantallas claras y acciones entendibles que permitieran adoptar la identidad digital verificable en contextos enterprise reales.<\/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-54f1df6 e-flex e-con-boxed e-con e-parent\" data-id=\"54f1df6\" 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=\"172b166\" class=\"H2 e-172b166-a50525c e-heading-base\">Mi rol<\/h2>\n\t\t<div class=\"elementor-element elementor-element-e47f404 e-con-full e-flex e-con e-child\" data-id=\"e47f404\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-19006b5 e-con-full e-flex e-con e-child\" data-id=\"19006b5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"bc7f129\" class=\"H3 e-heading-base\">Definici\u00f3n funcional, evoluci\u00f3n de producto y UX estrat\u00e9gica <\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"79fe016\">Mi participaci\u00f3n se centr\u00f3 en la evoluci\u00f3n funcional y UX del ecosistema durante distintas fases de madurez del producto. Trabaj\u00e9 en la definici\u00f3n de flujos, journeys, pantallas clave y mejoras de experiencia para facilitar casos de uso complejos relacionados con emisi\u00f3n, gesti\u00f3n, presentaci\u00f3n y verificaci\u00f3n de credenciales verificables. El reto principal fue traducir un ecosistema t\u00e9cnico \u2014SSI, wallets digitales, identidad organizacional, interoperabilidad y marcos de confianza\u2014 en una experiencia m\u00e1s clara, estructurada y comprensible para perfiles enterprise, institucionales y no necesariamente t\u00e9cnicos.<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-52e37af e-con-full e-flex e-con e-child\" data-id=\"52e37af\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e8d7e0a e-con-full e-flex e-con e-child\" data-id=\"e8d7e0a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"997d69f\" class=\"Enphasis2 e-heading-base\">Resultados<\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"bcef002\">El trabajo permiti\u00f3 mejorar la claridad del producto, ordenar flujos complejos y hacer m\u00e1s comprensibles procesos cr\u00edticos dentro del ecosistema de identidad digital. La evoluci\u00f3n funcional y UX ayud\u00f3 a adaptar la soluci\u00f3n a escenarios de mayor complejidad, incorporando nuevas necesidades relacionadas con interoperabilidad, gesti\u00f3n de credenciales, Business Wallet, Personal Wallet y conexi\u00f3n con sistemas externos. Esto contribuy\u00f3 a consolidar una experiencia m\u00e1s coherente y escalable, capaz de responder mejor a casos de uso enterprise, institucionales y regulados, donde la confianza, la trazabilidad y la facilidad de adopci\u00f3n son clave para que la soluci\u00f3n pueda trasladarse a contextos reales.<\/p>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ffcdf85 e-con-full e-flex e-con e-child\" data-id=\"ffcdf85\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h2 data-interaction-id=\"1348885\" class=\"Enphasis2 e-heading-base\">Aprendizaje<\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"55c27ca\">El proyecto me permiti\u00f3 profundizar en c\u00f3mo convertir tecnolog\u00edas emergentes como SSI,&nbsp; en productos digitales usables, accionables y comprensibles para distintos perfiles de usuario. Uno de los principales aprendizajes fue la importancia de equilibrar rigor t\u00e9cnico, cumplimiento normativo y claridad de experiencia, especialmente cuando el usuario final no tiene por qu\u00e9 entender conceptos como credenciales verificables, wallets digitales o interoperabilidad entre marcos de confianza. El proyecto reforz\u00f3 mi capacidad para conectar negocio, UX y tecnolog\u00eda en productos donde la confianza, la seguridad, la escalabilidad y la adopci\u00f3n son tan importantes como la funcionalidad propia de la plataforma.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-976881e elementor-widget elementor-widget-html\" data-id=\"976881e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- NAVEGACI\u00d3N PROYECTO ANTERIOR \/ SIGUIENTE -->\n<div class=\"mt-project-detail-nav is-loading\" id=\"mtProjectDetailNav\" aria-label=\"Navegaci\u00f3n entre proyectos\">\n  <a class=\"mt-project-detail-link mt-project-detail-prev\" id=\"mtProjectPrev\" href=\"#\">\n    <span class=\"mt-project-detail-arrow mt-project-detail-arrow-left\"><\/span>\n    <span class=\"mt-project-detail-title\">Proyecto anterior<\/span>\n  <\/a>\n\n  <a class=\"mt-project-detail-link mt-project-detail-next\" id=\"mtProjectNext\" href=\"#\">\n    <span class=\"mt-project-detail-title\">Proyecto siguiente<\/span>\n    <span class=\"mt-project-detail-arrow mt-project-detail-arrow-right\"><\/span>\n  <\/a>\n<\/div>\n\n<style>\n\/* ===== NAVEGACI\u00d3N DETALLE PROYECTO ===== *\/\n\n.mt-project-detail-nav {\n  width: 100% !important;\n  display: flex !important;\n  justify-content: space-between !important;\n  align-items: center !important;\n  gap: 32px !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.mt-project-detail-link {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 12px !important;\n  font-family: \"Poppins\", sans-serif !important;\n  font-size: 15px !important;\n  font-weight: 500 !important;\n  line-height: 1.35 !important;\n  color: #4E9288 !important;\n  text-decoration: none !important;\n  transition: color 0.25s ease, transform 0.25s ease !important;\n}\n\n.mt-project-detail-link:hover {\n  color: #2B5E56 !important;\n}\n\n.mt-project-detail-prev:hover {\n  transform: translateX(-3px) !important;\n}\n\n.mt-project-detail-next:hover {\n  transform: translateX(3px) !important;\n}\n\n.mt-project-detail-next {\n  margin-left: auto !important;\n  text-align: right !important;\n}\n\n.mt-project-detail-arrow {\n  width: 8px !important;\n  height: 8px !important;\n  border-top: 1.6px solid currentColor !important;\n  border-right: 1.6px solid currentColor !important;\n  display: inline-block !important;\n  flex: 0 0 auto !important;\n}\n\n.mt-project-detail-arrow-left {\n  transform: rotate(-135deg) !important;\n}\n\n.mt-project-detail-arrow-right {\n  transform: rotate(45deg) !important;\n}\n\n.mt-project-detail-title {\n  display: inline-block !important;\n}\n\n.mt-project-detail-nav.is-loading {\n  opacity: 0 !important;\n  pointer-events: none !important;\n}\n\n.mt-project-detail-nav.is-empty {\n  display: none !important;\n}\n\n\/* Responsive *\/\n@media (max-width: 767px) {\n  .mt-project-detail-nav {\n    flex-direction: row !important;\n    align-items: center !important;\n    justify-content: space-between !important;\n    gap: 18px !important;\n    flex-wrap: nowrap !important;\n  }\n\n  .mt-project-detail-link {\n    font-size: 15px !important;\n    line-height: 1.6 !important;\n    color: #4E9288 !important;\n    white-space: nowrap !important;\n    max-width: 50% !important;\n    flex: 0 0 auto !important;\n  }\n\n  .mt-project-detail-title {\n    white-space: nowrap !important;\n  }\n\n  .mt-project-detail-prev {\n    justify-content: flex-start !important;\n  }\n\n  .mt-project-detail-next {\n    justify-content: flex-end !important;\n    margin-left: auto !important;\n    text-align: right !important;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  const CATEGORY_SLUG = \"proyecto-destacado\";\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 project\" : \"Proyecto anterior\";\n  }\n\n  function getNextFallbackText() {\n    return isEnglish() ? \"Next project\" : \"Proyecto 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() {\n    const response = await fetch(\"\/wp-json\/wp\/v2\/categories?slug=\" + encodeURIComponent(CATEGORY_SLUG));\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 \" + CATEGORY_SLUG);\n    }\n\n    return categories[0].id;\n  }\n\n  async function fetchProjectPosts(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 los proyectos\");\n    }\n\n    return await response.json();\n  }\n\n  function updateProjectNavLabels() {\n    const prevLink = document.getElementById(\"mtProjectPrev\");\n    const nextLink = document.getElementById(\"mtProjectNext\");\n\n    if (!prevLink || !nextLink) return;\n\n    const prevTitleEl = prevLink.querySelector(\".mt-project-detail-title\");\n    const nextTitleEl = nextLink.querySelector(\".mt-project-detail-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 renderNav(posts) {\n    const nav = document.getElementById(\"mtProjectDetailNav\");\n    const prevLink = document.getElementById(\"mtProjectPrev\");\n    const nextLink = document.getElementById(\"mtProjectNext\");\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      Proyecto anterior = el anterior en la lista.\n      Si estamos en el primero, vuelve al \u00faltimo.\n\n      Proyecto siguiente = el siguiente en la lista.\n      Si estamos en el \u00faltimo, vuelve al primero.\n    *\/\n    const prevIndex = currentIndex === 0 ? posts.length - 1 : currentIndex - 1;\n    const nextIndex = currentIndex === posts.length - 1 ? 0 : 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    updateProjectNavLabels();\n\n    nav.classList.remove(\"is-loading\");\n  }\n\n  async function initProjectDetailNav() {\n    const nav = document.getElementById(\"mtProjectDetailNav\");\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    try {\n      const categoryId = await fetchCategoryId();\n      const posts = await fetchProjectPosts(categoryId);\n      renderNav(posts);\n    } catch (error) {\n      nav.classList.add(\"is-empty\");\n      console.warn(\"No se pudo inicializar la navegaci\u00f3n de proyectos:\", error);\n    }\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initProjectDetailNav);\n  } else {\n    initProjectDetailNav();\n  }\n\n  window.addEventListener(\"load\", initProjectDetailNav);\n\n  window.addEventListener(\"resize\", function () {\n    clearTimeout(resizeTimer);\n\n    resizeTimer = setTimeout(function () {\n      updateProjectNavLabels();\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-3844b08 e-flex e-con-boxed e-con e-parent\" data-id=\"3844b08\" 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=\"d31df4d\" class=\"H2-W e-d31df4d-61520be e-heading-base\">Transformemos confianza digital en experiencia<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"92d8dde\">Podemos conversar sobre producto, UX, identidad digital, SSI o soluciones enterprise que necesiten pasar de un ecosistema t\u00e9cnico complejo a una propuesta clara, escalable y orientada a adopci\u00f3n real.<\/p>\n\t\t<div class=\"elementor-element elementor-element-4819d94 e-con-full e-flex e-con e-child\" data-id=\"4819d94\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b187f00 elementor-widget elementor-widget-button\" data-id=\"b187f00\" 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-b0d8c92 e-flex e-con-boxed e-con e-parent\" data-id=\"b0d8c92\" 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-b34339b e-con-full e-flex e-con e-child\" data-id=\"b34339b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-c907fba e-con-full e-flex e-con e-child\" data-id=\"c907fba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h1 data-interaction-id=\"018c444\" class=\"Enphasis1 e-heading-base\">Macarena Torralba<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"2ee82a1\">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-a3fe6ae e-con-full e-flex e-con e-child\" data-id=\"a3fe6ae\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body1 e-7becc40-9ff6961 e-paragraph-base\" data-interaction-id=\"7becc40\"><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=\"480d373\"><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-f6aa788 e-con-full e-flex e-con e-child\" data-id=\"f6aa788\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h1 data-interaction-id=\"ca120dc\" class=\"e-ca120dc-6d332ee 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-dabf103 e-con-full e-flex e-con e-child\" data-id=\"dabf103\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f543e0 elementor-widget elementor-widget-html\" data-id=\"0f543e0\" 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-95d0374 elementor-widget elementor-widget-html\" data-id=\"95d0374\" 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-d26f279 elementor-widget elementor-widget-html\" data-id=\"d26f279\" 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-721815d elementor-widget elementor-widget-html\" data-id=\"721815d\" 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  cursor: pointer !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 *\/\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 *\/\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.project-read-more,\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 angular dibujada con CSS *\/\n.proyectos-destacados-home a.project-read-more::after,\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.project-read-more:hover,\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.project-read-more,\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(\/\\u00a0\/g, \" \")\n      .replace(\/\\s+\/g, \" \")\n      .trim();\n  }\n\n  function extractMarker(text, marker) {\n    const regex = new RegExp(\"::\" + marker + \"::([\\\\s\\\\S]*?)::\\\\\/\" + marker + \"::\", \"i\");\n    const match = text.match(regex);\n    return match ? cleanProjectText(match[1]) : \"\";\n  }\n\n  function slugify(text) {\n    return (text || \"\")\n      .toString()\n      .normalize(\"NFD\")\n      .replace(\/[\\u0300-\\u036f]\/g, \"\")\n      .toLowerCase()\n      .trim()\n      .replace(\/&\/g, \"y\")\n      .replace(\/[^a-z0-9]+\/g, \"-\")\n      .replace(\/^-+|-+$\/g, \"\");\n  }\n\n  function getCurrentLangPrefix() {\n    const path = window.location.pathname || \"\";\n\n    if (path.startsWith(\"\/en\/\") || path === \"\/en\") {\n      return \"\/en\/\";\n    }\n\n    return \"\/es\/\";\n  }\n\n  function getProjectUrlFromTitle(title) {\n    const titleText = title ? title.textContent : \"\";\n    const slug = slugify(titleText);\n    const langPrefix = getCurrentLangPrefix();\n\n    if (!slug) return \"#\";\n\n    return langPrefix + slug + \"\/\";\n  }\n\n  function getDirectContentContainer(card, heading) {\n    const preferred = card.querySelector(\n      \".lps-content, .content, .entry-content, .listing-item-content\"\n    );\n\n    if (preferred && !preferred.querySelector(\"img\")) {\n      return preferred;\n    }\n\n    let current = heading ? heading.parentElement : null;\n\n    while (current && current !== card) {\n      if (current.parentElement === card) {\n        return current;\n      }\n\n      current = current.parentElement;\n    }\n\n    return heading ? heading.parentElement : null;\n  }\n\n  function makeCardClickable(card, detailUrl) {\n    if (!detailUrl || detailUrl === \"#\") return;\n\n    card.style.cursor = \"pointer\";\n    card.setAttribute(\"role\", \"link\");\n    card.setAttribute(\"tabindex\", \"0\");\n    card.setAttribute(\"aria-label\", \"Ver detalle del proyecto\");\n\n    if (card.dataset.clickableReady === \"true\") return;\n\n    card.addEventListener(\"click\", function (event) {\n      const clickedLink = event.target.closest(\"a\");\n\n      if (clickedLink) {\n        return;\n      }\n\n      window.location.href = detailUrl;\n    });\n\n    card.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Enter\") {\n        window.location.href = detailUrl;\n      }\n    });\n\n    card.dataset.clickableReady = \"true\";\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\") {\n        return;\n      }\n\n      const fullText = card.textContent || \"\";\n\n      if (\n        !fullText.includes(\"::sub::\") &&\n        !fullText.includes(\"::desc::\") &&\n        !fullText.includes(\"::tags::\")\n      ) {\n        return;\n      }\n\n      const title = card.querySelector(\"h3\");\n      const contentContainer = getDirectContentContainer(card, title);\n\n      if (!title || !contentContainer) return;\n\n      const subtitle = extractMarker(fullText, \"sub\");\n      const desc = extractMarker(fullText, \"desc\");\n      const tags = extractMarker(fullText, \"tags\");\n\n      const detailUrl = getProjectUrlFromTitle(title);\n      const titleText = cleanProjectText(title.textContent);\n\n      const titleHTML =\n        '<h3><a href=\"' + detailUrl + '\">' + titleText + \"<\/a><\/h3>\";\n\n      const readMoreHTML =\n        '<a class=\"project-read-more\" href=\"' + detailUrl + '\">Ver m\u00e1s<\/a>';\n\n      contentContainer.innerHTML =\n        titleHTML +\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        readMoreHTML;\n\n      const imageLinks = card.querySelectorAll(\"a:has(img)\");\n      imageLinks.forEach(function (link) {\n        link.setAttribute(\"href\", detailUrl);\n      });\n\n      makeCardClickable(card, detailUrl);\n\n      card.dataset.projectFormatted = \"true\";\n    });\n  }\n\n  function runProjectFormatting() {\n    formatProjectCards();\n\n    setTimeout(formatProjectCards, 300);\n    setTimeout(formatProjectCards, 900);\n    setTimeout(formatProjectCards, 1800);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", runProjectFormatting);\n  } else {\n    runProjectFormatting();\n  }\n\n  window.addEventListener(\"load\", runProjectFormatting);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f1c03d elementor-widget elementor-widget-html\" data-id=\"8f1c03d\" 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-8874bf6 elementor-widget elementor-widget-html\" data-id=\"8874bf6\" 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-947fc0d elementor-widget elementor-widget-html\" data-id=\"947fc0d\" 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-c42e33b elementor-widget elementor-widget-html\" data-id=\"c42e33b\" 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-6c4a9cd e-con-full e-flex e-con e-child\" data-id=\"6c4a9cd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body1 e-c80e186-ea23a0e e-paragraph-base\" data-interaction-id=\"c80e186\"><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>::sub::Ecosistema SSI para identidad digital, interoperabilidad y credenciales verificables::\/sub:: ::desc::Producto de identidad digital descentralizada orientado a emisi\u00f3n, gesti\u00f3n y verificaci\u00f3n de credenciales verificables para ciudadanos y organizaciones. He participado en la evoluci\u00f3n funcional y UX del producto durante distintas fases de crecimiento, interoperabilidad y adaptaci\u00f3n enterprise.::\/desc:: ::tags::SSI \u00b7 Interoperabilidad \u00b7 Producto \u00b7 Blockchain::\/tags:: Ecosistema de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":285,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[23,20,22,11,12,18,32,17,9,13,21,16,8,19],"class_list":["post-945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyecto","category-proyecto-destacado","tag-blockchain","tag-credenciales-verificables","tag-credential","tag-id-europeo","tag-idi","tag-identidad-digital","tag-innovacion","tag-product","tag-producto-digital","tag-rd","tag-ssi","tag-ux","tag-ux-estrategica","tag-web3"],"_links":{"self":[{"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts\/945","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=945"}],"version-history":[{"count":114,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts\/945\/revisions"}],"predecessor-version":[{"id":2045,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/posts\/945\/revisions\/2045"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/media\/285"}],"wp:attachment":[{"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/media?parent=945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/categories?post=945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/macarenatorralba.es\/es\/wp-json\/wp\/v2\/tags?post=945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}