{"id":2783,"date":"2024-04-19T12:18:44","date_gmt":"2024-04-19T11:18:44","guid":{"rendered":"https:\/\/devsite.x-cube.nl\/belgie\/"},"modified":"2025-03-28T14:19:06","modified_gmt":"2025-03-28T13:19:06","slug":"belgium","status":"publish","type":"page","link":"https:\/\/devsite.x-cube.nl\/nl\/belgium\/","title":{"rendered":"Belgi\u00eb"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background fusion-parallax-none nonhundred-percent-fullwidth non-hundred-percent-height-scrolling lazyload\" style=\"--awb-background-position:left top;--awb-background-repeat:repeat;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:2%;--awb-padding-bottom:101px;--awb-padding-top-small:66px;--awb-margin-top:0px;--awb-background-color:#ffffff;--awb-background-size:500px;--awb-flex-wrap:wrap;\" data-bg=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/bg-white-xube.png\" id=\"locations\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-padding-top:37px;--awb-padding-bottom:0px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-text-color:var(--awb-color4);--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:48;line-height:var(--awb-typography1-line-height);\">KIES JOUW LOCATIE<\/h2><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-padding-bottom:0px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- Include Mapbox GL CSS -->\r\n<link href=\"https:\/\/api.mapbox.com\/mapbox-gl-js\/v3.2.0\/mapbox-gl.css\" rel=\"stylesheet\">\r\n\r\n<!-- Include Mapbox GL JS -->\r\n<script src=\"https:\/\/api.mapbox.com\/mapbox-gl-js\/v3.2.0\/mapbox-gl.js\"><\/script>\r\n\r\n<!-- Include Mapbox GL Geocoder CSS -->\r\n<script src=\"https:\/\/api.mapbox.com\/mapbox-gl-js\/plugins\/mapbox-gl-geocoder\/v5.0.0\/mapbox-gl-geocoder.min.js\"><\/script>\r\n<link rel=\"stylesheet\"\r\n    href=\"https:\/\/api.mapbox.com\/mapbox-gl-js\/plugins\/mapbox-gl-geocoder\/v5.0.0\/mapbox-gl-geocoder.css\" type=\"text\/css\">\r\n\r\n<!-- Preconnect to Google Fonts -->\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap\"\r\n    rel=\"stylesheet\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<style>\r\n    body {\r\n        margin: 0px;\r\n        padding: 0px;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-optical-sizing: auto;\r\n        font-weight: normal;\r\n        font-style: normal;\r\n    }\r\n\r\n    .map-wrapper {\r\n        max-width: 100%;\r\n        width: 100%;\r\n        margin: 0 auto;\r\n    }\r\n\r\n    .map-wrapper_inner {\r\n        width: 100%;\r\n        display: flex;\r\n        flex-direction: column;\r\n        align-items: center;\r\n        position: relative;\r\n    }\r\n\r\n    .aside-section {\r\n        position: absolute;\r\n        left: 0px;\r\n        width: 40%;\r\n        height: auto;\r\n        max-height: 100%;\r\n        margin: 10px;\r\n        z-index: 2;\r\n        box-shadow: 0px 0px 0.25rem #4f4444;\r\n        border-radius: 0.25rem;\r\n        background-color: #fff;\r\n        overflow: hidden;\r\n    }\r\n\r\n    .geocoder {\r\n        width: 100%;\r\n    }\r\n\r\n    .suggestions-wrapper {\r\n        display: none;\r\n    }\r\n\r\n    .location-list {\r\n        width: 100%;\r\n        overflow-y: auto;\r\n        overflow-x: hidden;\r\n        display: none;\r\n    }\r\n\r\n    .location-list::-webkit-scrollbar {\r\n        width: 8px;\r\n    }\r\n\r\n    .location-list::-webkit-scrollbar-thumb {\r\n        background: #9e9e9e;\r\n        border-radius: 8px;\r\n    }\r\n\r\n    .location-list::-webkit-scrollbar-thumb:hover {\r\n        background: #767676;\r\n    }\r\n\r\n    .location-list.show {\r\n        max-height: 50vh;\r\n        display: block;\r\n    }\r\n\r\n    .location-item {\r\n        transition: 0.25s;\r\n        width: 100%;\r\n        border-bottom: 1px solid #ececec;\r\n        padding: 0.8rem 1rem;\r\n        line-height: 1.5rem;\r\n        color: #221f46;\r\n        font-weight: 600;\r\n        text-transform: capitalize;\r\n        cursor: pointer;\r\n        display: flex;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n        box-sizing: border-box;\r\n    }\r\n\r\n    \/* FIX: keyboard focus style for accessibility *\/\r\n    .location-item:focus {\r\n        outline: 2px solid #4A33C9;\r\n        outline-offset: -2px;\r\n        background-color: #f0eeff;\r\n    }\r\n\r\n    .location-item .location {\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    .location-item:hover {\r\n        background-color: #ececec;\r\n        padding: 0.8rem 1.25rem;\r\n    }\r\n\r\n    .location-item>* {\r\n        pointer-events: none;\r\n    }\r\n\r\n    .location-item h3 {\r\n        color: #4A33C9 !important;\r\n        font-size: 20px !important;\r\n        line-height: 24px !important;\r\n        margin: 0 !important;\r\n    }\r\n\r\n    .location-item p {\r\n        line-height: 18px !important;\r\n        opacity: 0.75 !important;\r\n        margin: 0 !important;\r\n    }\r\n\r\n    #map {\r\n        width: 100%;\r\n        height: 70vh;\r\n        font-family: \"Montserrat\", sans-serif;\r\n    }\r\n\r\n    .div-marker {\r\n        cursor: pointer;\r\n    }\r\n\r\n    .div-marker.active svg #path-fill {\r\n        fill: #4A33C9;\r\n    }\r\n\r\n    .div-marker>* {\r\n        pointer-events: none;\r\n    }\r\n\r\n    .mapboxgl-ctrl-geocoder {\r\n        min-width: 100%;\r\n    }\r\n\r\n    .mapboxgl-ctrl-geocoder--icon-search {\r\n        display: none !important;\r\n    }\r\n\r\n    .mapboxgl-ctrl-geocoder--input {\r\n        background-color: #F7F7F7 !important;\r\n    }\r\n\r\n    .mapboxgl-popup-content {\r\n        border-width: 0px;\r\n        color: rgb(53 0 85);\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-size: .875rem;\r\n        line-height: 1.25rem;\r\n        padding: 0;\r\n        height: auto;\r\n        width: fit-content;\r\n        max-width: 20rem;\r\n    }\r\n\r\n    .mapboxgl-popup-close-button {\r\n        padding-top: 0.25rem;\r\n        padding-left: 0.375rem;\r\n        padding-right: 0.375rem;\r\n        font-size: 1.75rem;\r\n    }\r\n\r\n    .mapboxgl-popup-content h2 {\r\n        padding-right: 1rem;\r\n        font-style: italic;\r\n        font-weight: 900;\r\n        font-size: 1.125rem;\r\n        line-height: 1.75rem;\r\n        margin: 0;\r\n    }\r\n\r\n    .mapboxgl-popup-content .popup-content {\r\n        padding: 1rem;\r\n    }\r\n\r\n    .mapboxgl-popup-content .popup-content > div {\r\n        margin-bottom: 0.5rem;\r\n    }\r\n\r\n    \/* FIX: simplified popup button \u2014 no broken glow variables, clean solid style *\/\r\n    .mapboxgl-popup-content a {\r\n        text-decoration: none;\r\n        display: block;\r\n        margin-top: 0.75rem;\r\n    }\r\n\r\n    .mapboxgl-popup-content .btn--pink {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n        background-color: #4A33C9;\r\n        color: #fff;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-weight: 700;\r\n        font-size: 0.875rem;\r\n        letter-spacing: 0.05em;\r\n        text-transform: uppercase;\r\n        padding: 0.75rem 1.5rem;\r\n        border-radius: 4px;\r\n        transition: background-color 0.2s ease;\r\n    }\r\n\r\n    .mapboxgl-popup-content .btn--pink:hover {\r\n        background-color: #3826a8;\r\n    }\r\n\r\n    \/* FIX: distance badge in popup *\/\r\n    .popup-distance {\r\n        display: inline-block;\r\n        font-size: 0.75rem;\r\n        font-weight: 500;\r\n        font-style: normal;\r\n        color: #888;\r\n        margin-left: 0.4rem;\r\n    }\r\n\r\n    .header-section {\r\n        display: flex;\r\n        padding: 5px;\r\n    }\r\n\r\n    .toggle-btn {\r\n        background-color: rgb(236, 236, 236);\r\n        border: none;\r\n        margin-right: 0.25rem;\r\n        cursor: pointer;\r\n        font-size: 18px;\r\n        border-radius: 2px;\r\n        padding: 0.25rem;\r\n        width: 36px;\r\n    }\r\n\r\n    @media only screen and (max-width: 700px) {\r\n        .map-wrapper {\r\n            width: 100%;\r\n            max-width: 100%;\r\n        }\r\n\r\n        .aside-section {\r\n            width: 90% !important;\r\n            max-width: 90%;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div class=\"map-wrapper\">\r\n    <div class=\"map-wrapper_inner\">\r\n        <div class=\"aside-section\">\r\n            <div class=\"header-section\">\r\n                <!-- FIX: aria-label for accessibility -->\r\n                <button class=\"btn toggle-btn\" id=\"toggle-btn\" aria-label=\"Toggle location list\">&#9776;<\/button>\r\n                <div id=\"geocoder\" class=\"geocoder\"><\/div>\r\n            <\/div>\r\n            <div class=\"location-list\" role=\"list\" aria-label=\"Locations\"><\/div>\r\n        <\/div>\r\n        <div id=\"map\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.4.1\/papaparse.min.js\"\r\n    integrity=\"sha512-dfX5uYVXzyU8+KHqj8bjo7UkOdg18PaOtpa48djpNbZHwExddghZ+ZmzWT06R5v6NSk3ZUfsH6FNEDepLx9hPQ==\"\r\n    crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"><\/script>\r\n\r\n<script>\r\n    mapboxgl.accessToken = 'pk.eyJ1IjoieGN1YmV0ZWNoIiwiYSI6ImNsazB4aG85bTAwNWkzaW92cW4xejhkaHkifQ.Mr8oNwtF_lxKf9RWSrPDiA';\r\n\r\n    const map = new mapboxgl.Map({\r\n        container: 'map',\r\n        style: 'mapbox:\/\/styles\/xcubetech\/cltb7lzhi000401qp6air6qie',\r\n        center: { lng: 5.2913, lat: 52.1326 },\r\n        zoom: 7\r\n    });\r\n\r\n    \/\/ FIX: hoisted to a constant \u2014 evaluated once, not on every click\r\n    const isMobile = (function () {\r\n        let check = false;\r\n        (function (a) { if (\/(android|bb\\d+|meego).+mobile|avantgo|bada\\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino\/i.test(a) || \/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-\/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor || window.opera);\r\n        return check;\r\n    })();\r\n\r\n    const svgIcons = `\r\n        <svg display=\"block\" height=\"41px\" width=\"27px\" viewBox=\"0 0 27 41\" role=\"img\" aria-label=\"Location marker\">\r\n            <defs>\r\n                <radialGradient id=\"shadowGradient\">\r\n                    <stop offset=\"10%\" stop-opacity=\"0.4\"><\/stop>\r\n                    <stop offset=\"100%\" stop-opacity=\"0.05\"><\/stop>\r\n                <\/radialGradient>\r\n            <\/defs>\r\n            <ellipse cx=\"13.5\" cy=\"34.8\" rx=\"10.5\" ry=\"5.25\" fill=\"url(#shadowGradient)\"><\/ellipse>\r\n            <path id=\"path-fill\" fill=\"#221f46\" d=\"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z\"><\/path>\r\n            <path opacity=\"0.25\" d=\"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z\"><\/path>\r\n            <circle fill=\"white\" cx=\"13.5\" cy=\"13.5\" r=\"5.5\"><\/circle>\r\n        <\/svg>\r\n    `;\r\n\r\n    function getLanguageCode() {\r\n        const match = window.location.pathname.match(\/\\\/([a-z]{2})\\\/\/i);\r\n        return match ? match[1].toUpperCase() : null;\r\n    }\r\n\r\n    const langCode = getLanguageCode();\r\n\r\n    function ensureAbsoluteURL(url) {\r\n        if (!url) return url;\r\n        return url.match(\/^https?:\\\/\\\/\/i) ? url : `https:\/\/${url}`;\r\n    }\r\n\r\n    function getBookingLink(entry) {\r\n        const localKey = langCode ? `Booking Link ${langCode}` : null;\r\n        const link = (localKey && entry[localKey]) ? entry[localKey] : entry['Booking Link'];\r\n        return ensureAbsoluteURL(link);\r\n    }\r\n\r\n    \/\/ FIX: compute distance in km between two lat\/lng points (Haversine formula)\r\n    function getDistanceKm(lat1, lng1, lat2, lng2) {\r\n        const R = 6371;\r\n        const dLat = (lat2 - lat1) * Math.PI \/ 180;\r\n        const dLng = (lng2 - lng1) * Math.PI \/ 180;\r\n        const a = Math.sin(dLat \/ 2) ** 2 +\r\n            Math.cos(lat1 * Math.PI \/ 180) * Math.cos(lat2 * Math.PI \/ 180) *\r\n            Math.sin(dLng \/ 2) ** 2;\r\n        return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n    }\r\n\r\n    \/\/ FIX: request the user's location once and cache it\r\n    let userCoords = null;\r\n    if (navigator.geolocation) {\r\n        navigator.geolocation.getCurrentPosition(pos => {\r\n            userCoords = { lat: pos.coords.latitude, lng: pos.coords.longitude };\r\n        });\r\n    }\r\n\r\n    var activeMarkerEl, activePopup;\r\n    \/\/ FIX: always initialised as array so .forEach never throws\r\n    var locationsMarkers = [];\r\n    var locations = [];\r\n\r\n    \/\/ FIX: track sidebar open state independently so search doesn't force it open\r\n    var sidebarOpen = false;\r\n\r\n    function forwardGeocoder(query) {\r\n        const matchingFeatures = [];\r\n        for (const feature of locations) {\r\n            if (feature.Name.toLowerCase().includes(query.toLowerCase())) {\r\n                matchingFeatures.push({\r\n                    text: feature.Name,\r\n                    place_name: `${feature.Name}, x-cube-location`,\r\n                    center: [parseFloat(feature.Longitude), parseFloat(feature.Latitude)],\r\n                    place_type: ['park'],\r\n                    location_type: 'x-cube-location'\r\n                });\r\n            }\r\n        }\r\n        return matchingFeatures;\r\n    }\r\n\r\n    const geocoder = new MapboxGeocoder({\r\n        accessToken: mapboxgl.accessToken,\r\n        mapboxgl: mapboxgl,\r\n        marker: false,\r\n        localGeocoder: forwardGeocoder\r\n    });\r\n\r\n    document.getElementById('geocoder').appendChild(geocoder.onAdd(map));\r\n\r\n    map.on(\"load\", () => {\r\n        getLocations();\r\n\r\n        document.getElementById(\"toggle-btn\").onclick = () => {\r\n            sidebarOpen = !sidebarOpen;\r\n            document.querySelector(\".location-list\").classList.toggle(\"show\", sidebarOpen);\r\n        };\r\n    });\r\n\r\n    function getTopDomain() {\r\n        const parts = window.location.hostname.split('.');\r\n        return parts[parts.length - 1];\r\n    }\r\n\r\n    function getPageURL() {\r\n        const parts = window.location.pathname.split('\/').filter(Boolean);\r\n        return parts[parts.length - 1];\r\n    }\r\n\r\n    function getLocations() {\r\n        Papa.parse(\"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vQd73rANFQawO5P82Rkk1SngvwJ2STRBri_aWCD7WRlYNhVhH-QCVRknwLa2mGQJKGhSbXActYpMIQx\/pub?gid=0&single=true&output=csv\", {\r\n            header: true,\r\n            download: true,\r\n            complete: function ({ data }) {\r\n                locations = [...data.filter(entry => entry.Latitude)];\r\n                const topDomain = getTopDomain();\r\n                const pageURL = getPageURL();\r\n\r\n                locations.sort((a, b) => {\r\n                    if (a.WebCode === topDomain) return -1;\r\n                    if (b.WebCode === topDomain) return 1;\r\n                    return 0;\r\n                });\r\n\r\n                if (pageURL !== \"locations\") {\r\n                    locations.sort((a, b) => {\r\n                        if (a.Country.toLowerCase() === pageURL) return -1;\r\n                        if (b.Country.toLowerCase() === pageURL) return 1;\r\n                        return 0;\r\n                    });\r\n                }\r\n\r\n                \/\/ FIX: added easing and padding to initial flyTo\r\n                map.flyTo({\r\n                    center: [parseFloat(locations[0].FocusLon), parseFloat(locations[0].FocusLat)],\r\n                    zoom: locations[0].FocusZoom,\r\n                    speed: 1.2,\r\n                    curve: 1.4,\r\n                    easing: t => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t\r\n                });\r\n\r\n                renderMarkers(locations);\r\n                renderLocationList(locations);\r\n            }\r\n        });\r\n    }\r\n\r\n    function searchLocation(term) {\r\n        const filteredLocations = locations.filter(location =>\r\n            location.Name.toLowerCase().includes(term.toLowerCase()) ||\r\n            location.Country.toLowerCase().includes(term.toLowerCase()) ||\r\n            location.WebCode.toLowerCase().includes(term.toLowerCase()) ||\r\n            location.City.toLowerCase().includes(term.toLowerCase()) ||\r\n            location.Address.toLowerCase().includes(term.toLowerCase())\r\n        );\r\n        renderMarkers(filteredLocations);\r\n        renderLocationList(filteredLocations);\r\n    }\r\n\r\n    document.querySelector('.mapboxgl-ctrl-geocoder--input').addEventListener(\"input\", (e) => {\r\n        \/\/ FIX: only open the sidebar if the user has explicitly opened it before or is actively typing\r\n        if (e.target.value.length > 0 && sidebarOpen) {\r\n            document.querySelector('.location-list').classList.add('show');\r\n        } else if (e.target.value.length > 0) {\r\n            sidebarOpen = true;\r\n            document.querySelector('.location-list').classList.add('show');\r\n        }\r\n        searchLocation(e.target.value);\r\n    });\r\n\r\n    document.querySelector('.mapboxgl-ctrl-geocoder--button').addEventListener(\"click\", () => {\r\n        searchLocation(\"\");\r\n    });\r\n\r\n    function renderLocationList(items) {\r\n        const itemsContainer = document.querySelector(\".location-list\");\r\n        if (!itemsContainer) return;\r\n\r\n        const locationItems = items\r\n            .filter(entry => !entry.Name.includes('Display') && getBookingLink(entry))\r\n            .map(entry => `\r\n                <div class=\"location-item\" role=\"listitem\" tabindex=\"0\" data-name=\"${entry.Name}\" aria-label=\"${entry.Name}, ${entry.City}, ${entry.Country}\">\r\n                    <div class=\"location\">\r\n                        <h3>${entry.Name}<\/h3>\r\n                        <p>${entry.City}, ${entry.Country}<\/p>\r\n                    <\/div>\r\n                    <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2724%27%20height%3D%2716%27%20viewBox%3D%270%200%2024%2016%27%3E%3Crect%20width%3D%2724%27%20height%3D%2716%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/x-cube.nl\/wp-content\/plugins\/sitepress-multilingual-cms\/res\/flags\/${entry.CountryCode.toLowerCase()}.svg\" alt=\"${entry.Country} flag\" width=\"24\" height=\"16\">\r\n                <\/div>\r\n            `)\r\n            .join(\"\");\r\n\r\n        itemsContainer.innerHTML = locationItems;\r\n        fireClickListener();\r\n    }\r\n\r\n    function fireClickListener() {\r\n        document.querySelectorAll(\".location-item\").forEach(item => {\r\n            const name = item.getAttribute('data-name');\r\n\r\n            item.onclick = () => {\r\n                toggleMarkerByName(name);\r\n                if (isMobile) {\r\n                    sidebarOpen = false;\r\n                    document.querySelector(\".location-list\").classList.remove(\"show\");\r\n                }\r\n            };\r\n\r\n            \/\/ FIX: keyboard navigation \u2014 Enter and Space activate the item\r\n            item.onkeydown = (e) => {\r\n                if (e.key === 'Enter' || e.key === ' ') {\r\n                    e.preventDefault();\r\n                    toggleMarkerByName(name);\r\n                    if (isMobile) {\r\n                        sidebarOpen = false;\r\n                        document.querySelector(\".location-list\").classList.remove(\"show\");\r\n                    }\r\n                }\r\n                \/\/ Arrow key navigation through the list\r\n                if (e.key === 'ArrowDown') {\r\n                    e.preventDefault();\r\n                    const next = item.nextElementSibling;\r\n                    if (next) next.focus();\r\n                }\r\n                if (e.key === 'ArrowUp') {\r\n                    e.preventDefault();\r\n                    const prev = item.previousElementSibling;\r\n                    if (prev) prev.focus();\r\n                }\r\n            };\r\n        });\r\n    }\r\n\r\n    function toggleMarkerByName(name) {\r\n        const location = locations.find(entry => entry.Name === name);\r\n        if (!location) return;\r\n\r\n        locationsMarkers.forEach(marker => {\r\n            if (marker.title === name) {\r\n                const popup = marker.getPopup();\r\n                if (activePopup) activePopup.remove();\r\n                marker.togglePopup();\r\n                activeMarkerEl = marker.getElement();\r\n                activeMarkerEl.classList.add(\"active\");\r\n                activePopup = popup;\r\n\r\n                \/\/ FIX: smoother flyTo with easing and padding so popup isn't clipped\r\n                map.flyTo({\r\n                    center: [parseFloat(location.Longitude), parseFloat(location.Latitude)],\r\n                    zoom: 14,\r\n                    speed: 1.4,\r\n                    curve: 1.4,\r\n                    padding: { top: 60, bottom: 60, left: 320, right: 60 },\r\n                    easing: t => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    \/\/ FIX: remove old markers before creating new ones \u2014 prevents accumulation on every search\r\n    function renderMarkers(cities) {\r\n        locationsMarkers.forEach(marker => marker.remove());\r\n\r\n        locationsMarkers = cities\r\n            .filter(city => getBookingLink(city))\r\n            .map((city, i) => createMarker(city, i));\r\n    }\r\n\r\n    function createMarker(entry, i) {\r\n        const markerEl = document.createElement(\"div\");\r\n        markerEl.classList.add(\"div-marker\");\r\n        \/\/ FIX: accessible label on the marker element itself\r\n        markerEl.setAttribute(\"aria-label\", entry.Name);\r\n        markerEl.innerHTML += svgIcons;\r\n\r\n        const popup = createPopup(entry);\r\n        const marker = new mapboxgl.Marker({ element: markerEl });\r\n        marker.setLngLat([parseFloat(entry.Longitude), parseFloat(entry.Latitude)])\r\n              .setPopup(popup)\r\n              .addTo(map);\r\n        marker.title = entry.Name;\r\n\r\n        \/\/ FIX: null-guard prevents crash on first popup close\r\n        popup.on(\"close\", () => {\r\n            if (activeMarkerEl) {\r\n                activeMarkerEl.classList.remove(\"active\");\r\n            }\r\n        });\r\n\r\n        markerEl.addEventListener(\"click\", (e) => {\r\n            e.stopPropagation();\r\n            if (activeMarkerEl && activeMarkerEl !== e.currentTarget) {\r\n                activeMarkerEl.classList.remove(\"active\");\r\n                if (activePopup) activePopup.remove();\r\n            }\r\n            markerEl.classList.add(\"active\");\r\n            marker.togglePopup();\r\n            activeMarkerEl = markerEl;\r\n            activePopup = popup;\r\n        });\r\n\r\n        return marker;\r\n    }\r\n\r\n    function createPopup(entry) {\r\n        \/\/ FIX: compute and display distance from user if geolocation was granted\r\n        let distanceLabel = '';\r\n        if (userCoords) {\r\n            const km = getDistanceKm(\r\n                userCoords.lat, userCoords.lng,\r\n                parseFloat(entry.Latitude), parseFloat(entry.Longitude)\r\n            );\r\n            distanceLabel = km < 1000\r\n                ? `${Math.round(km)} km away`\r\n                : `${(km \/ 1000).toFixed(1)}k km away`;\r\n        }\r\n\r\n        const popupContent = `\r\n            <div class=\"popup-content\">\r\n                <h2>${entry.Name}${distanceLabel ? `<span class=\"popup-distance\">${distanceLabel}<\/span>` : ''}<\/h2>\r\n                <div>${entry.City}, ${entry.Country}<\/div>\r\n                <a href=\"${getBookingLink(entry)}\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n                    <div class=\"btn--pink\">FIND OUT MORE<\/div>\r\n                <\/a>\r\n            <\/div>\r\n        `;\r\n\r\n        return new mapboxgl.Popup({ focusAfterOpen: false, offset: [0, -10] }).setHTML(popupContent);\r\n    }\r\n<\/script><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-column-inner-bg-wrapper\" style=\"--awb-padding-bottom:12px;--awb-padding-top-small:0px;--awb-padding-bottom-small:12px;--awb-inner-bg-color:rgba(249,249,249,0);--awb-inner-bg-color-hover:rgba(249,249,249,0);--awb-inner-bg-size:cover;--awb-border-color:var(--awb-color2);--awb-border-style:dotted;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/booking.antwerpamusementcenter.be\/programmas\/gr-beleef-de-x-cube\" rel=\"noopener noreferrer nofollow\" target=\"_blank\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-row fusion-content-nowrap\"><div class=\"fusion-builder-row fusion-builder-row-inner fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"--awb-flex-grow:0;--awb-flex-grow-medium:0;--awb-flex-grow-small:0;--awb-flex-shrink:0;--awb-flex-shrink-medium:0;--awb-flex-shrink-small:0;width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-0 fusion_builder_column_inner_1_4 1_4 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:25%;--awb-margin-top-large:0px;--awb-spacing-right-large:7.68%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:7.68%;--awb-width-medium:25%;--awb-order-medium:0;--awb-spacing-right-medium:7.68%;--awb-spacing-left-medium:7.68%;--awb-width-small:25%;--awb-order-small:0;--awb-spacing-right-small:7.68%;--awb-spacing-left-small:7.68%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element \" style=\"text-align:left;--awb-max-width:75px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"225\" height=\"225\" title=\"download-removebg-preview\" src=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/03\/download-removebg-preview-1.png\" data-orig-src=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/03\/download-removebg-preview-1.png\" alt class=\"lazyload img-responsive wp-image-2341\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27225%27%20height%3D%27225%27%20viewBox%3D%270%200%20225%20225%27%3E%3Crect%20width%3D%27225%27%20height%3D%27225%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/03\/download-removebg-preview-1-200x200.png 200w, https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/03\/download-removebg-preview-1.png 225w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 225px\" \/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-1 fusion_builder_column_inner_3_4 3_4 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:75%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.56%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:2.56%;--awb-width-medium:75%;--awb-order-medium:0;--awb-spacing-right-medium:2.56%;--awb-spacing-left-medium:2.56%;--awb-width-small:75%;--awb-order-small:0;--awb-spacing-right-small:2.56%;--awb-spacing-left-small:2.56%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1 fusion-text-no-margin\" style=\"--awb-font-size:14px;--awb-letter-spacing:1px;--awb-text-transform:uppercase;--awb-text-color:var(--awb-color2);--awb-margin-top:0px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Amusement Center<\/p>\n<\/div><div class=\"fusion-text fusion-text-2 fusion-text-no-margin\" style=\"--awb-font-size:17px;--awb-letter-spacing:1px;--awb-text-transform:uppercase;--awb-text-color:var(--awb-color2);--awb-margin-top:-5px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>Antwerpen<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-column-inner-bg-wrapper\" style=\"--awb-padding-bottom:12px;--awb-padding-top-small:0px;--awb-padding-bottom-small:12px;--awb-inner-bg-color:rgba(249,249,249,0);--awb-inner-bg-color-hover:rgba(249,249,249,0);--awb-inner-bg-size:cover;--awb-border-color:var(--awb-color2);--awb-border-style:dotted;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/www.centerparcs.be\/be-vl\/belgie\/fp_TH_vakantiepark-terhills-resort\/alle-activiteiten\" rel=\"noopener noreferrer nofollow\" target=\"_blank\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-row fusion-content-nowrap\"><div class=\"fusion-builder-row fusion-builder-row-inner fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"--awb-flex-grow:0;--awb-flex-grow-medium:0;--awb-flex-grow-small:0;--awb-flex-shrink:0;--awb-flex-shrink-medium:0;--awb-flex-shrink-small:0;width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-2 fusion_builder_column_inner_1_4 1_4 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:25%;--awb-margin-top-large:0px;--awb-spacing-right-large:7.68%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:7.68%;--awb-width-medium:25%;--awb-order-medium:0;--awb-spacing-right-medium:7.68%;--awb-spacing-left-medium:7.68%;--awb-width-small:25%;--awb-order-small:0;--awb-spacing-right-small:7.68%;--awb-spacing-left-small:7.68%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element \" style=\"text-align:left;--awb-max-width:75px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);--awb-filter:invert(20%);--awb-filter-transition:filter 0.3s ease;--awb-filter-hover:invert(0%);\"><span class=\" fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"300\" height=\"200\" title=\"CenterParcsLogo\" src=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/12\/CenterParcsLogo.png\" data-orig-src=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/12\/CenterParcsLogo.png\" alt class=\"lazyload img-responsive wp-image-5687\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27200%27%20viewBox%3D%270%200%20300%20200%27%3E%3Crect%20width%3D%27300%27%20height%3D%27200%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/12\/CenterParcsLogo-200x133.png 200w, https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2024\/12\/CenterParcsLogo.png 300w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 300px\" \/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-3 fusion_builder_column_inner_3_4 3_4 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:75%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.56%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:2.56%;--awb-width-medium:75%;--awb-order-medium:0;--awb-spacing-right-medium:2.56%;--awb-spacing-left-medium:2.56%;--awb-width-small:75%;--awb-order-small:0;--awb-spacing-right-small:2.56%;--awb-spacing-left-small:2.56%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3 fusion-text-no-margin\" style=\"--awb-font-size:14px;--awb-letter-spacing:1px;--awb-text-transform:uppercase;--awb-text-color:var(--awb-color2);--awb-margin-top:0px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Terhills Resort Center Parcs<\/p>\n<\/div><div class=\"fusion-text fusion-text-4 fusion-text-no-margin\" style=\"--awb-font-size:17px;--awb-letter-spacing:1px;--awb-text-transform:uppercase;--awb-text-color:var(--awb-color2);--awb-margin-top:-5px;--awb-margin-right:0px;--awb-margin-bottom:0px;--awb-margin-left:0px;--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>Dislen-Stokkem<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-padding-top:37px;--awb-padding-bottom:0px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-row fusion-flex-align-items-center\"><div style=\"text-align:left;\"><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-1 fusion-button-default-span fusion-button-default-type awb-b-icon-pos-left fusion-has-button-gradient\" style=\"--awb-margin-right:15px;--awb-margin-bottom:10px;--button_accent_color:var(--awb-color7);--button_border_color:var(--awb-color7);--button_accent_hover_color:var(--awb-color7);--button_border_hover_color:var(--awb-color4);--button-border-radius-top-left:30px;--button-border-radius-top-right:30px;--button-border-radius-bottom-right:30px;--button-border-radius-bottom-left:30px;--button_gradient_angle:45deg;--button_gradient_top_color:var(--awb-color4);--button_gradient_bottom_color:var(--awb-color3);--button_gradient:radial-gradient(circle at center center,var(--awb-color4) 0%,var(--awb-color3) 0%);--button_gradient_top_color_hover:hsla(var(--awb-color2-h),calc(var(--awb-color2-s) - 5%),calc(var(--awb-color2-l) - 10%),var(--awb-color2-a));--button_gradient_bottom_color_hover:hsla(var(--awb-color2-h),calc(var(--awb-color2-s) - 5%),calc(var(--awb-color2-l) - 10%),var(--awb-color2-a));--button_text_transform:uppercase;--button_typography-letter-spacing:3px;--button_typography-font-family:&quot;Montserrat&quot;;--button_typography-font-style:normal;--button_typography-font-weight:500;\" target=\"_self\" data-hover=\"icon_position\" href=\"https:\/\/x-cube.com\/locations\" rel=\"nofollow noopener\"><i class=\"fa-angle-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><i class=\"fa-angle-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Verenigde staten<\/span><\/a><\/div><div style=\"text-align:left;\"><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-2 fusion-button-default-span fusion-button-default-type awb-b-icon-pos-left fusion-has-button-gradient\" style=\"--awb-margin-right:15px;--awb-margin-bottom:10px;--button_accent_color:var(--awb-color7);--button_border_color:var(--awb-color7);--button_accent_hover_color:var(--awb-color7);--button_border_hover_color:var(--awb-color4);--button-border-radius-top-left:30px;--button-border-radius-top-right:30px;--button-border-radius-bottom-right:30px;--button-border-radius-bottom-left:30px;--button_gradient_angle:45deg;--button_gradient_top_color:var(--awb-color4);--button_gradient_bottom_color:var(--awb-color3);--button_gradient:radial-gradient(circle at center center,var(--awb-color4) 0%,var(--awb-color3) 0%);--button_gradient_top_color_hover:hsla(var(--awb-color2-h),calc(var(--awb-color2-s) - 5%),calc(var(--awb-color2-l) - 10%),var(--awb-color2-a));--button_gradient_bottom_color_hover:hsla(var(--awb-color2-h),calc(var(--awb-color2-s) - 5%),calc(var(--awb-color2-l) - 10%),var(--awb-color2-a));--button_text_transform:uppercase;--button_typography-letter-spacing:3px;--button_typography-font-family:&quot;Montserrat&quot;;--button_typography-font-style:normal;--button_typography-font-weight:500;\" target=\"_self\" data-hover=\"icon_position\" href=\"https:\/\/x-cube.pt\/portugal\" rel=\"nofollow noopener\"><i class=\"fa-angle-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><i class=\"fa-angle-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Portugal<\/span><\/a><\/div><div style=\"text-align:left;\"><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-3 fusion-button-default-span fusion-button-default-type awb-b-icon-pos-left fusion-has-button-gradient\" style=\"--awb-margin-right:15px;--awb-margin-bottom:10px;--button_accent_color:var(--awb-color7);--button_border_color:var(--awb-color7);--button_accent_hover_color:var(--awb-color7);--button_border_hover_color:var(--awb-color4);--button-border-radius-top-left:30px;--button-border-radius-top-right:30px;--button-border-radius-bottom-right:30px;--button-border-radius-bottom-left:30px;--button_gradient_angle:45deg;--button_gradient_top_color:var(--awb-color4);--button_gradient_bottom_color:var(--awb-color3);--button_gradient:radial-gradient(circle at center center,var(--awb-color4) 0%,var(--awb-color3) 0%);--button_gradient_top_color_hover:hsla(var(--awb-color2-h),calc(var(--awb-color2-s) - 5%),calc(var(--awb-color2-l) - 10%),var(--awb-color2-a));--button_gradient_bottom_color_hover:hsla(var(--awb-color2-h),calc(var(--awb-color2-s) - 5%),calc(var(--awb-color2-l) - 10%),var(--awb-color2-a));--button_text_transform:uppercase;--button_typography-letter-spacing:3px;--button_typography-font-family:&quot;Montserrat&quot;;--button_typography-font-style:normal;--button_typography-font-weight:500;\" target=\"_self\" data-hover=\"icon_position\" href=\"https:\/\/devsite.x-cube.nl\/nl\/netherlands\/\"><i class=\"fa-angle-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><i class=\"fa-angle-right fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Nederland<\/span><\/a><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_2_5 2_5 fusion-flex-column\" style=\"--awb-padding-top:37px;--awb-padding-bottom:0px;--awb-bg-size:cover;--awb-width-large:40%;--awb-margin-top-large:0px;--awb-spacing-right-large:4.8%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:4.8%;--awb-width-medium:40%;--awb-order-medium:0;--awb-spacing-right-medium:4.8%;--awb-spacing-left-medium:4.8%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-row fusion-flex-align-items-center\"><div class=\"fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-one\" style=\"--awb-text-color:var(--awb-color2);--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;--awb-font-size:38px;\"><h1 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;font-size:1em;--fontSize:38;line-height:var(--awb-typography1-line-height);\">Over 37 X-Cubes op 25 locations wereldwijd<\/h1><\/div><div class=\"fusion-text fusion-text-5\"><p style=\"background: white; margin: 0cm 0cm 15.0pt 0cm;\"><span style=\"font-family: Montserrat; color: #14141f;\">Onze toewijding om innovatieve entertainmentervaringen naar publiek over de hele wereld te brengen, blijft groeien, waardoor het avontuur nooit ver van uw deur is. Verken ons steeds groeiende netwerk en vind de dichtstbijzijnde X-Cube voor je volgende adrenalinekick!<\/span><\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_3_5 3_5 fusion-flex-column\" style=\"--awb-overflow:hidden;--awb-bg-size:cover;--awb-border-radius:15px 15px 15px 15px;--awb-width-large:60%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.2%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:3.2%;--awb-width-medium:60%;--awb-order-medium:0;--awb-spacing-right-medium:3.2%;--awb-spacing-left-medium:3.2%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-image-element \" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\" fusion-imageframe imageframe-none imageframe-4 hover-type-none\"><img decoding=\"async\" width=\"800\" height=\"533\" title=\"xCube-13\" src=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/xCube-13.jpg\" data-orig-src=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/xCube-13.jpg\" alt class=\"lazyload img-responsive wp-image-1567\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27800%27%20height%3D%27533%27%20viewBox%3D%270%200%20800%20533%27%3E%3Crect%20width%3D%27800%27%20height%3D%27533%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/xCube-13-200x133.jpg 200w, https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/xCube-13-400x267.jpg 400w, https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/xCube-13-600x400.jpg 600w, https:\/\/devsite.x-cube.nl\/wp-content\/uploads\/2023\/08\/xCube-13.jpg 800w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 800px\" \/><\/span><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"footnotes":""},"class_list":["post-2783","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/pages\/2783","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/comments?post=2783"}],"version-history":[{"count":0,"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/pages\/2783\/revisions"}],"wp:attachment":[{"href":"https:\/\/devsite.x-cube.nl\/nl\/wp-json\/wp\/v2\/media?parent=2783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}