{"id":3317,"date":"2026-08-29T16:46:25","date_gmt":"2026-08-29T16:46:25","guid":{"rendered":"https:\/\/oigrexariovacacional.com\/?page_id=3317"},"modified":"2026-10-21T09:22:52","modified_gmt":"2026-10-21T09:22:52","slug":"actividades","status":"publish","type":"page","link":"https:\/\/oigrexariovacacional.com\/en\/actividades\/","title":{"rendered":"Actividades"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3317\" class=\"elementor elementor-3317\">\n\t\t\t\t<div class=\"elementor-element elementor-element-569ff534 e-con-full e-flex e-con e-parent\" data-id=\"569ff534\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-0ae7ff9 e-flex e-con-boxed e-con e-child\" data-id=\"0ae7ff9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-424c131b e-con-full e-flex e-con e-child\" data-id=\"424c131b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-74c81bb0 elementor-widget__width-initial elementor-hidden-mobile elementor-hidden-tablet elementor-widget-divider--view-line elementor-invisible elementor-widget elementor-widget-divider\" data-id=\"74c81bb0\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44065226 elementor-widget-tablet__width-initial elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"44065226\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">PLANES EN O MORRAZO<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ae3a6c9 elementor-widget__width-initial elementor-hidden-mobile elementor-hidden-tablet elementor-widget-divider--view-line elementor-invisible elementor-widget elementor-widget-divider\" data-id=\"4ae3a6c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-419ee31e elementor-widget__width-inherit elementor-widget-mobile__width-initial elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"419ee31e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">ACTIVIDADES<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-72e421b e-con-full e-flex e-con e-parent\" data-id=\"72e421b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8a7b4ef hfe-nav-menu__align-justify elementor-widget__width-initial oi-menu-recomendaciones hfe-submenu-icon-arrow hfe-submenu-animation-none hfe-link-redirect-child hfe-nav-menu__breakpoint-tablet elementor-widget elementor-widget-navigation-menu\" data-id=\"8a7b4ef\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"oi-menu-reco\" data-settings=\"{&quot;padding_vertical_menu_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:20,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:11,&quot;sizes&quot;:[]},&quot;menu_space_between&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;_animation_mobile&quot;:&quot;none&quot;,&quot;_animation&quot;:&quot;none&quot;,&quot;padding_horizontal_menu_item_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_menu_item_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_menu_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_menu_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_space_between_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_space_between_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_space_between_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_row_space&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_row_space_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_row_space_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_row_space_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;dropdown_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;dropdown_border_radius_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;dropdown_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;dropdown_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;width_dropdown_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;220&quot;,&quot;sizes&quot;:[]},&quot;width_dropdown_item_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;width_dropdown_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;width_dropdown_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:15,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"navigation-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"hfe-nav-menu hfe-layout-horizontal hfe-nav-menu-layout horizontal hfe-pointer__text hfe-animation__none\" data-layout=\"horizontal\">\n\t\t\t\t<div role=\"button\" class=\"hfe-nav-menu__toggle elementor-clickable\" tabindex=\"0\" aria-label=\"Menu Toggle\">\n\t\t\t\t\t<span class=\"screen-reader-text\">Menu<\/span>\n\t\t\t\t\t<div class=\"hfe-nav-menu-icon\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\"  class=\"e-font-icon-svg e-fas-align-justify\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<nav itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/SiteNavigationElement\" class=\"hfe-nav-menu__layout-horizontal hfe-nav-menu__submenu-arrow\" data-toggle-icon=\"&lt;svg aria-hidden=&quot;true&quot; tabindex=&quot;0&quot; class=&quot;e-font-icon-svg e-fas-align-justify&quot; viewBox=&quot;0 0 448 512&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;path d=&quot;M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;\" data-close-icon=\"&lt;svg aria-hidden=&quot;true&quot; tabindex=&quot;0&quot; class=&quot;e-font-icon-svg e-far-window-close&quot; viewBox=&quot;0 0 512 512&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;path d=&quot;M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;\" data-full-width=\"yes\">\n\t\t\t\t\t<ul id=\"menu-1-8a7b4ef\" class=\"hfe-nav-menu\"><li id=\"menu-item-4523\" itemprop=\"name\" class=\"menu-item menu-item-type-post_type menu-item-object-page parent hfe-creative-menu\"><a href=\"https:\/\/oigrexariovacacional.com\/en\/recomendaciones\/\" itemprop=\"url\" class = \"hfe-menu-item\">RECOMENDACIONES<\/a><\/li>\n<li id=\"menu-item-4522\" itemprop=\"name\" class=\"menu-item menu-item-type-post_type menu-item-object-page parent hfe-creative-menu\"><a href=\"https:\/\/oigrexariovacacional.com\/en\/playas\/\" itemprop=\"url\" class = \"hfe-menu-item\">PLAYAS<\/a><\/li>\n<li id=\"menu-item-4521\" itemprop=\"name\" class=\"menu-item menu-item-type-post_type menu-item-object-page parent hfe-creative-menu\"><a href=\"https:\/\/oigrexariovacacional.com\/en\/naturaleza\/\" itemprop=\"url\" class = \"hfe-menu-item\">NATURALEZA<\/a><\/li>\n<li id=\"menu-item-4520\" itemprop=\"name\" class=\"menu-item menu-item-type-post_type menu-item-object-page parent hfe-creative-menu\"><a href=\"https:\/\/oigrexariovacacional.com\/en\/gastronomia\/\" itemprop=\"url\" class = \"hfe-menu-item\">GASTRONOM\u00edA<\/a><\/li>\n<li id=\"menu-item-4519\" itemprop=\"name\" class=\"menu-item menu-item-type-post_type menu-item-object-page parent hfe-creative-menu\"><a href=\"https:\/\/oigrexariovacacional.com\/en\/actividades\/\" itemprop=\"url\" class = \"hfe-menu-item\">ACTIVIDADES<\/a><\/li>\n<\/ul> \n\t\t\t\t<\/nav>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1a3d506 e-con-full e-flex e-con e-parent\" data-id=\"1a3d506\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-127e52f e-con-full e-flex e-con e-child\" data-id=\"127e52f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a9a43c elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"6a9a43c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">ELIGE TU PLAN<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbfb854 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"cbfb854\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Mar, naturaleza, aventura y planes para disfrutar de las R\u00edas Baixas a tu ritmo. Desde O Igrexario puedes descubrir actividades n\u00e1uticas, rutas por la r\u00eda de Ald\u00e1n, escalada, enoturismo y propuestas para disfrutar en pareja, en familia o con amigos.<span style=\"font-style: inherit;letter-spacing: 0px\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-00df337 e-flex e-con-boxed e-con e-parent\" data-id=\"00df337\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a2ee3c4 e-con-full e-flex e-con e-child\" data-id=\"a2ee3c4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-61d0a36 e-con-full e-flex e-con e-child\" data-id=\"61d0a36\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7a6ab97 e-con-full e-flex e-con e-child\" data-id=\"7a6ab97\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5a4d965 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"5a4d965\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div\r\n  class=\"igrexario-carrusel-ecoparque\"\r\n  role=\"region\"\r\n  aria-roledescription=\"carrusel\"\r\n  aria-label=\"Galer\u00eda de actividades n\u00e1uticas\"\r\n>\r\n  <div class=\"igrexario-ecoparque-ventana\" aria-busy=\"false\">\r\n\r\n    <img fetchpriority=\"high\"\r\n      class=\"igrexario-ecoparque-imagen activo\"\r\n      data-ecoparque-capa=\"0\"\r\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/alquiler-velero-ria-de-vigo-galicia.webp\"\r\n      alt=\"Alquiler de velero para disfrutar de actividades n\u00e1uticas\"\r\n      width=\"535\"\r\n      height=\"357\"\r\n      loading=\"eager\"\r\n      fetchpriority=\"high\"\r\n      decoding=\"async\"\r\n      aria-hidden=\"false\"\r\n     title=\"Actividades\">\r\n\r\n    <img\r\n      class=\"igrexario-ecoparque-imagen\"\r\n      data-ecoparque-capa=\"1\"\r\n      alt=\"\"\r\n      width=\"535\"\r\n      height=\"357\"\r\n      decoding=\"async\"\r\n      aria-hidden=\"true\"\r\n    >\r\n\r\n    <button\r\n      class=\"igrexario-ecoparque-navegacion igrexario-ecoparque-izquierda\"\r\n      type=\"button\"\r\n      aria-label=\"Mostrar imagen anterior\"\r\n    >\r\n      <svg\r\n        viewBox=\"0 0 24 24\"\r\n        width=\"24\"\r\n        height=\"24\"\r\n        fill=\"none\"\r\n        stroke=\"currentColor\"\r\n        stroke-width=\"2.5\"\r\n        stroke-linecap=\"round\"\r\n        stroke-linejoin=\"round\"\r\n        aria-hidden=\"true\"\r\n        focusable=\"false\"\r\n      >\r\n        <path d=\"m15 18-6-6 6-6\"\/>\r\n      <\/svg>\r\n    <\/button>\r\n\r\n    <button\r\n      class=\"igrexario-ecoparque-navegacion igrexario-ecoparque-derecha\"\r\n      type=\"button\"\r\n      aria-label=\"Mostrar siguiente imagen\"\r\n    >\r\n      <svg\r\n        viewBox=\"0 0 24 24\"\r\n        width=\"24\"\r\n        height=\"24\"\r\n        fill=\"none\"\r\n        stroke=\"currentColor\"\r\n        stroke-width=\"2.5\"\r\n        stroke-linecap=\"round\"\r\n        stroke-linejoin=\"round\"\r\n        aria-hidden=\"true\"\r\n        focusable=\"false\"\r\n      >\r\n        <path d=\"m9 18 6-6-6-6\"\/>\r\n      <\/svg>\r\n    <\/button>\r\n\r\n    <div\r\n      class=\"igrexario-ecoparque-puntos\"\r\n      role=\"group\"\r\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\r\n    ><\/div>\r\n\r\n    <p\r\n      class=\"igrexario-ecoparque-estado\"\r\n      role=\"status\"\r\n      aria-live=\"polite\"\r\n      aria-atomic=\"true\"\r\n    ><\/p>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* =========================================================\r\n   O IGREXARIO \u00b7 CARRUSEL ECOPARQUE\r\n   Optimizado para carga fiable y transici\u00f3n fluida\r\n   ========================================================= *\/\r\n\r\n.igrexario-carrusel-ecoparque,\r\n.igrexario-carrusel-ecoparque *,\r\n.igrexario-carrusel-ecoparque *::before,\r\n.igrexario-carrusel-ecoparque *::after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque {\r\n  width: 100%;\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque .igrexario-ecoparque-ventana {\r\n  position: relative;\r\n  width: 535px;\r\n  max-width: 100%;\r\n  aspect-ratio: 3 \/ 2;\r\n  margin-left: auto;\r\n  overflow: hidden;\r\n  isolation: isolate;\r\n  border-radius: 20px;\r\n  background: #1d1d1b;\r\n  transform: translateZ(0);\r\n}\r\n\r\n\/* =========================================================\r\n   DOS CAPAS DE IMAGEN\r\n   ========================================================= *\/\r\n\r\n.igrexario-carrusel-ecoparque .igrexario-ecoparque-imagen {\r\n  position: absolute;\r\n  inset: 0;\r\n\r\n  z-index: 1;\r\n\r\n  display: block;\r\n\r\n  width: 100%;\r\n  height: 100%;\r\n\r\n  margin: 0;\r\n\r\n  border: 0;\r\n  border-radius: inherit;\r\n\r\n  object-fit: contain;\r\n  object-position: center;\r\n\r\n  opacity: 0;\r\n\r\n  pointer-events: none;\r\n\r\n  transform: translateZ(0);\r\n\r\n  backface-visibility: hidden;\r\n\r\n  transition:\r\n    opacity .28s cubic-bezier(.22,.61,.36,1);\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\n.igrexario-ecoparque-imagen.activo {\r\n  z-index: 2;\r\n  opacity: 1;\r\n}\r\n\r\n\/* =========================================================\r\n   FLECHAS\r\n   ========================================================= *\/\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-navegacion {\r\n  position: absolute !important;\r\n\r\n  top: 50% !important;\r\n  bottom: auto !important;\r\n\r\n  z-index: 5;\r\n\r\n  display: flex !important;\r\n\r\n  align-items: center !important;\r\n  justify-content: center !important;\r\n\r\n  width: 44px !important;\r\n  height: 44px !important;\r\n\r\n  min-width: 44px !important;\r\n  min-height: 44px !important;\r\n\r\n  margin: 0 !important;\r\n  padding: 0 !important;\r\n\r\n  border: 0 !important;\r\n  border-radius: 50% !important;\r\n\r\n  background:\r\n    rgba(255,255,255,.78) !important;\r\n\r\n  background-image:\r\n    none !important;\r\n\r\n  box-shadow:\r\n    none !important;\r\n\r\n  color:\r\n    #000000 !important;\r\n\r\n  transform:\r\n    translate3d(0,-50%,0) !important;\r\n\r\n  cursor: pointer;\r\n\r\n  appearance: none;\r\n\r\n  -webkit-appearance: none;\r\n\r\n  -webkit-tap-highlight-color:\r\n    transparent;\r\n\r\n  touch-action:\r\n    manipulation;\r\n\r\n  transition:\r\n    background-color .2s ease;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-izquierda {\r\n  left: 12px !important;\r\n  right: auto !important;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-derecha {\r\n  right: 12px !important;\r\n  left: auto !important;\r\n}\r\n\r\n@media\r\n  (hover:hover)\r\n  and\r\n  (pointer:fine) {\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  button.igrexario-ecoparque-navegacion:hover {\r\n    background:\r\n      #ffffff !important;\r\n  }\r\n\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-navegacion:focus-visible {\r\n  outline:\r\n    3px solid #000000 !important;\r\n\r\n  outline-offset:\r\n    3px;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\n.igrexario-ecoparque-navegacion svg {\r\n  display: block;\r\n\r\n  width: 24px;\r\n  height: 24px;\r\n\r\n  flex-shrink: 0;\r\n\r\n  stroke: #000000;\r\n\r\n  pointer-events: none;\r\n}\r\n\r\n\/* =========================================================\r\n   INDICADORES\r\n   ========================================================= *\/\r\n\r\n.igrexario-carrusel-ecoparque\r\n.igrexario-ecoparque-puntos {\r\n  position: absolute;\r\n\r\n  top: 14px;\r\n  left: 50%;\r\n\r\n  z-index: 6;\r\n\r\n  display: flex;\r\n\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  gap: 8px;\r\n\r\n  transform:\r\n    translate3d(-50%,0,0);\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-punto {\r\n  display: block;\r\n\r\n  width: 12px;\r\n  height: 12px;\r\n\r\n  min-width: 12px;\r\n  min-height: 12px;\r\n\r\n  margin: 0;\r\n  padding: 0 !important;\r\n\r\n  border:\r\n    1px solid #e6f4f3 !important;\r\n\r\n  border-radius:\r\n    50% !important;\r\n\r\n  background:\r\n    rgba(0,0,0,.25) !important;\r\n\r\n  box-shadow:\r\n    none !important;\r\n\r\n  cursor: pointer;\r\n\r\n  appearance: none;\r\n\r\n  -webkit-appearance:\r\n    none;\r\n\r\n  -webkit-tap-highlight-color:\r\n    transparent;\r\n\r\n  touch-action:\r\n    manipulation;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-punto.activo {\r\n  background:\r\n    #e6f4f3 !important;\r\n\r\n  box-shadow:\r\n    0 0 5px rgba(0,0,0,.25) !important;\r\n}\r\n\r\n.igrexario-carrusel-ecoparque\r\nbutton.igrexario-ecoparque-punto:focus-visible {\r\n  outline:\r\n    2px solid #000000 !important;\r\n\r\n  outline-offset:\r\n    3px;\r\n}\r\n\r\n\/* =========================================================\r\n   LECTOR DE PANTALLA\r\n   ========================================================= *\/\r\n\r\n.igrexario-carrusel-ecoparque\r\n.igrexario-ecoparque-estado {\r\n  position: absolute;\r\n\r\n  width: 1px;\r\n  height: 1px;\r\n\r\n  margin: -1px;\r\n  padding: 0;\r\n\r\n  overflow: hidden;\r\n\r\n  clip-path:\r\n    inset(50%);\r\n\r\n  white-space:\r\n    nowrap;\r\n\r\n  border: 0;\r\n}\r\n\r\n\/* =========================================================\r\n   M\u00d3VIL\r\n   ========================================================= *\/\r\n\r\n@media\r\n  (max-width:767px) {\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  .igrexario-ecoparque-ventana {\r\n    width: 100%;\r\n    margin-left: 0;\r\n  }\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  button.igrexario-ecoparque-izquierda {\r\n    left: 8px !important;\r\n  }\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  button.igrexario-ecoparque-derecha {\r\n    right: 8px !important;\r\n  }\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  .igrexario-ecoparque-puntos {\r\n    top: 10px;\r\n  }\r\n\r\n}\r\n\r\n\/* =========================================================\r\n   REDUCIR MOVIMIENTO\r\n   ========================================================= *\/\r\n\r\n@media\r\n  (prefers-reduced-motion:reduce) {\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  .igrexario-ecoparque-imagen,\r\n\r\n  .igrexario-carrusel-ecoparque\r\n  button.igrexario-ecoparque-navegacion {\r\n    transition:\r\n      none !important;\r\n  }\r\n\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n\r\n  \"use strict\";\r\n\r\n\r\n  \/* ========================================================\r\n     IM\u00c1GENES\r\n     ======================================================== *\/\r\n\r\n  const fotosEcoparque = [\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/alquiler-velero-ria-de-vigo-galicia.webp\",\r\n\r\n      alt:\r\n        \"Alquiler de velero para disfrutar de actividades n\u00e1uticas\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/banana-boat-actividad-acuatica-ria-de-vigo.webp\",\r\n\r\n      alt:\r\n        \"Actividad acu\u00e1tica de banana board\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/flyboard-deportes-acuaticos-ria-de-vigo.webp\",\r\n\r\n      alt:\r\n        \"Actividad acu\u00e1tica de flyboard\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/motos-de-agua-ria-de-vigo-o-igrexario.webp\",\r\n\r\n      alt:\r\n        \"Actividad de moto de agua\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/wakeboard-ria-de-vigo-optimizado.webp\",\r\n\r\n      alt:\r\n        \"Pr\u00e1ctica de wakeboard como actividad n\u00e1utica\"\r\n    }\r\n\r\n  ];\r\n\r\n\r\n  \/* ========================================================\r\n     CACHE DE PRECARGA\r\n     ======================================================== *\/\r\n\r\n  const cacheImagenes =\r\n    new Map();\r\n\r\n\r\n  function precargarFoto(\r\n    foto,\r\n    prioridad\r\n  ) {\r\n\r\n    if (\r\n      cacheImagenes.has(\r\n        foto.src\r\n      )\r\n    ) {\r\n\r\n      return cacheImagenes.get(\r\n        foto.src\r\n      );\r\n\r\n    }\r\n\r\n\r\n    const promesa =\r\n      new Promise(\r\n        function (\r\n          resolve,\r\n          reject\r\n        ) {\r\n\r\n          const precarga =\r\n            new Image();\r\n\r\n\r\n          precarga.decoding =\r\n            \"async\";\r\n\r\n\r\n          precarga.alt =\r\n            \"\";\r\n\r\n\r\n          if (\r\n            \"fetchPriority\" in\r\n            precarga\r\n          ) {\r\n\r\n            precarga.fetchPriority =\r\n              prioridad ||\r\n              \"auto\";\r\n\r\n          }\r\n\r\n\r\n          const completar =\r\n            function () {\r\n\r\n              if (\r\n                typeof precarga.decode ===\r\n                \"function\"\r\n              ) {\r\n\r\n                precarga\r\n                  .decode()\r\n                  .catch(\r\n                    function () {}\r\n                  )\r\n                  .finally(\r\n                    function () {\r\n\r\n                      resolve(\r\n                        precarga\r\n                      );\r\n\r\n                    }\r\n                  );\r\n\r\n\r\n              } else {\r\n\r\n                resolve(\r\n                  precarga\r\n                );\r\n\r\n              }\r\n\r\n            };\r\n\r\n\r\n          precarga.addEventListener(\r\n            \"load\",\r\n            completar,\r\n            {\r\n              once:\r\n                true\r\n            }\r\n          );\r\n\r\n\r\n          precarga.addEventListener(\r\n            \"error\",\r\n            reject,\r\n            {\r\n              once:\r\n                true\r\n            }\r\n          );\r\n\r\n\r\n          precarga.src =\r\n            foto.src;\r\n\r\n\r\n          if (\r\n            precarga.complete\r\n            &&\r\n            precarga.naturalWidth >\r\n              0\r\n          ) {\r\n\r\n            completar();\r\n\r\n          }\r\n\r\n        }\r\n      );\r\n\r\n\r\n    cacheImagenes.set(\r\n      foto.src,\r\n      promesa\r\n    );\r\n\r\n\r\n    return promesa;\r\n\r\n  }\r\n\r\n\r\n  \/* ========================================================\r\n     PRECARGAR IM\u00c1GENES SECUNDARIAS\r\n     ======================================================== *\/\r\n\r\n  function precargarResto() {\r\n\r\n    fotosEcoparque\r\n      .slice(1)\r\n      .forEach(\r\n        function (foto) {\r\n\r\n          precargarFoto(\r\n            foto,\r\n            \"low\"\r\n          )\r\n          .catch(\r\n            function () {}\r\n          );\r\n\r\n        }\r\n      );\r\n\r\n  }\r\n\r\n\r\n  function programarPrecarga() {\r\n\r\n    if (\r\n      \"requestIdleCallback\" in\r\n      window\r\n    ) {\r\n\r\n      window.requestIdleCallback(\r\n        precargarResto,\r\n        {\r\n          timeout:\r\n            1200\r\n        }\r\n      );\r\n\r\n\r\n    } else {\r\n\r\n      window.setTimeout(\r\n        precargarResto,\r\n        250\r\n      );\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* ========================================================\r\n     INICIAR CARRUSEL\r\n     ======================================================== *\/\r\n\r\n  function iniciarEcoparque(\r\n    carrusel\r\n  ) {\r\n\r\n    if (\r\n      carrusel.dataset\r\n        .ecoparqueIniciado ===\r\n      \"true\"\r\n    ) {\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    const ventana =\r\n      carrusel.querySelector(\r\n        \".igrexario-ecoparque-ventana\"\r\n      );\r\n\r\n\r\n    const capas =\r\n      Array.from(\r\n        carrusel.querySelectorAll(\r\n          \".igrexario-ecoparque-imagen\"\r\n        )\r\n      );\r\n\r\n\r\n    const puntosContenedor =\r\n      carrusel.querySelector(\r\n        \".igrexario-ecoparque-puntos\"\r\n      );\r\n\r\n\r\n    const botonIzquierda =\r\n      carrusel.querySelector(\r\n        \".igrexario-ecoparque-izquierda\"\r\n      );\r\n\r\n\r\n    const botonDerecha =\r\n      carrusel.querySelector(\r\n        \".igrexario-ecoparque-derecha\"\r\n      );\r\n\r\n\r\n    const estado =\r\n      carrusel.querySelector(\r\n        \".igrexario-ecoparque-estado\"\r\n      );\r\n\r\n\r\n    if (\r\n      !ventana\r\n      ||\r\n      capas.length !== 2\r\n      ||\r\n      !puntosContenedor\r\n      ||\r\n      !botonIzquierda\r\n      ||\r\n      !botonDerecha\r\n      ||\r\n      !estado\r\n      ||\r\n      !fotosEcoparque.length\r\n    ) {\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    carrusel.dataset\r\n      .ecoparqueIniciado =\r\n        \"true\";\r\n\r\n\r\n    let indiceActual =\r\n      0;\r\n\r\n\r\n    let indiceObjetivo =\r\n      0;\r\n\r\n\r\n    let peticionActual =\r\n      0;\r\n\r\n\r\n    let capaActiva =\r\n      0;\r\n\r\n\r\n    \/* ======================================================\r\n       PUNTOS\r\n       ====================================================== *\/\r\n\r\n    const fragmento =\r\n      document.createDocumentFragment();\r\n\r\n\r\n    fotosEcoparque.forEach(\r\n      function (\r\n        foto,\r\n        indice\r\n      ) {\r\n\r\n        const punto =\r\n          document.createElement(\r\n            \"button\"\r\n          );\r\n\r\n\r\n        punto.type =\r\n          \"button\";\r\n\r\n\r\n        punto.className =\r\n          \"igrexario-ecoparque-punto\";\r\n\r\n\r\n        punto.setAttribute(\r\n          \"aria-label\",\r\n\r\n          \"Mostrar imagen \" +\r\n          (indice + 1) +\r\n          \" de \" +\r\n          fotosEcoparque.length +\r\n          \": \" +\r\n          foto.alt\r\n        );\r\n\r\n\r\n        punto.setAttribute(\r\n          \"aria-pressed\",\r\n          \"false\"\r\n        );\r\n\r\n\r\n        punto.addEventListener(\r\n          \"click\",\r\n          function () {\r\n\r\n            mostrarImagen(\r\n              indice\r\n            );\r\n\r\n          }\r\n        );\r\n\r\n\r\n        fragmento.appendChild(\r\n          punto\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    puntosContenedor.replaceChildren(\r\n      fragmento\r\n    );\r\n\r\n\r\n    const puntos =\r\n      Array.from(\r\n        puntosContenedor.querySelectorAll(\r\n          \".igrexario-ecoparque-punto\"\r\n        )\r\n      );\r\n\r\n\r\n    \/* ======================================================\r\n       ACTUALIZAR UI\r\n       ====================================================== *\/\r\n\r\n    function actualizarInterfaz(\r\n      indice,\r\n      anunciar\r\n    ) {\r\n\r\n      puntos.forEach(\r\n        function (\r\n          punto,\r\n          posicion\r\n        ) {\r\n\r\n          const activo =\r\n            posicion ===\r\n            indice;\r\n\r\n\r\n          punto.classList.toggle(\r\n            \"activo\",\r\n            activo\r\n          );\r\n\r\n\r\n          punto.setAttribute(\r\n            \"aria-pressed\",\r\n            String(\r\n              activo\r\n            )\r\n          );\r\n\r\n        }\r\n      );\r\n\r\n\r\n      estado.textContent =\r\n        anunciar\r\n\r\n          ? fotosEcoparque[indice].alt +\r\n            \". Imagen \" +\r\n            (indice + 1) +\r\n            \" de \" +\r\n            fotosEcoparque.length +\r\n            \".\"\r\n\r\n          : \"\";\r\n\r\n    }\r\n\r\n\r\n    \/* ======================================================\r\n       MOSTRAR IMAGEN\r\n       ====================================================== *\/\r\n\r\n    async function mostrarImagen(\r\n      indice,\r\n      anunciar = true\r\n    ) {\r\n\r\n      const destino =\r\n        (\r\n          (\r\n            indice %\r\n            fotosEcoparque.length\r\n          )\r\n          +\r\n          fotosEcoparque.length\r\n        )\r\n        %\r\n        fotosEcoparque.length;\r\n\r\n\r\n      indiceObjetivo =\r\n        destino;\r\n\r\n\r\n      if (\r\n        destino ===\r\n        indiceActual\r\n      ) {\r\n\r\n        actualizarInterfaz(\r\n          destino,\r\n          anunciar\r\n        );\r\n\r\n\r\n        return;\r\n\r\n      }\r\n\r\n\r\n      const numeroPeticion =\r\n        ++peticionActual;\r\n\r\n\r\n      const foto =\r\n        fotosEcoparque[\r\n          destino\r\n        ];\r\n\r\n\r\n      ventana.setAttribute(\r\n        \"aria-busy\",\r\n        \"true\"\r\n      );\r\n\r\n\r\n      try {\r\n\r\n        \/*\r\n         * No ocultamos la imagen actual.\r\n         * Esperamos a que la nueva est\u00e9 lista.\r\n         *\/\r\n\r\n        await precargarFoto(\r\n          foto,\r\n          \"high\"\r\n        );\r\n\r\n\r\n        if (\r\n          numeroPeticion !==\r\n          peticionActual\r\n        ) {\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        const siguienteCapa =\r\n          capaActiva === 0\r\n            ? 1\r\n            : 0;\r\n\r\n\r\n        const nueva =\r\n          capas[\r\n            siguienteCapa\r\n          ];\r\n\r\n\r\n        const anterior =\r\n          capas[\r\n            capaActiva\r\n          ];\r\n\r\n\r\n        if (\r\n          nueva.getAttribute(\r\n            \"src\"\r\n          ) !==\r\n          foto.src\r\n        ) {\r\n\r\n          nueva.src =\r\n            foto.src;\r\n\r\n        }\r\n\r\n\r\n        nueva.alt =\r\n          foto.alt;\r\n\r\n\r\n        \/*\r\n         * Forzamos decodificaci\u00f3n antes de\r\n         * hacer visible la nueva imagen.\r\n         *\/\r\n\r\n        if (\r\n          typeof nueva.decode ===\r\n          \"function\"\r\n        ) {\r\n\r\n          try {\r\n\r\n            await nueva.decode();\r\n\r\n          } catch (\r\n            error\r\n          ) {\r\n\r\n            \/*\r\n             * Algunos navegadores pueden\r\n             * rechazar decode() aunque la\r\n             * imagen ya est\u00e9 disponible.\r\n             *\/\r\n\r\n          }\r\n\r\n        }\r\n\r\n\r\n        if (\r\n          numeroPeticion !==\r\n          peticionActual\r\n        ) {\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        nueva.setAttribute(\r\n          \"aria-hidden\",\r\n          \"false\"\r\n        );\r\n\r\n\r\n        anterior.setAttribute(\r\n          \"aria-hidden\",\r\n          \"true\"\r\n        );\r\n\r\n\r\n        requestAnimationFrame(\r\n          function () {\r\n\r\n            if (\r\n              numeroPeticion !==\r\n              peticionActual\r\n            ) {\r\n\r\n              return;\r\n\r\n            }\r\n\r\n\r\n            nueva.classList.add(\r\n              \"activo\"\r\n            );\r\n\r\n\r\n            anterior.classList.remove(\r\n              \"activo\"\r\n            );\r\n\r\n\r\n            indiceActual =\r\n              destino;\r\n\r\n\r\n            capaActiva =\r\n              siguienteCapa;\r\n\r\n\r\n            actualizarInterfaz(\r\n              destino,\r\n              anunciar\r\n            );\r\n\r\n\r\n            ventana.setAttribute(\r\n              \"aria-busy\",\r\n              \"false\"\r\n            );\r\n\r\n          }\r\n        );\r\n\r\n\r\n      } catch (\r\n        error\r\n      ) {\r\n\r\n        \/*\r\n         * Si falla una imagen,\r\n         * mantenemos visible la anterior.\r\n         *\/\r\n\r\n        if (\r\n          numeroPeticion ===\r\n          peticionActual\r\n        ) {\r\n\r\n          indiceObjetivo =\r\n            indiceActual;\r\n\r\n\r\n          ventana.setAttribute(\r\n            \"aria-busy\",\r\n            \"false\"\r\n          );\r\n\r\n\r\n          estado.textContent =\r\n            \"No se pudo cargar la imagen. Int\u00e9ntalo de nuevo.\";\r\n\r\n        }\r\n\r\n      }\r\n\r\n    }\r\n\r\n\r\n    \/* ======================================================\r\n       FLECHAS\r\n       ====================================================== *\/\r\n\r\n    botonDerecha.addEventListener(\r\n      \"click\",\r\n      function () {\r\n\r\n        mostrarImagen(\r\n          indiceObjetivo + 1\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    botonIzquierda.addEventListener(\r\n      \"click\",\r\n      function () {\r\n\r\n        mostrarImagen(\r\n          indiceObjetivo - 1\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    \/* ======================================================\r\n       ESTADO INICIAL\r\n       ====================================================== *\/\r\n\r\n    actualizarInterfaz(\r\n      0,\r\n      false\r\n    );\r\n\r\n\r\n    \/*\r\n     * Esperamos a que la primera imagen se cargue\r\n     * y luego precargamos las cuatro restantes\r\n     * cuando el navegador est\u00e1 libre.\r\n     *\/\r\n\r\n    const primera =\r\n      capas[0];\r\n\r\n\r\n    if (\r\n      primera.complete\r\n      &&\r\n      primera.naturalWidth >\r\n        0\r\n    ) {\r\n\r\n      programarPrecarga();\r\n\r\n\r\n    } else {\r\n\r\n      primera.addEventListener(\r\n        \"load\",\r\n        programarPrecarga,\r\n        {\r\n          once:\r\n            true\r\n        }\r\n      );\r\n\r\n\r\n      primera.addEventListener(\r\n        \"error\",\r\n        programarPrecarga,\r\n        {\r\n          once:\r\n            true\r\n        }\r\n      );\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* ========================================================\r\n     TODAS LAS INSTANCIAS\r\n     ======================================================== *\/\r\n\r\n  function iniciarCarruseles() {\r\n\r\n    document\r\n      .querySelectorAll(\r\n        \".igrexario-carrusel-ecoparque\"\r\n      )\r\n      .forEach(\r\n        iniciarEcoparque\r\n      );\r\n\r\n  }\r\n\r\n\r\n  if (\r\n    document.readyState ===\r\n    \"loading\"\r\n  ) {\r\n\r\n    document.addEventListener(\r\n      \"DOMContentLoaded\",\r\n      iniciarCarruseles,\r\n      {\r\n        once:\r\n          true\r\n      }\r\n    );\r\n\r\n\r\n  } else {\r\n\r\n    iniciarCarruseles();\r\n\r\n  }\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-99fe43a e-con-full e-flex e-con e-child\" data-id=\"99fe43a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d871c95 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"d871c95\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">actividades n\u00e1uticas: tierra y mar multiaventura<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-da43fc7 e-con-full e-flex e-con e-child\" data-id=\"da43fc7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec59c91 elementor-widget elementor-widget-button\" data-id=\"ec59c91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/VfpyWVLxwusMpKMp6\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">17 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1572e82 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"1572e82\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">En Moa\u00f1a, Tierra y Mar Multiaventura ofrece distintas formas de disfrutar de la r\u00eda de Vigo desde el agua: rutas en moto de agua, alquiler de embarcaciones, velero, wakeboard, flyboard y otras experiencias n\u00e1uticas. Un plan para descubrir la costa de O Morrazo desde otra perspectiva.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3ae9918 e-flex e-con-boxed e-con e-parent\" data-id=\"3ae9918\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6a5d895 e-con-full e-flex e-con e-child\" data-id=\"6a5d895\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7f00744 e-con-full e-flex e-con e-child\" data-id=\"7f00744\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6d525e2 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"6d525e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">ecoparque mar\u00edn<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-10c502d e-con-full e-flex e-con e-child\" data-id=\"10c502d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-af7da0e elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"af7da0e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">El Ecoparque Mar\u00edn propone aventura al aire libre entre circuitos arb\u00f3reos, tirolinas, puentes y diferentes retos pensados para distintas edades. Una alternativa para pasar unas horas entre naturaleza y actividad f\u00edsica durante tu estancia en las R\u00edas Baixas.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed88c5e elementor-widget elementor-widget-button\" data-id=\"ed88c5e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/HZoLTWMTUjmGuNkT8\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">22 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dc11ee4 e-con-full e-flex e-con e-child\" data-id=\"dc11ee4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-110a80d e-con-full e-flex e-con e-child\" data-id=\"110a80d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d7ff27 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"2d7ff27\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div\r\n  class=\"igrexario-actividades-exclusivo\"\r\n  role=\"region\"\r\n  aria-roledescription=\"carrusel\"\r\n  aria-label=\"Galer\u00eda de actividades en O Morrazo\"\r\n>\r\n  <div\r\n    class=\"igrexario-actividades-exclusivo-ventana\"\r\n    aria-busy=\"false\"\r\n  >\r\n\r\n    <img fetchpriority=\"high\"\r\n      class=\"igrexario-actividades-exclusivo-imagen activo\"\r\n      data-actividades-capa=\"0\"\r\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/ecogranja-actividad-familiar-galicia.webp\"\r\n      alt=\"Actividad de ecogranja en O Morrazo\"\r\n      width=\"535\"\r\n      height=\"357\"\r\n      loading=\"eager\"\r\n      fetchpriority=\"high\"\r\n      decoding=\"async\"\r\n      aria-hidden=\"false\"\r\n     title=\"Actividades\">\r\n\r\n    <img\r\n      class=\"igrexario-actividades-exclusivo-imagen\"\r\n      data-actividades-capa=\"1\"\r\n      alt=\"\"\r\n      width=\"535\"\r\n      height=\"357\"\r\n      decoding=\"async\"\r\n      aria-hidden=\"true\"\r\n    >\r\n\r\n    <button\r\n      class=\"igrexario-actividades-exclusivo-flecha igrexario-actividades-exclusivo-anterior\"\r\n      type=\"button\"\r\n      aria-label=\"Mostrar imagen anterior\"\r\n    >\r\n      <svg\r\n        viewBox=\"0 0 24 24\"\r\n        width=\"24\"\r\n        height=\"24\"\r\n        fill=\"none\"\r\n        stroke=\"currentColor\"\r\n        stroke-width=\"2.5\"\r\n        stroke-linecap=\"round\"\r\n        stroke-linejoin=\"round\"\r\n        aria-hidden=\"true\"\r\n        focusable=\"false\"\r\n      >\r\n        <path d=\"m15 18-6-6 6-6\"\/>\r\n      <\/svg>\r\n    <\/button>\r\n\r\n    <button\r\n      class=\"igrexario-actividades-exclusivo-flecha igrexario-actividades-exclusivo-siguiente\"\r\n      type=\"button\"\r\n      aria-label=\"Mostrar siguiente imagen\"\r\n    >\r\n      <svg\r\n        viewBox=\"0 0 24 24\"\r\n        width=\"24\"\r\n        height=\"24\"\r\n        fill=\"none\"\r\n        stroke=\"currentColor\"\r\n        stroke-width=\"2.5\"\r\n        stroke-linecap=\"round\"\r\n        stroke-linejoin=\"round\"\r\n        aria-hidden=\"true\"\r\n        focusable=\"false\"\r\n      >\r\n        <path d=\"m9 18 6-6-6-6\"\/>\r\n      <\/svg>\r\n    <\/button>\r\n\r\n    <div\r\n      class=\"igrexario-actividades-exclusivo-puntos\"\r\n      role=\"group\"\r\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\r\n    ><\/div>\r\n\r\n    <p\r\n      class=\"igrexario-actividades-exclusivo-estado\"\r\n      role=\"status\"\r\n      aria-live=\"polite\"\r\n      aria-atomic=\"true\"\r\n    ><\/p>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* =========================================================\r\n   O IGREXARIO \u00b7 CARRUSEL DE ACTIVIDADES\r\n   Optimizado para carga fiable y transici\u00f3n fluida\r\n   ========================================================= *\/\r\n\r\n.igrexario-actividades-exclusivo,\r\n.igrexario-actividades-exclusivo *,\r\n.igrexario-actividades-exclusivo *::before,\r\n.igrexario-actividades-exclusivo *::after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.igrexario-actividades-exclusivo {\r\n  width: 100%;\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   VENTANA\r\n   ========================================================= *\/\r\n\r\n.igrexario-actividades-exclusivo\r\n.igrexario-actividades-exclusivo-ventana {\r\n  position: relative;\r\n\r\n  width: 535px;\r\n  max-width: 100%;\r\n\r\n  aspect-ratio: 3 \/ 2;\r\n\r\n  margin-left: auto;\r\n\r\n  overflow: hidden;\r\n\r\n  isolation: isolate;\r\n\r\n  border-radius: 20px;\r\n\r\n  background: transparent;\r\n\r\n  transform: translateZ(0);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DOS CAPAS DE IMAGEN\r\n\r\n   La anterior permanece visible hasta que\r\n   la siguiente est\u00e1 cargada y decodificada.\r\n   ========================================================= *\/\r\n\r\n.igrexario-actividades-exclusivo\r\n.igrexario-actividades-exclusivo-imagen {\r\n  position: absolute;\r\n\r\n  inset: 0;\r\n\r\n  z-index: 1;\r\n\r\n  display: block;\r\n\r\n  width: 100%;\r\n  height: 100%;\r\n\r\n  margin: 0;\r\n\r\n  border: 0;\r\n\r\n  border-radius: inherit;\r\n\r\n  object-fit: contain;\r\n\r\n  object-position: center;\r\n\r\n  opacity: 0;\r\n\r\n  pointer-events: none;\r\n\r\n  transform: translateZ(0);\r\n\r\n  backface-visibility: hidden;\r\n\r\n  transition:\r\n    opacity .28s cubic-bezier(.22,.61,.36,1);\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\n.igrexario-actividades-exclusivo-imagen.activo {\r\n  z-index: 2;\r\n\r\n  opacity: 1;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FLECHAS\r\n   ========================================================= *\/\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-flecha {\r\n  position: absolute !important;\r\n\r\n  top: 50% !important;\r\n  bottom: auto !important;\r\n\r\n  z-index: 5;\r\n\r\n  display: flex !important;\r\n\r\n  align-items: center !important;\r\n  justify-content: center !important;\r\n\r\n  width: 44px !important;\r\n  height: 44px !important;\r\n\r\n  min-width: 44px !important;\r\n  min-height: 44px !important;\r\n\r\n  margin: 0 !important;\r\n\r\n  padding: 0 !important;\r\n\r\n  border: 0 !important;\r\n\r\n  border-radius: 50% !important;\r\n\r\n  background:\r\n    rgba(255,255,255,.78) !important;\r\n\r\n  background-image:\r\n    none !important;\r\n\r\n  box-shadow:\r\n    none !important;\r\n\r\n  color:\r\n    #000000 !important;\r\n\r\n  transform:\r\n    translate3d(0,-50%,0) !important;\r\n\r\n  cursor: pointer;\r\n\r\n  appearance: none;\r\n\r\n  -webkit-appearance: none;\r\n\r\n  -webkit-tap-highlight-color:\r\n    transparent;\r\n\r\n  touch-action:\r\n    manipulation;\r\n\r\n  transition:\r\n    background-color .2s ease;\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-anterior {\r\n  left: 12px !important;\r\n\r\n  right: auto !important;\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-siguiente {\r\n  right: 12px !important;\r\n\r\n  left: auto !important;\r\n}\r\n\r\n\r\n@media\r\n  (hover:hover)\r\n  and\r\n  (pointer:fine) {\r\n\r\n  .igrexario-actividades-exclusivo\r\n  button.igrexario-actividades-exclusivo-flecha:hover {\r\n    background:\r\n      #ffffff !important;\r\n  }\r\n\r\n}\r\n\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-flecha:focus-visible {\r\n  outline:\r\n    3px solid #000000 !important;\r\n\r\n  outline-offset:\r\n    3px;\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\n.igrexario-actividades-exclusivo-flecha svg {\r\n  display: block;\r\n\r\n  width: 24px;\r\n  height: 24px;\r\n\r\n  flex-shrink: 0;\r\n\r\n  stroke: #000000;\r\n\r\n  pointer-events: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INDICADORES\r\n   ========================================================= *\/\r\n\r\n.igrexario-actividades-exclusivo\r\n.igrexario-actividades-exclusivo-puntos {\r\n  position: absolute;\r\n\r\n  top: 14px;\r\n\r\n  left: 50%;\r\n\r\n  z-index: 6;\r\n\r\n  display: flex;\r\n\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  gap: 8px;\r\n\r\n  transform:\r\n    translate3d(-50%,0,0);\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-punto {\r\n  display: block;\r\n\r\n  width: 12px;\r\n  height: 12px;\r\n\r\n  min-width: 12px;\r\n  min-height: 12px;\r\n\r\n  margin: 0;\r\n\r\n  padding: 0 !important;\r\n\r\n  border:\r\n    1px solid #e6f4f3 !important;\r\n\r\n  border-radius:\r\n    50% !important;\r\n\r\n  background:\r\n    rgba(0,0,0,.25) !important;\r\n\r\n  box-shadow:\r\n    none !important;\r\n\r\n  cursor: pointer;\r\n\r\n  appearance: none;\r\n\r\n  -webkit-appearance:\r\n    none;\r\n\r\n  -webkit-tap-highlight-color:\r\n    transparent;\r\n\r\n  touch-action:\r\n    manipulation;\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-punto.activo {\r\n  background:\r\n    #e6f4f3 !important;\r\n\r\n  box-shadow:\r\n    0 0 5px\r\n    rgba(0,0,0,.25) !important;\r\n}\r\n\r\n.igrexario-actividades-exclusivo\r\nbutton.igrexario-actividades-exclusivo-punto:focus-visible {\r\n  outline:\r\n    2px solid #000000 !important;\r\n\r\n  outline-offset:\r\n    3px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ESTADO ACCESIBLE\r\n   ========================================================= *\/\r\n\r\n.igrexario-actividades-exclusivo\r\n.igrexario-actividades-exclusivo-estado {\r\n  position: absolute;\r\n\r\n  width: 1px;\r\n  height: 1px;\r\n\r\n  margin: -1px;\r\n\r\n  padding: 0;\r\n\r\n  overflow: hidden;\r\n\r\n  clip-path:\r\n    inset(50%);\r\n\r\n  white-space: nowrap;\r\n\r\n  border: 0;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   M\u00d3VIL\r\n   ========================================================= *\/\r\n\r\n@media\r\n  (max-width:767px) {\r\n\r\n  .igrexario-actividades-exclusivo\r\n  .igrexario-actividades-exclusivo-ventana {\r\n    width: 100%;\r\n\r\n    margin-left: 0;\r\n  }\r\n\r\n  .igrexario-actividades-exclusivo\r\n  button.igrexario-actividades-exclusivo-anterior {\r\n    left: 8px !important;\r\n  }\r\n\r\n  .igrexario-actividades-exclusivo\r\n  button.igrexario-actividades-exclusivo-siguiente {\r\n    right: 8px !important;\r\n  }\r\n\r\n  .igrexario-actividades-exclusivo\r\n  .igrexario-actividades-exclusivo-puntos {\r\n    top: 10px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOVIMIENTO REDUCIDO\r\n   ========================================================= *\/\r\n\r\n@media\r\n  (prefers-reduced-motion:reduce) {\r\n\r\n  .igrexario-actividades-exclusivo\r\n  .igrexario-actividades-exclusivo-imagen,\r\n\r\n  .igrexario-actividades-exclusivo\r\n  button.igrexario-actividades-exclusivo-flecha {\r\n    transition:\r\n      none !important;\r\n  }\r\n\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n\r\n  \"use strict\";\r\n\r\n\r\n  \/* ========================================================\r\n     IM\u00c1GENES\r\n     ======================================================== *\/\r\n\r\n  const imagenesActividades = [\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/ecogranja-actividad-familiar-galicia.webp\",\r\n\r\n      alt:\r\n        \"Actividad de ecogranja en O Morrazo\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/kayak-libre-galicia-optimizado.webp\",\r\n\r\n      alt:\r\n        \"Actividad de kayak libre en O Morrazo\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/paintball-aventura-galicia-optimizado.webp\",\r\n\r\n      alt:\r\n        \"Actividad de paintball en O Morrazo\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/rutas-a-caballo-galicia-optimizado.webp\",\r\n\r\n      alt:\r\n        \"Ruta a caballo en O Morrazo\"\r\n    },\r\n\r\n    {\r\n      src:\r\n        \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/tirolinas-aventura-galicia-optimizado.webp\",\r\n\r\n      alt:\r\n        \"Actividad de tirolinas en O Morrazo\"\r\n    }\r\n\r\n  ];\r\n\r\n\r\n  \/* ========================================================\r\n     CACHE DE PRECARGA\r\n     ======================================================== *\/\r\n\r\n  const cacheImagenes =\r\n    new Map();\r\n\r\n\r\n  function precargarFoto(\r\n    foto,\r\n    prioridad\r\n  ) {\r\n\r\n\r\n    if (\r\n      cacheImagenes.has(\r\n        foto.src\r\n      )\r\n    ) {\r\n\r\n      return cacheImagenes.get(\r\n        foto.src\r\n      );\r\n\r\n    }\r\n\r\n\r\n    const promesa =\r\n      new Promise(\r\n        function (\r\n          resolve,\r\n          reject\r\n        ) {\r\n\r\n          const precarga =\r\n            new Image();\r\n\r\n\r\n          let terminado =\r\n            false;\r\n\r\n\r\n          precarga.decoding =\r\n            \"async\";\r\n\r\n\r\n          precarga.alt =\r\n            \"\";\r\n\r\n\r\n          if (\r\n            \"fetchPriority\" in\r\n            precarga\r\n          ) {\r\n\r\n            precarga.fetchPriority =\r\n              prioridad ||\r\n              \"auto\";\r\n\r\n          }\r\n\r\n\r\n          function resolver() {\r\n\r\n\r\n            if (\r\n              terminado\r\n            ) {\r\n\r\n              return;\r\n\r\n            }\r\n\r\n\r\n            terminado =\r\n              true;\r\n\r\n\r\n            if (\r\n              typeof precarga.decode ===\r\n              \"function\"\r\n            ) {\r\n\r\n              precarga\r\n                .decode()\r\n                .catch(\r\n                  function () {}\r\n                )\r\n                .finally(\r\n                  function () {\r\n\r\n                    resolve(\r\n                      precarga\r\n                    );\r\n\r\n                  }\r\n                );\r\n\r\n\r\n            } else {\r\n\r\n\r\n              resolve(\r\n                precarga\r\n              );\r\n\r\n            }\r\n\r\n          }\r\n\r\n\r\n          function rechazar(\r\n            error\r\n          ) {\r\n\r\n\r\n            if (\r\n              terminado\r\n            ) {\r\n\r\n              return;\r\n\r\n            }\r\n\r\n\r\n            terminado =\r\n              true;\r\n\r\n\r\n            reject(\r\n              error\r\n            );\r\n\r\n          }\r\n\r\n\r\n          precarga.addEventListener(\r\n            \"load\",\r\n            resolver,\r\n            {\r\n              once:\r\n                true\r\n            }\r\n          );\r\n\r\n\r\n          precarga.addEventListener(\r\n            \"error\",\r\n            rechazar,\r\n            {\r\n              once:\r\n                true\r\n            }\r\n          );\r\n\r\n\r\n          precarga.src =\r\n            foto.src;\r\n\r\n\r\n          if (\r\n            precarga.complete\r\n            &&\r\n            precarga.naturalWidth >\r\n              0\r\n          ) {\r\n\r\n            resolver();\r\n\r\n          }\r\n\r\n        }\r\n      )\r\n      .catch(\r\n        function (\r\n          error\r\n        ) {\r\n\r\n          \/*\r\n           * Si hubo un fallo de red puntual,\r\n           * permitimos volver a intentarlo.\r\n           *\/\r\n\r\n          cacheImagenes.delete(\r\n            foto.src\r\n          );\r\n\r\n\r\n          throw error;\r\n\r\n        }\r\n      );\r\n\r\n\r\n    cacheImagenes.set(\r\n      foto.src,\r\n      promesa\r\n    );\r\n\r\n\r\n    return promesa;\r\n\r\n  }\r\n\r\n\r\n  \/* ========================================================\r\n     PRECARGAR RESTO\r\n     ======================================================== *\/\r\n\r\n  function precargarResto() {\r\n\r\n\r\n    imagenesActividades\r\n      .slice(1)\r\n      .forEach(\r\n        function (\r\n          foto\r\n        ) {\r\n\r\n          precargarFoto(\r\n            foto,\r\n            \"low\"\r\n          )\r\n          .catch(\r\n            function () {}\r\n          );\r\n\r\n        }\r\n      );\r\n\r\n  }\r\n\r\n\r\n  function programarPrecarga() {\r\n\r\n\r\n    if (\r\n      \"requestIdleCallback\" in\r\n      window\r\n    ) {\r\n\r\n\r\n      window.requestIdleCallback(\r\n        precargarResto,\r\n        {\r\n          timeout:\r\n            1200\r\n        }\r\n      );\r\n\r\n\r\n    } else {\r\n\r\n\r\n      window.setTimeout(\r\n        precargarResto,\r\n        250\r\n      );\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* ========================================================\r\n     INICIAR CARRUSEL\r\n     ======================================================== *\/\r\n\r\n  function iniciarCarruselActividades(\r\n    carrusel\r\n  ) {\r\n\r\n\r\n    if (\r\n      carrusel.dataset\r\n        .actividadesExclusivoIniciado ===\r\n      \"true\"\r\n    ) {\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    const ventana =\r\n      carrusel.querySelector(\r\n        \".igrexario-actividades-exclusivo-ventana\"\r\n      );\r\n\r\n\r\n    const capas =\r\n      Array.from(\r\n        carrusel.querySelectorAll(\r\n          \".igrexario-actividades-exclusivo-imagen\"\r\n        )\r\n      );\r\n\r\n\r\n    const puntosContenedor =\r\n      carrusel.querySelector(\r\n        \".igrexario-actividades-exclusivo-puntos\"\r\n      );\r\n\r\n\r\n    const botonAnterior =\r\n      carrusel.querySelector(\r\n        \".igrexario-actividades-exclusivo-anterior\"\r\n      );\r\n\r\n\r\n    const botonSiguiente =\r\n      carrusel.querySelector(\r\n        \".igrexario-actividades-exclusivo-siguiente\"\r\n      );\r\n\r\n\r\n    const estado =\r\n      carrusel.querySelector(\r\n        \".igrexario-actividades-exclusivo-estado\"\r\n      );\r\n\r\n\r\n    if (\r\n      !ventana\r\n      ||\r\n      capas.length !== 2\r\n      ||\r\n      !puntosContenedor\r\n      ||\r\n      !botonAnterior\r\n      ||\r\n      !botonSiguiente\r\n      ||\r\n      !estado\r\n      ||\r\n      !imagenesActividades.length\r\n    ) {\r\n\r\n      return;\r\n\r\n    }\r\n\r\n\r\n    carrusel.dataset\r\n      .actividadesExclusivoIniciado =\r\n        \"true\";\r\n\r\n\r\n    let indiceActual =\r\n      0;\r\n\r\n\r\n    \/*\r\n     * Separado de indiceActual para que,\r\n     * si pulsas varias veces r\u00e1pido,\r\n     * cada clic avance desde el destino\r\n     * solicitado y no desde una imagen vieja.\r\n     *\/\r\n\r\n    let indiceObjetivo =\r\n      0;\r\n\r\n\r\n    \/*\r\n     * Evita que una carga anterior termine\r\n     * despu\u00e9s y sobrescriba una m\u00e1s reciente.\r\n     *\/\r\n\r\n    let peticionActual =\r\n      0;\r\n\r\n\r\n    let capaActiva =\r\n      0;\r\n\r\n\r\n    \/* ======================================================\r\n       CREAR PUNTOS\r\n       ====================================================== *\/\r\n\r\n    const fragmento =\r\n      document.createDocumentFragment();\r\n\r\n\r\n    imagenesActividades.forEach(\r\n      function (\r\n        foto,\r\n        indice\r\n      ) {\r\n\r\n        const punto =\r\n          document.createElement(\r\n            \"button\"\r\n          );\r\n\r\n\r\n        punto.type =\r\n          \"button\";\r\n\r\n\r\n        punto.className =\r\n          \"igrexario-actividades-exclusivo-punto\";\r\n\r\n\r\n        punto.setAttribute(\r\n          \"aria-label\",\r\n\r\n          \"Mostrar imagen \" +\r\n          (indice + 1) +\r\n          \" de \" +\r\n          imagenesActividades.length +\r\n          \": \" +\r\n          foto.alt\r\n        );\r\n\r\n\r\n        punto.setAttribute(\r\n          \"aria-pressed\",\r\n          \"false\"\r\n        );\r\n\r\n\r\n        punto.addEventListener(\r\n          \"click\",\r\n          function () {\r\n\r\n            mostrarImagen(\r\n              indice\r\n            );\r\n\r\n          }\r\n        );\r\n\r\n\r\n        fragmento.appendChild(\r\n          punto\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    puntosContenedor.replaceChildren(\r\n      fragmento\r\n    );\r\n\r\n\r\n    const puntos =\r\n      Array.from(\r\n        puntosContenedor.querySelectorAll(\r\n          \".igrexario-actividades-exclusivo-punto\"\r\n        )\r\n      );\r\n\r\n\r\n    \/* ======================================================\r\n       ACTUALIZAR ESTADO\r\n       ====================================================== *\/\r\n\r\n    function actualizarInterfaz(\r\n      indice,\r\n      anunciar\r\n    ) {\r\n\r\n\r\n      puntos.forEach(\r\n        function (\r\n          punto,\r\n          posicion\r\n        ) {\r\n\r\n          const activo =\r\n            posicion ===\r\n            indice;\r\n\r\n\r\n          punto.classList.toggle(\r\n            \"activo\",\r\n            activo\r\n          );\r\n\r\n\r\n          punto.setAttribute(\r\n            \"aria-pressed\",\r\n            String(\r\n              activo\r\n            )\r\n          );\r\n\r\n        }\r\n      );\r\n\r\n\r\n      estado.textContent =\r\n        anunciar\r\n\r\n          ? imagenesActividades[indice].alt +\r\n            \". Imagen \" +\r\n            (indice + 1) +\r\n            \" de \" +\r\n            imagenesActividades.length +\r\n            \".\"\r\n\r\n          : \"\";\r\n\r\n    }\r\n\r\n\r\n    \/* ======================================================\r\n       MOSTRAR IMAGEN\r\n       ====================================================== *\/\r\n\r\n    async function mostrarImagen(\r\n      indice,\r\n      anunciar = true\r\n    ) {\r\n\r\n\r\n      const destino =\r\n        (\r\n          (\r\n            indice %\r\n            imagenesActividades.length\r\n          )\r\n          +\r\n          imagenesActividades.length\r\n        )\r\n        %\r\n        imagenesActividades.length;\r\n\r\n\r\n      indiceObjetivo =\r\n        destino;\r\n\r\n\r\n      if (\r\n        destino ===\r\n        indiceActual\r\n      ) {\r\n\r\n\r\n        actualizarInterfaz(\r\n          destino,\r\n          anunciar\r\n        );\r\n\r\n\r\n        return;\r\n\r\n      }\r\n\r\n\r\n      const numeroPeticion =\r\n        ++peticionActual;\r\n\r\n\r\n      const foto =\r\n        imagenesActividades[\r\n          destino\r\n        ];\r\n\r\n\r\n      ventana.setAttribute(\r\n        \"aria-busy\",\r\n        \"true\"\r\n      );\r\n\r\n\r\n      try {\r\n\r\n\r\n        \/*\r\n         * La imagen actual NO desaparece.\r\n         * Esperamos a tener preparada la nueva.\r\n         *\/\r\n\r\n        await precargarFoto(\r\n          foto,\r\n          \"high\"\r\n        );\r\n\r\n\r\n        \/*\r\n         * Si entretanto el usuario pidi\u00f3\r\n         * otra foto, esta petici\u00f3n ya no manda.\r\n         *\/\r\n\r\n        if (\r\n          numeroPeticion !==\r\n          peticionActual\r\n        ) {\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        const siguienteCapa =\r\n          capaActiva === 0\r\n            ? 1\r\n            : 0;\r\n\r\n\r\n        const nueva =\r\n          capas[\r\n            siguienteCapa\r\n          ];\r\n\r\n\r\n        const anterior =\r\n          capas[\r\n            capaActiva\r\n          ];\r\n\r\n\r\n        if (\r\n          nueva.getAttribute(\r\n            \"src\"\r\n          ) !==\r\n          foto.src\r\n        ) {\r\n\r\n\r\n          nueva.src =\r\n            foto.src;\r\n\r\n        }\r\n\r\n\r\n        nueva.alt =\r\n          foto.alt;\r\n\r\n\r\n        \/*\r\n         * Esperamos tambi\u00e9n la decodificaci\u00f3n\r\n         * de la capa real que aparecer\u00e1.\r\n         *\/\r\n\r\n        if (\r\n          typeof nueva.decode ===\r\n          \"function\"\r\n        ) {\r\n\r\n\r\n          try {\r\n\r\n\r\n            await nueva.decode();\r\n\r\n\r\n          } catch (\r\n            error\r\n          ) {\r\n\r\n\r\n            \/*\r\n             * Algunos navegadores pueden\r\n             * rechazar decode() aunque la\r\n             * imagen ya est\u00e9 lista.\r\n             *\/\r\n\r\n          }\r\n\r\n        }\r\n\r\n\r\n        if (\r\n          numeroPeticion !==\r\n          peticionActual\r\n        ) {\r\n\r\n          return;\r\n\r\n        }\r\n\r\n\r\n        nueva.setAttribute(\r\n          \"aria-hidden\",\r\n          \"false\"\r\n        );\r\n\r\n\r\n        anterior.setAttribute(\r\n          \"aria-hidden\",\r\n          \"true\"\r\n        );\r\n\r\n\r\n        requestAnimationFrame(\r\n          function () {\r\n\r\n\r\n            if (\r\n              numeroPeticion !==\r\n              peticionActual\r\n            ) {\r\n\r\n              return;\r\n\r\n            }\r\n\r\n\r\n            nueva.classList.add(\r\n              \"activo\"\r\n            );\r\n\r\n\r\n            anterior.classList.remove(\r\n              \"activo\"\r\n            );\r\n\r\n\r\n            indiceActual =\r\n              destino;\r\n\r\n\r\n            capaActiva =\r\n              siguienteCapa;\r\n\r\n\r\n            actualizarInterfaz(\r\n              destino,\r\n              anunciar\r\n            );\r\n\r\n\r\n            ventana.setAttribute(\r\n              \"aria-busy\",\r\n              \"false\"\r\n            );\r\n\r\n          }\r\n        );\r\n\r\n\r\n      } catch (\r\n        error\r\n      ) {\r\n\r\n\r\n        \/*\r\n         * Un error de red no borra\r\n         * la imagen que ya estaba visible.\r\n         *\/\r\n\r\n        if (\r\n          numeroPeticion ===\r\n          peticionActual\r\n        ) {\r\n\r\n\r\n          indiceObjetivo =\r\n            indiceActual;\r\n\r\n\r\n          ventana.setAttribute(\r\n            \"aria-busy\",\r\n            \"false\"\r\n          );\r\n\r\n\r\n          estado.textContent =\r\n            \"No se pudo cargar la imagen. Int\u00e9ntalo de nuevo.\";\r\n\r\n        }\r\n\r\n      }\r\n\r\n    }\r\n\r\n\r\n    \/* ======================================================\r\n       FLECHAS\r\n       ====================================================== *\/\r\n\r\n    botonSiguiente.addEventListener(\r\n      \"click\",\r\n      function () {\r\n\r\n\r\n        mostrarImagen(\r\n          indiceObjetivo + 1\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    botonAnterior.addEventListener(\r\n      \"click\",\r\n      function () {\r\n\r\n\r\n        mostrarImagen(\r\n          indiceObjetivo - 1\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n\r\n    \/* ======================================================\r\n       ESTADO INICIAL\r\n       ====================================================== *\/\r\n\r\n    actualizarInterfaz(\r\n      0,\r\n      false\r\n    );\r\n\r\n\r\n    \/*\r\n     * La primera imagen se carga con prioridad alta.\r\n     * Cuando est\u00e1 disponible aprovechamos un momento\r\n     * libre del navegador para preparar las dem\u00e1s.\r\n     *\/\r\n\r\n    const primera =\r\n      capas[0];\r\n\r\n\r\n    if (\r\n      primera.complete\r\n      &&\r\n      primera.naturalWidth >\r\n        0\r\n    ) {\r\n\r\n\r\n      programarPrecarga();\r\n\r\n\r\n    } else {\r\n\r\n\r\n      primera.addEventListener(\r\n        \"load\",\r\n        programarPrecarga,\r\n        {\r\n          once:\r\n            true\r\n        }\r\n      );\r\n\r\n\r\n      primera.addEventListener(\r\n        \"error\",\r\n        programarPrecarga,\r\n        {\r\n          once:\r\n            true\r\n        }\r\n      );\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* ========================================================\r\n     INICIAR TODAS LAS INSTANCIAS\r\n     ======================================================== *\/\r\n\r\n  function iniciarCarruseles() {\r\n\r\n\r\n    document\r\n      .querySelectorAll(\r\n        \".igrexario-actividades-exclusivo\"\r\n      )\r\n      .forEach(\r\n        iniciarCarruselActividades\r\n      );\r\n\r\n  }\r\n\r\n\r\n  if (\r\n    document.readyState ===\r\n    \"loading\"\r\n  ) {\r\n\r\n\r\n    document.addEventListener(\r\n      \"DOMContentLoaded\",\r\n      iniciarCarruseles,\r\n      {\r\n        once:\r\n          true\r\n      }\r\n    );\r\n\r\n\r\n  } else {\r\n\r\n\r\n    iniciarCarruseles();\r\n\r\n  }\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0aab194 e-flex e-con-boxed e-con e-parent\" data-id=\"0aab194\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-324e767 e-con-full e-flex e-con e-child\" data-id=\"324e767\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-6076f3e e-con-full e-flex e-con e-child\" data-id=\"6076f3e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7689875 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"7689875\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">RUTA DEL MEJILL\u00d3N POR LA R\u00cdA DE ALD\u00c1N<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2610c36 e-con-full e-flex e-con e-child\" data-id=\"2610c36\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-527c26f elementor-widget elementor-widget-button\" data-id=\"527c26f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/2jGPtvZhVSjcWmGg6\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">4 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-80476b5 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"80476b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Paseo en barco por la R\u00eda de Ald\u00e1n con Bluscus, te invita a navegar por uno de los rincones m\u00e1s resguardados y v\u00edrgenes de las R\u00edas Baixas, combinando la brisa marina con una deliciosa degustaci\u00f3n de mejillones frescos a bordo. Una traves\u00eda perfecta para descubrir calas escondidas, contemplar la Costa da Vela y saborear la aut\u00e9ntica tradici\u00f3n marinera del litoral.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1225997 e-con-full e-flex e-con e-child\" data-id=\"1225997\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b138191 e-con-full e-flex e-con e-child\" data-id=\"b138191\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44c12a5 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"44c12a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div\n  class=\"igrexario-carrusel-mejillones\"\n  role=\"region\"\n  aria-roledescription=\"carrusel\"\n  aria-label=\"Galer\u00eda de paseo y degustaci\u00f3n de mejillones en la r\u00eda de Ald\u00e1n\"\n>\n  <div class=\"igrexario-mejillones-ventana\">\n\n    <img loading=\"lazy\"\n      class=\"igrexario-mejillones-imagen\"\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/excursion-barco-bateas-rias-baixas-optimizado.webp\"\n      alt=\"Barco de turismo junto a una batea en la r\u00eda de Ald\u00e1n\"\n      width=\"535\"\n      height=\"357\"\n      loading=\"lazy\"\n      decoding=\"async\"\n     title=\"Actividades\">\n\n    <button\n      class=\"igrexario-mejillones-navegacion igrexario-mejillones-izquierda\"\n      type=\"button\"\n      aria-label=\"Mostrar imagen anterior\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m15 18-6-6 6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <button\n      class=\"igrexario-mejillones-navegacion igrexario-mejillones-derecha\"\n      type=\"button\"\n      aria-label=\"Mostrar siguiente imagen\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m9 18 6-6-6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <div\n      class=\"igrexario-mejillones-puntos\"\n      role=\"group\"\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\n    ><\/div>\n\n    <p\n      class=\"igrexario-mejillones-estado\"\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    ><\/p>\n\n  <\/div>\n<\/div>\n\n<style>\n\/* ==========================================\n   CARRUSEL MEJILLONES - ESTRUCTURA\n========================================== *\/\n\n.igrexario-carrusel-mejillones {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n\n.igrexario-carrusel-mejillones,\n.igrexario-carrusel-mejillones * {\n  box-sizing: border-box;\n}\n\n.igrexario-carrusel-mejillones\n.igrexario-mejillones-ventana {\n  position: relative;\n  width: 535px;\n  max-width: 100%;\n  aspect-ratio: 3 \/ 2;\n  margin-left: auto;\n  overflow: hidden;\n  isolation: isolate;\n  border-radius: 20px;\n  background: transparent;\n}\n\n\/* ==========================================\n   IMAGEN\n========================================== *\/\n\n.igrexario-carrusel-mejillones\n.igrexario-mejillones-imagen {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  border-radius: inherit;\n}\n\n\/* ==========================================\n   FLECHAS - CENTRO EXACTO DEL EJE Y\n========================================== *\/\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-navegacion {\n  position: absolute !important;\n  top: 50% !important;\n  bottom: auto !important;\n  z-index: 5;\n\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  min-height: 44px !important;\n\n  margin: 0 !important;\n  padding: 0 !important;\n\n  border: 0 !important;\n  border-radius: 50% !important;\n\n  background: rgba(255, 255, 255, 0.78) !important;\n  background-image: none !important;\n  box-shadow: none !important;\n\n  color: #000000 !important;\n\n  transform: translateY(-50%) !important;\n  -webkit-transform: translateY(-50%) !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  -webkit-tap-highlight-color: transparent;\n\n  transition: background-color 0.2s ease;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-izquierda {\n  left: 12px !important;\n  right: auto !important;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-derecha {\n  right: 12px !important;\n  left: auto !important;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-navegacion:hover {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: #ffffff !important;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-navegacion:focus,\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-navegacion:active {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.igrexario-carrusel-mejillones\n.igrexario-mejillones-navegacion svg {\n  display: block;\n  width: 24px;\n  height: 24px;\n  flex-shrink: 0;\n  stroke: #000000;\n  pointer-events: none;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-navegacion:focus-visible {\n  outline: 3px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ==========================================\n   PUNTOS INDICADORES\n========================================== *\/\n\n.igrexario-carrusel-mejillones\n.igrexario-mejillones-puntos {\n  position: absolute;\n  top: 14px;\n  left: 50%;\n  z-index: 6;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n\n  transform: translateX(-50%);\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-punto {\n  display: block;\n\n  width: 12px;\n  height: 12px;\n  min-width: 12px;\n  min-height: 12px;\n\n  margin: 0;\n  padding: 0 !important;\n\n  border: 1px solid #e6f4f3 !important;\n  border-radius: 50% !important;\n\n  background: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-punto.activo {\n  background: #e6f4f3 !important;\n  box-shadow: 0 0 5px rgba(0, 0, 0, 0.25) !important;\n}\n\n.igrexario-carrusel-mejillones\nbutton.igrexario-mejillones-punto:focus-visible {\n  outline: 2px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ==========================================\n   ACCESIBILIDAD\n========================================== *\/\n\n.igrexario-carrusel-mejillones\n.igrexario-mejillones-estado {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n  border: 0;\n}\n\n\/* ==========================================\n   M\u00d3VIL\n========================================== *\/\n\n@media (max-width: 767px) {\n  .igrexario-carrusel-mejillones\n  .igrexario-mejillones-ventana {\n    width: 100%;\n    margin-left: 0;\n  }\n\n  .igrexario-carrusel-mejillones\n  button.igrexario-mejillones-izquierda {\n    left: 8px !important;\n  }\n\n  .igrexario-carrusel-mejillones\n  button.igrexario-mejillones-derecha {\n    right: 8px !important;\n  }\n\n  .igrexario-carrusel-mejillones\n  .igrexario-mejillones-puntos {\n    top: 10px;\n  }\n}\n\n\/* ==========================================\n   MOVIMIENTO REDUCIDO\n========================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .igrexario-carrusel-mejillones\n  button.igrexario-mejillones-navegacion {\n    transition: none;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const fotosMejillones = [\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/excursion-barco-bateas-rias-baixas-optimizado.webp\",\n      alt: \"Barco de turismo junto a una batea en la r\u00eda de Ald\u00e1n\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/excursion-barco-playas-galicia-optimizado.webp\",\n      alt: \"Barco de turismo cerca de una playa en la r\u00eda de Ald\u00e1n\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/excursion-barco-turismo-rias-baixas-optimizado.webp\",\n      alt: \"Barco de turismo con vistas a la r\u00eda de Ald\u00e1n\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/mejillones-ria-de-aldan-galicia-optimizado.webp\",\n      alt: \"Degustaci\u00f3n de mejillones en la r\u00eda de Ald\u00e1n\"\n    }\n  ];\n\n  function iniciarCarruselMejillones(carrusel) {\n    if (carrusel.dataset.mejillonesIniciado === \"true\") {\n      return;\n    }\n\n    const imagen = carrusel.querySelector(\n      \".igrexario-mejillones-imagen\"\n    );\n\n    const puntosContenedor = carrusel.querySelector(\n      \".igrexario-mejillones-puntos\"\n    );\n\n    const botonIzquierda = carrusel.querySelector(\n      \".igrexario-mejillones-izquierda\"\n    );\n\n    const botonDerecha = carrusel.querySelector(\n      \".igrexario-mejillones-derecha\"\n    );\n\n    const estado = carrusel.querySelector(\n      \".igrexario-mejillones-estado\"\n    );\n\n    if (\n      !imagen ||\n      !puntosContenedor ||\n      !botonIzquierda ||\n      !botonDerecha ||\n      !estado ||\n      !fotosMejillones.length\n    ) {\n      return;\n    }\n\n    carrusel.dataset.mejillonesIniciado = \"true\";\n\n    let indiceActual = 0;\n\n    const fragmento = document.createDocumentFragment();\n\n    fotosMejillones.forEach(function (foto, indice) {\n      const punto = document.createElement(\"button\");\n\n      punto.type = \"button\";\n      punto.className = \"igrexario-mejillones-punto\";\n\n      punto.setAttribute(\n        \"aria-label\",\n        \"Mostrar imagen \" +\n        (indice + 1) +\n        \" de \" +\n        fotosMejillones.length +\n        \": \" +\n        foto.alt\n      );\n\n      punto.setAttribute(\"aria-pressed\", \"false\");\n\n      punto.addEventListener(\"click\", function () {\n        mostrarImagen(indice);\n      });\n\n      fragmento.appendChild(punto);\n    });\n\n    puntosContenedor.replaceChildren(fragmento);\n\n    const puntos = puntosContenedor.querySelectorAll(\n      \".igrexario-mejillones-punto\"\n    );\n\n    function mostrarImagen(indice, anunciar = true) {\n      indiceActual = (\n        (indice % fotosMejillones.length) +\n        fotosMejillones.length\n      ) % fotosMejillones.length;\n\n      const foto = fotosMejillones[indiceActual];\n\n      if (imagen.getAttribute(\"src\") !== foto.src) {\n        imagen.src = foto.src;\n      }\n\n      imagen.alt = foto.alt;\n\n      puntos.forEach(function (punto, posicion) {\n        const activo = posicion === indiceActual;\n\n        punto.classList.toggle(\"activo\", activo);\n\n        punto.setAttribute(\n          \"aria-pressed\",\n          String(activo)\n        );\n      });\n\n      estado.textContent = anunciar\n        ? foto.alt +\n          \". Imagen \" +\n          (indiceActual + 1) +\n          \" de \" +\n          fotosMejillones.length +\n          \".\"\n        : \"\";\n    }\n\n    botonDerecha.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual + 1);\n    });\n\n    botonIzquierda.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual - 1);\n    });\n\n    mostrarImagen(0, false);\n  }\n\n  function iniciarTodos() {\n    document\n      .querySelectorAll(\".igrexario-carrusel-mejillones\")\n      .forEach(iniciarCarruselMejillones);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      iniciarTodos,\n      { once: true }\n    );\n  } else {\n    iniciarTodos();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b095735 e-flex e-con-boxed e-con e-parent\" data-id=\"b095735\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-7f62bdc e-con-full e-flex e-con e-child\" data-id=\"7f62bdc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-fddc73e e-con-full e-flex e-con e-child\" data-id=\"fddc73e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a158682 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"a158682\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">ENOTURISMO Y ALBARI\u00d1O EN ADEGA EIDOS<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7027aca e-con-full e-flex e-con e-child\" data-id=\"7027aca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b572cae elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"b572cae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">En Sanxenxo, Adega Eidos propone visitas a sus vi\u00f1edos e instalaciones acompa\u00f1adas de degustaciones de vinos albari\u00f1os D.O. R\u00edas Baixas. Algunas experiencias incorporan conservas, quesos y productos gastron\u00f3micos para completar la cata.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d18a40e elementor-widget elementor-widget-button\" data-id=\"d18a40e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/SYGfEjNhVkf2UUdZ9\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">51 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b6f551 e-con-full e-flex e-con e-child\" data-id=\"4b6f551\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-8eb348e e-con-full e-flex e-con e-child\" data-id=\"8eb348e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-28ca259 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"28ca259\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div\n  class=\"igrexario-carrusel-vino\"\n  role=\"region\"\n  aria-roledescription=\"carrusel\"\n  aria-label=\"Galer\u00eda de vino y vi\u00f1edos en las R\u00edas Baixas\"\n>\n  <div class=\"igrexario-vino-ventana\">\n\n    <img loading=\"lazy\"\n      class=\"igrexario-vino-imagen\"\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/degustacion-vino-blanco-rias-baixas-optimizado.webp\"\n      alt=\"Maridaje local de vino al aire libre en las R\u00edas Baixas\"\n      width=\"535\"\n      height=\"357\"\n      loading=\"lazy\"\n      decoding=\"async\"\n     title=\"Actividades\">\n\n    <button\n      class=\"igrexario-vino-navegacion igrexario-vino-izquierda\"\n      type=\"button\"\n      aria-label=\"Mostrar imagen anterior\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m15 18-6-6 6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <button\n      class=\"igrexario-vino-navegacion igrexario-vino-derecha\"\n      type=\"button\"\n      aria-label=\"Mostrar siguiente imagen\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m9 18 6-6-6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <div\n      class=\"igrexario-vino-puntos\"\n      role=\"group\"\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\n    ><\/div>\n\n    <p\n      class=\"igrexario-vino-estado\"\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    ><\/p>\n\n  <\/div>\n<\/div>\n\n<style>\n\/* ========================================\n   CARRUSEL VINO - ESTRUCTURA\n======================================== *\/\n\n.igrexario-carrusel-vino {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n\n.igrexario-carrusel-vino,\n.igrexario-carrusel-vino * {\n  box-sizing: border-box;\n}\n\n.igrexario-carrusel-vino\n.igrexario-vino-ventana {\n  position: relative;\n  width: 535px;\n  max-width: 100%;\n  aspect-ratio: 3 \/ 2;\n  margin-left: auto;\n  overflow: hidden;\n  isolation: isolate;\n  border-radius: 20px;\n  background: transparent;\n}\n\n\/* ========================================\n   IMAGEN\n======================================== *\/\n\n.igrexario-carrusel-vino\n.igrexario-vino-imagen {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  border-radius: inherit;\n}\n\n\/* ========================================\n   FLECHAS - CENTRO EXACTO DEL EJE Y\n======================================== *\/\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-navegacion {\n  position: absolute !important;\n  top: 50% !important;\n  bottom: auto !important;\n  z-index: 5;\n\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  min-height: 44px !important;\n\n  margin: 0 !important;\n  padding: 0 !important;\n\n  border: 0 !important;\n  border-radius: 50% !important;\n\n  background: rgba(255, 255, 255, 0.78) !important;\n  background-image: none !important;\n  box-shadow: none !important;\n\n  color: #000000 !important;\n\n  transform: translateY(-50%) !important;\n  -webkit-transform: translateY(-50%) !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  -webkit-tap-highlight-color: transparent;\n\n  transition: background-color 0.2s ease;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-izquierda {\n  left: 12px !important;\n  right: auto !important;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-derecha {\n  right: 12px !important;\n  left: auto !important;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-navegacion:hover {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: #ffffff !important;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-navegacion:focus,\n.igrexario-carrusel-vino\nbutton.igrexario-vino-navegacion:active {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.igrexario-carrusel-vino\n.igrexario-vino-navegacion svg {\n  display: block;\n  width: 24px;\n  height: 24px;\n  flex-shrink: 0;\n  stroke: #000000;\n  pointer-events: none;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-navegacion:focus-visible {\n  outline: 3px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   PUNTOS INDICADORES\n======================================== *\/\n\n.igrexario-carrusel-vino\n.igrexario-vino-puntos {\n  position: absolute;\n  top: 14px;\n  left: 50%;\n  z-index: 6;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n\n  transform: translateX(-50%);\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-punto {\n  display: block;\n  width: 12px;\n  height: 12px;\n  min-width: 12px;\n  min-height: 12px;\n\n  margin: 0;\n  padding: 0 !important;\n\n  border: 1px solid #e6f4f3 !important;\n  border-radius: 50% !important;\n\n  background: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-punto.activo {\n  background: #e6f4f3 !important;\n  box-shadow: 0 0 5px rgba(0, 0, 0, 0.25) !important;\n}\n\n.igrexario-carrusel-vino\nbutton.igrexario-vino-punto:focus-visible {\n  outline: 2px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   ACCESIBILIDAD\n======================================== *\/\n\n.igrexario-carrusel-vino\n.igrexario-vino-estado {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n  border: 0;\n}\n\n\/* ========================================\n   M\u00d3VIL\n======================================== *\/\n\n@media (max-width: 767px) {\n  .igrexario-carrusel-vino\n  .igrexario-vino-ventana {\n    width: 100%;\n    margin-left: 0;\n  }\n\n  .igrexario-carrusel-vino\n  button.igrexario-vino-izquierda {\n    left: 8px !important;\n  }\n\n  .igrexario-carrusel-vino\n  button.igrexario-vino-derecha {\n    right: 8px !important;\n  }\n\n  .igrexario-carrusel-vino\n  .igrexario-vino-puntos {\n    top: 10px;\n  }\n}\n\n\/* ========================================\n   MOVIMIENTO REDUCIDO\n======================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .igrexario-carrusel-vino\n  button.igrexario-vino-navegacion {\n    transition: none;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const fotosVino = [\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/degustacion-vino-blanco-rias-baixas-optimizado.webp\",\n      alt: \"Maridaje local de vino al aire libre en las R\u00edas Baixas\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/bodega-vinedo-rias-baixas-optimizado.webp\",\n      alt: \"Vi\u00f1edo junto a una casa hist\u00f3rica en las R\u00edas Baixas\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/vendimia-uvas-albarino-rias-baixas-optimizado.webp\",\n      alt: \"Vi\u00f1edo de las R\u00edas Baixas\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/terraza-exterior-cata-vinos-rias-baixas-optimizado-1.webp\",\n      alt: \"Espacio al aire libre para disfrutar de vino local\"\n    }\n  ];\n\n  function iniciarCarruselVino(carrusel) {\n    if (carrusel.dataset.vinoIniciado === \"true\") {\n      return;\n    }\n\n    const imagen = carrusel.querySelector(\n      \".igrexario-vino-imagen\"\n    );\n\n    const puntosContenedor = carrusel.querySelector(\n      \".igrexario-vino-puntos\"\n    );\n\n    const botonIzquierda = carrusel.querySelector(\n      \".igrexario-vino-izquierda\"\n    );\n\n    const botonDerecha = carrusel.querySelector(\n      \".igrexario-vino-derecha\"\n    );\n\n    const estado = carrusel.querySelector(\n      \".igrexario-vino-estado\"\n    );\n\n    if (\n      !imagen ||\n      !puntosContenedor ||\n      !botonIzquierda ||\n      !botonDerecha ||\n      !estado ||\n      !fotosVino.length\n    ) {\n      return;\n    }\n\n    carrusel.dataset.vinoIniciado = \"true\";\n\n    let indiceActual = 0;\n\n    const fragmento = document.createDocumentFragment();\n\n    fotosVino.forEach(function (foto, indice) {\n      const punto = document.createElement(\"button\");\n\n      punto.type = \"button\";\n      punto.className = \"igrexario-vino-punto\";\n\n      punto.setAttribute(\n        \"aria-label\",\n        \"Mostrar imagen \" +\n        (indice + 1) +\n        \" de \" +\n        fotosVino.length +\n        \": \" +\n        foto.alt\n      );\n\n      punto.setAttribute(\"aria-pressed\", \"false\");\n\n      punto.addEventListener(\"click\", function () {\n        mostrarImagen(indice);\n      });\n\n      fragmento.appendChild(punto);\n    });\n\n    puntosContenedor.replaceChildren(fragmento);\n\n    const puntos = puntosContenedor.querySelectorAll(\n      \".igrexario-vino-punto\"\n    );\n\n    function mostrarImagen(indice, anunciar = true) {\n      indiceActual = (\n        (indice % fotosVino.length) +\n        fotosVino.length\n      ) % fotosVino.length;\n\n      const foto = fotosVino[indiceActual];\n\n      if (imagen.getAttribute(\"src\") !== foto.src) {\n        imagen.src = foto.src;\n      }\n\n      imagen.alt = foto.alt;\n\n      puntos.forEach(function (punto, posicion) {\n        const activo = posicion === indiceActual;\n\n        punto.classList.toggle(\"activo\", activo);\n\n        punto.setAttribute(\n          \"aria-pressed\",\n          String(activo)\n        );\n      });\n\n      estado.textContent = anunciar\n        ? foto.alt +\n          \". Imagen \" +\n          (indiceActual + 1) +\n          \" de \" +\n          fotosVino.length +\n          \".\"\n        : \"\";\n    }\n\n    botonDerecha.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual + 1);\n    });\n\n    botonIzquierda.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual - 1);\n    });\n\n    mostrarImagen(0, false);\n  }\n\n  function iniciarTodos() {\n    document\n      .querySelectorAll(\".igrexario-carrusel-vino\")\n      .forEach(iniciarCarruselVino);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      iniciarTodos,\n      { once: true }\n    );\n  } else {\n    iniciarTodos();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fb9ccdf e-flex e-con-boxed e-con e-parent\" data-id=\"fb9ccdf\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bc766f8 e-con-full e-flex e-con e-child\" data-id=\"bc766f8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6ce52b elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"a6ce52b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">galicia te espera en O igrexario<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ce4364c elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-heading\" data-id=\"ce4364c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Tu casa en Galicia<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c429ab2 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"c429ab2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Un lugar para despertarse cerca del mar, recorrer O Morrazo y volver al final del d\u00eda a un espacio pensado para sentirte como en casa.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b0f5c2 elementor-align-center elementor-widget__width-inherit elementor-widget elementor-widget-button\" data-id=\"9b0f5c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/reservas\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">reserva ya<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ef29845 e-flex e-con-boxed e-con e-parent\" data-id=\"ef29845\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f735907 e-con-full e-flex e-con e-child\" data-id=\"f735907\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-df88b95 e-con-full e-flex e-con e-child\" data-id=\"df88b95\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7bc3f8 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"a7bc3f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">ESCALADA EN BUEU<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3961080 e-con-full e-flex e-con e-child\" data-id=\"3961080\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-392cd50 elementor-widget elementor-widget-button\" data-id=\"392cd50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/J2UGwMseJNaECnPk9\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">8 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea852ac elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"ea852ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">BONOBO es un espacio de escalada situado en Bueu con zonas de v\u00edas y b\u00falder y propuestas tanto para quienes quieren iniciarse como para escaladores con experiencia. Una opci\u00f3n diferente para a\u00f1adir un plan activo a unos d\u00edas en O Morrazo.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c368491 e-con-full e-flex e-con e-child\" data-id=\"c368491\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2e167c9 e-con-full e-flex e-con e-child\" data-id=\"2e167c9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e4b4a30 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"e4b4a30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div\n  class=\"igrexario-carrusel-escalada\"\n  role=\"region\"\n  aria-roledescription=\"carrusel\"\n  aria-label=\"Galer\u00eda de actividades de escalada en O Morrazo\"\n>\n  <div class=\"igrexario-escalada-ventana\">\n\n    <img loading=\"lazy\"\n      class=\"igrexario-escalada-imagen\"\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/rocodromo-interior-escalada-optimizado-1.webp\"\n      alt=\"Roc\u00f3dromo grande para adultos en O Morrazo\"\n      width=\"535\"\n      height=\"357\"\n      loading=\"lazy\"\n      decoding=\"async\"\n     title=\"Actividades\">\n\n    <button\n      class=\"igrexario-escalada-navegacion igrexario-escalada-izquierda\"\n      type=\"button\"\n      aria-label=\"Mostrar imagen anterior\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m15 18-6-6 6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <button\n      class=\"igrexario-escalada-navegacion igrexario-escalada-derecha\"\n      type=\"button\"\n      aria-label=\"Mostrar siguiente imagen\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m9 18 6-6-6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <div\n      class=\"igrexario-escalada-puntos\"\n      role=\"group\"\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\n    ><\/div>\n\n    <p\n      class=\"igrexario-escalada-estado\"\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    ><\/p>\n\n  <\/div>\n<\/div>\n\n<style>\n\/* ========================================\n   CARRUSEL ESCALADA - ESTRUCTURA\n======================================== *\/\n\n.igrexario-carrusel-escalada {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n\n.igrexario-carrusel-escalada,\n.igrexario-carrusel-escalada * {\n  box-sizing: border-box;\n}\n\n.igrexario-carrusel-escalada\n.igrexario-escalada-ventana {\n  position: relative;\n  width: 535px;\n  max-width: 100%;\n  aspect-ratio: 3 \/ 2;\n  margin-left: auto;\n  overflow: hidden;\n  isolation: isolate;\n  border-radius: 20px;\n  background: transparent;\n}\n\n\/* ========================================\n   IMAGEN\n======================================== *\/\n\n.igrexario-carrusel-escalada\n.igrexario-escalada-imagen {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  border-radius: inherit;\n}\n\n\/* ========================================\n   FLECHAS - CENTRO EXACTO DEL EJE Y\n======================================== *\/\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-navegacion {\n  position: absolute !important;\n  top: 50% !important;\n  bottom: auto !important;\n  z-index: 5;\n\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  min-height: 44px !important;\n\n  margin: 0 !important;\n  padding: 0 !important;\n\n  border: 0 !important;\n  border-radius: 50% !important;\n\n  background: rgba(255, 255, 255, 0.78) !important;\n  background-image: none !important;\n  box-shadow: none !important;\n\n  color: #000000 !important;\n\n  transform: translateY(-50%) !important;\n  -webkit-transform: translateY(-50%) !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  -webkit-tap-highlight-color: transparent;\n\n  transition: background-color 0.2s ease;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-izquierda {\n  left: 12px !important;\n  right: auto !important;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-derecha {\n  right: 12px !important;\n  left: auto !important;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-navegacion:hover {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: #ffffff !important;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-navegacion:focus,\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-navegacion:active {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.igrexario-carrusel-escalada\n.igrexario-escalada-navegacion svg {\n  display: block;\n  width: 24px;\n  height: 24px;\n  flex-shrink: 0;\n  stroke: #000000;\n  pointer-events: none;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-navegacion:focus-visible {\n  outline: 3px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   PUNTOS INDICADORES\n======================================== *\/\n\n.igrexario-carrusel-escalada\n.igrexario-escalada-puntos {\n  position: absolute;\n  top: 14px;\n  left: 50%;\n  z-index: 6;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n\n  transform: translateX(-50%);\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-punto {\n  display: block;\n\n  width: 12px;\n  height: 12px;\n  min-width: 12px;\n  min-height: 12px;\n\n  margin: 0;\n  padding: 0 !important;\n\n  border: 1px solid #e6f4f3 !important;\n  border-radius: 50% !important;\n\n  background: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-punto.activo {\n  background: #e6f4f3 !important;\n  box-shadow: 0 0 5px rgba(0, 0, 0, 0.25) !important;\n}\n\n.igrexario-carrusel-escalada\nbutton.igrexario-escalada-punto:focus-visible {\n  outline: 2px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   ACCESIBILIDAD\n======================================== *\/\n\n.igrexario-carrusel-escalada\n.igrexario-escalada-estado {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n  border: 0;\n}\n\n\/* ========================================\n   M\u00d3VIL\n======================================== *\/\n\n@media (max-width: 767px) {\n  .igrexario-carrusel-escalada\n  .igrexario-escalada-ventana {\n    width: 100%;\n    margin-left: 0;\n  }\n\n  .igrexario-carrusel-escalada\n  button.igrexario-escalada-izquierda {\n    left: 8px !important;\n  }\n\n  .igrexario-carrusel-escalada\n  button.igrexario-escalada-derecha {\n    right: 8px !important;\n  }\n\n  .igrexario-carrusel-escalada\n  .igrexario-escalada-puntos {\n    top: 10px;\n  }\n}\n\n\/* ========================================\n   MOVIMIENTO REDUCIDO\n======================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .igrexario-carrusel-escalada\n  button.igrexario-escalada-navegacion {\n    transition: none;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const fotosEscalada = [\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/rocodromo-interior-escalada-optimizado-1.webp\",\n      alt: \"Roc\u00f3dromo grande para adultos en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/escalada-rocodromo-morrazo-optimizado.webp\",\n      alt: \"Roc\u00f3dromo de escalada en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/rocodromo-escalada-adultos-ninos-optimizado.webp\",\n      alt: \"Roc\u00f3dromo de escalada para adultos y ni\u00f1os en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/rocodromo-escalada-avanzada-optimizado.webp\",\n      alt: \"Roc\u00f3dromo para expertos en escalada en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/material-escalada-arnes-mosquetones-optimizado.webp\",\n      alt: \"Material y elementos para practicar escalada\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/centro-escalada-interior-galicia-optimizado.webp\",\n      alt: \"Centro de escalada para profesionales y amateurs en O Morrazo\"\n    }\n  ];\n\n  function iniciarCarruselEscalada(carrusel) {\n    if (carrusel.dataset.escaladaIniciado === \"true\") {\n      return;\n    }\n\n    const imagen = carrusel.querySelector(\n      \".igrexario-escalada-imagen\"\n    );\n\n    const puntosContenedor = carrusel.querySelector(\n      \".igrexario-escalada-puntos\"\n    );\n\n    const botonIzquierda = carrusel.querySelector(\n      \".igrexario-escalada-izquierda\"\n    );\n\n    const botonDerecha = carrusel.querySelector(\n      \".igrexario-escalada-derecha\"\n    );\n\n    const estado = carrusel.querySelector(\n      \".igrexario-escalada-estado\"\n    );\n\n    if (\n      !imagen ||\n      !puntosContenedor ||\n      !botonIzquierda ||\n      !botonDerecha ||\n      !estado ||\n      !fotosEscalada.length\n    ) {\n      return;\n    }\n\n    carrusel.dataset.escaladaIniciado = \"true\";\n\n    let indiceActual = 0;\n\n    const fragmento = document.createDocumentFragment();\n\n    fotosEscalada.forEach(function (foto, indice) {\n      const punto = document.createElement(\"button\");\n\n      punto.type = \"button\";\n      punto.className = \"igrexario-escalada-punto\";\n\n      punto.setAttribute(\n        \"aria-label\",\n        \"Mostrar imagen \" +\n        (indice + 1) +\n        \" de \" +\n        fotosEscalada.length +\n        \": \" +\n        foto.alt\n      );\n\n      punto.setAttribute(\"aria-pressed\", \"false\");\n\n      punto.addEventListener(\"click\", function () {\n        mostrarImagen(indice);\n      });\n\n      fragmento.appendChild(punto);\n    });\n\n    puntosContenedor.replaceChildren(fragmento);\n\n    const puntos = puntosContenedor.querySelectorAll(\n      \".igrexario-escalada-punto\"\n    );\n\n    function mostrarImagen(indice, anunciar = true) {\n      indiceActual = (\n        (indice % fotosEscalada.length) +\n        fotosEscalada.length\n      ) % fotosEscalada.length;\n\n      const foto = fotosEscalada[indiceActual];\n\n      if (imagen.getAttribute(\"src\") !== foto.src) {\n        imagen.src = foto.src;\n      }\n\n      imagen.alt = foto.alt;\n\n      puntos.forEach(function (punto, posicion) {\n        const activo = posicion === indiceActual;\n\n        punto.classList.toggle(\"activo\", activo);\n\n        punto.setAttribute(\n          \"aria-pressed\",\n          String(activo)\n        );\n      });\n\n      estado.textContent = anunciar\n        ? foto.alt +\n          \". Imagen \" +\n          (indiceActual + 1) +\n          \" de \" +\n          fotosEscalada.length +\n          \".\"\n        : \"\";\n    }\n\n    botonDerecha.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual + 1);\n    });\n\n    botonIzquierda.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual - 1);\n    });\n\n    mostrarImagen(0, false);\n  }\n\n  function iniciarTodos() {\n    document\n      .querySelectorAll(\".igrexario-carrusel-escalada\")\n      .forEach(iniciarCarruselEscalada);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      iniciarTodos,\n      { once: true }\n    );\n  } else {\n    iniciarTodos();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b571c70 e-flex e-con-boxed e-con e-parent\" data-id=\"b571c70\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-56d679b e-con-full e-flex e-con e-child\" data-id=\"56d679b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-805b473 e-con-full e-flex e-con e-child\" data-id=\"805b473\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4737c98 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"4737c98\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">SALIDAS DE PESCA EN LAS R\u00cdAS BAIXAS<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-65c481c e-con-full e-flex e-con e-child\" data-id=\"65c481c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2bc7b63 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"2bc7b63\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Os Catro Ventos organiza salidas de pesca deportiva en la r\u00eda de Vigo y mar abierto, con diferentes modalidades y embarcaciones preparadas para disfrutar de una jornada en el mar. Una propuesta para quienes quieren conocer la costa gallega desde una perspectiva diferente.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa35807 elementor-widget elementor-widget-button\" data-id=\"aa35807\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/Pr4WSs15jcC6FJip6\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">34 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-939a90b e-con-full e-flex e-con e-child\" data-id=\"939a90b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e2c223d e-con-full e-flex e-con e-child\" data-id=\"e2c223d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4007873 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"4007873\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div\n  class=\"igrexario-carrusel-pesca\"\n  role=\"region\"\n  aria-roledescription=\"carrusel\"\n  aria-label=\"Galer\u00eda de pesca en la r\u00eda de Vigo y las R\u00edas Baixas\"\n>\n  <div class=\"igrexario-pesca-ventana\">\n\n    <img loading=\"lazy\"\n      class=\"igrexario-pesca-imagen\"\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/barco-pesquero-tradicional-rias-baixas.webp\"\n      alt=\"Pescar desde un barco en la r\u00eda de Vigo\"\n      width=\"535\"\n      height=\"357\"\n      loading=\"lazy\"\n      decoding=\"async\"\n     title=\"Actividades\">\n\n    <button\n      class=\"igrexario-pesca-navegacion igrexario-pesca-izquierda\"\n      type=\"button\"\n      aria-label=\"Mostrar imagen anterior\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m15 18-6-6 6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <button\n      class=\"igrexario-pesca-navegacion igrexario-pesca-derecha\"\n      type=\"button\"\n      aria-label=\"Mostrar siguiente imagen\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m9 18 6-6-6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <div\n      class=\"igrexario-pesca-puntos\"\n      role=\"group\"\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\n    ><\/div>\n\n    <p\n      class=\"igrexario-pesca-estado\"\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    ><\/p>\n\n  <\/div>\n<\/div>\n\n<style>\n\/* ========================================\n   CARRUSEL PESCA - ESTRUCTURA\n======================================== *\/\n\n.igrexario-carrusel-pesca {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n\n.igrexario-carrusel-pesca,\n.igrexario-carrusel-pesca * {\n  box-sizing: border-box;\n}\n\n.igrexario-carrusel-pesca\n.igrexario-pesca-ventana {\n  position: relative;\n  width: 535px;\n  max-width: 100%;\n  aspect-ratio: 3 \/ 2;\n  margin-left: auto;\n  overflow: hidden;\n  isolation: isolate;\n  border-radius: 20px;\n  background: transparent;\n}\n\n\/* ========================================\n   IMAGEN\n======================================== *\/\n\n.igrexario-carrusel-pesca\n.igrexario-pesca-imagen {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  border-radius: inherit;\n}\n\n\/* ========================================\n   FLECHAS - CENTRO EXACTO DEL EJE Y\n======================================== *\/\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-navegacion {\n  position: absolute !important;\n  top: 50% !important;\n  bottom: auto !important;\n  z-index: 5;\n\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  min-height: 44px !important;\n\n  margin: 0 !important;\n  padding: 0 !important;\n\n  border: 0 !important;\n  border-radius: 50% !important;\n\n  background: rgba(255, 255, 255, 0.78) !important;\n  background-image: none !important;\n  box-shadow: none !important;\n\n  color: #000000 !important;\n\n  transform: translateY(-50%) !important;\n  -webkit-transform: translateY(-50%) !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  -webkit-tap-highlight-color: transparent;\n\n  transition: background-color 0.2s ease;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-izquierda {\n  left: 12px !important;\n  right: auto !important;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-derecha {\n  right: 12px !important;\n  left: auto !important;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-navegacion:hover {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: #ffffff !important;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-navegacion:focus,\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-navegacion:active {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.igrexario-carrusel-pesca\n.igrexario-pesca-navegacion svg {\n  display: block;\n  width: 24px;\n  height: 24px;\n  flex-shrink: 0;\n  stroke: #000000;\n  pointer-events: none;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-navegacion:focus-visible {\n  outline: 3px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   PUNTOS INDICADORES\n======================================== *\/\n\n.igrexario-carrusel-pesca\n.igrexario-pesca-puntos {\n  position: absolute;\n  top: 14px;\n  left: 50%;\n  z-index: 6;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n\n  transform: translateX(-50%);\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-punto {\n  display: block;\n\n  width: 12px;\n  height: 12px;\n  min-width: 12px;\n  min-height: 12px;\n\n  margin: 0;\n  padding: 0 !important;\n\n  border: 1px solid #e6f4f3 !important;\n  border-radius: 50% !important;\n\n  background: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-punto.activo {\n  background: #e6f4f3 !important;\n  box-shadow: 0 0 5px rgba(0, 0, 0, 0.25) !important;\n}\n\n.igrexario-carrusel-pesca\nbutton.igrexario-pesca-punto:focus-visible {\n  outline: 2px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   ACCESIBILIDAD\n======================================== *\/\n\n.igrexario-carrusel-pesca\n.igrexario-pesca-estado {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n  border: 0;\n}\n\n\/* ========================================\n   M\u00d3VIL\n======================================== *\/\n\n@media (max-width: 767px) {\n  .igrexario-carrusel-pesca\n  .igrexario-pesca-ventana {\n    width: 100%;\n    margin-left: 0;\n  }\n\n  .igrexario-carrusel-pesca\n  button.igrexario-pesca-izquierda {\n    left: 8px !important;\n  }\n\n  .igrexario-carrusel-pesca\n  button.igrexario-pesca-derecha {\n    right: 8px !important;\n  }\n\n  .igrexario-carrusel-pesca\n  .igrexario-pesca-puntos {\n    top: 10px;\n  }\n}\n\n\/* ========================================\n   MOVIMIENTO REDUCIDO\n======================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .igrexario-carrusel-pesca\n  button.igrexario-pesca-navegacion {\n    transition: none;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const fotosPesca = [\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/barco-pesquero-tradicional-rias-baixas.webp\",\n      alt: \"Pescar desde un barco en la r\u00eda de Vigo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/mirador-banco-rosa-vistas-ria-de-vigo.webp\",\n      alt: \"Pescar en la r\u00eda de Vigo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/puente-rande-ria-de-vigo-galicia.webp\",\n      alt: \"Rutas para pescar en la r\u00eda de Vigo y las R\u00edas Baixas\"\n    }\n  ];\n\n  function iniciarCarruselPesca(carrusel) {\n    if (carrusel.dataset.pescaIniciado === \"true\") {\n      return;\n    }\n\n    const imagen = carrusel.querySelector(\n      \".igrexario-pesca-imagen\"\n    );\n\n    const puntosContenedor = carrusel.querySelector(\n      \".igrexario-pesca-puntos\"\n    );\n\n    const botonIzquierda = carrusel.querySelector(\n      \".igrexario-pesca-izquierda\"\n    );\n\n    const botonDerecha = carrusel.querySelector(\n      \".igrexario-pesca-derecha\"\n    );\n\n    const estado = carrusel.querySelector(\n      \".igrexario-pesca-estado\"\n    );\n\n    if (\n      !imagen ||\n      !puntosContenedor ||\n      !botonIzquierda ||\n      !botonDerecha ||\n      !estado ||\n      !fotosPesca.length\n    ) {\n      return;\n    }\n\n    carrusel.dataset.pescaIniciado = \"true\";\n\n    let indiceActual = 0;\n\n    const fragmento = document.createDocumentFragment();\n\n    fotosPesca.forEach(function (foto, indice) {\n      const punto = document.createElement(\"button\");\n\n      punto.type = \"button\";\n      punto.className = \"igrexario-pesca-punto\";\n\n      punto.setAttribute(\n        \"aria-label\",\n        \"Mostrar imagen \" +\n        (indice + 1) +\n        \" de \" +\n        fotosPesca.length +\n        \": \" +\n        foto.alt\n      );\n\n      punto.setAttribute(\"aria-pressed\", \"false\");\n\n      punto.addEventListener(\"click\", function () {\n        mostrarImagen(indice);\n      });\n\n      fragmento.appendChild(punto);\n    });\n\n    puntosContenedor.replaceChildren(fragmento);\n\n    const puntos = puntosContenedor.querySelectorAll(\n      \".igrexario-pesca-punto\"\n    );\n\n    function mostrarImagen(indice, anunciar = true) {\n      indiceActual = (\n        (indice % fotosPesca.length) +\n        fotosPesca.length\n      ) % fotosPesca.length;\n\n      const foto = fotosPesca[indiceActual];\n\n      if (imagen.getAttribute(\"src\") !== foto.src) {\n        imagen.src = foto.src;\n      }\n\n      imagen.alt = foto.alt;\n\n      puntos.forEach(function (punto, posicion) {\n        const activo = posicion === indiceActual;\n\n        punto.classList.toggle(\"activo\", activo);\n\n        punto.setAttribute(\n          \"aria-pressed\",\n          String(activo)\n        );\n      });\n\n      estado.textContent = anunciar\n        ? foto.alt +\n          \". Imagen \" +\n          (indiceActual + 1) +\n          \" de \" +\n          fotosPesca.length +\n          \".\"\n        : \"\";\n    }\n\n    botonDerecha.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual + 1);\n    });\n\n    botonIzquierda.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual - 1);\n    });\n\n    mostrarImagen(0, false);\n  }\n\n  function iniciarTodos() {\n    document\n      .querySelectorAll(\".igrexario-carrusel-pesca\")\n      .forEach(iniciarCarruselPesca);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      iniciarTodos,\n      { once: true }\n    );\n  } else {\n    iniciarTodos();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7baef85 e-flex e-con-boxed e-con e-parent\" data-id=\"7baef85\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-3d8dc74 e-con-full e-flex e-con e-child\" data-id=\"3d8dc74\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-8b2fe67 e-con-full e-flex e-con e-child\" data-id=\"8b2fe67\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e2566c9 elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"e2566c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">LUCES DE NAVIDAD DE VIGO<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1011cdc e-con-full e-flex e-con e-child\" data-id=\"1011cdc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7e21908 elementor-widget elementor-widget-button\" data-id=\"7e21908\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/kSsFz2ovtzAe2t4M7\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">30 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50f1136 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"50f1136\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Alojarte aqu\u00ed te permite disfrutar del famoso alumbrado navide\u00f1o de Vigo evitando todo el tr\u00e1fico. En solo 10 minutos en coche llegas a Cangas y all\u00ed tomas el barco hacia la ciudad.\nLa traves\u00eda de 20 minutos cruza la r\u00eda con vistas nocturnas espectaculares y te deja directamente en el centro de Vigo, al pie de los adornos y atracciones. En apenas 30 minutos pasas de la calma del rural al coraz\u00f3n de la fiesta, sin estr\u00e9s ni problemas de aparcamiento.\nEl siguiente  enlace, dirige al puerto de Cangas donde se coge el barco.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-09bdc41 e-con-full e-flex e-con e-child\" data-id=\"09bdc41\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-ad388f7 e-con-full e-flex e-con e-child\" data-id=\"ad388f7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-248e8b3 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"248e8b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div\n  class=\"igrexario-carrusel-navidad\"\n  role=\"region\"\n  aria-roledescription=\"carrusel\"\n  aria-label=\"Galer\u00eda de las luces de Navidad de Vigo\"\n>\n  <div class=\"igrexario-navidad-ventana\">\n\n    <img loading=\"lazy\"\n      class=\"igrexario-navidad-imagen\"\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/decoracion-navidad-luces-calles-vigo.webp\"\n      alt=\"Decoraci\u00f3n y luces de Navidad en Vigo\"\n      width=\"535\"\n      height=\"357\"\n      loading=\"lazy\"\n      decoding=\"async\"\n     title=\"Actividades\">\n\n    <button\n      class=\"igrexario-navidad-navegacion igrexario-navidad-izquierda\"\n      type=\"button\"\n      aria-label=\"Mostrar imagen anterior\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m15 18-6-6 6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <button\n      class=\"igrexario-navidad-navegacion igrexario-navidad-derecha\"\n      type=\"button\"\n      aria-label=\"Mostrar siguiente imagen\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m9 18 6-6-6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <div\n      class=\"igrexario-navidad-puntos\"\n      role=\"group\"\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\n    ><\/div>\n\n    <p\n      class=\"igrexario-navidad-estado\"\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    ><\/p>\n\n  <\/div>\n<\/div>\n\n<style>\n\/* ========================================\n   CARRUSEL NAVIDAD - ESTRUCTURA\n======================================== *\/\n\n.igrexario-carrusel-navidad {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n\n.igrexario-carrusel-navidad,\n.igrexario-carrusel-navidad * {\n  box-sizing: border-box;\n}\n\n.igrexario-carrusel-navidad\n.igrexario-navidad-ventana {\n  position: relative;\n  width: 535px;\n  max-width: 100%;\n  aspect-ratio: 3 \/ 2;\n  margin-left: auto;\n  overflow: hidden;\n  isolation: isolate;\n  border-radius: 20px;\n  background: transparent;\n}\n\n\/* ========================================\n   IMAGEN\n======================================== *\/\n\n.igrexario-carrusel-navidad\n.igrexario-navidad-imagen {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  border-radius: inherit;\n}\n\n\/* ========================================\n   FLECHAS - CENTRO EXACTO DEL EJE Y\n======================================== *\/\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-navegacion {\n  position: absolute !important;\n  top: 50% !important;\n  bottom: auto !important;\n  z-index: 5;\n\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  min-height: 44px !important;\n\n  margin: 0 !important;\n  padding: 0 !important;\n\n  border: 0 !important;\n  border-radius: 50% !important;\n\n  background: rgba(255, 255, 255, 0.78) !important;\n  background-image: none !important;\n  box-shadow: none !important;\n\n  color: #000000 !important;\n\n  transform: translateY(-50%) !important;\n  -webkit-transform: translateY(-50%) !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  -webkit-tap-highlight-color: transparent;\n\n  transition: background-color 0.2s ease;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-izquierda {\n  left: 12px !important;\n  right: auto !important;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-derecha {\n  right: 12px !important;\n  left: auto !important;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-navegacion:hover {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: #ffffff !important;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-navegacion:focus,\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-navegacion:active {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.igrexario-carrusel-navidad\n.igrexario-navidad-navegacion svg {\n  display: block;\n  width: 24px;\n  height: 24px;\n  flex-shrink: 0;\n  stroke: #000000;\n  pointer-events: none;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-navegacion:focus-visible {\n  outline: 3px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   PUNTOS INDICADORES\n======================================== *\/\n\n.igrexario-carrusel-navidad\n.igrexario-navidad-puntos {\n  position: absolute;\n  top: 14px;\n  left: 50%;\n  z-index: 6;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n\n  transform: translateX(-50%);\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-punto {\n  display: block;\n\n  width: 12px;\n  height: 12px;\n  min-width: 12px;\n  min-height: 12px;\n\n  margin: 0;\n  padding: 0 !important;\n\n  border: 1px solid #e6f4f3 !important;\n  border-radius: 50% !important;\n\n  background: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-punto.activo {\n  background: #e6f4f3 !important;\n  box-shadow: 0 0 5px rgba(0, 0, 0, 0.25) !important;\n}\n\n.igrexario-carrusel-navidad\nbutton.igrexario-navidad-punto:focus-visible {\n  outline: 2px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   ACCESIBILIDAD\n======================================== *\/\n\n.igrexario-carrusel-navidad\n.igrexario-navidad-estado {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n  border: 0;\n}\n\n\/* ========================================\n   M\u00d3VIL\n======================================== *\/\n\n@media (max-width: 767px) {\n  .igrexario-carrusel-navidad\n  .igrexario-navidad-ventana {\n    width: 100%;\n    margin-left: 0;\n  }\n\n  .igrexario-carrusel-navidad\n  button.igrexario-navidad-izquierda {\n    left: 8px !important;\n  }\n\n  .igrexario-carrusel-navidad\n  button.igrexario-navidad-derecha {\n    right: 8px !important;\n  }\n\n  .igrexario-carrusel-navidad\n  .igrexario-navidad-puntos {\n    top: 10px;\n  }\n}\n\n\/* ========================================\n   MOVIMIENTO REDUCIDO\n======================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .igrexario-carrusel-navidad\n  button.igrexario-navidad-navegacion {\n    transition: none;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const fotosNavidad = [\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/decoracion-navidad-luces-calles-vigo.webp\",\n      alt: \"Decoraci\u00f3n y luces de Navidad en Vigo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/noria-navidad-vigo-iluminada.webp\",\n      alt: \"Noria de Navidad iluminada en Vigo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/arbol-navidad-luces-vigo.webp\",\n      alt: \"Luces de Navidad de Vigo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/barco-navidad-iluminado-vigo.webp\",\n      alt: \"Barco iluminado durante la Navidad en Vigo\"\n    }\n  ];\n\n  function iniciarCarruselNavidad(carrusel) {\n    if (carrusel.dataset.navidadIniciado === \"true\") {\n      return;\n    }\n\n    const imagen = carrusel.querySelector(\n      \".igrexario-navidad-imagen\"\n    );\n\n    const puntosContenedor = carrusel.querySelector(\n      \".igrexario-navidad-puntos\"\n    );\n\n    const botonIzquierda = carrusel.querySelector(\n      \".igrexario-navidad-izquierda\"\n    );\n\n    const botonDerecha = carrusel.querySelector(\n      \".igrexario-navidad-derecha\"\n    );\n\n    const estado = carrusel.querySelector(\n      \".igrexario-navidad-estado\"\n    );\n\n    if (\n      !imagen ||\n      !puntosContenedor ||\n      !botonIzquierda ||\n      !botonDerecha ||\n      !estado ||\n      !fotosNavidad.length\n    ) {\n      return;\n    }\n\n    carrusel.dataset.navidadIniciado = \"true\";\n\n    let indiceActual = 0;\n\n    const fragmento = document.createDocumentFragment();\n\n    fotosNavidad.forEach(function (foto, indice) {\n      const punto = document.createElement(\"button\");\n\n      punto.type = \"button\";\n      punto.className = \"igrexario-navidad-punto\";\n\n      punto.setAttribute(\n        \"aria-label\",\n        \"Mostrar imagen \" +\n        (indice + 1) +\n        \" de \" +\n        fotosNavidad.length +\n        \": \" +\n        foto.alt\n      );\n\n      punto.setAttribute(\"aria-pressed\", \"false\");\n\n      punto.addEventListener(\"click\", function () {\n        mostrarImagen(indice);\n      });\n\n      fragmento.appendChild(punto);\n    });\n\n    puntosContenedor.replaceChildren(fragmento);\n\n    const puntos = puntosContenedor.querySelectorAll(\n      \".igrexario-navidad-punto\"\n    );\n\n    function mostrarImagen(indice, anunciar = true) {\n      indiceActual = (\n        (indice % fotosNavidad.length) +\n        fotosNavidad.length\n      ) % fotosNavidad.length;\n\n      const foto = fotosNavidad[indiceActual];\n\n      if (imagen.getAttribute(\"src\") !== foto.src) {\n        imagen.src = foto.src;\n      }\n\n      imagen.alt = foto.alt;\n\n      puntos.forEach(function (punto, posicion) {\n        const activo = posicion === indiceActual;\n\n        punto.classList.toggle(\"activo\", activo);\n\n        punto.setAttribute(\n          \"aria-pressed\",\n          String(activo)\n        );\n      });\n\n      estado.textContent = anunciar\n        ? foto.alt +\n          \". Imagen \" +\n          (indiceActual + 1) +\n          \" de \" +\n          fotosNavidad.length +\n          \".\"\n        : \"\";\n    }\n\n    botonDerecha.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual + 1);\n    });\n\n    botonIzquierda.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual - 1);\n    });\n\n    mostrarImagen(0, false);\n  }\n\n  function iniciarTodos() {\n    document\n      .querySelectorAll(\".igrexario-carrusel-navidad\")\n      .forEach(iniciarCarruselNavidad);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      iniciarTodos,\n      { once: true }\n    );\n  } else {\n    iniciarTodos();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9196fb3 e-flex e-con-boxed e-con e-parent\" data-id=\"9196fb3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1f3300a e-con-full e-flex e-con e-child\" data-id=\"1f3300a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b1633d2 e-con-full e-flex e-con e-child\" data-id=\"b1633d2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc3b26b elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"dc3b26b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">balneario de Mondariz<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9e5f407 e-con-full e-flex e-con e-child\" data-id=\"9e5f407\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2121afc elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"2121afc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Para cambiar la aventura por unas horas de descanso, el Balneario de Mondariz ofrece el Palacio del Agua, circuitos termales y diferentes tratamientos. Una propuesta para completar la estancia con una jornada dedicada al bienestar y la relajaci\u00f3n.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2720bf elementor-widget elementor-widget-button\" data-id=\"c2720bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/maps.app.goo.gl\/BgvzE4hxeF5oStLu9\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">52 minutos<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1bb25e8 e-con-full e-flex e-con e-child\" data-id=\"1bb25e8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-44fe262 e-con-full e-flex e-con e-child\" data-id=\"44fe262\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-87bf3f9 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"87bf3f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div\n  class=\"igrexario-carrusel-balneario\"\n  role=\"region\"\n  aria-roledescription=\"carrusel\"\n  aria-label=\"Galer\u00eda de balneario y relajaci\u00f3n en O Morrazo\"\n>\n  <div class=\"igrexario-balneario-ventana\">\n\n    <img loading=\"lazy\"\n      class=\"igrexario-balneario-imagen\"\n      src=\"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/spa-piscina-hidromasaje-luz-natural.webp\"\n      alt=\"Balneario con luz natural en O Morrazo\"\n      width=\"535\"\n      height=\"357\"\n      loading=\"lazy\"\n      decoding=\"async\"\n     title=\"Actividades\">\n\n    <button\n      class=\"igrexario-balneario-navegacion igrexario-balneario-izquierda\"\n      type=\"button\"\n      aria-label=\"Mostrar imagen anterior\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m15 18-6-6 6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <button\n      class=\"igrexario-balneario-navegacion igrexario-balneario-derecha\"\n      type=\"button\"\n      aria-label=\"Mostrar siguiente imagen\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        height=\"24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.5\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n        focusable=\"false\"\n      >\n        <path d=\"m9 18 6-6-6-6\"\/>\n      <\/svg>\n    <\/button>\n\n    <div\n      class=\"igrexario-balneario-puntos\"\n      role=\"group\"\n      aria-label=\"Seleccionar imagen de la galer\u00eda\"\n    ><\/div>\n\n    <p\n      class=\"igrexario-balneario-estado\"\n      role=\"status\"\n      aria-live=\"polite\"\n      aria-atomic=\"true\"\n    ><\/p>\n\n  <\/div>\n<\/div>\n\n<style>\n\/* ========================================\n   CARRUSEL BALNEARIO - ESTRUCTURA\n======================================== *\/\n\n.igrexario-carrusel-balneario {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n\n.igrexario-carrusel-balneario,\n.igrexario-carrusel-balneario * {\n  box-sizing: border-box;\n}\n\n.igrexario-carrusel-balneario\n.igrexario-balneario-ventana {\n  position: relative;\n  width: 535px;\n  max-width: 100%;\n  aspect-ratio: 3 \/ 2;\n  margin-left: auto;\n  overflow: hidden;\n  isolation: isolate;\n  border-radius: 20px;\n  background: transparent;\n}\n\n\/* ========================================\n   IMAGEN\n======================================== *\/\n\n.igrexario-carrusel-balneario\n.igrexario-balneario-imagen {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  border-radius: inherit;\n}\n\n\/* ========================================\n   FLECHAS - CENTRO EXACTO DEL EJE Y\n======================================== *\/\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-navegacion {\n  position: absolute !important;\n  top: 50% !important;\n  bottom: auto !important;\n  z-index: 5;\n\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  width: 44px !important;\n  height: 44px !important;\n  min-width: 44px !important;\n  min-height: 44px !important;\n\n  margin: 0 !important;\n  padding: 0 !important;\n\n  border: 0 !important;\n  border-radius: 50% !important;\n\n  background: rgba(255, 255, 255, 0.78) !important;\n  background-image: none !important;\n  box-shadow: none !important;\n\n  color: #000000 !important;\n\n  transform: translateY(-50%) !important;\n  -webkit-transform: translateY(-50%) !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n  -webkit-tap-highlight-color: transparent;\n\n  transition: background-color 0.2s ease;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-izquierda {\n  left: 12px !important;\n  right: auto !important;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-derecha {\n  right: 12px !important;\n  left: auto !important;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-navegacion:hover {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: #ffffff !important;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-navegacion:focus,\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-navegacion:active {\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n}\n\n.igrexario-carrusel-balneario\n.igrexario-balneario-navegacion svg {\n  display: block;\n  width: 24px;\n  height: 24px;\n  flex-shrink: 0;\n  stroke: #000000;\n  pointer-events: none;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-navegacion:focus-visible {\n  outline: 3px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   PUNTOS INDICADORES\n======================================== *\/\n\n.igrexario-carrusel-balneario\n.igrexario-balneario-puntos {\n  position: absolute;\n  top: 14px;\n  left: 50%;\n  z-index: 6;\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n\n  transform: translateX(-50%);\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-punto {\n  display: block;\n\n  width: 12px;\n  height: 12px;\n  min-width: 12px;\n  min-height: 12px;\n\n  margin: 0;\n  padding: 0 !important;\n\n  border: 1px solid #e6f4f3 !important;\n  border-radius: 50% !important;\n\n  background: rgba(0, 0, 0, 0.25) !important;\n  box-shadow: none !important;\n\n  cursor: pointer;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-punto.activo {\n  background: #e6f4f3 !important;\n  box-shadow: 0 0 5px rgba(0, 0, 0, 0.25) !important;\n}\n\n.igrexario-carrusel-balneario\nbutton.igrexario-balneario-punto:focus-visible {\n  outline: 2px solid #000000 !important;\n  outline-offset: 3px;\n}\n\n\/* ========================================\n   ACCESIBILIDAD\n======================================== *\/\n\n.igrexario-carrusel-balneario\n.igrexario-balneario-estado {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n  border: 0;\n}\n\n\/* ========================================\n   M\u00d3VIL\n======================================== *\/\n\n@media (max-width: 767px) {\n  .igrexario-carrusel-balneario\n  .igrexario-balneario-ventana {\n    width: 100%;\n    margin-left: 0;\n  }\n\n  .igrexario-carrusel-balneario\n  button.igrexario-balneario-izquierda {\n    left: 8px !important;\n  }\n\n  .igrexario-carrusel-balneario\n  button.igrexario-balneario-derecha {\n    right: 8px !important;\n  }\n\n  .igrexario-carrusel-balneario\n  .igrexario-balneario-puntos {\n    top: 10px;\n  }\n}\n\n\/* ========================================\n   MOVIMIENTO REDUCIDO\n======================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .igrexario-carrusel-balneario\n  button.igrexario-balneario-navegacion {\n    transition: none;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const fotosBalneario = [\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/spa-piscina-hidromasaje-luz-natural.webp\",\n      alt: \"Balneario con luz natural en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/balneario-piscina-interior-piedra-galicia.webp\",\n      alt: \"Balneario exterior tranquilo de estilo r\u00fastico en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/balneario-piscina-termal-exterior-naturaleza.webp\",\n      alt: \"Ba\u00f1o relajante junto a la naturaleza en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/spa-jacuzzi-exterior-nocturno-galicia.webp\",\n      alt: \"Jacuzzi exterior r\u00fastico en O Morrazo\"\n    },\n    {\n      src: \"https:\/\/oigrexariovacacional.com\/wp-content\/uploads\/2026\/10\/spa-piscina-interior-hidromasaje-galicia.webp\",\n      alt: \"Relajaci\u00f3n en camilla de agua en un balneario\"\n    }\n  ];\n\n  function iniciarCarruselBalneario(carrusel) {\n    if (carrusel.dataset.balnearioIniciado === \"true\") {\n      return;\n    }\n\n    const imagen = carrusel.querySelector(\n      \".igrexario-balneario-imagen\"\n    );\n\n    const puntosContenedor = carrusel.querySelector(\n      \".igrexario-balneario-puntos\"\n    );\n\n    const botonIzquierda = carrusel.querySelector(\n      \".igrexario-balneario-izquierda\"\n    );\n\n    const botonDerecha = carrusel.querySelector(\n      \".igrexario-balneario-derecha\"\n    );\n\n    const estado = carrusel.querySelector(\n      \".igrexario-balneario-estado\"\n    );\n\n    if (\n      !imagen ||\n      !puntosContenedor ||\n      !botonIzquierda ||\n      !botonDerecha ||\n      !estado ||\n      !fotosBalneario.length\n    ) {\n      return;\n    }\n\n    carrusel.dataset.balnearioIniciado = \"true\";\n\n    let indiceActual = 0;\n\n    const fragmento = document.createDocumentFragment();\n\n    fotosBalneario.forEach(function (foto, indice) {\n      const punto = document.createElement(\"button\");\n\n      punto.type = \"button\";\n      punto.className = \"igrexario-balneario-punto\";\n\n      punto.setAttribute(\n        \"aria-label\",\n        \"Mostrar imagen \" +\n        (indice + 1) +\n        \" de \" +\n        fotosBalneario.length +\n        \": \" +\n        foto.alt\n      );\n\n      punto.setAttribute(\"aria-pressed\", \"false\");\n\n      punto.addEventListener(\"click\", function () {\n        mostrarImagen(indice);\n      });\n\n      fragmento.appendChild(punto);\n    });\n\n    puntosContenedor.replaceChildren(fragmento);\n\n    const puntos = puntosContenedor.querySelectorAll(\n      \".igrexario-balneario-punto\"\n    );\n\n    function mostrarImagen(indice, anunciar = true) {\n      indiceActual = (\n        (indice % fotosBalneario.length) +\n        fotosBalneario.length\n      ) % fotosBalneario.length;\n\n      const foto = fotosBalneario[indiceActual];\n\n      if (imagen.getAttribute(\"src\") !== foto.src) {\n        imagen.src = foto.src;\n      }\n\n      imagen.alt = foto.alt;\n\n      puntos.forEach(function (punto, posicion) {\n        const activo = posicion === indiceActual;\n\n        punto.classList.toggle(\"activo\", activo);\n\n        punto.setAttribute(\n          \"aria-pressed\",\n          String(activo)\n        );\n      });\n\n      estado.textContent = anunciar\n        ? foto.alt +\n          \". Imagen \" +\n          (indiceActual + 1) +\n          \" de \" +\n          fotosBalneario.length +\n          \".\"\n        : \"\";\n    }\n\n    botonDerecha.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual + 1);\n    });\n\n    botonIzquierda.addEventListener(\"click\", function () {\n      mostrarImagen(indiceActual - 1);\n    });\n\n    mostrarImagen(0, false);\n  }\n\n  function iniciarTodos() {\n    document\n      .querySelectorAll(\".igrexario-carrusel-balneario\")\n      .forEach(iniciarCarruselBalneario);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      iniciarTodos,\n      { once: true }\n    );\n  } else {\n    iniciarTodos();\n  }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c7c90a5 e-con-full e-flex e-con e-parent\" data-id=\"c7c90a5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-3679e916 e-con-full e-flex e-con e-child\" data-id=\"3679e916\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5c2e75d1 e-con-full e-flex e-con e-child\" data-id=\"5c2e75d1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<a class=\"elementor-element elementor-element-2a15ae94 e-con-full e-transform e-flex e-con e-child\" data-id=\"2a15ae94\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" href=\"\/gastronomia\/\">\n\t\t\t\t<div class=\"elementor-element elementor-element-79d43a12 elementor-widget elementor-widget-text-editor\" data-id=\"79d43a12\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>ANTERIOR<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23f2773 elementor-widget elementor-widget-text-editor\" data-id=\"23f2773\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>GASTRONOM\u00cdA<\/p><p><span style=\"font-size: 24pt;\">\u21dc<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t<a class=\"elementor-element elementor-element-5ad8cc87 e-con-full e-transform e-flex e-con e-child\" data-id=\"5ad8cc87\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_transform_scale_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1.1,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" href=\"\/recomendaciones\/\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c4f2f2 elementor-widget elementor-widget-text-editor\" data-id=\"c4f2f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>SIGUIENTE<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c8c226a elementor-widget elementor-widget-text-editor\" data-id=\"4c8c226a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>RECOMENDACIONES<\/p><p><span style=\"font-size: 24pt;\">\u21dd<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8cbea00 e-flex e-con-boxed e-con e-parent\" data-id=\"8cbea00\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-37c5c6a e-con-full e-flex e-con e-child\" data-id=\"37c5c6a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bd44371 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"bd44371\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">DESPU\u00c9S DE LA AVENTURA<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a7509be elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"a7509be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">VUELVE A DESCANSAR A O IGREXARIO VACACIONAL<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a64f00b elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"a64f00b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Despu\u00e9s de un d\u00eda en el mar, entre rutas o descubriendo O Morrazo, vuelve a una casa completa con piscina, jard\u00edn y vistas a la r\u00eda de Ald\u00e1n.<span style=\"font-style: inherit\"><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a962c4 elementor-align-center elementor-widget__width-inherit elementor-widget elementor-widget-button\" data-id=\"5a962c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/localizacion\/\" id=\"CLAIM BOTOM\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">ver ubicaci\u00f3n<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PLANES EN O MORRAZO ACTIVIDADES Men\u00fa RECOMENDACIONES PLAYAS NATURALEZA GASTRONOM\u00edA ACTIVIDADES ELIGE TU PLAN Mar, naturaleza, aventura y planes para disfrutar de las R\u00edas Baixas a tu ritmo. Desde O Igrexario puedes descubrir actividades n\u00e1uticas, rutas por la r\u00eda de Ald\u00e1n, escalada, enoturismo y propuestas para disfrutar en pareja, en familia o con amigos. actividades [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3317","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/pages\/3317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/comments?post=3317"}],"version-history":[{"count":563,"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/pages\/3317\/revisions"}],"predecessor-version":[{"id":12782,"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/pages\/3317\/revisions\/12782"}],"wp:attachment":[{"href":"https:\/\/oigrexariovacacional.com\/en\/wp-json\/wp\/v2\/media?parent=3317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}