{"id":6878,"date":"2025-06-08T07:29:41","date_gmt":"2025-06-08T06:29:41","guid":{"rendered":"https:\/\/x-cube.nl\/locatie-assen\/"},"modified":"2026-02-24T13:10:32","modified_gmt":"2026-02-24T12:10:32","slug":"locatie-assen","status":"publish","type":"page","link":"https:\/\/x-cube.nl\/nl\/locatie-assen\/","title":{"rendered":"Locatie: Assen"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--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:54px;--awb-padding-bottom:57px;--awb-margin-top:0px;--awb-background-color:var(--awb-color2);--awb-background-image:linear-gradient(180deg, var(--awb-color2) 0%,var(--awb-color4) 100%);--awb-flex-wrap:wrap;\" ><div class=\"awb-background-pattern\" style=\"background-image:  url(data:image\/svg+xml;utf8,%3Csvg%20width%3D%2280%22%20height%3D%22120%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url%28%23prefix__clip0_43_320%29%22%20fill%3D%22rgba%28255%2C255%2C255%2C0.02%29%22%3E%3Cpath%20d%3D%22M40%200L0%2030v30l40-30V0zm0%2030v30l40%2030V60L40%2030zM40-30V0l40%2030V0L40-30zm0%2090L0%2090v30l40-30V60zm0%2030v30l40%2030v-30L40%2090z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22prefix__clip0_43_320%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h80v120H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E);opacity: 1 ;mix-blend-mode:normal;\"><\/div><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_2_3 2_3 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:66.666666666667%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.88%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:2.88%;--awb-width-medium:66.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:2.88%;--awb-spacing-left-medium:2.88%;--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-color7);--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);\">Kings &amp; Queens<\/h2><\/div><div class=\"fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-text-color:var(--awb-custom_color_3);--awb-margin-top:-10px;--awb-margin-top-small:-15px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h3 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:36;line-height:var(--awb-typography1-line-height);\">Assen<\/h3><\/div><div ><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-1 fusion-button-span-no fusion-button-default-type\" style=\"--button_accent_color:var(--awb-color7);--button_accent_hover_color:var(--awb-color7);--button_border_hover_color:var(--awb-color4);--button_gradient_top_color:var(--awb-custom_color_3);--button_gradient_bottom_color:var(--awb-custom_color_3);--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_font_size:20px;--button_typography-font-family:&quot;Bungee&quot;;--button_typography-font-style:normal;--button_typography-font-weight:400;\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/www.kandqassen.nl\/x-cube\/?utm_source=x-cube&amp;utm_medium=referral&amp;utm_campaign=locatie-assen\"><i class=\"fa-shopping-cart 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\">Nu boeken<\/span><\/a><\/div><div class=\"fusion-text fusion-text-1\" style=\"--awb-text-color:var(--awb-color7);--awb-margin-top:20px;\"><p data-start=\"1193\" data-end=\"1619\">Op zoek naar een originele activiteit in Assen voor een groep vrienden, collega\u2019s of het gezin? <strong data-start=\"1282\" data-end=\"1316\">De X-Cube bij Kings &amp; Queens Assen<\/strong> is een unieke digitale escape-ervaring waarin je samen in een afgesloten ruimte vol schermen, licht en geluid uitdagende missies speelt. De opdrachten zijn spannend, grappig en vragen om goede samenwerking. Of je nu met z\u2019n twee\u00ebn komt of met een groep van zes, de X-Cube is geschikt voor allerlei gelegenheden: een avondje uit, een verjaardagsfeest of teambuilding.<\/p>\n<p data-start=\"1621\" data-end=\"2004\">Bij Kings &amp; Queens speel je in een moderne omgeving met volop andere mogelijkheden. Zo kun je je X-Cube sessie combineren met een potje poolen, darten, of een van de andere activiteiten. De X-Cube bevindt zich in een rustige ruimte op de zolder, zodat je helemaal opgaat in het spel. Alle X-Cube games zijn beschikbaar: van moordmysteries tot grappige quizshows en geheime missies voor kinderen en volwassenen.<\/p>\n<\/div><div class=\"fusion-image-carousel fusion-image-carousel-auto fusion-image-carousel-1\" style=\"margin-top:20px;margin-bottom:20px;\"><div data-slide-effect=\"fade\" class=\"awb-carousel awb-swiper awb-swiper-carousel awb-carousel--slider awb-swiper-dots-position-bottom\" data-layout=\"slider\" data-autoplay=\"no\" data-autoplayspeed=\"2500\" data-autoplaypause=\"no\" data-loop=\"yes\" data-columns=\"5\" data-columnsmedium=\"1\" data-columnssmall=\"1\" data-itemmargin=\"13\" data-itemwidth=\"180\" data-touchscroll=\"no\" data-freemode=\"no\" data-imagesize=\"auto\" data-scrollitems=\"0\" data-centeredslides=\"no\" data-rotationangle=\"50\" data-depth=\"100\" data-speed=\"500\" data-shadow=\"yes\" data-pagination=\"bullets\" style=\"--awb-border-radius-top-left:20px;--awb-border-radius-top-right:20px;--awb-border-radius-bottom-right:20px;--awb-border-radius-bottom-left:20px;--awb-arrow-size:30px;--awb-arrow-color:var(--awb-color7);--awb-dots-align:center;\"><div class=\"swiper-wrapper awb-image-carousel-wrapper fusion-flex-align-items-center\"><div class=\"swiper-slide\"><div class=\"fusion-carousel-item-wrapper\"><div class=\"fusion-image-wrapper hover-type-none\"><img decoding=\"async\" width=\"1018\" height=\"500\" src=\"https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min.jpg\" class=\"attachment-full size-full\" alt=\"X-Cube Race Planet Amsterdam\" srcset=\"https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min-200x98.jpg 200w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min-300x147.jpg 300w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min-400x196.jpg 400w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min-600x295.jpg 600w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min-768x377.jpg 768w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min-800x393.jpg 800w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/race-planet-4-min.jpg 1018w\" sizes=\"(max-width: 1018px) 100vw, 1018px\" \/><\/div><\/div><\/div><div class=\"swiper-slide\"><div class=\"fusion-carousel-item-wrapper\"><div class=\"fusion-image-wrapper hover-type-none\"><img decoding=\"async\" width=\"1600\" height=\"1200\" src=\"https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes.jpg\" class=\"attachment-full size-full\" alt=\"X-Cube Kings &amp; Queens Assen\" srcset=\"https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-200x150.jpg 200w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-300x225.jpg 300w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-400x300.jpg 400w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-600x450.jpg 600w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-768x576.jpg 768w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-800x600.jpg 800w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-1024x768.jpg 1024w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-1200x900.jpg 1200w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes-1536x1152.jpg 1536w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/06\/2xcubes.jpg 1600w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/div><\/div><\/div><\/div><div class=\"awb-swiper-button awb-swiper-button-prev\"><i class=\"awb-icon-angle-left\" aria-hidden=\"true\"><\/i><\/div><div class=\"awb-swiper-button awb-swiper-button-next\"><i class=\"awb-icon-angle-right\" aria-hidden=\"true\"><\/i><\/div><\/div><\/div><div ><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-2 fusion-button-span-no fusion-button-default-type\" style=\"--button_accent_color:var(--awb-color7);--button_accent_hover_color:var(--awb-color7);--button_border_hover_color:var(--awb-color4);--button_gradient_top_color:var(--awb-custom_color_3);--button_gradient_bottom_color:var(--awb-custom_color_3);--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_font_size:20px;--button_typography-font-family:&quot;Bungee&quot;;--button_typography-font-style:normal;--button_typography-font-weight:400;\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/www.kandqassen.nl\/x-cube\/?utm_source=x-cube&amp;utm_medium=referral&amp;utm_campaign=locatie-assen\"><i class=\"fa-shopping-cart 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\">Ga naar Kings &amp; Queens om te reserveren<\/span><\/a><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_3 1_3 fusion-flex-column\" style=\"--awb-padding-top:20px;--awb-padding-right:20px;--awb-padding-bottom:29px;--awb-padding-left:20px;--awb-overflow:hidden;--awb-bg-color:rgba(84,60,255,0.18);--awb-bg-color-hover:rgba(84,60,255,0.18);--awb-bg-size:cover;--awb-border-color:rgba(255,255,255,0.35);--awb-border-top:0.5px;--awb-border-right:0.5px;--awb-border-bottom:0.5px;--awb-border-left:0.5px;--awb-border-style:solid;--awb-border-radius:10px 10px 10px 10px;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:20px;--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%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div ><a class=\"fusion-button button-flat fusion-button-default-size button-custom fusion-button-default button-3 fusion-button-span-yes fusion-button-default-type\" style=\"--button_accent_color:var(--awb-color7);--button_accent_hover_color:var(--awb-color7);--button_border_hover_color:var(--awb-color4);--button_gradient_top_color:var(--awb-custom_color_3);--button_gradient_bottom_color:var(--awb-custom_color_3);--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_font_size:20px;--button_typography-font-family:&quot;Bungee&quot;;--button_typography-font-style:normal;--button_typography-font-weight:400;\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/www.kandqassen.nl\/x-cube\/?utm_source=x-cube&amp;utm_medium=referral&amp;utm_campaign=locatie-assen\"><i class=\"fa-shopping-cart 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\">Nu boeken<\/span><\/a><\/div><div class=\"fusion-text fusion-text-2\" style=\"--awb-font-size:25px;--awb-text-color:var(--awb-color7);--awb-margin-top:20px;--awb-text-font-family:&quot;Bungee&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Informatie<\/p>\n<\/div><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_6 1_6 fusion-flex-column\" style=\"--awb-padding-top:0px;--awb-padding-right:-20px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-bg-size:cover;--awb-width-large:16.666666666667%;--awb-margin-top-large:0px;--awb-spacing-right-large:11.52%;--awb-margin-bottom-large:3px;--awb-spacing-left-large:11.52%;--awb-width-medium:16.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:11.52%;--awb-spacing-left-medium:11.52%;--awb-width-small:20%;--awb-order-small:0;--awb-spacing-right-small:9.6%;--awb-spacing-left-small:9.6%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><i class=\"fb-icon-element-1 fb-icon-element fontawesome-icon fa-clock fas circle-yes fusion-text-flow\" style=\"--awb-iconcolor:var(--awb-color7);--awb-iconcolor-hover:var(--awb-color7);--awb-circlecolor:rgba(255,63,146,0);--awb-circlecolor-hover:var(--awb-custom_color_3);--awb-circlebordercolor-hover:var(--awb-color8);--awb-circlebordersize:0px;--awb-font-size:20px;--awb-width:29px;--awb-height:29px;--awb-line-height:29px;--awb-margin-right:10px;\"><\/i><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-1 fusion_builder_column_inner_4_5 4_5 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:80%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.4%;--awb-margin-bottom-large:-20px;--awb-spacing-left-large:0%;--awb-width-medium:80%;--awb-order-medium:0;--awb-spacing-right-medium:2.4%;--awb-spacing-left-medium:0%;--awb-width-small:66.666666666667%;--awb-order-small:0;--awb-spacing-right-small:2.88%;--awb-spacing-left-small:0%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-3\" style=\"--awb-font-size:18px;--awb-text-color:var(--awb-custom_color_3);--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>Openingstijden<\/p>\n<\/div><\/div><\/div><\/div><div class=\"fusion-text fusion-text-4\" style=\"--awb-text-color:var(--awb-color7);--awb-margin-top:10px;\"><div class=\"openingstijden\">\n<div><span class=\"dag\">Maandag <\/span><span class=\"tijd\">gesloten<\/span><\/div>\n<div><span class=\"dag\">Dinsdag <\/span><span class=\"tijd\">14:00 &#8211; 01:00<\/span><\/div>\n<div><span class=\"dag\">Woensdag <\/span><span class=\"tijd\">14:00 &#8211; 01:00<\/span><\/div>\n<div><span class=\"dag\">Donderdag <\/span><span class=\"tijd\">14:00 &#8211; 01:00<\/span><\/div>\n<div><span class=\"dag\">Vrijdag <\/span><span class=\"tijd\">12:00 &#8211; 02:00<\/span><\/div>\n<div><span class=\"dag\">Zaterdag <\/span><span class=\"tijd\">12:00 &#8211; 02:00<\/span><\/div>\n<div><span class=\"dag\">Zondag <\/span><span class=\"tijd\">12:00 &#8211; 01:00<\/span><\/div>\n<div><\/div>\n<div><\/div>\n<\/div>\n<div><strong data-start=\"67\" data-end=\"83\">Let op:<\/strong> Openingtijden kunnen afwijken tijdens feestdagen en in vakanties.<\/div>\n<\/div><div class=\"fusion-separator fusion-full-width-sep\" style=\"align-self: center;margin-left: auto;margin-right: auto;margin-top:20px;width:100%;\"><div class=\"fusion-separator-border sep-single sep-dotted\" style=\"--awb-height:20px;--awb-amount:20px;--awb-sep-color:rgba(255,255,255,0.32);border-color:rgba(255,255,255,0.32);border-top-width:1px;\"><\/div><\/div><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_6 1_6 fusion-flex-column\" style=\"--awb-padding-top:0px;--awb-padding-right:-20px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-bg-size:cover;--awb-width-large:16.666666666667%;--awb-margin-top-large:16px;--awb-spacing-right-large:11.52%;--awb-margin-bottom-large:3px;--awb-spacing-left-large:11.52%;--awb-width-medium:16.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:11.52%;--awb-spacing-left-medium:11.52%;--awb-width-small:20%;--awb-order-small:0;--awb-spacing-right-small:9.6%;--awb-spacing-left-small:9.6%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><i class=\"fb-icon-element-2 fb-icon-element fontawesome-icon fa-map-marker fas circle-yes fusion-text-flow\" style=\"--awb-iconcolor:var(--awb-color7);--awb-iconcolor-hover:var(--awb-color7);--awb-circlecolor:rgba(255,63,146,0);--awb-circlecolor-hover:var(--awb-custom_color_3);--awb-circlebordercolor-hover:var(--awb-color8);--awb-circlebordersize:0px;--awb-font-size:20px;--awb-width:29px;--awb-height:29px;--awb-line-height:29px;--awb-margin-right:10px;\"><\/i><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-3 fusion_builder_column_inner_4_5 4_5 fusion-flex-column\" style=\"--awb-padding-top:18px;--awb-bg-size:cover;--awb-width-large:80%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.4%;--awb-margin-bottom-large:-20px;--awb-spacing-left-large:0%;--awb-width-medium:80%;--awb-order-medium:0;--awb-spacing-right-medium:2.4%;--awb-spacing-left-medium:0%;--awb-width-small:66.666666666667%;--awb-order-small:0;--awb-spacing-right-small:2.88%;--awb-spacing-left-small:0%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-5\" style=\"--awb-font-size:18px;--awb-text-color:var(--awb-custom_color_3);--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>Adres<\/p>\n<\/div><\/div><\/div><\/div><div class=\"fusion-text fusion-text-6\" style=\"--awb-text-color:var(--awb-color7);--awb-margin-top:10px;\"><p><strong>Kings &amp; Queens Assen<br \/>\n<\/strong>Nieuwehuizen 10A<br \/>\n9401 JT Assen<br \/>\n+31(0) 592 820 383<\/p>\n<div><\/div>\n<\/div><div style=\"text-align:left;\"><a class=\"fusion-button button-flat button-medium button-custom fusion-button-default button-4 fusion-button-default-span fusion-button-default-type awb-b-icon-pos-left\" style=\"--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-custom_color_2);--button_gradient_bottom_color:var(--awb-custom_color_2);--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:1px;--button_typography-font-family:&quot;Montserrat&quot;;--button_typography-font-style:normal;--button_typography-font-weight:600;\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" data-hover=\"icon_position\" href=\"https:\/\/www.google.com\/maps\/dir\/?api=1&amp;destination=Herwijk+10,+1046+BC+Amsterdam\"><i class=\"fa-map-marker-alt fas awb-button__icon awb-button__icon--default button-icon-left\" aria-hidden=\"true\"><\/i><i class=\"fa-map-marker-alt 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\">Route<\/span><\/a><\/div><div class=\"fusion-text fusion-text-7\" style=\"--awb-text-color:var(--awb-color7);--awb-margin-top:10px;\"><div class=\"openingstijden\">\n<p>&nbsp;<\/p>\n<div><strong>Steden dichtbij<\/strong><\/div>\n<div><span class=\"dag\">Groningen <\/span><span class=\"tijd\">40,0 km<\/span><\/div>\n<div><span class=\"dag\">Emmen <\/span><span class=\"tijd\">55,0 km<\/span><\/div>\n<div><span class=\"dag\">Hoogeveen <\/span><span class=\"tijd\">30,0 km<\/span><\/div>\n<div><span class=\"dag\">Drachten <\/span><span class=\"tijd\">50,0 km<\/span><\/div>\n<div><span class=\"dag\">Leeuwarden <\/span><span class=\"tijd\">58,0 km<\/span><\/div>\n<\/div>\n<div><\/div>\n<\/div><div class=\"fusion-separator fusion-full-width-sep\" style=\"align-self: center;margin-left: auto;margin-right: auto;margin-top:20px;width:100%;\"><div class=\"fusion-separator-border sep-single sep-dotted\" style=\"--awb-height:20px;--awb-amount:20px;--awb-sep-color:rgba(255,255,255,0.32);border-color:rgba(255,255,255,0.32);border-top-width:1px;\"><\/div><\/div><div class=\"fusion-text fusion-text-8\" style=\"--awb-font-size:13px;--awb-text-color:var(--awb-color7);\"><\/div><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-4 fusion_builder_column_inner_1_6 1_6 fusion-flex-column\" style=\"--awb-padding-top:0px;--awb-padding-right:-20px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-bg-size:cover;--awb-width-large:16.666666666667%;--awb-margin-top-large:16px;--awb-spacing-right-large:11.52%;--awb-margin-bottom-large:3px;--awb-spacing-left-large:11.52%;--awb-width-medium:16.666666666667%;--awb-order-medium:0;--awb-spacing-right-medium:11.52%;--awb-spacing-left-medium:11.52%;--awb-width-small:20%;--awb-order-small:0;--awb-spacing-right-small:9.6%;--awb-spacing-left-small:9.6%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><i class=\"fb-icon-element-3 fb-icon-element fontawesome-icon fa-info fas circle-yes fusion-text-flow\" style=\"--awb-iconcolor:var(--awb-color7);--awb-iconcolor-hover:var(--awb-color7);--awb-circlecolor:rgba(255,63,146,0);--awb-circlecolor-hover:var(--awb-custom_color_3);--awb-circlebordercolor-hover:var(--awb-color8);--awb-circlebordersize:0px;--awb-font-size:20px;--awb-width:29px;--awb-height:29px;--awb-line-height:29px;--awb-margin-right:10px;\"><\/i><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column_inner fusion-builder-nested-column-5 fusion_builder_column_inner_4_5 4_5 fusion-flex-column\" style=\"--awb-padding-top:18px;--awb-bg-size:cover;--awb-width-large:80%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.4%;--awb-margin-bottom-large:-20px;--awb-spacing-left-large:0%;--awb-width-medium:80%;--awb-order-medium:0;--awb-spacing-right-medium:2.4%;--awb-spacing-left-medium:0%;--awb-width-small:66.666666666667%;--awb-order-small:0;--awb-spacing-right-small:2.88%;--awb-spacing-left-small:0%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column\"><div class=\"fusion-text fusion-text-9\" style=\"--awb-font-size:18px;--awb-text-color:var(--awb-custom_color_3);--awb-text-font-family:&quot;Montserrat&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>X-Cube informatie<\/p>\n<\/div><\/div><\/div><\/div><div class=\"fusion-text fusion-text-10\" style=\"--awb-text-color:var(--awb-color7);--awb-margin-top:10px;\"><p>De X-Cube bevindt zich op de <strong data-start=\"312\" data-end=\"328\">tweede verdieping<\/strong> in een rustige, afgesloten ruimte. Je speelt met <strong data-start=\"365\" data-end=\"383\">2 tot 6 personen<\/strong> en hebt toegang tot alle X-Cube spellen.<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-max-width:150px;--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\" alt=\"Kings &amp; Queens Logo\" title=\"Kings &#038; Queens\" src=\"https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/01\/K_Q-removebg-preview.png\" class=\"img-responsive wp-image-5852\" srcset=\"https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/01\/K_Q-removebg-preview-200x200.png 200w, https:\/\/x-cube.nl\/wp-content\/uploads\/2025\/01\/K_Q-removebg-preview.png 225w\" sizes=\"(max-width: 640px) 100vw, 225px\" \/><\/span><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 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 decoding=\"async\" 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><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"footnotes":""},"class_list":["post-6878","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/pages\/6878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/comments?post=6878"}],"version-history":[{"count":0,"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/pages\/6878\/revisions"}],"wp:attachment":[{"href":"https:\/\/x-cube.nl\/nl\/wp-json\/wp\/v2\/media?parent=6878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}