{"id":2159,"date":"2026-02-13T12:02:36","date_gmt":"2026-02-13T11:02:36","guid":{"rendered":"https:\/\/emya2026bilbao.eus\/?page_id=2159"},"modified":"2026-02-19T13:17:53","modified_gmt":"2026-02-19T12:17:53","slug":"registration","status":"publish","type":"page","link":"https:\/\/emya2026bilbao.eus\/en\/registration\/","title":{"rendered":"Registration"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;Header&#8221; module_class=&#8221;titFond&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_padding=&#8221;||0px||false|false&#8221; scroll_horizontal_motion=&#8221;0|50|50|100|-4|0|0&#8243; collapsed=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;698f9690-9eb0-4f99-ad59-f238b97be924&#8243; background_color=&#8221;gcid-secondary-color&#8221; background_image=&#8221;https:\/\/emya2026bilbao.eus\/wp-content\/uploads\/2026\/02\/emya-trama-tit.svg&#8221; width=&#8221;1080px&#8221; width_tablet=&#8221;80%&#8221; width_phone=&#8221;80%&#8221; width_last_edited=&#8221;on|desktop&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;15px|40px|5px|20px|false|false&#8221; custom_padding_tablet=&#8221;13px|0px|7px|20px|false|false&#8221; custom_padding_phone=&#8221;15px|20px|3px|0px|false|false&#8221; border_radii=&#8221;off||0px|0px|&#8221; box_shadow_color=&#8221;gcid-secondary-color&#8221; global_colors_info=&#8221;{%22gcid-primary-color%22:%91%22box_shadow_color%22%93,%22gcid-secondary-color%22:%91%22box_shadow_color%22,%22background_color%22%93}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_heading title=&#8221;REGISTRATION&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;0f4a8d2c-a668-46c5-b1a5-6149f83510c6&#8243; title_font=&#8221;|700|||||||&#8221; title_text_color=&#8221;#FFFFFF&#8221; title_font_size=&#8221;40px&#8221; title_line_height=&#8221;1em&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_heading][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;Borde&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; custom_margin=&#8221;10px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; scroll_horizontal_motion=&#8221;0|50|50|100|-4|0|0&#8243; collapsed=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row module_class=&#8221;subTit&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;698f9690-9eb0-4f99-ad59-f238b97be924&#8243; background_color=&#8221;gcid-heading-color&#8221; background_enable_image=&#8221;off&#8221; width=&#8221;1080px&#8221; width_tablet=&#8221;80%&#8221; width_phone=&#8221;70%&#8221; width_last_edited=&#8221;on|desktop&#8221; min_height=&#8221;0px&#8221; height=&#8221;0px&#8221; max_height=&#8221;5px&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_padding=&#8221;15px|40px|10px||false|false&#8221; custom_padding_tablet=&#8221;5px||5px||true|false&#8221; custom_padding_phone=&#8221;5px|0px|5px|0px|true|false&#8221; border_radii=&#8221;off||0px|0px|&#8221; box_shadow_color=&#8221;gcid-heading-color&#8221; global_colors_info=&#8221;{%22gcid-primary-color%22:%91%22background_color%22%93,%22gcid-heading-color%22:%91%22background_color%22,%22box_shadow_color%22%93}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;gcid-heading-color&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{%22gcid-heading-color%22:%91%22background_color%22%93}&#8221;][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;Registro&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; width=&#8221;1080px&#8221; width_tablet=&#8221;90%&#8221; width_phone=&#8221;90%&#8221; width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; locked=&#8221;off&#8221; collapsed=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; width=&#8221;1080px&#8221; width_tablet=&#8221;100%&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|desktop&#8221; custom_margin=&#8221;0px||0px|0px|false|false&#8221; custom_padding=&#8221;0px||60px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;contRegistro&#8221; _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]    <div id=\"spv-2170-1966\" class=\"two-step-selector\" data-product-id=\"2170\" data-nonce=\"b6c9110bb2\">\n        <!-- Indicador de progreso -->\n        <div class=\"progress-indicator\">\n            <div class=\"progress-step active\" data-step=\"1\">\n                <div class=\"step-number\">1<\/div>\n                <div class=\"step-label\">Registration type<\/div>\n            <\/div>\n            <div class=\"progress-line\"><\/div>\n            <div class=\"progress-step\" data-step=\"2\">\n                <div class=\"step-number\">2<\/div>\n                <div class=\"step-label\">Attendee profile<\/div>\n            <\/div>\n            <div class=\"progress-line\"><\/div>\n            <div class=\"progress-step\" data-step=\"3\">\n                <div class=\"step-number\">3<\/div>\n                <div class=\"step-label\">Checkout<\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- Paso 1: Tipo de inscripci\u00f3n -->\n        <div class=\"step step-1 active\">\n                            <h2 class=\"step-title\">Registration type<\/h2>\n            \n                        <div class=\"step-info-text\">\n                                    <p>The registration period will end on june 5th at 23:59.<\/p>\n                            <\/div>\n            \n                <div class=\"options-grid\" data-columns=\"3\">\n                                            <div class=\"option-card\" data-attribute=\"pa_tipo-de-registro\" data-value=\"conference-gala-dinner\">\n                                                        \n                            <h3 class=\"option-title\">CONFERENCE + AWARDS<\/h3>\n                            \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                                                                                                                                        <div class=\"price-amount\" style=\"font-size: 28px;\">\n                                                100\u20ac \u2013 250\u20ac\n                                            <\/div>\n                                                                                                                                                                        <\/div>\n                                                            <div>Covers full participation in the event, including all pre-conference events on Wednesday 10 June, conference sessions, lunch and coffee breaks, evening receptions, the awards ceremony and the gala dinner on Saturday 13 June, and the post conference tours on Sunday 14 June.<\/div>\n                                                    <\/div>\n                                            <div class=\"option-card\" data-attribute=\"pa_tipo-de-registro\" data-value=\"conference\">\n                                                        \n                            <h3 class=\"option-title\">ANNUAL CONFERENCE<\/h3>\n                            \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                                                                                                                                        <div class=\"price-amount\" style=\"font-size: 28px;\">\n                                                80\u20ac \u2013 180\u20ac\n                                            <\/div>\n                                                                                                                                                                        <\/div>\n                                                            <div>Allows participation in the full conference programme, except the awards ceremony and the gala dinner, but including all pre-conference events on Wednesday 10 June and the post conference tours on Sunday 14 June.<\/div>\n                                                    <\/div>\n                                            <div class=\"option-card\" data-attribute=\"pa_tipo-de-registro\" data-value=\"gala-dinner\">\n                                                        \n                            <h3 class=\"option-title\">EMYA AWARDS CEREMONY<\/h3>\n                            \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                                                                                                                                        <div class=\"price-amount\" style=\"font-size: 28px;\">\n                                                50\u20ac \u2013 80\u20ac\n                                            <\/div>\n                                                                                                                                                                        <\/div>\n                                                            <div>Includes access to the morning certificate ceremony, the awards ceremony, and the evening gala dinner on Saturday, 13 June.<\/div>\n                                                    <\/div>\n                                    <\/div>\n\n                    <\/div>\n        \n        <!-- Paso 2: Perfil del asistente -->\n        <div class=\"step step-2\">\n            <button type=\"button\" class=\"back-btn\">\u2190 Back<\/button>\n            \n                            <h2 class=\"step-title\">Attendee profile<\/h2>\n                        \n            <div class=\"step-info-text\">\n                <p>Those eligible for a discount must provide proof of eligibility in person during the Conference.<\/p>\n                <p>If you belong to any of these groups, select the reduced rate.<\/p>\n            <\/div>\n            \n                            <div class=\"options-grid spv-perfil-options\" data-columns=\"4\">\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"regular\"\n                             data-perfil-slug=\"regular\"\n                             data-perfil-name=\"Regular\">\n                            \n                                                        \n                            <h3 class=\"option-title\">REGULAR<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"icom-spain\"\n                             data-perfil-slug=\"icom-spain\"\n                             data-perfil-name=\"ICOM Spain\">\n                            \n                                                        \n                            <h3 class=\"option-title\">ICOM SPAIN<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"emf-national-correspondents\"\n                             data-perfil-slug=\"emf-national-correspondents\"\n                             data-perfil-name=\"EMF National Correspondents\">\n                            \n                                                        \n                            <h3 class=\"option-title\">EMF NATIONAL CORRESPONDENTS<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"\n                             data-perfil-slug=\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"\n                             data-perfil-name=\"Bizkaiko Museoak (Museums of the Bizkaia region) and students\">\n                            \n                                                        \n                            <h3 class=\"option-title\">BIZKAIKO MUSEOAK (MUSEUMS OF THE BIZKAIA REGION) AND STUDENTS<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                    <\/div>\n                \n                    <\/div>\n        \n        <input type=\"hidden\" class=\"spv-product-id\" value=\"2170\">\n        <input type=\"hidden\" class=\"spv-selected-tipo\" value=\"\">\n        <input type=\"hidden\" class=\"spv-selected-perfil\" value=\"\">\n        <input type=\"hidden\" class=\"spv-selected-tipo-name\" value=\"\">\n        <input type=\"hidden\" class=\"spv-tipo-attribute-name\" value=\"pa_tipo-de-registro\">\n        <input type=\"hidden\" class=\"spv-perfil-attribute-name\" value=\"pa_perfil-del-asistente\">\n        <input type=\"hidden\" class=\"spv-nonce\" value=\"b6c9110bb2\">\n        \n        <script type=\"application\/json\" class=\"spv-variations-data\">\n            [{\"variation_id\":2173,\"display_price\":250,\"display_regular_price\":250,\"sale_end_date\":\"2026-04-20\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"regular\"}},{\"variation_id\":2171,\"display_price\":180,\"display_regular_price\":180,\"sale_end_date\":\"2026-04-20\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"regular\"}},{\"variation_id\":2172,\"display_price\":80,\"display_regular_price\":80,\"sale_end_date\":\"2026-04-20\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"regular\"}},{\"variation_id\":2176,\"display_price\":150,\"display_regular_price\":150,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"icom-spain\"}},{\"variation_id\":2174,\"display_price\":120,\"display_regular_price\":120,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"icom-spain\"}},{\"variation_id\":2175,\"display_price\":60,\"display_regular_price\":60,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"icom-spain\"}},{\"variation_id\":2179,\"display_price\":125,\"display_regular_price\":125,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"emf-national-correspondents\"}},{\"variation_id\":2177,\"display_price\":100,\"display_regular_price\":100,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"emf-national-correspondents\"}},{\"variation_id\":2178,\"display_price\":60,\"display_regular_price\":60,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"emf-national-correspondents\"}},{\"variation_id\":2182,\"display_price\":100,\"display_regular_price\":100,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"}},{\"variation_id\":2180,\"display_price\":80,\"display_regular_price\":80,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"}},{\"variation_id\":2181,\"display_price\":50,\"display_regular_price\":50,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"}}]        <\/script>\n        \n        <script type=\"application\/json\" class=\"spv-stock-map-data\">\n            {\"conference-gala-dinner|regular\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2173,\"price\":250},\"conference|regular\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2171,\"price\":180},\"gala-dinner|regular\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2172,\"price\":80},\"conference-gala-dinner|icom-spain\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2176,\"price\":150},\"conference|icom-spain\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2174,\"price\":120},\"gala-dinner|icom-spain\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2175,\"price\":60},\"conference-gala-dinner|emf-national-correspondents\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2179,\"price\":125},\"conference|emf-national-correspondents\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2177,\"price\":100},\"gala-dinner|emf-national-correspondents\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2178,\"price\":60},\"conference-gala-dinner|bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2182,\"price\":100},\"conference|bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2180,\"price\":80},\"gala-dinner|bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2181,\"price\":50}}        <\/script>\n        \n        <!-- Textos traducidos para JS -->\n        <script type=\"application\/json\" class=\"spv-translations\">\n            {\"precio\":\"Price\",\"desde\":\"Desde\",\"disponible\":\"Available\",\"no_disponible\":\"Not available\",\"confirma\":\"Confirm Registration\",\"tipo_inscripcion\":\"Registration type\",\"perfil\":\"Attendee profile\",\"total\":\"Total\",\"cancelar\":\"Cancel\",\"confirmar\":\"Confirm and Continue\",\"procesando\":\"Processing\",\"a_partir_del\":\"A partir del\",\"from\":\"From\",\"aurrera\":\"aurrera\"}        <\/script>\n\n        <!-- Locale para JS -->\n        <script type=\"application\/json\" class=\"spv-locale-data\">\n            {\"locale\":\"en_US\",\"meses_es\":[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],\"meses_eu\":[\"urtarrilaren\",\"otsailaren\",\"martxoaren\",\"apirilaren\",\"maiatzaren\",\"ekainaren\",\"uztailaren\",\"abuztuaren\",\"irailaren\",\"urriaren\",\"azaroaren\",\"abenduaren\"],\"meses_en\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]}        <\/script>\n    <\/div>\n    \n    <style>\n        .two-step-selector {\n            max-width: 1400px;\n            margin: 0 auto;\n            padding: 40px 20px;\n        }\n        \n        .two-step-selector .step { \n            display: none;\n            animation: fadeInSlide 0.4s ease-out;\n        }\n        \n        .two-step-selector .step.active { \n            display: block;\n        }\n        \n        @keyframes fadeInSlide {\n            from { opacity: 0; transform: translateX(30px); }\n            to   { opacity: 1; transform: translateX(0); }\n        }\n        \n        \/* Indicador de progreso *\/\n        .progress-indicator {\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin-bottom: 50px;\n            padding: 30px 0;\n        }\n        \n        .progress-step {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            opacity: 0.4;\n            transition: all 0.3s;\n        }\n        \n        .progress-step.active    { opacity: 1; }\n        .progress-step.completed { opacity: 0.7; }\n        \n        .step-number {\n            width: 40px;\n            height: 40px;\n            border-radius: 50%;\n            background: #e0e0e0;\n            color: #666;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-weight: 700;\n            margin-bottom: 8px;\n            transition: all 0.3s;\n        }\n        \n        .progress-step.active    .step-number { background: #0073aa; color: white; }\n        .progress-step.completed .step-number { background: #4caf50; color: white; }\n        \n        .step-label {\n            font-size: 12px;\n            font-weight: 600;\n            color: #666;\n            text-align: center;\n        }\n        \n        .progress-line {\n            width: 80px;\n            height: 2px;\n            background: #e0e0e0;\n            margin: 0 10px 20px;\n        }\n        \n        .step-title {\n            font-size: 32px;\n            font-weight: 700;\n            text-align: center;\n            margin: 0 0 40px 0;\n            color: #000;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n        }\n        \n        .step-info-text {\n            max-width: 800px;\n            margin: 0 auto 40px;\n            text-align: center;\n            padding: 20px 30px;\n            background: #f8f9fa;\n            border-left: 4px solid #0073aa;\n            border-radius: 4px;\n        }\n\n        .step-info-text.spv-closed-notice {\n            background: #fff3f3;\n            border-left-color: #c62828;\n        }\n\n        .step-info-text.spv-closed-notice p {\n            color: #c62828;\n        }\n        \n        .step-info-text p {\n            margin: 0 0 10px 0;\n            font-size: 15px;\n            line-height: 1.6;\n            color: #333;\n        }\n        \n        .step-info-text p:last-child {\n            margin-bottom: 0;\n            font-weight: 600;\n        }\n        \n        .options-grid { \n            display: grid;\n            gap: 30px; \n            margin: 40px 0; \n        }\n        \n        .options-grid[data-columns=\"1\"] { grid-template-columns: minmax(300px, 600px); justify-content: center; }\n        .options-grid[data-columns=\"2\"] { grid-template-columns: repeat(2, 1fr); }\n        .options-grid[data-columns=\"3\"] { grid-template-columns: repeat(3, 1fr); }\n        .options-grid[data-columns=\"4\"] { grid-template-columns: repeat(4, 1fr); }\n        .options-grid[data-columns=\"5\"],\n        .options-grid[data-columns=\"6\"] { grid-template-columns: repeat(3, 1fr); }\n        \n        .option-card {\n            background: white;\n            border: 1px solid #e0e0e0;\n            border-radius: 8px;\n            padding: 40px 30px;\n            text-align: center;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n            position: relative;\n        }\n        \n        .option-card:hover {\n            border-color: #333;\n            box-shadow: 0 4px 16px rgba(0,0,0,0.1);\n            transform: translateY(-2px);\n        }\n        \n        .option-card.processing { pointer-events: none; }\n        \n        .option-card.out-of-stock {\n            opacity: 0.6;\n            cursor: not-allowed;\n            pointer-events: none;\n        }\n        \n        .option-card.out-of-stock:hover {\n            transform: none;\n            border-color: #e0e0e0;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n        }\n        \n\n        .processing-overlay {\n            position: fixed;\n            top: 0; left: 0; right: 0; bottom: 0;\n            background: rgba(0,0,0,0.6);\n            z-index: 999998;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            animation: fadeIn 0.2s ease;\n        }\n\n        .processing-message {\n            background: rgba(0,0,0,0.9);\n            color: white;\n            padding: 20px 40px;\n            border-radius: 8px;\n            font-weight: 600;\n            font-size: 18px;\n            box-shadow: 0 10px 40px rgba(0,0,0,0.5);\n            animation: slideUp 0.3s ease;\n        }\n        \n        .option-image {\n            width: 100%;\n            height: 200px;\n            object-fit: cover;\n            border-radius: 4px;\n            margin-bottom: 20px;\n        }\n        \n        .option-title {\n            font-size: 24px;\n            font-weight: 700;\n            margin: 0 0 15px 0;\n            letter-spacing: 1px;\n            color: #000;\n        }\n        \n        .option-description {\n            font-size: 14px;\n            color: #666;\n            margin: 0 0 8px 0;\n            line-height: 1.6;\n            min-height: 20px;\n        }\n        \n        .option-dates {\n            font-size: 15px;\n            font-weight: 600;\n            color: #000;\n            margin: 0 0 30px 0;\n            min-height: 20px;\n        }\n        \n        .price-circle {\n            width: 180px;\n            height: 180px;\n            border: 3px solid #e0e0e0;\n            border-radius: 50%;\n            margin: 0 auto;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            background: #fafafa;\n        }\n        \n        .price-label {\n            font-size: 11px;\n            font-weight: 600;\n            letter-spacing: 1px;\n            color: #666;\n            margin-bottom: 5px;\n        }\n        \n        .price-amount {\n            font-size: 48px;\n            font-weight: 700;\n            color: #000;\n            line-height: 1;\n        }\n        \n        .price-amount.loading {\n            font-size: 24px;\n            color: #999;\n        }\n        \n        .price-note {\n            font-size: 13px;\n            color: #666;\n            margin-top: 5px;\n        }\n\n        \/* Precio futuro (tras fin de oferta) *\/\n        .price-future {\n            font-size: 13px;\n            color: #888;\n            margin-top: 10px;\n            text-align: center;\n            font-style: italic;\n        }\n        \n        .stock-info {\n            margin-top: 15px;\n            min-height: 30px;\n        }\n        \n        .stock-badge {\n            display: inline-block;\n            padding: 5px 12px;\n            border-radius: 20px;\n            font-size: 12px;\n            font-weight: 600;\n        }\n        \n        .stock-badge.in-stock  { background: #e8f5e9; color: #2e7d32; }\n        .stock-badge.out-of-stock { background: #ffebee; color: #c62828; }\n        \n        .back-btn { \n            margin: 0 0 30px 0; \n            padding: 12px 24px;\n            background: #f5f5f5;\n            border: 1px solid #ddd;\n            cursor: pointer;\n            border-radius: 4px;\n            font-size: 14px;\n            font-weight: 600;\n            transition: all 0.3s;\n        }\n        \n        .back-btn:hover { background: #e8e8e8; border-color: #ccc; }\n        \n        \/* Modal de confirmaci\u00f3n *\/\n        .spv-modal-overlay {\n            position: fixed;\n            top: 0; left: 0; right: 0; bottom: 0;\n            background: rgba(0,0,0,0.7);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            z-index: 99999;\n            animation: fadeIn 0.3s ease;\n        }\n        \n        .spv-modal-content {\n            background: white;\n            padding: 40px;\n            border-radius: 8px;\n            max-width: 500px;\n            width: 90%;\n            box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n            animation: slideUp 0.3s ease;\n        }\n        \n        .spv-modal-content h3 {\n            margin: 0 0 30px 0;\n            font-size: 24px;\n            text-align: center;\n            color: #000;\n        }\n        \n        .summary-item {\n            display: flex;\n            justify-content: space-between;\n            padding: 15px 0;\n            border-bottom: 1px solid #eee;\n        }\n        \n        .summary-label { font-weight: 600; color: #666; }\n        .summary-value { font-weight: 700; color: #000; text-align: right; }\n        \n        .summary-total { border-bottom: none; margin-top: 10px; font-size: 18px; }\n        .summary-total .summary-value { color: #0073aa; }\n        \n        .modal-buttons {\n            display: flex;\n            gap: 15px;\n            margin-top: 30px;\n        }\n        \n        .modal-buttons button {\n            flex: 1;\n            padding: 15px;\n            border: none;\n            border-radius: 4px;\n            font-size: 16px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.3s;\n        }\n        \n        .btn-cancel  { background: #f5f5f5; color: #333; }\n        .btn-cancel:hover { background: #e0e0e0; }\n        .btn-confirm { background: #0073aa; color: white; }\n        .btn-confirm:hover { background: #005a87; }\n        \n        @keyframes fadeIn  { from { opacity: 0; } to { opacity: 1; } }\n        @keyframes slideUp {\n            from { opacity: 0; transform: translateY(30px); }\n            to   { opacity: 1; transform: translateY(0); }\n        }\n        \n        \/* Responsive *\/\n        @media (max-width: 1200px) {\n            .options-grid[data-columns=\"4\"],\n            .options-grid[data-columns=\"5\"],\n            .options-grid[data-columns=\"6\"] { grid-template-columns: repeat(2, 1fr); }\n        }\n        \n        @media (max-width: 768px) {\n            .options-grid[data-columns=\"2\"],\n            .options-grid[data-columns=\"3\"],\n            .options-grid[data-columns=\"4\"],\n            .options-grid[data-columns=\"5\"],\n            .options-grid[data-columns=\"6\"] { grid-template-columns: 1fr; }\n            \n            .step-title    { font-size: 24px; }\n            .option-title  { font-size: 20px; }\n            .price-circle  { width: 150px; height: 150px; }\n            .price-amount  { font-size: 40px; }\n            .step-label    { font-size: 10px; }\n            .progress-line { width: 40px; }\n            \n            .spv-modal-content { padding: 30px 20px; }\n            .modal-buttons { flex-direction: column; }\n            \n            .option-card.out-of-stock::after { font-size: 14px; padding: 8px 20px; }\n        }\n    <\/style>\n    \n    <script>\n    (function() {\n        'use strict';\n        \n        document.addEventListener('DOMContentLoaded', function() {\n            var selector = document.getElementById('spv-2170-1966');\n            if (!selector) return;\n            \n            var selectedTipo        = '';\n            var selectedPerfil      = '';\n            var selectedTipoName    = '';\n            var selectedPerfilName  = '';\n            var selectedPrice       = '';\n            var selectedVariationId = null;\n            \n            var tipoAttrName   = selector.querySelector('.spv-tipo-attribute-name').value;\n            var perfilAttrName = selector.querySelector('.spv-perfil-attribute-name').value;\n            var nonce          = selector.querySelector('.spv-nonce').value;\n            \n            var variations, stockMap, translations, localeData;\n            \n            try {\n                variations   = JSON.parse(selector.querySelector('.spv-variations-data').textContent  || '[]');\n                stockMap     = JSON.parse(selector.querySelector('.spv-stock-map-data').textContent   || '{}');\n                translations = JSON.parse(selector.querySelector('.spv-translations').textContent     || '{}');\n                localeData   = JSON.parse(selector.querySelector('.spv-locale-data').textContent      || '{}');\n            } catch (e) {\n                console.error('SPV: Error parsing data', e);\n                return;\n            }\n\n            var locale = localeData.locale || 'es_ES';\n\n            \/**\n             * Formatea una fecha Y-m-d al estilo del idioma activo\n             * El par\u00e1metro dateStr es la fecha de fin de oferta (ya se le suma +1 d\u00eda en PHP para obtener\n             * la fecha de inicio del precio regular, aqu\u00ed lo hacemos tambi\u00e9n en JS)\n             *\/\n            function formatSaleEndDate(dateStr) {\n                if (!dateStr) return '';\n                var parts   = dateStr.split('-');\n                \/\/ +1 d\u00eda: mismo c\u00e1lculo que PHP hace con strtotime($fecha . ' +1 day')\n                var d = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]) + 1);\n                var day = d.getDate();\n                var mon = d.getMonth(); \/\/ 0-based\n\n                if (locale.indexOf('eu') === 0) {\n                    var meses = localeData.meses_eu || [];\n                    var sufijo = (day % 10 === 0) ? 'tik' : 'etik';\n                    return (meses[mon] || '') + ' ' + day + sufijo;\n                } else if (locale.indexOf('en') === 0) {\n                    var meses = localeData.meses_en || [];\n                    return (meses[mon] || '') + ' ' + day;\n                } else {\n                    var meses = localeData.meses_es || [];\n                    return day + ' de ' + (meses[mon] || '');\n                }\n            }\n\n            \/**\n             * Genera el texto del precio futuro seg\u00fan idioma\n             *\/\n            function buildFuturePriceText(dateStr, regularPrice) {\n                var fechaFmt = formatSaleEndDate(dateStr);\n                var precioFmt = Math.round(regularPrice) + '\u20ac';\n                if (locale.indexOf('eu') === 0) {\n                    return fechaFmt + ': ' + precioFmt;\n                } else if (locale.indexOf('en') === 0) {\n                    return (translations.from || 'From') + ' ' + fechaFmt + ': ' + precioFmt;\n                } else {\n                    return (translations.a_partir_del || 'A partir del') + ' ' + fechaFmt + ': ' + precioFmt;\n                }\n            }\n            \n            \/\/ Funci\u00f3n para escapar HTML\n            function escapeHtml(text) {\n                if (typeof text !== 'string') return '';\n                var div = document.createElement('div');\n                div.textContent = text;\n                return div.innerHTML;\n            }\n            \n            \/\/ Funci\u00f3n para validar variation ID\n            function isValidVariationId(id) {\n                return typeof id === 'number' && id > 0 && Number.isInteger(id);\n            }\n            \n            \/**\n             * Actualiza precios, stock y precio futuro del paso 2\n             *\/\n            function updatePerfilPrices(tipoSlug) {\n                var perfilOptions = selector.querySelectorAll('.spv-perfil-options .option-card');\n                \n                perfilOptions.forEach(function(card) {\n                    var perfilSlug  = card.getAttribute('data-perfil-slug');\n                    var priceAmount = card.querySelector('.price-amount');\n                    var priceNote   = card.querySelector('.price-note');\n                    var stockBadge  = card.querySelector('.stock-badge');\n                    \n                    \/\/ Limpiar estados previos\n                    card.classList.remove('out-of-stock');\n                    card.removeAttribute('data-out-of-stock-text');\n                    stockBadge.classList.remove('out-of-stock', 'in-stock');\n                    stockBadge.textContent = '';\n\n                    \/\/ Eliminar precio futuro previo si exist\u00eda\n                    var prevFuture = card.querySelector('.price-future-js');\n                    if (prevFuture) prevFuture.remove();\n                    \n                    var comboKey  = tipoSlug + '|' + perfilSlug;\n                    var stockData = stockMap[comboKey];\n                    var foundVariation = false;\n                    \n                    for (var i = 0; i < variations.length; i++) {\n                        var variation = variations[i];\n                        var attrs     = variation.attributes;\n                        var tipoKey   = 'attribute_' + tipoAttrName;\n                        var perfilKey = 'attribute_' + perfilAttrName;\n                        \n                        if (attrs[tipoKey] === tipoSlug && attrs[perfilKey] === perfilSlug) {\n                            var precio        = parseFloat(variation.display_price);\n                            var precioRegular = parseFloat(variation.display_regular_price);\n                            var saleEndDate   = variation.sale_end_date || '';\n\n                            card.setAttribute('data-variation-id', variation.variation_id);\n                            \n                            if (stockData && !stockData.in_stock) {\n                                \/\/ NO DISPONIBLE\n                                priceAmount.classList.remove('loading');\n                                priceAmount.textContent = '\u2014';\n                                priceNote.textContent   = '';\n                                card.classList.add('out-of-stock');\n                                card.setAttribute('data-out-of-stock-text', translations.no_disponible || 'No disponible');\n                                stockBadge.classList.add('out-of-stock');\n                                stockBadge.textContent = translations.no_disponible || 'No disponible';\n                            } else {\n                                \/\/ DISPONIBLE\n                                priceAmount.classList.remove('loading');\n                                priceAmount.textContent = Math.round(precio) + '\u20ac';\n                                priceNote.textContent   = '';\n                                stockBadge.classList.add('in-stock');\n                                stockBadge.textContent = translations.disponible || 'Disponible';\n\n                                \/\/ Precio futuro: solo si hay oferta activa (regular > precio actual)\n                                if (precioRegular > precio && saleEndDate) {\n                                    var futurePriceEl = document.createElement('div');\n                                    futurePriceEl.className = 'price-future price-future-js';\n                                    futurePriceEl.textContent = buildFuturePriceText(saleEndDate, precioRegular);\n                                    \/\/ Insertarlo justo despu\u00e9s del price-circle\n                                    var priceCircle = card.querySelector('.price-circle');\n                                    priceCircle.insertAdjacentElement('afterend', futurePriceEl);\n                                }\n                            }\n                            \n                            foundVariation = true;\n                            break;\n                        }\n                    }\n                    \n                    if (!foundVariation) {\n                        priceAmount.classList.remove('loading');\n                        priceAmount.textContent = '\u2014';\n                        priceNote.textContent   = '';\n                        card.classList.add('out-of-stock');\n                        card.setAttribute('data-out-of-stock-text', translations.no_disponible || 'No disponible');\n                        stockBadge.classList.add('out-of-stock');\n                        stockBadge.textContent = translations.no_disponible || 'No disponible';\n                    }\n                });\n            }\n            \n            \/\/ Funci\u00f3n para mostrar modal de confirmaci\u00f3n\n            function showConfirmationModal(tipo, perfil, precio, variationId, onConfirm) {\n                if (!isValidVariationId(variationId)) {\n                    console.error('SPV: Invalid variation ID');\n                    return;\n                }\n                \n                var existingModal = document.getElementById('spv-confirmation-modal');\n                if (existingModal) existingModal.remove();\n                \n                var modal = document.createElement('div');\n                modal.id        = 'spv-confirmation-modal';\n                modal.className = 'spv-modal-overlay';\n                modal.innerHTML = \n                    '<div class=\"spv-modal-content\">' +\n                        '<h3>' + escapeHtml(translations.confirma || 'Confirma tu inscripci\u00f3n') + '<\/h3>' +\n                        '<div class=\"summary-item\">' +\n                            '<span class=\"summary-label\">' + escapeHtml(translations.tipo_inscripcion || 'Tipo de inscripci\u00f3n') + ':<\/span>' +\n                            '<span class=\"summary-value\">' + escapeHtml(tipo) + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"summary-item\">' +\n                            '<span class=\"summary-label\">' + escapeHtml(translations.perfil || 'Perfil') + ':<\/span>' +\n                            '<span class=\"summary-value\">' + escapeHtml(perfil) + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"summary-item summary-total\">' +\n                            '<span class=\"summary-label\">' + escapeHtml(translations.total || 'Total') + ':<\/span>' +\n                            '<span class=\"summary-value\">' + escapeHtml(precio) + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"modal-buttons\">' +\n                            '<button type=\"button\" class=\"btn-cancel\">'  + escapeHtml(translations.cancelar  || 'Cancelar') + '<\/button>' +\n                            '<button type=\"button\" class=\"btn-confirm\">' + escapeHtml(translations.confirmar || 'Confirmar y continuar') + '<\/button>' +\n                        '<\/div>' +\n                    '<\/div>';\n                \n                document.body.appendChild(modal);\n                \n                modal.querySelector('.btn-confirm').addEventListener('click', function() {\n                    modal.remove();\n                    if (typeof onConfirm === 'function') onConfirm();\n                });\n                \n                modal.querySelector('.btn-cancel').addEventListener('click', function() {\n                    modal.remove();\n                });\n                \n                modal.addEventListener('click', function(e) {\n                    if (e.target === modal) modal.remove();\n                });\n            }\n            \n            \/\/ Funci\u00f3n para procesar checkout\n            function processCheckout(variationId) {\n                if (!isValidVariationId(variationId)) {\n                    console.error('SPV: Invalid variation ID for checkout');\n                    return;\n                }\n\n                var existingOverlay = document.querySelector('.processing-overlay');\n                if (existingOverlay) existingOverlay.remove();\n\n                var overlay = document.createElement('div');\n                overlay.className = 'processing-overlay';\n                overlay.innerHTML = '<div class=\"processing-message\">' + escapeHtml(translations.procesando || 'Procesando') + '...<\/div>';\n                document.body.appendChild(overlay);\n\n                var productId = parseInt(selector.querySelector('.spv-product-id').value, 10);\n\n                var baseUrl     = 'https:\/\/emya2026bilbao.eus\/en\/';\n                var closingDate = '2026-06-05 23:59:59';\n                var url = new URL(baseUrl);\n                url.searchParams.set('add-to-cart',    productId.toString());\n                url.searchParams.set('variation_id',   variationId.toString());\n                url.searchParams.set('quantity',        '1');\n                url.searchParams.set('direct_checkout', '1');\n                url.searchParams.set('spv_nonce',       nonce);\n                url.searchParams.set('spv_closing',     closingDate);\n                url.searchParams.set('attribute_' + tipoAttrName,   selectedTipo);\n                url.searchParams.set('attribute_' + perfilAttrName, selectedPerfil);\n\n                window.location.href = url.toString();\n            }\n            \n            var isClosed = false;\n\n            \/\/ Paso 1: Seleccionar tipo de inscripci\u00f3n\n            var step1Cards = selector.querySelectorAll('.step-1 .option-card');\n            step1Cards.forEach(function(card) {\n                card.addEventListener('click', function() {\n                    if (isClosed) return false;\n\n                    selectedTipo     = this.getAttribute('data-value');\n                    selectedTipoName = this.querySelector('.option-title').textContent;\n\n                    selector.querySelector('.spv-selected-tipo').value      = selectedTipo;\n                    selector.querySelector('.spv-selected-tipo-name').value = selectedTipoName;\n\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.remove('active');\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.add('completed');\n                    selector.querySelector('.progress-step[data-step=\"2\"]').classList.add('active');\n\n                    updatePerfilPrices(selectedTipo);\n\n                    selector.querySelector('.step-1').classList.remove('active');\n                    selector.querySelector('.step-2').classList.add('active');\n                });\n            });\n            \n            \/\/ Paso 2: Seleccionar perfil y mostrar confirmaci\u00f3n\n            var step2Cards = selector.querySelectorAll('.step-2 .option-card');\n            step2Cards.forEach(function(card) {\n                card.addEventListener('click', function() {\n                    if (this.classList.contains('out-of-stock')) return false;\n                    \n                    selectedPerfil      = this.getAttribute('data-value');\n                    selectedPerfilName  = this.getAttribute('data-perfil-name');\n                    selectedPrice       = this.querySelector('.price-amount').textContent;\n                    selectedVariationId = parseInt(this.getAttribute('data-variation-id'), 10);\n                    \n                    selector.querySelector('.spv-selected-perfil').value = selectedPerfil;\n                    \n                    showConfirmationModal(\n                        selectedTipoName,\n                        selectedPerfilName,\n                        selectedPrice,\n                        selectedVariationId,\n                        function() {\n                            processCheckout(selectedVariationId);\n                        }\n                    );\n                });\n            });\n            \n            \/\/ Bot\u00f3n volver\n            var backBtn = selector.querySelector('.back-btn');\n            if (backBtn) {\n                backBtn.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    \n                    selector.querySelector('.progress-step[data-step=\"2\"]').classList.remove('active');\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.remove('completed');\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.add('active');\n                    \n                    selector.querySelector('.step-2').classList.remove('active');\n                    selector.querySelector('.step-1').classList.add('active');\n                });\n            }\n        });\n    })();\n    <\/script>\n    <br \/>\n<!-- \/divi:shortcode -->[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"    <div id=\"spv-2170-4473\" class=\"two-step-selector\" data-product-id=\"2170\" data-nonce=\"b6c9110bb2\">\n        <!-- Indicador de progreso -->\n        <div class=\"progress-indicator\">\n            <div class=\"progress-step active\" data-step=\"1\">\n                <div class=\"step-number\">1<\/div>\n                <div class=\"step-label\">Registration type<\/div>\n            <\/div>\n            <div class=\"progress-line\"><\/div>\n            <div class=\"progress-step\" data-step=\"2\">\n                <div class=\"step-number\">2<\/div>\n                <div class=\"step-label\">Attendee profile<\/div>\n            <\/div>\n            <div class=\"progress-line\"><\/div>\n            <div class=\"progress-step\" data-step=\"3\">\n                <div class=\"step-number\">3<\/div>\n                <div class=\"step-label\">Checkout<\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- Paso 1: Tipo de inscripci\u00f3n -->\n        <div class=\"step step-1 active\">\n                            <h2 class=\"step-title\">Registration type<\/h2>\n            \n                        <div class=\"step-info-text\">\n                                    <p>The registration period will end on june 5th at 23:59.<\/p>\n                            <\/div>\n            \n                <div class=\"options-grid\" data-columns=\"3\">\n                                            <div class=\"option-card\" data-attribute=\"pa_tipo-de-registro\" data-value=\"conference-gala-dinner\">\n                                                        \n                            <h3 class=\"option-title\">CONFERENCE + AWARDS<\/h3>\n                            \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                                                                                                                                        <div class=\"price-amount\" style=\"font-size: 28px;\">\n                                                100\u20ac \u2013 250\u20ac\n                                            <\/div>\n                                                                                                                                                                        <\/div>\n                                                            <div>Covers full participation in the event, including all pre-conference events on Wednesday 10 June, conference sessions, lunch and coffee breaks, evening receptions, the awards ceremony and the gala dinner on Saturday 13 June, and the post conference tours on Sunday 14 June.<\/div>\n                                                    <\/div>\n                                            <div class=\"option-card\" data-attribute=\"pa_tipo-de-registro\" data-value=\"conference\">\n                                                        \n                            <h3 class=\"option-title\">ANNUAL CONFERENCE<\/h3>\n                            \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                                                                                                                                        <div class=\"price-amount\" style=\"font-size: 28px;\">\n                                                80\u20ac \u2013 180\u20ac\n                                            <\/div>\n                                                                                                                                                                        <\/div>\n                                                            <div>Allows participation in the full conference programme, except the awards ceremony and the gala dinner, but including all pre-conference events on Wednesday 10 June and the post conference tours on Sunday 14 June.<\/div>\n                                                    <\/div>\n                                            <div class=\"option-card\" data-attribute=\"pa_tipo-de-registro\" data-value=\"gala-dinner\">\n                                                        \n                            <h3 class=\"option-title\">EMYA AWARDS CEREMONY<\/h3>\n                            \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                                                                                                                                        <div class=\"price-amount\" style=\"font-size: 28px;\">\n                                                50\u20ac \u2013 80\u20ac\n                                            <\/div>\n                                                                                                                                                                        <\/div>\n                                                            <div>Includes access to the morning certificate ceremony, the awards ceremony, and the evening gala dinner on Saturday, 13 June.<\/div>\n                                                    <\/div>\n                                    <\/div>\n\n                    <\/div>\n        \n        <!-- Paso 2: Perfil del asistente -->\n        <div class=\"step step-2\">\n            <button type=\"button\" class=\"back-btn\">\u2190 Back<\/button>\n            \n                            <h2 class=\"step-title\">Attendee profile<\/h2>\n                        \n            <div class=\"step-info-text\">\n                <p>Those eligible for a discount must provide proof of eligibility in person during the Conference.<\/p>\n                <p>If you belong to any of these groups, select the reduced rate.<\/p>\n            <\/div>\n            \n                            <div class=\"options-grid spv-perfil-options\" data-columns=\"4\">\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"regular\"\n                             data-perfil-slug=\"regular\"\n                             data-perfil-name=\"Regular\">\n                            \n                                                        \n                            <h3 class=\"option-title\">REGULAR<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"icom-spain\"\n                             data-perfil-slug=\"icom-spain\"\n                             data-perfil-name=\"ICOM Spain\">\n                            \n                                                        \n                            <h3 class=\"option-title\">ICOM SPAIN<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"emf-national-correspondents\"\n                             data-perfil-slug=\"emf-national-correspondents\"\n                             data-perfil-name=\"EMF National Correspondents\">\n                            \n                                                        \n                            <h3 class=\"option-title\">EMF NATIONAL CORRESPONDENTS<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                            <div class=\"option-card\" \n                             data-attribute=\"pa_perfil-del-asistente\" \n                             data-value=\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"\n                             data-perfil-slug=\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"\n                             data-perfil-name=\"Bizkaiko Museoak (Museums of the Bizkaia region) and students\">\n                            \n                                                        \n                            <h3 class=\"option-title\">BIZKAIKO MUSEOAK (MUSEUMS OF THE BIZKAIA REGION) AND STUDENTS<\/h3>\n                            \n                                                        \n                                                        \n                            <div class=\"price-circle\">\n                                <div class=\"price-label\">Price<\/div>\n                                <div class=\"price-amount loading\">...<\/div>\n                                <div class=\"price-note\"><\/div>\n                            <\/div>\n\n                            <!-- El precio futuro se inserta aqu\u00ed din\u00e1micamente por JS -->\n                            \n                            <div class=\"stock-info\">\n                                <span class=\"stock-badge\"><\/span>\n                            <\/div>\n                        <\/div>\n                                    <\/div>\n                \n                    <\/div>\n        \n        <input type=\"hidden\" class=\"spv-product-id\" value=\"2170\">\n        <input type=\"hidden\" class=\"spv-selected-tipo\" value=\"\">\n        <input type=\"hidden\" class=\"spv-selected-perfil\" value=\"\">\n        <input type=\"hidden\" class=\"spv-selected-tipo-name\" value=\"\">\n        <input type=\"hidden\" class=\"spv-tipo-attribute-name\" value=\"pa_tipo-de-registro\">\n        <input type=\"hidden\" class=\"spv-perfil-attribute-name\" value=\"pa_perfil-del-asistente\">\n        <input type=\"hidden\" class=\"spv-nonce\" value=\"b6c9110bb2\">\n        \n        <script type=\"application\/json\" class=\"spv-variations-data\">\n            [{\"variation_id\":2173,\"display_price\":250,\"display_regular_price\":250,\"sale_end_date\":\"2026-04-20\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"regular\"}},{\"variation_id\":2171,\"display_price\":180,\"display_regular_price\":180,\"sale_end_date\":\"2026-04-20\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"regular\"}},{\"variation_id\":2172,\"display_price\":80,\"display_regular_price\":80,\"sale_end_date\":\"2026-04-20\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"regular\"}},{\"variation_id\":2176,\"display_price\":150,\"display_regular_price\":150,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"icom-spain\"}},{\"variation_id\":2174,\"display_price\":120,\"display_regular_price\":120,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"icom-spain\"}},{\"variation_id\":2175,\"display_price\":60,\"display_regular_price\":60,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"icom-spain\"}},{\"variation_id\":2179,\"display_price\":125,\"display_regular_price\":125,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"emf-national-correspondents\"}},{\"variation_id\":2177,\"display_price\":100,\"display_regular_price\":100,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"emf-national-correspondents\"}},{\"variation_id\":2178,\"display_price\":60,\"display_regular_price\":60,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"emf-national-correspondents\"}},{\"variation_id\":2182,\"display_price\":100,\"display_regular_price\":100,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference-gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"}},{\"variation_id\":2180,\"display_price\":80,\"display_regular_price\":80,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"conference\",\"attribute_pa_perfil-del-asistente\":\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"}},{\"variation_id\":2181,\"display_price\":50,\"display_regular_price\":50,\"sale_end_date\":\"\",\"is_in_stock\":true,\"attributes\":{\"attribute_pa_tipo-de-registro\":\"gala-dinner\",\"attribute_pa_perfil-del-asistente\":\"bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\"}}]        <\/script>\n        \n        <script type=\"application\/json\" class=\"spv-stock-map-data\">\n            {\"conference-gala-dinner|regular\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2173,\"price\":250},\"conference|regular\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2171,\"price\":180},\"gala-dinner|regular\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2172,\"price\":80},\"conference-gala-dinner|icom-spain\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2176,\"price\":150},\"conference|icom-spain\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2174,\"price\":120},\"gala-dinner|icom-spain\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2175,\"price\":60},\"conference-gala-dinner|emf-national-correspondents\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2179,\"price\":125},\"conference|emf-national-correspondents\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2177,\"price\":100},\"gala-dinner|emf-national-correspondents\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2178,\"price\":60},\"conference-gala-dinner|bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2182,\"price\":100},\"conference|bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2180,\"price\":80},\"gala-dinner|bizkaiko-museoak-museums-of-the-bizkaia-region-and-students\":{\"in_stock\":true,\"max_qty\":1,\"variation_id\":2181,\"price\":50}}        <\/script>\n        \n        <!-- Textos traducidos para JS -->\n        <script type=\"application\/json\" class=\"spv-translations\">\n            {\"precio\":\"Price\",\"desde\":\"Desde\",\"disponible\":\"Available\",\"no_disponible\":\"Not available\",\"confirma\":\"Confirm Registration\",\"tipo_inscripcion\":\"Registration type\",\"perfil\":\"Attendee profile\",\"total\":\"Total\",\"cancelar\":\"Cancel\",\"confirmar\":\"Confirm and Continue\",\"procesando\":\"Processing\",\"a_partir_del\":\"A partir del\",\"from\":\"From\",\"aurrera\":\"aurrera\"}        <\/script>\n\n        <!-- Locale para JS -->\n        <script type=\"application\/json\" class=\"spv-locale-data\">\n            {\"locale\":\"en_US\",\"meses_es\":[\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],\"meses_eu\":[\"urtarrilaren\",\"otsailaren\",\"martxoaren\",\"apirilaren\",\"maiatzaren\",\"ekainaren\",\"uztailaren\",\"abuztuaren\",\"irailaren\",\"urriaren\",\"azaroaren\",\"abenduaren\"],\"meses_en\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]}        <\/script>\n    <\/div>\n    \n    <style>\n        .two-step-selector {\n            max-width: 1400px;\n            margin: 0 auto;\n            padding: 40px 20px;\n        }\n        \n        .two-step-selector .step { \n            display: none;\n            animation: fadeInSlide 0.4s ease-out;\n        }\n        \n        .two-step-selector .step.active { \n            display: block;\n        }\n        \n        @keyframes fadeInSlide {\n            from { opacity: 0; transform: translateX(30px); }\n            to   { opacity: 1; transform: translateX(0); }\n        }\n        \n        \/* Indicador de progreso *\/\n        .progress-indicator {\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin-bottom: 50px;\n            padding: 30px 0;\n        }\n        \n        .progress-step {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            opacity: 0.4;\n            transition: all 0.3s;\n        }\n        \n        .progress-step.active    { opacity: 1; }\n        .progress-step.completed { opacity: 0.7; }\n        \n        .step-number {\n            width: 40px;\n            height: 40px;\n            border-radius: 50%;\n            background: #e0e0e0;\n            color: #666;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-weight: 700;\n            margin-bottom: 8px;\n            transition: all 0.3s;\n        }\n        \n        .progress-step.active    .step-number { background: #0073aa; color: white; }\n        .progress-step.completed .step-number { background: #4caf50; color: white; }\n        \n        .step-label {\n            font-size: 12px;\n            font-weight: 600;\n            color: #666;\n            text-align: center;\n        }\n        \n        .progress-line {\n            width: 80px;\n            height: 2px;\n            background: #e0e0e0;\n            margin: 0 10px 20px;\n        }\n        \n        .step-title {\n            font-size: 32px;\n            font-weight: 700;\n            text-align: center;\n            margin: 0 0 40px 0;\n            color: #000;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n        }\n        \n        .step-info-text {\n            max-width: 800px;\n            margin: 0 auto 40px;\n            text-align: center;\n            padding: 20px 30px;\n            background: #f8f9fa;\n            border-left: 4px solid #0073aa;\n            border-radius: 4px;\n        }\n\n        .step-info-text.spv-closed-notice {\n            background: #fff3f3;\n            border-left-color: #c62828;\n        }\n\n        .step-info-text.spv-closed-notice p {\n            color: #c62828;\n        }\n        \n        .step-info-text p {\n            margin: 0 0 10px 0;\n            font-size: 15px;\n            line-height: 1.6;\n            color: #333;\n        }\n        \n        .step-info-text p:last-child {\n            margin-bottom: 0;\n            font-weight: 600;\n        }\n        \n        .options-grid { \n            display: grid;\n            gap: 30px; \n            margin: 40px 0; \n        }\n        \n        .options-grid[data-columns=\"1\"] { grid-template-columns: minmax(300px, 600px); justify-content: center; }\n        .options-grid[data-columns=\"2\"] { grid-template-columns: repeat(2, 1fr); }\n        .options-grid[data-columns=\"3\"] { grid-template-columns: repeat(3, 1fr); }\n        .options-grid[data-columns=\"4\"] { grid-template-columns: repeat(4, 1fr); }\n        .options-grid[data-columns=\"5\"],\n        .options-grid[data-columns=\"6\"] { grid-template-columns: repeat(3, 1fr); }\n        \n        .option-card {\n            background: white;\n            border: 1px solid #e0e0e0;\n            border-radius: 8px;\n            padding: 40px 30px;\n            text-align: center;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n            position: relative;\n        }\n        \n        .option-card:hover {\n            border-color: #333;\n            box-shadow: 0 4px 16px rgba(0,0,0,0.1);\n            transform: translateY(-2px);\n        }\n        \n        .option-card.processing { pointer-events: none; }\n        \n        .option-card.out-of-stock {\n            opacity: 0.6;\n            cursor: not-allowed;\n            pointer-events: none;\n        }\n        \n        .option-card.out-of-stock:hover {\n            transform: none;\n            border-color: #e0e0e0;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n        }\n        \n\n        .processing-overlay {\n            position: fixed;\n            top: 0; left: 0; right: 0; bottom: 0;\n            background: rgba(0,0,0,0.6);\n            z-index: 999998;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            animation: fadeIn 0.2s ease;\n        }\n\n        .processing-message {\n            background: rgba(0,0,0,0.9);\n            color: white;\n            padding: 20px 40px;\n            border-radius: 8px;\n            font-weight: 600;\n            font-size: 18px;\n            box-shadow: 0 10px 40px rgba(0,0,0,0.5);\n            animation: slideUp 0.3s ease;\n        }\n        \n        .option-image {\n            width: 100%;\n            height: 200px;\n            object-fit: cover;\n            border-radius: 4px;\n            margin-bottom: 20px;\n        }\n        \n        .option-title {\n            font-size: 24px;\n            font-weight: 700;\n            margin: 0 0 15px 0;\n            letter-spacing: 1px;\n            color: #000;\n        }\n        \n        .option-description {\n            font-size: 14px;\n            color: #666;\n            margin: 0 0 8px 0;\n            line-height: 1.6;\n            min-height: 20px;\n        }\n        \n        .option-dates {\n            font-size: 15px;\n            font-weight: 600;\n            color: #000;\n            margin: 0 0 30px 0;\n            min-height: 20px;\n        }\n        \n        .price-circle {\n            width: 180px;\n            height: 180px;\n            border: 3px solid #e0e0e0;\n            border-radius: 50%;\n            margin: 0 auto;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            background: #fafafa;\n        }\n        \n        .price-label {\n            font-size: 11px;\n            font-weight: 600;\n            letter-spacing: 1px;\n            color: #666;\n            margin-bottom: 5px;\n        }\n        \n        .price-amount {\n            font-size: 48px;\n            font-weight: 700;\n            color: #000;\n            line-height: 1;\n        }\n        \n        .price-amount.loading {\n            font-size: 24px;\n            color: #999;\n        }\n        \n        .price-note {\n            font-size: 13px;\n            color: #666;\n            margin-top: 5px;\n        }\n\n        \/* Precio futuro (tras fin de oferta) *\/\n        .price-future {\n            font-size: 13px;\n            color: #888;\n            margin-top: 10px;\n            text-align: center;\n            font-style: italic;\n        }\n        \n        .stock-info {\n            margin-top: 15px;\n            min-height: 30px;\n        }\n        \n        .stock-badge {\n            display: inline-block;\n            padding: 5px 12px;\n            border-radius: 20px;\n            font-size: 12px;\n            font-weight: 600;\n        }\n        \n        .stock-badge.in-stock  { background: #e8f5e9; color: #2e7d32; }\n        .stock-badge.out-of-stock { background: #ffebee; color: #c62828; }\n        \n        .back-btn { \n            margin: 0 0 30px 0; \n            padding: 12px 24px;\n            background: #f5f5f5;\n            border: 1px solid #ddd;\n            cursor: pointer;\n            border-radius: 4px;\n            font-size: 14px;\n            font-weight: 600;\n            transition: all 0.3s;\n        }\n        \n        .back-btn:hover { background: #e8e8e8; border-color: #ccc; }\n        \n        \/* Modal de confirmaci\u00f3n *\/\n        .spv-modal-overlay {\n            position: fixed;\n            top: 0; left: 0; right: 0; bottom: 0;\n            background: rgba(0,0,0,0.7);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            z-index: 99999;\n            animation: fadeIn 0.3s ease;\n        }\n        \n        .spv-modal-content {\n            background: white;\n            padding: 40px;\n            border-radius: 8px;\n            max-width: 500px;\n            width: 90%;\n            box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n            animation: slideUp 0.3s ease;\n        }\n        \n        .spv-modal-content h3 {\n            margin: 0 0 30px 0;\n            font-size: 24px;\n            text-align: center;\n            color: #000;\n        }\n        \n        .summary-item {\n            display: flex;\n            justify-content: space-between;\n            padding: 15px 0;\n            border-bottom: 1px solid #eee;\n        }\n        \n        .summary-label { font-weight: 600; color: #666; }\n        .summary-value { font-weight: 700; color: #000; text-align: right; }\n        \n        .summary-total { border-bottom: none; margin-top: 10px; font-size: 18px; }\n        .summary-total .summary-value { color: #0073aa; }\n        \n        .modal-buttons {\n            display: flex;\n            gap: 15px;\n            margin-top: 30px;\n        }\n        \n        .modal-buttons button {\n            flex: 1;\n            padding: 15px;\n            border: none;\n            border-radius: 4px;\n            font-size: 16px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.3s;\n        }\n        \n        .btn-cancel  { background: #f5f5f5; color: #333; }\n        .btn-cancel:hover { background: #e0e0e0; }\n        .btn-confirm { background: #0073aa; color: white; }\n        .btn-confirm:hover { background: #005a87; }\n        \n        @keyframes fadeIn  { from { opacity: 0; } to { opacity: 1; } }\n        @keyframes slideUp {\n            from { opacity: 0; transform: translateY(30px); }\n            to   { opacity: 1; transform: translateY(0); }\n        }\n        \n        \/* Responsive *\/\n        @media (max-width: 1200px) {\n            .options-grid[data-columns=\"4\"],\n            .options-grid[data-columns=\"5\"],\n            .options-grid[data-columns=\"6\"] { grid-template-columns: repeat(2, 1fr); }\n        }\n        \n        @media (max-width: 768px) {\n            .options-grid[data-columns=\"2\"],\n            .options-grid[data-columns=\"3\"],\n            .options-grid[data-columns=\"4\"],\n            .options-grid[data-columns=\"5\"],\n            .options-grid[data-columns=\"6\"] { grid-template-columns: 1fr; }\n            \n            .step-title    { font-size: 24px; }\n            .option-title  { font-size: 20px; }\n            .price-circle  { width: 150px; height: 150px; }\n            .price-amount  { font-size: 40px; }\n            .step-label    { font-size: 10px; }\n            .progress-line { width: 40px; }\n            \n            .spv-modal-content { padding: 30px 20px; }\n            .modal-buttons { flex-direction: column; }\n            \n            .option-card.out-of-stock::after { font-size: 14px; padding: 8px 20px; }\n        }\n    <\/style>\n    \n    <script>\n    (function() {\n        'use strict';\n        \n        document.addEventListener('DOMContentLoaded', function() {\n            var selector = document.getElementById('spv-2170-4473');\n            if (!selector) return;\n            \n            var selectedTipo        = '';\n            var selectedPerfil      = '';\n            var selectedTipoName    = '';\n            var selectedPerfilName  = '';\n            var selectedPrice       = '';\n            var selectedVariationId = null;\n            \n            var tipoAttrName   = selector.querySelector('.spv-tipo-attribute-name').value;\n            var perfilAttrName = selector.querySelector('.spv-perfil-attribute-name').value;\n            var nonce          = selector.querySelector('.spv-nonce').value;\n            \n            var variations, stockMap, translations, localeData;\n            \n            try {\n                variations   = JSON.parse(selector.querySelector('.spv-variations-data').textContent  || '[]');\n                stockMap     = JSON.parse(selector.querySelector('.spv-stock-map-data').textContent   || '{}');\n                translations = JSON.parse(selector.querySelector('.spv-translations').textContent     || '{}');\n                localeData   = JSON.parse(selector.querySelector('.spv-locale-data').textContent      || '{}');\n            } catch (e) {\n                console.error('SPV: Error parsing data', e);\n                return;\n            }\n\n            var locale = localeData.locale || 'es_ES';\n\n            \/**\n             * Formatea una fecha Y-m-d al estilo del idioma activo\n             * El par\u00e1metro dateStr es la fecha de fin de oferta (ya se le suma +1 d\u00eda en PHP para obtener\n             * la fecha de inicio del precio regular, aqu\u00ed lo hacemos tambi\u00e9n en JS)\n             *\/\n            function formatSaleEndDate(dateStr) {\n                if (!dateStr) return '';\n                var parts   = dateStr.split('-');\n                \/\/ +1 d\u00eda: mismo c\u00e1lculo que PHP hace con strtotime($fecha . ' +1 day')\n                var d = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]) + 1);\n                var day = d.getDate();\n                var mon = d.getMonth(); \/\/ 0-based\n\n                if (locale.indexOf('eu') === 0) {\n                    var meses = localeData.meses_eu || [];\n                    var sufijo = (day % 10 === 0) ? 'tik' : 'etik';\n                    return (meses[mon] || '') + ' ' + day + sufijo;\n                } else if (locale.indexOf('en') === 0) {\n                    var meses = localeData.meses_en || [];\n                    return (meses[mon] || '') + ' ' + day;\n                } else {\n                    var meses = localeData.meses_es || [];\n                    return day + ' de ' + (meses[mon] || '');\n                }\n            }\n\n            \/**\n             * Genera el texto del precio futuro seg\u00fan idioma\n             *\/\n            function buildFuturePriceText(dateStr, regularPrice) {\n                var fechaFmt = formatSaleEndDate(dateStr);\n                var precioFmt = Math.round(regularPrice) + '\u20ac';\n                if (locale.indexOf('eu') === 0) {\n                    return fechaFmt + ': ' + precioFmt;\n                } else if (locale.indexOf('en') === 0) {\n                    return (translations.from || 'From') + ' ' + fechaFmt + ': ' + precioFmt;\n                } else {\n                    return (translations.a_partir_del || 'A partir del') + ' ' + fechaFmt + ': ' + precioFmt;\n                }\n            }\n            \n            \/\/ Funci\u00f3n para escapar HTML\n            function escapeHtml(text) {\n                if (typeof text !== 'string') return '';\n                var div = document.createElement('div');\n                div.textContent = text;\n                return div.innerHTML;\n            }\n            \n            \/\/ Funci\u00f3n para validar variation ID\n            function isValidVariationId(id) {\n                return typeof id === 'number' && id > 0 && Number.isInteger(id);\n            }\n            \n            \/**\n             * Actualiza precios, stock y precio futuro del paso 2\n             *\/\n            function updatePerfilPrices(tipoSlug) {\n                var perfilOptions = selector.querySelectorAll('.spv-perfil-options .option-card');\n                \n                perfilOptions.forEach(function(card) {\n                    var perfilSlug  = card.getAttribute('data-perfil-slug');\n                    var priceAmount = card.querySelector('.price-amount');\n                    var priceNote   = card.querySelector('.price-note');\n                    var stockBadge  = card.querySelector('.stock-badge');\n                    \n                    \/\/ Limpiar estados previos\n                    card.classList.remove('out-of-stock');\n                    card.removeAttribute('data-out-of-stock-text');\n                    stockBadge.classList.remove('out-of-stock', 'in-stock');\n                    stockBadge.textContent = '';\n\n                    \/\/ Eliminar precio futuro previo si exist\u00eda\n                    var prevFuture = card.querySelector('.price-future-js');\n                    if (prevFuture) prevFuture.remove();\n                    \n                    var comboKey  = tipoSlug + '|' + perfilSlug;\n                    var stockData = stockMap[comboKey];\n                    var foundVariation = false;\n                    \n                    for (var i = 0; i < variations.length; i++) {\n                        var variation = variations[i];\n                        var attrs     = variation.attributes;\n                        var tipoKey   = 'attribute_' + tipoAttrName;\n                        var perfilKey = 'attribute_' + perfilAttrName;\n                        \n                        if (attrs[tipoKey] === tipoSlug && attrs[perfilKey] === perfilSlug) {\n                            var precio        = parseFloat(variation.display_price);\n                            var precioRegular = parseFloat(variation.display_regular_price);\n                            var saleEndDate   = variation.sale_end_date || '';\n\n                            card.setAttribute('data-variation-id', variation.variation_id);\n                            \n                            if (stockData && !stockData.in_stock) {\n                                \/\/ NO DISPONIBLE\n                                priceAmount.classList.remove('loading');\n                                priceAmount.textContent = '\u2014';\n                                priceNote.textContent   = '';\n                                card.classList.add('out-of-stock');\n                                card.setAttribute('data-out-of-stock-text', translations.no_disponible || 'No disponible');\n                                stockBadge.classList.add('out-of-stock');\n                                stockBadge.textContent = translations.no_disponible || 'No disponible';\n                            } else {\n                                \/\/ DISPONIBLE\n                                priceAmount.classList.remove('loading');\n                                priceAmount.textContent = Math.round(precio) + '\u20ac';\n                                priceNote.textContent   = '';\n                                stockBadge.classList.add('in-stock');\n                                stockBadge.textContent = translations.disponible || 'Disponible';\n\n                                \/\/ Precio futuro: solo si hay oferta activa (regular > precio actual)\n                                if (precioRegular > precio && saleEndDate) {\n                                    var futurePriceEl = document.createElement('div');\n                                    futurePriceEl.className = 'price-future price-future-js';\n                                    futurePriceEl.textContent = buildFuturePriceText(saleEndDate, precioRegular);\n                                    \/\/ Insertarlo justo despu\u00e9s del price-circle\n                                    var priceCircle = card.querySelector('.price-circle');\n                                    priceCircle.insertAdjacentElement('afterend', futurePriceEl);\n                                }\n                            }\n                            \n                            foundVariation = true;\n                            break;\n                        }\n                    }\n                    \n                    if (!foundVariation) {\n                        priceAmount.classList.remove('loading');\n                        priceAmount.textContent = '\u2014';\n                        priceNote.textContent   = '';\n                        card.classList.add('out-of-stock');\n                        card.setAttribute('data-out-of-stock-text', translations.no_disponible || 'No disponible');\n                        stockBadge.classList.add('out-of-stock');\n                        stockBadge.textContent = translations.no_disponible || 'No disponible';\n                    }\n                });\n            }\n            \n            \/\/ Funci\u00f3n para mostrar modal de confirmaci\u00f3n\n            function showConfirmationModal(tipo, perfil, precio, variationId, onConfirm) {\n                if (!isValidVariationId(variationId)) {\n                    console.error('SPV: Invalid variation ID');\n                    return;\n                }\n                \n                var existingModal = document.getElementById('spv-confirmation-modal');\n                if (existingModal) existingModal.remove();\n                \n                var modal = document.createElement('div');\n                modal.id        = 'spv-confirmation-modal';\n                modal.className = 'spv-modal-overlay';\n                modal.innerHTML = \n                    '<div class=\"spv-modal-content\">' +\n                        '<h3>' + escapeHtml(translations.confirma || 'Confirma tu inscripci\u00f3n') + '<\/h3>' +\n                        '<div class=\"summary-item\">' +\n                            '<span class=\"summary-label\">' + escapeHtml(translations.tipo_inscripcion || 'Tipo de inscripci\u00f3n') + ':<\/span>' +\n                            '<span class=\"summary-value\">' + escapeHtml(tipo) + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"summary-item\">' +\n                            '<span class=\"summary-label\">' + escapeHtml(translations.perfil || 'Perfil') + ':<\/span>' +\n                            '<span class=\"summary-value\">' + escapeHtml(perfil) + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"summary-item summary-total\">' +\n                            '<span class=\"summary-label\">' + escapeHtml(translations.total || 'Total') + ':<\/span>' +\n                            '<span class=\"summary-value\">' + escapeHtml(precio) + '<\/span>' +\n                        '<\/div>' +\n                        '<div class=\"modal-buttons\">' +\n                            '<button type=\"button\" class=\"btn-cancel\">'  + escapeHtml(translations.cancelar  || 'Cancelar') + '<\/button>' +\n                            '<button type=\"button\" class=\"btn-confirm\">' + escapeHtml(translations.confirmar || 'Confirmar y continuar') + '<\/button>' +\n                        '<\/div>' +\n                    '<\/div>';\n                \n                document.body.appendChild(modal);\n                \n                modal.querySelector('.btn-confirm').addEventListener('click', function() {\n                    modal.remove();\n                    if (typeof onConfirm === 'function') onConfirm();\n                });\n                \n                modal.querySelector('.btn-cancel').addEventListener('click', function() {\n                    modal.remove();\n                });\n                \n                modal.addEventListener('click', function(e) {\n                    if (e.target === modal) modal.remove();\n                });\n            }\n            \n            \/\/ Funci\u00f3n para procesar checkout\n            function processCheckout(variationId) {\n                if (!isValidVariationId(variationId)) {\n                    console.error('SPV: Invalid variation ID for checkout');\n                    return;\n                }\n\n                var existingOverlay = document.querySelector('.processing-overlay');\n                if (existingOverlay) existingOverlay.remove();\n\n                var overlay = document.createElement('div');\n                overlay.className = 'processing-overlay';\n                overlay.innerHTML = '<div class=\"processing-message\">' + escapeHtml(translations.procesando || 'Procesando') + '...<\/div>';\n                document.body.appendChild(overlay);\n\n                var productId = parseInt(selector.querySelector('.spv-product-id').value, 10);\n\n                var baseUrl     = 'https:\/\/emya2026bilbao.eus\/en\/';\n                var closingDate = '2026-06-05 23:59:59';\n                var url = new URL(baseUrl);\n                url.searchParams.set('add-to-cart',    productId.toString());\n                url.searchParams.set('variation_id',   variationId.toString());\n                url.searchParams.set('quantity',        '1');\n                url.searchParams.set('direct_checkout', '1');\n                url.searchParams.set('spv_nonce',       nonce);\n                url.searchParams.set('spv_closing',     closingDate);\n                url.searchParams.set('attribute_' + tipoAttrName,   selectedTipo);\n                url.searchParams.set('attribute_' + perfilAttrName, selectedPerfil);\n\n                window.location.href = url.toString();\n            }\n            \n            var isClosed = false;\n\n            \/\/ Paso 1: Seleccionar tipo de inscripci\u00f3n\n            var step1Cards = selector.querySelectorAll('.step-1 .option-card');\n            step1Cards.forEach(function(card) {\n                card.addEventListener('click', function() {\n                    if (isClosed) return false;\n\n                    selectedTipo     = this.getAttribute('data-value');\n                    selectedTipoName = this.querySelector('.option-title').textContent;\n\n                    selector.querySelector('.spv-selected-tipo').value      = selectedTipo;\n                    selector.querySelector('.spv-selected-tipo-name').value = selectedTipoName;\n\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.remove('active');\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.add('completed');\n                    selector.querySelector('.progress-step[data-step=\"2\"]').classList.add('active');\n\n                    updatePerfilPrices(selectedTipo);\n\n                    selector.querySelector('.step-1').classList.remove('active');\n                    selector.querySelector('.step-2').classList.add('active');\n                });\n            });\n            \n            \/\/ Paso 2: Seleccionar perfil y mostrar confirmaci\u00f3n\n            var step2Cards = selector.querySelectorAll('.step-2 .option-card');\n            step2Cards.forEach(function(card) {\n                card.addEventListener('click', function() {\n                    if (this.classList.contains('out-of-stock')) return false;\n                    \n                    selectedPerfil      = this.getAttribute('data-value');\n                    selectedPerfilName  = this.getAttribute('data-perfil-name');\n                    selectedPrice       = this.querySelector('.price-amount').textContent;\n                    selectedVariationId = parseInt(this.getAttribute('data-variation-id'), 10);\n                    \n                    selector.querySelector('.spv-selected-perfil').value = selectedPerfil;\n                    \n                    showConfirmationModal(\n                        selectedTipoName,\n                        selectedPerfilName,\n                        selectedPrice,\n                        selectedVariationId,\n                        function() {\n                            processCheckout(selectedVariationId);\n                        }\n                    );\n                });\n            });\n            \n            \/\/ Bot\u00f3n volver\n            var backBtn = selector.querySelector('.back-btn');\n            if (backBtn) {\n                backBtn.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    \n                    selector.querySelector('.progress-step[data-step=\"2\"]').classList.remove('active');\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.remove('completed');\n                    selector.querySelector('.progress-step[data-step=\"1\"]').classList.add('active');\n                    \n                    selector.querySelector('.step-2').classList.remove('active');\n                    selector.querySelector('.step-1').classList.add('active');\n                });\n            }\n        });\n    })();\n    <\/script>\n    \n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"[et_pb_section fb_built=\"1\" admin_label=\"Header\" module_class=\"titFond\" _builder_version=\"4.27.5\" _module_preset=\"default\" width=\"100%\" custom_margin=\"||0px||false|false\" custom_padding=\"||0px||false|false\" scroll_horizontal_motion=\"0|50|50|100|-4|0|0\" collapsed=\"off\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.27.5\" _module_preset=\"698f9690-9eb0-4f99-ad59-f238b97be924\" background_color=\"gcid-secondary-color\" background_image=\"https:\/\/emya2026bilbao.eus\/wp-content\/uploads\/2026\/02\/emya-trama-tit.svg\" width=\"1080px\" width_tablet=\"80%\" width_phone=\"80%\" width_last_edited=\"on|desktop\" custom_margin=\"||||false|false\" custom_padding=\"15px|40px|5px|20px|false|false\" custom_padding_tablet=\"13px|0px|7px|20px|false|false\" custom_padding_phone=\"15px|20px|3px|0px|false|false\" border_radii=\"off||0px|0px|\" box_shadow_color=\"gcid-secondary-color\" global_colors_info=\"{%22gcid-primary-color%22:%91%22box_shadow_color%22%93,%22gcid-secondary-color%22:%91%22box_shadow_color%22,%22background_color%22%93}\"][et_pb_column type=\"4_4\" _builder_version=\"4.25.0\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_heading title=\"REGISTRO\" _builder_version=\"4.27.5\" _module_preset=\"0f4a8d2c-a668-46c5-b1a5-6149f83510c6\" title_font=\"|700|||||||\" title_text_color=\"#FFFFFF\" title_font_size=\"40px\" title_line_height=\"1em\" custom_margin=\"||||false|false\" custom_padding=\"0px||0px||false|false\" global_colors_info=\"{}\"][\/et_pb_heading][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\"1\" admin_label=\"Borde\" _builder_version=\"4.27.5\" _module_preset=\"default\" width=\"90%\" custom_margin=\"10px||0px||false|false\" custom_padding=\"0px||0px||false|false\" scroll_horizontal_motion=\"0|50|50|100|-4|0|0\" collapsed=\"off\" global_colors_info=\"{}\"][et_pb_row module_class=\"subTit\" _builder_version=\"4.27.5\" _module_preset=\"698f9690-9eb0-4f99-ad59-f238b97be924\" background_color=\"gcid-heading-color\" background_enable_image=\"off\" width=\"1080px\" width_tablet=\"80%\" width_phone=\"70%\" width_last_edited=\"on|desktop\" min_height=\"0px\" height=\"0px\" max_height=\"5px\" custom_margin=\"||0px||false|false\" custom_padding=\"15px|40px|10px||false|false\" custom_padding_tablet=\"5px||5px||true|false\" custom_padding_phone=\"5px|0px|5px|0px|true|false\" border_radii=\"off||0px|0px|\" box_shadow_color=\"gcid-heading-color\" global_colors_info=\"{%22gcid-primary-color%22:%91%22background_color%22%93,%22gcid-heading-color%22:%91%22background_color%22,%22box_shadow_color%22%93}\"][et_pb_column type=\"4_4\" _builder_version=\"4.27.5\" _module_preset=\"default\" background_color=\"gcid-heading-color\" custom_padding=\"0px||0px||false|false\" global_colors_info=\"{%22gcid-heading-color%22:%91%22background_color%22%93}\"][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\"1\" admin_label=\"Registro\" _builder_version=\"4.27.5\" _module_preset=\"default\" width=\"1080px\" width_tablet=\"90%\" width_phone=\"90%\" width_last_edited=\"on|desktop\" module_alignment=\"center\" custom_margin=\"0px||0px||false|false\" custom_padding=\"0px||0px||false|false\" locked=\"off\" collapsed=\"off\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.27.5\" _module_preset=\"default\" width=\"1080px\" width_tablet=\"100%\" width_phone=\"100%\" width_last_edited=\"on|desktop\" custom_margin=\"0px||0px|0px|false|false\" custom_padding=\"0px||60px||false|false\" hover_enabled=\"0\" global_colors_info=\"{}\" sticky_enabled=\"0\"][et_pb_column type=\"4_4\" _builder_version=\"4.25.0\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_text module_class=\"contRegistro\" _builder_version=\"4.27.5\" _module_preset=\"default\" custom_margin=\"0px||0px||false|false\" custom_padding=\"0px||0px||false|false\" global_colors_info=\"{}\"]\n\n[selector_producto_variable product_id=\"1052\"]\n<!-- \/divi:shortcode -->\n\n[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]","_et_gb_content_width":"","footnotes":""},"class_list":["post-2159","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/pages\/2159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/comments?post=2159"}],"version-history":[{"count":4,"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/pages\/2159\/revisions"}],"predecessor-version":[{"id":2163,"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/pages\/2159\/revisions\/2163"}],"wp:attachment":[{"href":"https:\/\/emya2026bilbao.eus\/en\/wp-json\/wp\/v2\/media?parent=2159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}