{"id":2071,"date":"2026-06-10T13:01:25","date_gmt":"2026-06-10T13:01:25","guid":{"rendered":"https:\/\/macarenatorralba.es\/?p=2071"},"modified":"2026-06-11T11:34:33","modified_gmt":"2026-06-11T11:34:33","slug":"tokenizacion-de-energia","status":"publish","type":"post","link":"https:\/\/macarenatorralba.es\/en\/tokenizacion-de-energia\/","title":{"rendered":"Energy tokenisation"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2071\" class=\"elementor elementor-2071\">\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::Trazabilidad digital para comunidades energ\u00e9ticas locales.::\/sub::<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>::desc::Prototipo digital para explorar c\u00f3mo la tokenizaci\u00f3n y la trazabilidad blockchain pod\u00edan aplicarse a una comunidad energ\u00e9tica real, combinando datos de consumo, excedentes energ\u00e9ticos y una capa de gamificaci\u00f3n orientada a prosumidores y consumidores.::\/desc::<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>::tags::Energ\u00eda \u00b7 Trazabilidad \u00b7 Tokenizaci\u00f3n \u00b7 Comunidades energ\u00e9ticas \u00b7 Delivery::\/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\">Tokenizaci\u00f3n de energ\u00eda <\/h1>\n\t\t\t\t\t<h1 data-interaction-id=\"66adf2c\" class=\"e-66adf2c-80e00d5 H2-W e-heading-base\">Prototipo digital para explorar c\u00f3mo la trazabilidad blockchain, la tokenizaci\u00f3n y la gamificaci\u00f3n pod\u00edan aplicarse a una comunidad energ\u00e9tica real.<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"83286bb\">El proyecto part\u00eda de datos procedentes de una comunidad energ\u00e9tica real, previamente procesados por la comercializadora, y buscaba adaptar un servicio de trazabilidad blockchain existente a un nuevo contexto: el de la energ\u00eda compartida, los excedentes y la participaci\u00f3n de prosumidores y consumidores.Mi participaci\u00f3n se centr\u00f3 en la gesti\u00f3n del delivery y en el dise\u00f1o de la capa de gamificaci\u00f3n, ayudando a ordenar el alcance del prototipo, traducir conceptos complejos a una experiencia m\u00e1s comprensible y plantear c\u00f3mo pod\u00eda visualizarse la participaci\u00f3n de distintos perfiles dentro de una peque\u00f1a comunidad energ\u00e9tica.<\/p>\n\t\t\t\t\t<p class=\"e-50e51e3-2348336 Enphasis1 e-paragraph-base\" data-interaction-id=\"50e51e3\"><strong>Energ\u00eda \u00b7 Trazabilidad \u00b7 Tokenizaci\u00f3n \u00b7 Comunidades energ\u00e9ticas \u00b7 Delivery<\/strong><\/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-b4e6501 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 medir y auditar el intercambio de energ\u00eda dentro de una peque\u00f1a comunidad energ\u00e9tica, explorando c\u00f3mo la trazabilidad blockchain y la tokenizaci\u00f3n pod\u00edan ayudar a representar de forma m\u00e1s transparente los flujos entre prosumidores y consumidores.<\/p>\n\t\t\t\t\t<p class=\"e-cd51d6d-4ffbb3d Body2 e-paragraph-base\" data-interaction-id=\"cd51d6d\">Las comunidades energ\u00e9ticas plantean un modelo m\u00e1s participativo y distribuido de producci\u00f3n y consumo, pero su funcionamiento puede resultar dif\u00edcil de entender para las personas usuarias. Conceptos como excedentes, reparto energ\u00e9tico, trazabilidad, balances o tokenizaci\u00f3n no siempre se traducen de forma clara en una experiencia digital sencilla.<br><br>En este caso, el reto consist\u00eda en investigar c\u00f3mo una peque\u00f1a comunidad energ\u00e9tica pod\u00eda beneficiarse de mecanismos de trazabilidad y representaci\u00f3n digital de su actividad, partiendo de una limitaci\u00f3n importante: los datos ya llegaban procesados por la comercializadora, por lo que el margen de valor a\u00f1adido desde la soluci\u00f3n deb\u00eda analizarse con realismo.<\/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=\"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=\"M40.4,30.3c0-1.9-1.5-3.4-3.4-3.4s-3.4,1.5-3.4,3.4c0,1.9,1.5,3.4,3.4,3.4S40.4,32.2,40.4,30.3z M35.1,30.3 c0-1.1,0.9-1.9,1.9-1.9s1.9,0.9,1.9,1.9c0,1.1-0.9,1.9-1.9,1.9S35.1,31.4,35.1,30.3z\"><\/path> <path class=\"st1\" d=\"M37,22.9c-7.8,0-14.1,6.3-14.1,14.1c0,1.9,0.4,3.7,1.1,5.5c-0.7,0.6-1.1,1.5-1.1,2.5c0,1.9,1.5,3.4,3.4,3.4 c0.9,0,1.7-0.3,2.3-0.9c0.7-0.6,1.1-1.6,1.1-2.5c0-1.9-1.5-3.4-3.4-3.4c-0.3,0-0.7,0.1-1,0.1c-0.6-1.5-0.9-3.1-0.9-4.7 c0-6.9,5.6-12.6,12.6-12.6S49.6,30.1,49.6,37S43.9,49.6,37,49.6c-1.8,0-3.4-0.4-5-1c-0.4-0.2-0.8,0-1,0.4c-0.2,0.4,0,0.8,0.4,1 c1.8,0.8,3.7,1.2,5.6,1.2c7.8,0,14.1-6.3,14.1-14.1S44.8,22.9,37,22.9z M25.3,43.4C25.3,43.4,25.3,43.4,25.3,43.4 c0.3-0.2,0.7-0.3,1-0.3c1.1,0,1.9,0.9,1.9,1.9c0,0.5-0.2,1-0.6,1.4c-0.4,0.3-0.8,0.5-1.3,0.5c-1.1,0-1.9-0.9-1.9-1.9 C24.4,44.3,24.8,43.7,25.3,43.4z\"><\/path> <path class=\"st1\" d=\"M31.6,33c-0.4-0.2-0.8-0.1-1,0.3c-0.6,1.1-1,2.4-1,3.7c0,4.1,3.3,7.4,7.4,7.4c0.4,0,0.8,0,1.2-0.1 c0.6,0.9,1.7,1.4,2.8,1.4c1.9,0,3.4-1.5,3.4-3.4c0-0.8-0.3-1.5-0.7-2.1c0.5-1,0.7-2.1,0.7-3.2c0-1.3-0.3-2.6-1-3.7 c-0.2-0.4-0.7-0.5-1-0.3c-0.4,0.2-0.5,0.7-0.3,1c0.5,0.9,0.8,1.9,0.8,3c0,0.8-0.2,1.5-0.4,2.3c-0.5-0.2-1-0.3-1.5-0.3 c-1.9,0-3.4,1.5-3.4,3.4c0,0.2,0,0.4,0,0.6c-0.2,0-0.4,0-0.6,0c-3.3,0-5.9-2.7-5.9-5.9c0-1,0.3-2.1,0.8-3 C32.1,33.7,32,33.2,31.6,33z M41,40.4c0.5,0,0.9,0.2,1.3,0.5c0,0,0,0,0,0c0.4,0.4,0.6,0.9,0.6,1.4c0,1.1-0.9,1.9-1.9,1.9 c-0.7,0-1.4-0.4-1.7-1.1c0,0,0,0,0,0c-0.1-0.3-0.2-0.5-0.2-0.8C39.1,41.3,39.9,40.4,41,40.4z\"><\/path> <\/g> <\/svg><\/div>\t\t\t\t\t<h2 data-interaction-id=\"2d89378\" class=\"H3 e-heading-base\">Medici\u00f3n del intercambio energ\u00e9tico<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"813b85f\">En una comunidad energ\u00e9tica, la producci\u00f3n, el consumo y los excedentes generan flujos dif\u00edciles de interpretar si no se representan de forma clara. El reto estaba en explorar c\u00f3mo medir ese intercambio entre prosumidores y consumidores y convertirlo en informaci\u00f3n \u00fatil dentro de una experiencia digital.<\/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=\"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> <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=\"fac7c55\" class=\"H3 e-heading-base\">Auditor\u00eda y confianza en los datos<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"18c4b77\">La trazabilidad pod\u00eda aportar una capa de confianza sobre la actividad energ\u00e9tica compartida, pero el proyecto part\u00eda de datos ya procesados por la comercializadora. Esto hac\u00eda necesario analizar con realismo qu\u00e9 parte del proceso pod\u00eda auditarse y d\u00f3nde pod\u00eda aportar valor una soluci\u00f3n basada en blockchain.<\/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=\"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> <path class=\"st1\" d=\"M47.9,40.2c2.1-2.7,3.2-5.3,3.2-7.6c0-4.3-3.3-7.7-7.4-7.7c-2.4,0-4.4,0.9-6.7,3c-2.3-2.1-4.3-3-6.7-3 c-4.2,0-7.4,3.4-7.4,7.7c0,7,9.5,14,12.4,16c0.5,0.3,1,0.5,1.6,0.5s1.2-0.2,1.6-0.5c0.1-0.1,0.3-0.2,0.5-0.3 c0.8-0.6,1.3-1.4,1.4-2.4c0-0.1,0-0.3,0-0.4c0.3,0.1,0.6,0.1,0.9,0.1c0.8,0,1.6-0.3,2.2-0.9c0.7-0.7,1.2-1.6,1.2-2.7 c0-0.2,0-0.4,0-0.6c0.2,0,0.3,0,0.5,0c0.1,0,0.1,0,0.2,0c0.9-0.1,1.7-0.5,2.3-1.2l0,0C47.8,40.3,47.9,40.3,47.9,40.2 C47.9,40.3,47.9,40.2,47.9,40.2C47.9,40.2,47.9,40.2,47.9,40.2z M49.6,32.6c0,1.3-0.4,2.8-1.3,4.4c-0.2-0.4-0.4-0.8-0.8-1.2 l-1.3-1.3c0,0,0,0,0,0l-1.3-1.3c-0.8-0.8-1.2-1.2-1.7-1.4c-1-0.5-2.1-0.5-3,0c-0.5,0.2-0.9,0.6-1.7,1.4l-2.3,2.3 c-0.6,0.6-1.6,0.6-2.3,0c-0.6-0.6-0.6-1.6,0-2.3l3.7-3.7c2.7-2.7,4.6-3.1,6.1-3.1C47,26.4,49.6,29.1,49.6,32.6z M45.4,40 c-0.6,0-1.2-0.2-1.6-0.6l0,0l-0.3-0.3c-0.3-0.3-0.8-0.3-1.1,0s-0.3,0.8,0,1.1l0.3,0.3c0.4,0.4,0.6,1,0.6,1.6c0,0.6-0.3,1.2-0.7,1.6 c-0.8,0.7-2,0.6-2.8-0.2l-0.2-0.2c-0.3-0.3-0.8-0.3-1.1,0c-0.3,0.3-0.3,0.8,0,1.1l0,0c0.4,0.4,0.6,1,0.6,1.5c0,0.5-0.3,1-0.8,1.3 l-0.5,0.3c-0.5,0.3-1.1,0.3-1.6,0c-2-1.3-11.8-8.3-11.8-14.8c0-3.5,2.5-6.2,5.9-6.2c1.5,0,3.2,0.4,5.6,2.6l-3.1,3.1 c-1.2,1.2-1.2,3.2,0,4.4c0.6,0.6,1.4,0.9,2.2,0.9s1.6-0.3,2.2-0.9l2.3-2.3c0.6-0.6,1-1,1.3-1.1c0.5-0.3,1.2-0.3,1.7,0 c0.3,0.1,0.6,0.5,1.3,1.1l2,2c0,0,0,0,0,0l0.7,0.7c0.7,0.7,0.8,1.7,0.3,2.4c0,0,0,0,0,0C46.4,39.7,45.9,40,45.4,40z\"><\/path> <\/svg><\/div>\t\t\t\t\t<h2 data-interaction-id=\"ecda4ef\" class=\"H3 e-heading-base\">Participaci\u00f3n comprensible<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"4abcf7e\">Para que una comunidad energ\u00e9tica funcione, las personas usuarias necesitan entender qu\u00e9 papel tienen dentro del sistema. El desaf\u00edo no era solo mostrar datos, sino dise\u00f1ar una experiencia capaz de hacer m\u00e1s comprensible la participaci\u00f3n individual y colectiva de consumidores y prosumidores.<\/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-61c1996 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\">Trazabilidad descentralizada<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-8d949df-43a25f5 e-paragraph-base\" data-interaction-id=\"8d949df\">Se desarroll\u00f3 un servicio de trazabilidad basado en blockchain para registrar informaci\u00f3n vinculada a la producci\u00f3n, el consumo y los excedentes energ\u00e9ticos dentro de una comunidad energ\u00e9tica. Esta capa descentralizada permit\u00eda reforzar la transparencia del intercambio energ\u00e9tico y explorar c\u00f3mo auditar la actividad compartida entre distintos perfiles de usuario. El objetivo era que los flujos energ\u00e9ticos no quedaran \u00fanicamente como datos agregados o registros internos, sino que pudieran representarse de forma trazable, verificable y conectada con la actividad real de la comunidad.<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"9eae461\" class=\"H3 e-heading-base\">Tokenizaci\u00f3n de energ\u00eda<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-fe74cc7-2f50d5b e-paragraph-base\" data-interaction-id=\"fe74cc7\">La soluci\u00f3n incorpor\u00f3 una capa de tokenizaci\u00f3n para representar digitalmente la energ\u00eda intercambiada entre consumidores y prosumidores. A partir de los datos disponibles, la energ\u00eda compartida pod\u00eda traducirse en unidades digitales trazables, facilitando una lectura m\u00e1s clara de los balances, movimientos y relaciones dentro de la comunidad energ\u00e9tica.<br><br>Esta tokenizaci\u00f3n ayudaba a convertir un proceso t\u00e9cnico \u2014producci\u00f3n, consumo, excedentes e intercambio\u2014 en una l\u00f3gica m\u00e1s comprensible desde el producto, haciendo visible qu\u00e9 ocurr\u00eda dentro de la comunidad y c\u00f3mo participaban sus distintos miembros.<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"b117fac\" class=\"H3 e-heading-base\">Experiencia gamificada<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-57b6dcb-e380a7d e-paragraph-base\" data-interaction-id=\"57b6dcb\">Se dise\u00f1\u00f3 una capa de gamificaci\u00f3n orientada a hacer m\u00e1s comprensible y atractiva la participaci\u00f3n en la comunidad energ\u00e9tica. La propuesta exploraba c\u00f3mo mostrar actividad, progreso, impacto o contribuci\u00f3n de forma m\u00e1s visual, reduciendo la distancia entre los datos t\u00e9cnicos y la experiencia de usuario.<\/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=\"2077\" src=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Group-204.png\" width=\"1356\" height=\"1383\" srcset=\"https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Group-204.png 1356w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Group-204-294x300.png 294w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Group-204-1004x1024.png 1004w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Group-204-768x783.png 768w, https:\/\/macarenatorralba.es\/wp-content\/uploads\/2026\/06\/Group-204-12x12.png 12w\" alt=\"Pantalla de una aplicaci\u00f3n de gamificaci\u00f3n para visualizar el intercambio de tokens de energ\u00eda entre usuarios.\"\/>\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=\"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=\"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-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-4b3905a e-heading-base\">Tokenizaci\u00f3n de energ\u00eda<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"7027a56\">La tokenizaci\u00f3n permit\u00eda convertir la energ\u00eda compartida en unidades digitales trazables, facilitando una lectura m\u00e1s clara de los movimientos entre consumidores y prosumidores. Esta aproximaci\u00f3n ayudaba a representar el intercambio energ\u00e9tico de forma m\u00e1s comprensible, conectando datos t\u00e9cnicos de producci\u00f3n, consumo y excedentes con una l\u00f3gica de producto m\u00e1s visual y accionable.<\/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=\"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=\"M51.1,37c0-7.8-6.3-14.1-14.1-14.1S22.9,29.2,22.9,37c0,4.5,2.2,8.6,5.5,11.2c0.1,0.1,0.2,0.2,0.3,0.2 c2.3,1.7,5.2,2.7,8.3,2.7c3.1,0,6-1,8.3-2.7c0.1,0,0.2-0.1,0.3-0.2C48.9,45.6,51.1,41.5,51.1,37z M29.8,47.3 c0.2-3.8,3.4-6.9,7.2-6.9c3.9,0,7,3,7.2,6.9c-2,1.4-4.5,2.3-7.2,2.3C34.3,49.6,31.8,48.7,29.8,47.3z M37,38.9 c-2.2,0-3.9-1.8-3.9-3.9s1.8-3.9,3.9-3.9c2.2,0,3.9,1.8,3.9,3.9S39.2,38.9,37,38.9z M45.6,46.2c-0.5-3.1-2.7-5.6-5.6-6.7 c1.4-1,2.4-2.6,2.4-4.5c0-3-2.4-5.4-5.4-5.4c-3,0-5.4,2.4-5.4,5.4c0,1.9,0.9,3.5,2.4,4.5c-2.9,1.1-5,3.6-5.6,6.7 c-2.4-2.3-4-5.5-4-9.2c0-6.9,5.6-12.6,12.6-12.6S49.6,30.1,49.6,37C49.6,40.6,48,43.9,45.6,46.2z\"><\/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-70192cd e-heading-base\">Intercambio comunitario<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"0225d64\">La capa de gamificaci\u00f3n exploraba c\u00f3mo hacer visible el intercambio de tokens entre miembros de la comunidad energ\u00e9tica. Aunque esta parte se trabaj\u00f3 como dise\u00f1o y prototipo, permit\u00eda imaginar una experiencia m\u00e1s cercana para consumidores y prosumidores, donde la participaci\u00f3n, los movimientos y la contribuci\u00f3n dentro de la comunidad pudieran entenderse de forma m\u00e1s sencilla.<\/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=\"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=\"M30.3,37.6c-0.4,0-0.8,0.3-0.8,0.8v5.3c0,0.4,0.3,0.8,0.8,0.8s0.8-0.3,0.8-0.8v-5.3 C31.1,37.9,30.7,37.6,30.3,37.6z\"><\/path> <path class=\"st3\" d=\"M37,29.6c-0.4,0-0.8,0.3-0.8,0.8v13.3c0,0.4,0.3,0.8,0.8,0.8s0.8-0.3,0.8-0.8V30.3 C37.8,29.9,37.4,29.6,37,29.6z\"><\/path> <path class=\"st3\" d=\"M43.7,34.9c-0.4,0-0.8,0.3-0.8,0.8v8c0,0.4,0.3,0.8,0.8,0.8s0.8-0.3,0.8-0.8v-8C44.4,35.3,44.1,34.9,43.7,34.9 z\"><\/path> <path class=\"st3\" d=\"M48.3,25.7c-2.1-2.1-5.2-2.1-11.3-2.1c-6.2,0-9.3,0-11.3,2.1s-2.1,5.2-2.1,11.3c0,6.2,0,9.3,2.1,11.3 c2.1,2.1,5.2,2.1,11.3,2.1c6.2,0,9.3,0,11.3-2.1c2.1-2.1,2.1-5.2,2.1-11.3S50.4,27.7,48.3,25.7z M47.3,47.3 c-1.6,1.6-4.5,1.6-10.3,1.6c-5.8,0-8.6,0-10.3-1.6c-1.6-1.6-1.6-4.5-1.6-10.3s0-8.6,1.6-10.3s4.5-1.6,10.3-1.6 c5.8,0,8.6,0,10.3,1.6c1.6,1.6,1.6,4.5,1.6,10.3S48.9,45.6,47.3,47.3z\"><\/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-b1e731a e-heading-base\">Prototipo basado en datos reales<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"4047e1f\">Aunque la soluci\u00f3n no lleg\u00f3 a ser utilizada por usuarios finales, el prototipo trabaj\u00f3 sobre datos procedentes de una comunidad energ\u00e9tica real. Esto permiti\u00f3 aterrizar el caso de uso en un escenario veros\u00edmil, identificar l\u00edmites del modelo y evaluar con m\u00e1s criterio qu\u00e9 valor pod\u00eda aportar una capa blockchain sobre informaci\u00f3n energ\u00e9tica ya procesada.<\/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=\"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> <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-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-aaf2f5a e-heading-base\">Infraestructura descentralizada<\/h2>\n\t\t\t\t\t<p class=\"Body2 e-paragraph-base\" data-interaction-id=\"d0066f3\">El proyecto permiti\u00f3 desarrollar una capa descentralizada para registrar y auditar informaci\u00f3n vinculada a la producci\u00f3n, el consumo y los excedentes de una comunidad energ\u00e9tica. La clave estaba en aplicar blockchain a un contexto donde la confianza en los datos y la transparencia del intercambio eran parte esencial del caso de uso.<\/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-eba59b8 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\">Gesti\u00f3n del delivery y dise\u00f1o de la experiencia gamificada<\/h2>\n\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"79fe016\">Mi participaci\u00f3n se centr\u00f3 en la gesti\u00f3n del delivery del prototipo y en el dise\u00f1o de la capa de gamificaci\u00f3n vinculada al intercambio de tokens dentro de la comunidad energ\u00e9tica. Desde la parte de delivery, trabaj\u00e9 en el seguimiento del alcance, la coordinaci\u00f3n funcional y la conexi\u00f3n entre las necesidades del caso de uso, los datos disponibles y la soluci\u00f3n t\u00e9cnica desarrollada. Desde la parte de dise\u00f1o, particip\u00e9 en la conceptualizaci\u00f3n de una experiencia gamificada para consumidores y prosumidores, orientada a hacer m\u00e1s visible la actividad dentro de la comunidad y a representar de forma sencilla el intercambio energ\u00e9tico entre sus miembros.<\/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 proyecto dio lugar a un prototipo basado en datos reales de una comunidad energ\u00e9tica, con una infraestructura descentralizada para trazabilidad y tokenizaci\u00f3n de energ\u00eda, junto a una propuesta de experiencia gamificada dise\u00f1ada para visualizar la participaci\u00f3n de consumidores y prosumidores. Aunque la soluci\u00f3n no lleg\u00f3 a ser utilizada por usuarios finales, permiti\u00f3 explorar el encaje de blockchain y tokenizaci\u00f3n en un contexto energ\u00e9tico real y detectar con mayor claridad los l\u00edmites y oportunidades del caso de uso.<\/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\">Este proyecto reforz\u00f3 la importancia de analizar con criterio d\u00f3nde aporta valor una tecnolog\u00eda emergente. La trazabilidad blockchain y la tokenizaci\u00f3n pueden ayudar a generar confianza y transparencia, pero su impacto depende del punto del proceso en el que se apliquen, de la calidad de los datos disponibles y de la utilidad real que generen para las personas usuarias. Tambi\u00e9n fue un aprendizaje relevante sobre c\u00f3mo dise\u00f1ar prototipos con un alcance honesto, diferenciando entre lo desarrollado, lo validado y lo explorado conceptualmente.<\/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-ff26771 e-heading-base\">Hablemos trazabilidad y tecnolog\u00edas emergentes<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"92d8dde\">Dise\u00f1o y acompa\u00f1o productos digitales que traducen sistemas complejos \u2014como tokenizaci\u00f3n, trazabilidad o modelos descentralizados\u2014 en experiencias claras, comprensibles y conectadas con necesidades reales.<\/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-acd4dd0 e-flex e-con-boxed e-con e-parent\" data-id=\"acd4dd0\" 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-1a412bf e-con-full e-flex e-con e-child\" data-id=\"1a412bf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-c06a22f e-con-full e-flex e-con e-child\" data-id=\"c06a22f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h1 data-interaction-id=\"48bb35b\" class=\"Enphasis1 e-heading-base\">Macarena Torralba<\/h1>\n\t\t\t\t\t<p class=\"Body1 e-paragraph-base\" data-interaction-id=\"98cd301\">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-2c6fc4b e-con-full e-flex e-con e-child\" data-id=\"2c6fc4b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body1 e-d1fc318-e19c763 e-paragraph-base\" data-interaction-id=\"d1fc318\"><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=\"878954b\"><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-d427851 e-con-full e-flex e-con e-child\" data-id=\"d427851\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<h1 data-interaction-id=\"993a0c9\" class=\"e-993a0c9-6bc6b27 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-12e8c5d e-con-full e-flex e-con e-child\" data-id=\"12e8c5d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c681915 elementor-widget elementor-widget-html\" data-id=\"c681915\" 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-caba3ad elementor-widget elementor-widget-html\" data-id=\"caba3ad\" 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-1c07bce elementor-widget elementor-widget-html\" data-id=\"1c07bce\" 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-fb00974 elementor-widget elementor-widget-html\" data-id=\"fb00974\" 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-394c60a elementor-widget elementor-widget-html\" data-id=\"394c60a\" 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-79458f6 elementor-widget elementor-widget-html\" data-id=\"79458f6\" 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-7724a29 elementor-widget elementor-widget-html\" data-id=\"7724a29\" 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-1db80b5 elementor-widget elementor-widget-html\" data-id=\"1db80b5\" 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-a7d6a9b e-con-full e-flex e-con e-child\" data-id=\"a7d6a9b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<p class=\"Body1 e-fd665a2-9c89e97 e-paragraph-base\" data-interaction-id=\"fd665a2\"><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::Trazabilidad digital para comunidades energ\u00e9ticas locales.::\/sub:: ::desc::Prototipo digital para explorar c\u00f3mo la tokenizaci\u00f3n y la trazabilidad blockchain pod\u00edan aplicarse a una comunidad energ\u00e9tica real, combinando datos de consumo, excedentes energ\u00e9ticos y una capa de gamificaci\u00f3n orientada a prosumidores y consumidores.::\/desc:: ::tags::Energ\u00eda \u00b7 Trazabilidad \u00b7 Tokenizaci\u00f3n \u00b7 Comunidades energ\u00e9ticas \u00b7 Delivery::\/tags:: Tokenizaci\u00f3n de energ\u00eda Prototipo digital [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2081,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[23,10,65,64,39,12,66,17,13,40,67,29,28,25,24,16],"class_list":["post-2071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyecto","tag-blockchain","tag-delivery","tag-energia","tag-energy","tag-id","tag-idi","tag-luz","tag-product","tag-rd","tag-research","tag-solar","tag-token","tag-tokenizacion","tag-trazabilidad","tag-trazabilidad-industrial","tag-ux"],"_links":{"self":[{"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/posts\/2071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/comments?post=2071"}],"version-history":[{"count":17,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/posts\/2071\/revisions"}],"predecessor-version":[{"id":2203,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/posts\/2071\/revisions\/2203"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/media\/2081"}],"wp:attachment":[{"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/media?parent=2071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/categories?post=2071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/macarenatorralba.es\/en\/wp-json\/wp\/v2\/tags?post=2071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}