{"id":1432,"date":"2023-01-30T12:44:54","date_gmt":"2023-01-30T12:44:54","guid":{"rendered":"https:\/\/sportstoursinternational.co.uk\/?post_type=events&#038;p=1432"},"modified":"2026-08-27T10:23:56","modified_gmt":"2026-08-27T10:23:56","slug":"mallorca-312","status":"publish","type":"events","link":"https:\/\/sportstoursinternational.co.uk\/event\/mallorca-312\/","title":{"rendered":"Mallorca 312 2027"},"content":{"rendered":"\n<div class=\"wp-block-group is-style-wide is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-unbranded-block-breadcrumbs\">\n  <\/div>\n\n\n<div class=\"wp-block-columns single-event--page-header is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><h1 style=\"text-transform:uppercase;\" class=\"wp-block-post-title\">Mallorca 312 2027<\/h1>\n\n\n<div class=\"wp-block-group event-details is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<p class=\"not-blue\"><strong>24.04.27<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/10\/cycling-new-1.svg\" alt=\"\" class=\"wp-image-71743 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/10\/cycling-new-1.svg\" alt=\"\" class=\"wp-image-71743 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<p>Cycling<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Date.svg\" alt=\"\" class=\"wp-image-69592 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Date.svg\" alt=\"\" class=\"wp-image-69592 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<p>3 Nights<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Race-Number.svg\" alt=\"\" class=\"wp-image-69628 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Race-Number.svg\" alt=\"\" class=\"wp-image-69628 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<p>Guaranteed Entry<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-LOGO.png\" alt=\"Mallorca 312 event logo\" class=\"wp-image-73728 lazyload\"\/><noscript><img decoding=\"async\" width=\"375\" height=\"375\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-LOGO.png\" alt=\"Mallorca 312 event logo\" class=\"wp-image-73728 lazyload\" srcset=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-LOGO.png 375w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-LOGO-300x300.png 300w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-LOGO-150x150.png 150w\" sizes=\"(max-width: 375px) 100vw, 375px\" \/><\/noscript><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-style-wide single-event--content is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column single-event--left-side is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n\n<div id=\"carousel_6a904e1e12b1b\" class=\"page-scroll-links--carousel wp-block-unbranded-block-carousel\">\n  \n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><a href=\"#event-details\">Event details<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><a href=\"#packages\">What&#8217;s Included<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><a href=\"#itinerary\">Itinerary<\/a><\/p>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><a href=\"#reviews\">Reviews<\/a><\/p>\n<\/div>\n\n<\/div>\n\n<script type=\"text\/javascript\">\n  jQuery(document).ready(function($) {\n    jQuery.getScript(\"\/app\/plugins\/layout-composer\/components\/carousel\/assets\/src\/js\/_slick.js\", function() {\n      var uniqueIdSelector = '#carousel_6a904e1e12b1b';\n      var $uniqueIdContainer = $(uniqueIdSelector);\n      var carouselItems = '';\n\n      \/\/ Check for potential carousel items\n      if ($uniqueIdContainer.children().first().is('.wp-block-group')) {\n        carouselItems = uniqueIdSelector;\n      } else if ($uniqueIdContainer.find('.wp-block-gallery').length) {\n        carouselItems = uniqueIdSelector + ' .wp-block-gallery';\n      } else if ($uniqueIdContainer.find('.wp-block-query ul.wp-block-post-template').length) {\n        carouselItems = uniqueIdSelector + ' .wp-block-query ul.wp-block-post-template';\n      }\n\n      \/\/ Slick the carousel items\n      \/\/ Slick the carousel items\n      if (carouselItems) {\n\/*\n        $(carouselItems).on('init reInit afterChange', function(event, slick, currentSlide) {\n          var current = (currentSlide ? currentSlide : 0) + 1;\n          var $dotsContainer = $(this).find('.slick-dots');\n          if ($dotsContainer.length) {\n            $dotsContainer.html('<li class=\"slick-slide-number\">' + current + '<\/li>');\n          }\n        });\n*\/\n        $(carouselItems).slick({\n          slidesToShow: 5,\n          slidesToScroll: 1,\n                              dots: false,\n          infinite: false,\n          slidesToShow: 6,\narrows: false,\nvariableWidth: true,\nresponsive: [\n          {\n          breakpoint: 1350,\n          settings: {\n            slidesToShow: 5,\n            slidesToScroll: 1,\n          },\n        },\n        {\n          breakpoint: 1120,\n          settings: {\n            slidesToShow: 4,\n            slidesToScroll: 1,\n          },\n        },\n      {\n          breakpoint: 991,\n          settings: {\n            slidesToShow: 5,\n            slidesToScroll: 1,\n          },\n        },\n      {\n          breakpoint: 760,\n          settings: {\n            slidesToShow: 4,\n            slidesToScroll: 1,\n          },\n        },\n      {\n          breakpoint: 590,\n          settings: {\n            slidesToShow: 3,\n            slidesToScroll: 1,\n             arrows:true,\n          },\n        },\n     {\n          breakpoint: 440,\n          settings: {\n            slidesToShow: 2,\n            slidesToScroll: 1,\n             arrows:true,\n          },\n        },\n  ],        });\n      }\n\n      $uniqueIdContainer.css({\n        'visibility': 'visible',\n        'opacity': '1'\n      });\n\n    });\n  });\n<\/script>\n\n\n<div id=\"event-details\" class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading not-blue h4\">Mallorca is one of the Mediterranean\u2019s most spectacular islands and a true cycling paradise, making it the perfect setting for the Mallorca 312.<\/h2>\n\n\n\n<p>Each year, the event becomes a vibrant cycling festival for passionate amateur riders, who take on fully closed roads across the island. Participants can choose from three iconic routes: 312 km, 225 km, and 167 km &#8211; each offering its own unique blend of challenge, scenery, and unforgettable experience.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n\n<div id=\"lightbox_6a904e1e12d50\" class=\"wp-block-unbranded-block-lightbox\">\n    \n\n\n<div id=\"carousel_6a904e1e12d1f\" class=\"carousel--even wp-block-unbranded-block-carousel\">\n  \n\n<figure class=\"wp-block-gallery has-nested-images columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-gallery is-style-default\"><a href=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2025\/05\/@the.adventure.bakery_DSC3573-scaled.jpg.webp\"><img decoding=\"async\" data-id=\"65964\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2025\/05\/@the.adventure.bakery_DSC3573-600x400.jpg.webp\" alt=\"Mallorca312 race day along the Mediterranean\" class=\"wp-image-65964 lazyload\"\/><noscript><img decoding=\"async\" width=\"600\" height=\"400\" data-id=\"65964\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-600x400.jpg\" alt=\"Mallorca312 race day along the Mediterranean\" class=\"wp-image-65964 lazyload\" srcset=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-600x400.jpg 600w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-300x200.jpg 300w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-2048x1365.jpg 2048w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-768x512.jpg 768w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-1024x683.jpg 1024w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-1536x1024.jpg 1536w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-540x360.jpg 540w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-1360x907.jpg 1360w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-1080x720.jpg 1080w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-810x540.jpg 810w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-270x180.jpg 270w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-gallery hidden\"><a href=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-RACE-DAY-HILL-CLIMB.png\"><img decoding=\"async\" data-id=\"73424\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2025\/11\/ST-CYCLING-MALLORCA312-RACE-DAY-HILL-CLIMB-600x400.png.webp\" alt=\"A group of cyclists during the Mallorca 312 event on a sunny day, with blue skies\" class=\"wp-image-73424 lazyload\"\/><noscript><img decoding=\"async\" width=\"600\" height=\"400\" data-id=\"73424\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/11\/ST-CYCLING-MALLORCA312-RACE-DAY-HILL-CLIMB-600x400.png\" alt=\"A group of cyclists during the Mallorca 312 event on a sunny day, with blue skies\" class=\"wp-image-73424 lazyload\"\/><\/noscript><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-gallery hidden\"><a href=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-CYCLING-MALLORCA312-RACE-DAY-BLUE-SKIES.png\"><img decoding=\"async\" data-id=\"73442\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/01\/ST-CYCLING-MALLORCA312-RACE-DAY-BLUE-SKIES-600x400.png.webp\" alt=\"A group of cyclists during the Mallorca 312 event on a sunny day, with blue skies\" class=\"wp-image-73442 lazyload\"\/><noscript><img decoding=\"async\" width=\"600\" height=\"400\" data-id=\"73442\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-CYCLING-MALLORCA312-RACE-DAY-BLUE-SKIES-600x400.png\" alt=\"A group of cyclists during the Mallorca 312 event on a sunny day, with blue skies\" class=\"wp-image-73442 lazyload\"\/><\/noscript><\/a><\/figure>\n<\/figure>\n\n<\/div>\n\n<script type=\"text\/javascript\">\n  jQuery(document).ready(function($) {\n    jQuery.getScript(\"\/app\/plugins\/layout-composer\/components\/carousel\/assets\/src\/js\/_slick.js\", function() {\n      var uniqueIdSelector = '#carousel_6a904e1e12d1f';\n      var $uniqueIdContainer = $(uniqueIdSelector);\n      var carouselItems = '';\n\n      \/\/ Check for potential carousel items\n      if ($uniqueIdContainer.children().first().is('.wp-block-group')) {\n        carouselItems = uniqueIdSelector;\n      } else if ($uniqueIdContainer.find('.wp-block-gallery').length) {\n        carouselItems = uniqueIdSelector + ' .wp-block-gallery';\n      } else if ($uniqueIdContainer.find('.wp-block-query ul.wp-block-post-template').length) {\n        carouselItems = uniqueIdSelector + ' .wp-block-query ul.wp-block-post-template';\n      }\n\n      \/\/ Slick the carousel items\n      \/\/ Slick the carousel items\n      if (carouselItems) {\n\/*\n        $(carouselItems).on('init reInit afterChange', function(event, slick, currentSlide) {\n          var current = (currentSlide ? currentSlide : 0) + 1;\n          var $dotsContainer = $(this).find('.slick-dots');\n          if ($dotsContainer.length) {\n            $dotsContainer.html('<li class=\"slick-slide-number\">' + current + '<\/li>');\n          }\n        });\n*\/\n        $(carouselItems).slick({\n          slidesToShow: 2,\n          slidesToScroll: 1,\n           prevArrow: '<button type=\"button\" class=\"slick-prev\"><\/button>',\n                     nextArrow: '<button type=\"button\" class=\"slick-next\"><\/button>',\n                    dots: false,\n          infinite: false,\n                  });\n      }\n\n      $uniqueIdContainer.css({\n        'visibility': 'visible',\n        'opacity': '1'\n      });\n\n    });\n  });\n<\/script>\n<\/div>\n\n<style>\n  #lightbox_6a904e1e12d50 figure {\n    display: none;\n  }\n\n  #lightbox_6a904e1e12d50 figure:first-of-type {\n    display: flex;\n  }\n<\/style>\n\n<script type=\"text\/javascript\">\njQuery(document).ready(function($) {\n  jQuery.getScript(\"https:\/\/sportstoursinternational.co.uk\/app\/themes\/unbranded\/components\/block-lightbox\/assets\/production\/js\/lightbox.min.js\", function() {\n    var uniqueIdSelector = '#lightbox_6a904e1e12d50';\n    var $uniqueIdContainer = $(uniqueIdSelector);\n    \n    \/\/ Add lightbox properties to image links\n    $('#lightbox_6a904e1e12d50 a').attr('data-lightbox', 'gallery-lightbox_6a904e1e12d50');\n\n    lightbox.option({\n      wrapAround: false,\n      showImageNumberLabel: false          })\n\n  });\n});\n<\/script>\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Ticket.svg\" alt=\"\" class=\"wp-image-69650 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Ticket.svg\" alt=\"\" class=\"wp-image-69650 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading h5\">ENTRY &amp; EXTRAS<\/h2>\n<\/div>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p><strong>Guaranteed Race Entry<\/strong><\/p>\n\n\n\n<p>Please see below for our entry prices per entry with accommodation &#8211; Mallorca 312 offers a choice of 3 distances: 312 km, 225 km and 167 km. Your registration allows you to participate in all routes.<\/p>\n\n  <\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group event-price has-brand-2-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>312km Entry<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a3190<\/h3>\n\n\n\n<p>per person<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group course-tour-price has-brand-2-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>225km Entry<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a3190<\/h3>\n\n\n\n<p>per person<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group course-tour-price has-brand-2-background-color has-background is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>167km Entry<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a3190<\/h3>\n\n\n\n<p>per person<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>Your registration allows you to participate in all routes. Depending how you get on with your training, you have time to decide until the day of the race which one you will do.<\/p>\n\n\n\n<p><strong>Bike Transfers<\/strong><br>Do you need your bike transferring? Please contact a member of our team for more information on Bike Transfers from the UK customerservice@sportstoursinternational.co.uk<\/p>\n\n  <\/div>\n  \n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Checkpoint.svg\" alt=\"\" class=\"wp-image-69585 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Checkpoint.svg\" alt=\"\" class=\"wp-image-69585 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading h5\">MALLORCA 312 RACE ROUTE<\/h2>\n<\/div>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p>Starting next to the Mediterranean coast, you will climb some of the most beautiful mountains of the island. Pass through traditional and rustic villages and then return back to enjoy your off-the-bike time! Mallorca has become the epi-centre of European cycling tourism in recent years. Its landscapes, its climate and its road network are without any doubt the 3 main reasons for this.<\/p>\n\n  <\/div>\n  \n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Flight.svg\" alt=\"\" class=\"wp-image-69596 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Flight.svg\" alt=\"\" class=\"wp-image-69596 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading h5\">TRAVEL INFORMATION<\/h2>\n<\/div>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p><strong>Getting to Mallorca<\/strong><br>Palma de Mallorca Airport (PMI): The island\u2019s main international airport, located just 8 km (5 miles) from Palma city centre, serves major airlines and low-cost carriers from across Europe. We no longer offer airport transfers, but we can offer private transfers on request, please email: customerservice@sportstoursinternational.co.uk.<br><strong>\u2022 Taxi:<\/strong> Readily available outside the terminal. The journey to central Palma takes about 15\u201320 minutes and costs approximately \u20ac20\u2013\u20ac25.<br><strong>\u2022 Bus:<\/strong> EMT Line 1 connects the airport to Palma city centre, with services every 15\u201320 minutes. A one-way ticket costs around \u20ac5.<br><strong>Getting Around Mallorca<\/strong><br><strong>\u2022 Car or Minivan:<\/strong> The best option for cyclists, offering flexibility to reach popular climbs such as Sa Calobra, Puig Major, and Cap de Formentor.<br><strong>\u2022 Public Transport:<\/strong> Regular buses connect Palma with key towns and resorts, including Alc\u00fadia, S\u00f3ller, and Pollensa.<br><strong>\u2022 Taxi: <\/strong>Available across the island, though advance booking is recommended in smaller towns or during peak season.<\/p>\n\n  <\/div>\n  \n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Pay.svg\" alt=\"\" class=\"wp-image-69622 lazyload\"\/><noscript><img decoding=\"async\" width=\"432\" height=\"432\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/07\/Pay.svg\" alt=\"\" class=\"wp-image-69622 lazyload\"\/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading h5\">WHY BOOK WITH US?<\/h2>\n<\/div>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p>With Sports Tours International, every ride and race becomes a shared experience. From the moment you arrive, our team is on hand to make your cycling adventure seamless &#8211; from guided warm-up rides to prime viewing spots for the biggest stages. Meet like-minded fans, enjoy expert insights from our cycling guides, and soak up the atmosphere as you watch the world\u2019s best riders in action.<\/p>\n\n  <\/div>\n  \n<\/div>\n<\/div><\/div>\n\n\n\n<div id=\"packages\" class=\"wp-block-group event-packages is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading h4\">INCLUDED IN YOUR PACKAGE:<\/h2>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group is-layout-grid wp-container-core-group-is-layout-4d858cb8 wp-block-group-is-layout-grid\">\n<figure class=\"wp-block-image size-included_thumb\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/01\/ST-Cycling-Mallorca-312-Card-image-1-210x125.jpg.webp\" alt=\"Mallorca 312 medals all lying on a table\" class=\"wp-image-72269 lazyload\"\/><noscript><img decoding=\"async\" width=\"210\" height=\"125\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-Card-image-1-210x125.jpg\" alt=\"Mallorca 312 medals all lying on a table\" class=\"wp-image-72269 lazyload\"\/><\/noscript><figcaption class=\"wp-element-caption\">Guaranteed Entry <\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-included_thumb wp-container-content-e269605d\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/01\/ST-Cycling-Mallorca-312-Card-image-2-210x125.jpg.webp\" alt=\"Mallorca 312 Hotel featuring a while building with balconies, a pool, deck chairs and pam trees all under a blue sky. \" class=\"wp-image-72270 lazyload\"\/><noscript><img decoding=\"async\" width=\"210\" height=\"125\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-Card-image-2-210x125.jpg\" alt=\"Mallorca 312 Hotel featuring a while building with balconies, a pool, deck chairs and pam trees all under a blue sky. \" class=\"wp-image-72270 lazyload\"\/><\/noscript><figcaption class=\"wp-element-caption\">Hotel Accommodation<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-included_thumb wp-container-content-e269605d\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/01\/ST-Cycling-Mallorca-312-Card-Image-3-210x125.jpg.webp\" alt=\"Three cyclists riding along open roads next to mountains in the sun\" class=\"wp-image-72271 lazyload\"\/><noscript><img decoding=\"async\" width=\"210\" height=\"125\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-Card-Image-3-210x125.jpg\" alt=\"Three cyclists riding along open roads next to mountains in the sun\" class=\"wp-image-72271 lazyload\"\/><\/noscript><figcaption class=\"wp-element-caption\">Sports Tours Reps on Hand<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-included_thumb wp-container-content-e269605d\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/01\/ST-Cycling-Mallorca-312-Card-image-4-210x125.jpg.webp\" alt=\"Cyclists riding near green fields on open roads, raising their hands and smiling for a photo.\" class=\"wp-image-72272 lazyload\"\/><noscript><img decoding=\"async\" width=\"210\" height=\"125\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-Card-image-4-210x125.jpg\" alt=\"Cyclists riding near green fields on open roads, raising their hands and smiling for a photo.\" class=\"wp-image-72272 lazyload\"\/><\/noscript><figcaption class=\"wp-element-caption\">Guided Ride<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-included_thumb wp-container-content-e269605d\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/02\/Pre-Race-Briefing-210x125.jpg.webp\" alt=\"A room full of runners, days before a marathon being delivered a pre-race briefing by Sports Tours International.\" class=\"wp-image-71033 lazyload\"\/><noscript><img decoding=\"async\" width=\"210\" height=\"125\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/02\/Pre-Race-Briefing-210x125.jpg\" alt=\"A room full of runners, days before a marathon being delivered a pre-race briefing by Sports Tours International.\" class=\"wp-image-71033 lazyload\"\/><\/noscript><figcaption class=\"wp-element-caption\">Pre-Race Briefing<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-included_thumb\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/02\/itMkWigHTqK8F6G79ii3BP-210x125.jpg.webp\" alt=\"\" class=\"wp-image-21484 lazyload\"\/><noscript><img decoding=\"async\" width=\"210\" height=\"125\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/02\/itMkWigHTqK8F6G79ii3BP-210x125.jpg\" alt=\"\" class=\"wp-image-21484 lazyload\"\/><\/noscript><figcaption class=\"wp-element-caption\">Mechanical Services <\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile is-image-fill-element\" style=\"grid-template-columns:30% auto\"><figure class=\"wp-block-media-text__media\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2023\/01\/ST-Cycling-Mallorca-312-event-1024x682.jpg.webp\" alt=\"Mallorca 312 event finish line, showing spectators cheering as cyclists appear through a cloud of smoke towards the finish line. \" class=\"wp-image-72274 size-gallery lazyload\" style=\"object-position:50% 50%\"\/><noscript><img decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-1024x682.jpg\" alt=\"Mallorca 312 event finish line, showing spectators cheering as cyclists appear through a cloud of smoke towards the finish line. \" class=\"wp-image-72274 size-gallery lazyload\" style=\"object-position:50% 50%\" srcset=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-1024x682.jpg 1024w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-300x200.jpg 300w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-768x512.jpg 768w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-1536x1024.jpg 1536w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-2048x1365.jpg 2048w, https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2023\/01\/ST-Cycling-Mallorca-312-event-600x400.jpg 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/figure><div class=\"wp-block-media-text__content\">\n<h3 class=\"wp-block-heading\">ADDITIONAL INFORMATION<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Accommodation Options Available<\/li>\n\n\n\n<li>Comprehensive support from Sports Tours reps<\/li>\n\n\n\n<li>Three distances to choose from: 312km, 225km and 167km<\/li>\n\n\n\n<li>Bike storage at your hotel<\/li>\n\n\n\n<li>VIP Package &#8211; Including entry (optional)<\/li>\n\n\n\n<li>ABTA protected<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n\n\n<div id=\"itinerary\" class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading h4\" style=\"text-transform:uppercase\">Itinerary<\/h2>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<h3 class=\"wp-block-heading h5\" style=\"text-transform:uppercase\">DAY 1 \u2013 ARRIVAL DAY<\/h3>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p>Please make your own way to your hotel. If you would like a private transfer to your hotel, please email <a href=\"mailto:customerservice@sportstoursinternational.co.uk\">customerservice@sportstoursinternational.co.uk&nbsp;&nbsp;<\/a><\/p>\n\n  <\/div>\n  \n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<h3 class=\"wp-block-heading h5\" style=\"text-transform:uppercase\">DAY 2 \u2013 Guided ride, RACE BRIEF &amp; WELCOME DRINKS<\/h3>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p>Today we will offer an optional guided ride of around 35 km. Bibs will be collected for all clients and will be distributed at the pre-race briefing on Friday evening &#8211; time to be confirmed on the itinerary provided closer to the date of departure.<\/p>\n\n  <\/div>\n  \n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<h3 class=\"wp-block-heading h5\" style=\"text-transform:uppercase\">DAY 3 \u2013 Race Day!<\/h3>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p>An early breakfast will be served before a short ride from the hotel. Mallorca 312 will offer up to 6 refreshment areas depending on the distance chosen. Roads will be closed to traffic throughout the event. Sports Tours representatives will be available via phone if needed. Once you have completed your ride enjoy the events pasta party and other delights before making you way back to the hotel for you evening meal.<\/p>\n\n  <\/div>\n  \n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item\" >\n    \n\n\n<div class=\"wp-block-unbranded-block-accordion-item-header\" >\n  \n\n<h3 class=\"wp-block-heading h5\" style=\"text-transform:uppercase\">DAY 4 \u2013 Optional extra day<\/h3>\n\n<\/div>\n\n\n\n<div class=\"wp-block-unbranded-block-accordion-item-panel\" >\n    \n\n<p>Today is departure day. We will offer a guided ride as a recovery for those who wish to partake in the morning.&nbsp; This is an optional ride. The distance and route will be discussed with the representative in resort. Today is departure Day \u2013 Please continue with your onward journey. We can offer private transfers on request, please email&nbsp;<a href=\"mailto:customerservice@sportstoursinternational.co.uk\"><strong>customerservice@sportstoursinternational.co.uk<\/strong><\/a><\/p>\n\n  <\/div>\n  \n<\/div>\n<\/div><\/div>\n\n\n\n\n\n<div id=\"reviews\" class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading h4\">WHAT PAST PARTICIPANTS SAY<\/h2>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n<div id=\"carousel_6a904e1e16efd\" class=\"wp-block-unbranded-block-carousel\">\n  \n\n<div class=\"wp-block-query testimonial--query-loop is-layout-flow wp-block-query-is-layout-flow\"><ul class=\"wp-block-post-template is-layout-flow wp-block-post-template-is-layout-flow\"><li class=\"wp-block-post post-77454 testimonial type-testimonial status-publish hentry tag-cycling tag-etape\">\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\"><div class=\"title-initials-avatar\">CG<\/div>\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8cf370e7 wp-block-group-is-layout-flex\"><h2 class=\"wp-block-post-title\">Chris Gratham<\/h2>\n\n<p>Canada<\/p><\/div>\n<\/div>\n\n\n<div class=\"rating-stars\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><\/div>\n\n<p>Sports Tours were pure class &#8211; making my Etape experience top notch. From the organization, briefing, mechanical check, and on-course support I couldn&#039;t have asked for any more &#8211; well &#8230; perhaps if they could have added 20W to my power \ud83d\ude42<\/p>\n<\/li><li class=\"wp-block-post post-73759 testimonial type-testimonial status-publish hentry tag-cycling tag-generic tag-running\">\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\"><div class=\"title-initials-avatar\">DE<\/div>\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8cf370e7 wp-block-group-is-layout-flex\"><h2 class=\"wp-block-post-title\">Darren Ewer<\/h2>\n\n<p>34, Manchester<\/p><\/div>\n<\/div>\n\n\n<div class=\"rating-stars\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><\/div>\n\n<p>The trip exceeded my expectations. I wouldn&#039;t hesitate to recommend Sports Tours.<\/p>\n<\/li><li class=\"wp-block-post post-72671 testimonial type-testimonial status-publish hentry tag-cycling tag-generic\">\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex\"><div class=\"title-initials-avatar\">M<\/div>\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8cf370e7 wp-block-group-is-layout-flex\"><h2 class=\"wp-block-post-title\">Mike<\/h2>\n\n<p>Edinburgh, UK<\/p><\/div>\n<\/div>\n\n\n<div class=\"rating-stars\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 26.95 25.63\" width=\"20\" height=\"20\">\n\t\t\t\t\t\t\t\t\t<polygon points=\"26.95 9.79 16.66 9.79 13.48 0 10.3 9.79 0 9.79 8.33 15.84 5.15 25.63 13.48 19.58 21.81 25.63 18.62 15.84 26.95 9.79\"\/>\n\t\t\t\t\t\t\t\t<\/svg><\/div>\n\n<p>Great trip, great event and really well organised! Thanks!<\/p>\n<\/li><\/ul><\/div>\n\n<\/div>\n\n<script type=\"text\/javascript\">\n  jQuery(document).ready(function($) {\n    jQuery.getScript(\"\/app\/plugins\/layout-composer\/components\/carousel\/assets\/src\/js\/_slick.js\", function() {\n      var uniqueIdSelector = '#carousel_6a904e1e16efd';\n      var $uniqueIdContainer = $(uniqueIdSelector);\n      var carouselItems = '';\n\n      \/\/ Check for potential carousel items\n      if ($uniqueIdContainer.children().first().is('.wp-block-group')) {\n        carouselItems = uniqueIdSelector;\n      } else if ($uniqueIdContainer.find('.wp-block-gallery').length) {\n        carouselItems = uniqueIdSelector + ' .wp-block-gallery';\n      } else if ($uniqueIdContainer.find('.wp-block-query ul.wp-block-post-template').length) {\n        carouselItems = uniqueIdSelector + ' .wp-block-query ul.wp-block-post-template';\n      }\n\n      \/\/ Slick the carousel items\n      \/\/ Slick the carousel items\n      if (carouselItems) {\n\/*\n        $(carouselItems).on('init reInit afterChange', function(event, slick, currentSlide) {\n          var current = (currentSlide ? currentSlide : 0) + 1;\n          var $dotsContainer = $(this).find('.slick-dots');\n          if ($dotsContainer.length) {\n            $dotsContainer.html('<li class=\"slick-slide-number\">' + current + '<\/li>');\n          }\n        });\n*\/\n        $(carouselItems).slick({\n          slidesToShow: 2,\n          slidesToScroll: 1,\n           prevArrow: '<button type=\"button\" class=\"slick-prev\"><\/button>',\n                     nextArrow: '<button type=\"button\" class=\"slick-next\"><\/button>',\n                    dots: false,\n          infinite: false,\n          responsive: [\n          {\n          breakpoint: 600,\n          settings: {\n            slidesToShow: 1,\n            slidesToScroll: 1,\n          },\n        },\n  ],        });\n      }\n\n      $uniqueIdContainer.css({\n        'visibility': 'visible',\n        'opacity': '1'\n      });\n\n    });\n  });\n<\/script><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n\n\t\n\n<div id=\"booking-form\" class=\"single-event-booking-form \">\n\t<div class=\"field-group\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<strong>Coming Soon<\/strong>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/div>\n\n<div class=\"post-action-bar\">\n\t<div class=\"action-item action-item-bar\">\n\t\t<div class=\"action-item share\">\n\t\t\t<span class=\"icon share-icon\">\n\t\t\t\t<svg id=\"Layer_2\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 16.05 16.06\">\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t.cls-share {\n\t\t\t\t\t\t\t\tfill: #1c3bf0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t<\/style>\n\t\t\t\t\t<\/defs>\n\t\t\t\t\t<g id=\"Layer_1-2\" data-name=\"Layer_1\">\n\t\t\t\t\t\t<path class=\"cls-share\" d=\"M13.62,11.21c-.8,0-1.5.39-1.95.98l-6.92-3.58c.06-.22.1-.45.1-.68,0-.16-.02-.32-.05-.47l6.95-3.48c.45.53,1.12.88,1.86.88,1.34,0,2.43-1.09,2.43-2.43s-1.09-2.43-2.43-2.43-2.43,1.09-2.43,2.43c0,.19.03.38.07.56l-6.92,3.46c-.45-.59-1.16-.95-1.92-.95-1.34,0-2.43,1.09-2.43,2.43s1.09,2.43,2.43,2.43c.68,0,1.33-.29,1.78-.78l7.03,3.63c-.02.14-.04.28-.04.43,0,1.34,1.09,2.43,2.43,2.43s2.43-1.09,2.43-2.43-1.09-2.43-2.43-2.43Z\" \/>\n\t\t\t\t\t<\/g>\n\t\t\t\t<\/svg>\n\t\t\t<\/span>\n\t\t\t<span class=\"label\">Share<\/span>\n\t\t<\/div>\n\n\t\t<div class=\"share-popup\" id=\"sharePopup\">\n\t\t\t<div class=\"sharethis-inline-share-buttons\"><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t\n\t<div type=\"button\" class=\"action-item favourite fav-icon add-to-favourites add-to-favourites-feed\" data-id=\"1432\" data-title=\"Mallorca 312 2027\" data-finalSKU=\"2031\">\n\t\t<span class=\"icon\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" id=\"Layer_1\" data-name=\"Layer 1\" width=\"432\" height=\"432\" viewBox=\"0 0 432 432\">\n\t\t\t\t<defs>\n\t\t\t\t\t<style>\n\t\t\t\t\t\t.cls-2 {\n\t\t\t\t\t\t\tfill: #1c3bf0;\n\t\t\t\t\t\t}\n\t\t\t\t\t<\/style>\n\t\t\t\t<\/defs>\n\t\t\t\t<path class=\"cls-2\" d=\"M216,396c-4.35,0-8.7-1.57-12.14-4.71-25.25-23.07-49.85-47.68-73.14-73.14-65.88-72.03-80.13-105.59-85.12-124.57-5.67-21.54-18.93-71.97,11.87-114.19,19.28-26.44,52.86-43.4,85.76-43.4.32,0,.65,0,.97,0,6.07.06,24.52.25,44.49,11.23,11.76,6.46,20.65,14.82,27.33,23.24,6.67-8.42,15.57-16.77,27.33-23.24,19.97-10.98,38.42-11.16,44.49-11.23,33.18-.34,67.25,16.69,86.72,43.39,30.8,42.22,17.53,92.65,11.87,114.19-4.99,18.97-19.24,52.53-85.12,124.57-23.28,25.46-47.89,50.06-73.14,73.14-3.44,3.14-7.79,4.71-12.14,4.71ZM143.21,72c-21.44,0-44.14,11.44-56.67,28.61-20.71,28.39-10.87,65.82-6.13,83.81,6.22,23.63,32.08,60.45,76.88,109.43,18.81,20.57,38.51,40.56,58.72,59.59,20.21-19.04,39.91-39.03,58.72-59.59,44.8-48.98,70.66-85.8,76.88-109.43,4.73-17.99,14.58-55.42-6.13-83.81-12.52-17.17-35.23-28.61-56.67-28.61-.2,0-.41,0-.61,0-4.23.04-15.47.16-27.51,6.77-17.99,9.89-25.24,27.57-27.53,34.71-2.38,7.46-9.32,12.52-17.14,12.52s-14.76-5.06-17.14-12.52c-2.28-7.14-9.54-24.82-27.53-34.71-12.04-6.62-23.28-6.73-27.51-6.77-.2,0-.41,0-.61,0Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/span>\n\t\t<span class=\"label\">Favourites<\/span>\n\t<\/div>\n\n\t\t\t\t\t\t<div class=\"action-item get-alert\">\n\t\t\t\t<span class=\"icon\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" id=\"Layer_1\" data-name=\"Layer 1\" width=\"432\" height=\"432\" viewBox=\"0 0 432 432\">\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t.cls-2 {\n\t\t\t\t\t\t\t\t\tfill: #1c3bf0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t<\/style>\n\t\t\t\t\t\t<\/defs>\n\t\t\t\t\t\t<path class=\"cls-2\" d=\"M348,378H84c-26.47,0-48-21.53-48-48V102.28c0-26.47,21.53-48,48-48h264c26.47,0,48,21.53,48,48v227.72c0,26.47-21.53,48-48,48ZM84,90.28c-6.62,0-12,5.38-12,12v227.72c0,6.62,5.38,12,12,12h264c6.62,0,12-5.38,12-12V102.28c0-6.62-5.38-12-12-12H84Z\"><\/path>\n\t\t\t\t\t\t<path class=\"cls-2\" d=\"M216,278.6c-21.73,0-41.94-8.69-56.88-24.47l-118.18-124.75c-6.84-7.22-6.53-18.61.69-25.45,7.22-6.84,18.61-6.53,25.45.69l118.18,124.75c8.08,8.53,19,13.23,30.75,13.23s22.67-4.7,30.75-13.23l118.18-124.75c6.84-7.22,18.23-7.52,25.45-.69,7.22,6.84,7.52,18.23.69,25.45l-118.18,124.75c-14.95,15.78-35.15,24.47-56.88,24.47Z\"><\/path>\n\t\t\t\t\t<\/svg>\n\t\t\t\t<\/span>\n\t\t\t\t<span class=\"label\" id=\"get-alerts\">Join Interest List<\/span>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t<script>\n\t\t$ = jQuery;\n\t\t$(document).ready(function() {\n\t\t\tsessionStorage.setItem('number_of_guests', 1);\n\t\t\t\/\/ Pass the PHP variables into JavaScript variables\n\t\t\tconst tmCodes = '2031';\n\t\t\tconst startDate = '2027-04-01';\n\t\t\tconst endDate = '2027-04-30';\n\n\t\t\t\/\/ NEW POPOUT STRINGS PASSED TO JS\n\t\t\tconst customPreBookingMessage = \"\";\n\t\t\tconst popupContinueText = \"Continue\";\n\n\t\t\tconst isFrenchSite = false;\n\n\t\t\t$('#arrival-date').html('<option>Loading...<\/option>');\n\t\t\t$('#duration').html('<option>Loading...<\/option>');\n\t\t\tdurationsByDate = {}; \/\/ Reset the global object\n\t\t\t\/\/ Get URL parameters before the AJAX call completes, as they're needed for post-load selection\n\t\t\tconst urlParams = new URLSearchParams(window.location.search);\n\t\t\tconst urlStartDate = urlParams.get('start_date');\n\t\t\tconst urlDuration = urlParams.get('duration');\n\n\t\t\tconst updateButtonState = () => {\n\t\t\tconst bookNowButton = $('.js-start-booking');\n\n\t\t\t\/\/ If the dropdowns don't exist (e.g., it's a Pre-Reg event), \n\t\t\t\/\/ ensure the button is active and stop the function immediately.\n\t\t\tif ($('#arrival-date').length === 0 || $('#duration').length === 0) {\n\t\t\t\tbookNowButton.removeClass('inactive');\n\t\t\t\treturn; \n\t\t\t}\n\n\t\t\t\/\/ Standard logic for full events\n\t\t\tconst arrivalDateSelected = $('#arrival-date').val();\n\t\t\tconst durationSelected = $('#duration').val();\n\n\t\t\tif (arrivalDateSelected && durationSelected) {\n\t\t\t\tbookNowButton.removeClass('inactive');\n\t\t\t} else {\n\t\t\t\tbookNowButton.addClass('inactive');\n\t\t\t}\n\t\t};\n\n\t\t\t$.ajax({\n\t\t\t\turl: ajax.url,\n\t\t\t\ttype: 'POST',\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'get_arrival_dates_by_event',\n\t\t\t\t\ttm_codes: tmCodes,\n\t\t\t\t\tstart_date: startDate,\n\t\t\t\t\tend_date: endDate\n\t\t\t\t},\n\t\t\t\tsuccess: function(response) {\n\t\t\t\t\t\/\/ console.log('AJAX Success:', response);\n\t\t\t\t\t$('#duration').html('<option><\/option>');\n\n\t\t\t\t\tif (response.success && response.data.length > 0) {\n\t\t\t\t\t\t\/\/ Group durations by date\n\t\t\t\t\t\tresponse.data.forEach(function(event) {\n\t\t\t\t\t\t\tif (!durationsByDate[event.start_date]) {\n\t\t\t\t\t\t\t\tdurationsByDate[event.start_date] = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!durationsByDate[event.start_date].includes(event.duration)) {\n\t\t\t\t\t\t\t\tdurationsByDate[event.start_date].push(event.duration);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\/\/ Create options for the arrival date dropdown with unique dates\n\t\t\t\t\t\tfunction getDayFormatted(day) {\n\t\t\t\t\t\t\t\/\/ French Formatting: \"1er\", but \"2\", \"3\", \"18\", etc.\n\t\t\t\t\t\t\tif (isFrenchSite) {\n\t\t\t\t\t\t\t\treturn day === 1 ? '1er' : day;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/ Standard English Formatting\n\t\t\t\t\t\t\tif (day > 3 && day < 21) return day + 'th';\n\t\t\t\t\t\t\tswitch (day % 10) {\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\treturn day + 'st';\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\treturn day + 'nd';\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\treturn day + 'rd';\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn day + 'th';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet options = '<option value=\"\">Start date<\/option>';\n\n\t\t\t\t\t\tObject.keys(durationsByDate).forEach(function(date) {\n\t\t\t\t\t\t\tconst originalDate = new Date(date + 'T00:00:00');\n\t\t\t\t\t\t\tconst day = originalDate.getDate();\n\t\t\t\t\t\t\tconst year = originalDate.getFullYear();\n\n\t\t\t\t\t\t\t\/\/ Dynamically set the locale based on the site language\n\t\t\t\t\t\t\tconst localeCode = isFrenchSite ? 'fr-FR' : 'en-GB';\n\t\t\t\t\t\t\tconst month = originalDate.toLocaleDateString(localeCode, {\n\t\t\t\t\t\t\t\tmonth: 'long'\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst dayFormatted = getDayFormatted(day);\n\n\t\t\t\t\t\t\tconst formattedDate = `${dayFormatted} ${month} ${year}`;\n\t\t\t\t\t\t\toptions += `<option value=\"${date}\">${formattedDate}<\/option>`;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t$('#arrival-date').html(options);\n\n\t\t\t\t\t\t\/\/ AUTO-SELECT arrival-date if parameter exists in URL\n\t\t\t\t\t\tif (urlStartDate && durationsByDate[urlStartDate]) {\n\t\t\t\t\t\t\t$('#arrival-date').val(urlStartDate);\n\t\t\t\t\t\t\t$('#arrival-date').trigger('change'); \/\/ Trigger change to populate duration dropdown\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\/\/ Get references to all the elements\n\t\t\t\t\t\tconst arrivalDateSelect = document.getElementById('arrival-date');\n\t\t\t\t\t\tconst durationSelect = document.getElementById('duration');\n\t\t\t\t\t\tconst bookingLink = document.querySelector('.js-start-booking');\n\n\t\t\t\t\t\t\/\/ Function to update the booking link's href\n\t\t\t\t\t\tconst updateBookingLink = () => {\n\t\t\t\t\t\t\t\/\/ Get the selected values\n\t\t\t\t\t\t\tconst arrivalDate = arrivalDateSelect.value;\n\t\t\t\t\t\t\tconst duration = durationSelect.value;\n\n\t\t\t\t\t\t\t\/\/ Get the base URL, removing any existing query strings\n\t\t\t\t\t\t\tconst baseUrl = bookingLink.href.split('?')[0];\n\t\t\t\t\t\t\tlet queryString = '';\n\n\t\t\t\t\t\t\t\/\/ Build the query string with both parameters if they are selected\n\t\t\t\t\t\t\tif (arrivalDate && duration) {\n\t\t\t\t\t\t\t\tqueryString = `?arrival_data=${arrivalDate}&duration=${duration}`;\n\t\t\t\t\t\t\t} else if (arrivalDate) {\n\t\t\t\t\t\t\t\tqueryString = `?arrival_data=${arrivalDate}`;\n\t\t\t\t\t\t\t} else if (duration) {\n\t\t\t\t\t\t\t\tqueryString = `?duration=${duration}`;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\/\/ Update the link's href\n\t\t\t\t\t\t\tbookingLink.href = baseUrl + queryString;\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\/\/ Add event listeners to both select elements\n\t\t\t\t\t\tif (arrivalDateSelect) {\n\t\t\t\t\t\t\tarrivalDateSelect.addEventListener('change', updateBookingLink);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (durationSelect) {\n\t\t\t\t\t\t\tdurationSelect.addEventListener('change', () => {\n\t\t\t\t\t\t\t\tupdateBookingLink();\n\t\t\t\t\t\t\t\tupdateButtonState();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tupdateButtonState();\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('#arrival-date').html('<option>No dates found<\/option>');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function(xhr, status, error) {\n\t\t\t\t\tconsole.error('AJAX Error:', status, error);\n\t\t\t\t\t$('.field-date').hide();\n\t\t\t\t\t$('.field-duration').hide();\n\t\t\t\t\t$('.js-start-booking').removeClass('inactive');\n\t\t\t\t\t$('#arrival-date').html('<option>No dates to select<\/option>');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('#arrival-date').change(function() {\n\t\t\t\tconst selectedDate = $(this).val();\n\t\t\t\t$('#duration').html('<option>Loading...<\/option>');\n\n\t\t\t\tif (selectedDate && durationsByDate[selectedDate]) {\n\t\t\t\t\tconst durations = durationsByDate[selectedDate];\n\t\t\t\t\tlet options = '<option value=\"\">Select a duration<\/option>';\n\n\t\t\t\t\tdurations.forEach(function(duration) {\n\t\t\t\t\t\toptions += `<option value=\"${duration}\">${duration} nights<\/option>`;\n\t\t\t\t\t});\n\n\t\t\t\t\t$('#duration').html(options);\n\n\t\t\t\t\tif (urlDuration && durations.includes(urlDuration)) { \/\/ Check if the URL duration exists in the array\n\t\t\t\t\t\t$('#duration').val(parseInt(urlDuration));\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t$('#duration').html('<option>No durations found<\/option>');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t\/\/ Change guest number values\n\t\t\t$('.guests-counter-button').on('click', function() {\n\t\t\t\tlet $counterValue = $(this).siblings('.guests-counter-value');\n\t\t\t\tlet currentValue = parseInt($counterValue.text());\n\t\t\t\tlet action = $(this).data('action');\n\n\t\t\t\tif (action === 'increase') {\n\t\t\t\t\tcurrentValue++;\n\t\t\t\t} else if (action === 'decrease' && currentValue > 1) {\n\t\t\t\t\tcurrentValue--;\n\t\t\t\t}\n\n\t\t\t\t$counterValue.text(currentValue);\n\n\t\t\t\tsessionStorage.setItem('number_of_guests', currentValue);\n\t\t\t});\n\n\t\t\t\/\/ =========================================================\n\t\t\t\/\/ INTERCEPT JOURNEY IF CUSTOM POPUP MESSAGE EXISTS\n\t\t\t\/\/ =========================================================\n\t\t\tlet pendingBookingUrl = '';\n\n\t\t\t$(document).on('click', '.js-start-booking', function(e) {\n\t\t\t\tconst $this = $(this);\n\n\t\t\t\t\/\/ Fallback check to avoid popping up if fields are unselected\n\t\t\t\tif ($this.hasClass('inactive')) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet finalGuestCount = parseInt($('.guests-counter-value').text()) || 1;\n                sessionStorage.setItem('number_of_guests', finalGuestCount);\n\n\t\t\t\tif (customPreBookingMessage) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tlet targetUrl = $this.attr('href');\n\t\t\t\t\tif (targetUrl) {\n\t\t\t\t\t\tpendingBookingUrl = targetUrl.replace(\/&amp;\/g, '&');\n\n\t\t\t\t\t\t\/\/ Show our custom native modal\n\t\t\t\t\t\t$('#custom-pre-booking-modal').fadeIn(200);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(\"Booking URL is empty or missing.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t\/\/ Handle the Cancel Button & Overlay Click\n\t\t\t$(document).on('click', '.js-close-booking-modal, .booking-message-modal-overlay', function(e) {\n\t\t\t\t\/\/ Ensures clicking the text *inside* the white box doesn't accidentally close the modal\n\t\t\t\tif (e.target === this) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$('#custom-pre-booking-modal').fadeOut(200);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t\/\/ Handle the Confirm Button\n\t\t\t$(document).on('click', '.js-confirm-booking-modal', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (pendingBookingUrl) {\n\t\t\t\t\t\/\/ Give visual feedback and execute a synchronous, unblocked redirect\n\t\t\t\t\t$(this).addClass('disabled');\n\t\t\t\t\twindow.location.href = pendingBookingUrl;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t<\/script>\n\n\n\t<div class=\"page-popup--wrapper hide get-alert-popup--wrapper\">\n\t\t<div class=\"page-popup content\">\n\t\t\t<div class=\"page-popup__close\">\n\t\t\t\t<a class=\"close-popup\">&times;<\/a>\n\t\t\t<\/div>\n\t\t\t<div class=\"page-popup__content\">\n\t\t\t\t<div class=\"form--container\">\n\t\t\t\t\t<div class=\"sti-logo\"><\/div>\n\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"h4\">\n\t\t\t\t\t\t\t\tGet alerts for Mallorca 312\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p><\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div id=\"waiting-form\" class=\"waiting-form-cycling\">\n\t\t\t\t\t\t\t\t\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f4078-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"4078\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/api\/wp\/v2\/events\/1432#wpcf7-f4078-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"4078\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.4\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f4078-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div class=\"form-field--group\">\n<div class=\"form-field floating-label floating-label--blue\">\n<label>First Name<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"first-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"First Name\" value=\"\" type=\"text\" name=\"first-name\" \/><\/span>\n<\/div>\n\n<div class=\"form-field floating-label floating-label--blue\">\n<label>Last Name <\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"last-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Last Name\" value=\"\" type=\"text\" name=\"last-name\" \/><\/span>\n<\/div>\n<div class=\"form-field floating-label floating-label--blue\">\n  <label>Email<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Email Address\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n<\/div>\n\n\n<div class=\"opt-in\"><div class=\"wpcf7-form-control-wrap\"><span class=\"wpcf7-list-item-label\">\nBy signing up to our event notification lists, you will receive marketing communications and updates about future Sports Tours events. Rest assured, you can unsubscribe at any time by using the link located in the footer of our emails.<\/span>\n<\/div><\/div>\n\n\n\n<div class=\"hidden\">\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"list\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text list\" id=\"list\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"list\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"event\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required event\" id=\"event\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"event\" \/><\/span>\n<\/div>\n<div class=\"form-field btn-form-field\">\n<button class=\"wpcf7-submit btn \" type=\"submit\">\n   <span>Submit<\/span>\n   <span class=\"icon\"><\/span>\n<\/button>\n<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"page-popup__image\">\n\t\t\t\t\t<img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2025\/05\/@the.adventure.bakery_DSC3573-scaled.jpg.webp\" alt=\"Mallorca312 race day along the Mediterranean\"><noscript><img decoding=\"async\" class=\"lazyload\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-scaled.jpg\" alt=\"Mallorca312 race day along the Mediterranean\"><\/noscript>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"page-popup--wrapper hide join-cancellation-popup--wrapper\">\n\t\t<div class=\"page-popup content\">\n\t\t\t<div class=\"page-popup__close\">\n\t\t\t\t<a class=\"close-popup\">&times;<\/a>\n\t\t\t<\/div>\n\t\t\t<div class=\"page-popup__content\">\n\t\t\t\t<div class=\"form--container\">\n\t\t\t\t\t<div class=\"sti-logo\"><\/div>\n\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"h4\">\n\t\t\t\t\t\t\t\tJoin cancellation list for Mallorca 312\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p><\/p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div id=\"cancellation-form\" class=\"cancellation-form-cycling\">\n\t\t\t\t\t\t\t\t\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f70651-o2\" lang=\"en-GB\" dir=\"ltr\" data-wpcf7-id=\"70651\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/api\/wp\/v2\/events\/1432#wpcf7-f70651-o2\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"70651\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.4\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_GB\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f70651-o2\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div class=\"form-field--group\">\n<div class=\"form-field floating-label floating-label--blue\">\n<label>First Name<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"first-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"First Name\" value=\"\" type=\"text\" name=\"first-name\" \/><\/span>\n<\/div>\n\n<div class=\"form-field floating-label floating-label--blue\">\n<label>Last Name <\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"last-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Last Name\" value=\"\" type=\"text\" name=\"last-name\" \/><\/span>\n<\/div>\n<div class=\"form-field floating-label floating-label--blue\">\n  <label>Email<\/label>\n  <span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Email Address\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n<\/div>\n\n\n\n\n\n\n<div class=\"hidden\">\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"list\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text cancellation-list\" id=\"cancellation-list\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"list\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"event\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required cancel-event\" id=\"cancel-event\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"event\" \/><\/span>\n<\/div>\n<div class=\"form-field btn-form-field\">\n<button class=\"wpcf7-submit btn \" type=\"submit\">\n   <span>Submit<\/span>\n   <span class=\"icon\"><\/span>\n<\/button>\n<\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"page-popup__image\">\n\t\t\t\t\t<img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/sportstoursinternational.co.uk\/app\/smush-webp\/2025\/05\/@the.adventure.bakery_DSC3573-scaled.jpg.webp\" alt=\"Mallorca312 race day along the Mediterranean\"><noscript><img decoding=\"async\" class=\"lazyload\" src=\"https:\/\/sportstoursinternational.co.uk\/app\/uploads\/2025\/05\/@the.adventure.bakery_DSC3573-scaled.jpg\" alt=\"Mallorca312 race day along the Mediterranean\"><\/noscript>\n\t\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"featured_media":65964,"template":"","event_category":[115,181],"event_location":[122],"class_list":["post-1432","events","type-events","status-publish","has-post-thumbnail","hentry","event_category-cycling","event_category-sportives","event_location-spain"],"acf":[],"_links":{"self":[{"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/events\/1432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/events"}],"about":[{"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/types\/events"}],"version-history":[{"count":39,"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/events\/1432\/revisions"}],"predecessor-version":[{"id":112607,"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/events\/1432\/revisions\/112607"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/media\/65964"}],"wp:attachment":[{"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/media?parent=1432"}],"wp:term":[{"taxonomy":"event_category","embeddable":true,"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/event_category?post=1432"},{"taxonomy":"event_location","embeddable":true,"href":"https:\/\/sportstoursinternational.co.uk\/api\/wp\/v2\/event_location?post=1432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}