{"id":56156,"date":"2026-04-09T09:53:07","date_gmt":"2026-04-09T07:53:07","guid":{"rendered":"https:\/\/triptherapie.nl\/?page_id=56156"},"modified":"2026-04-16T10:00:56","modified_gmt":"2026-04-16T08:00:56","slug":"booking-guide-for-truffle-ceremony-session","status":"publish","type":"page","link":"https:\/\/triptherapie.nl\/en\/keuzehulp-reserveren-sessie-truffelceremonie\/","title":{"rendered":"Booking guide for private psychedelic sessions, truffle ceremonies, and retreats in the Netherlands"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"56156\" class=\"elementor elementor-56156\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e45105b e-con-full e-flex e-con e-parent\" data-id=\"e45105b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\" aria-label=\"Logp + hoofdmenu\">\n\t\t<div class=\"elementor-element elementor-element-425da20 e-flex e-con-boxed e-con e-child\" data-id=\"425da20\" data-element_type=\"container\" data-e-type=\"container\" aria-label=\"Logo Triphterapie\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38e1ef4 elementor-widget elementor-widget-image\" data-id=\"38e1ef4\" data-element_type=\"widget\" data-e-type=\"widget\" fetchpriority=\"high\" aria-label=\"Homepage\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/triptherapie.nl\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"160\" height=\"32\" src=\"https:\/\/triptherapie.nl\/wp-content\/uploads\/2020\/02\/triptherapie-logo-cropped.png\" class=\"attachment-full size-full wp-image-54082\" alt=\"Triptherapie logo\" srcset=\"https:\/\/triptherapie.nl\/wp-content\/uploads\/2020\/02\/triptherapie-logo-cropped.png 160w, https:\/\/triptherapie.nl\/wp-content\/uploads\/2020\/02\/triptherapie-logo-cropped-18x4.png 18w\" sizes=\"(max-width: 160px) 100vw, 160px\" title=\"\">\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-42b6cfe e-flex e-con-boxed e-con e-parent\" data-id=\"42b6cfe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42df2b0 elementor-widget elementor-widget-heading\" data-id=\"42df2b0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\" class=\"elementor-heading-title elementor-size-default\" id=\"keuzehulp-en-reserveren-van-psychedelische-prive-en-groepssessies\">Keuzehulp en reserveren van psychedelische priv\u00e9- en groepssessies<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3040e51 elementor-widget elementor-widget-text-editor\" data-id=\"3040e51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Gebruik de onderstaande keuzehulp om stap voor stap te ontdekken welke psychedelische priv\u00e9- of groepssessie het best past bij jouw situatie. Op basis van jouw voorkeuren zie je direct welke begeleiders, locaties en prijzen van toepassing zijn. Zo krijg je snel overzicht en kun je jouw gewenste optie reserveren.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eee2976 e-flex e-con-boxed e-con e-parent\" data-id=\"eee2976\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0a386f0 elementor-widget elementor-widget-spacer\" data-id=\"0a386f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2daa84 elementor-widget elementor-widget-html\" data-id=\"f2daa84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"nl\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\"\/>\n\n  <style>\n    html, body {\n      height: 100%;\n      margin: 0;\n      padding: 0;\n      scroll-behavior: auto;\n    }\n\n    #trip-choice-tool {\n      max-width: 1280px;\n      padding: 0;\n      box-sizing: border-box;\n      background: transparent;\n    }\n\n    .tool-layout {\n      display: flex;\n      flex-direction: column;\n      gap: 24px;\n    }\n\n    .tool-card {\n      background:\n        radial-gradient(circle at top left, rgba(178, 0, 145, 0.08), transparent 30%),\n        radial-gradient(circle at top right, rgba(0, 60, 180, 0.14), transparent 35%),\n        linear-gradient(180deg, #10141d 0%, #0a0d13 100%);\n      color: #ffffff;\n      border-radius: 20px;\n      padding: 28px;\n      box-sizing: border-box;\n      border: 1px solid rgba(255,255,255,0.07);\n      box-shadow:\n        0 14px 40px rgba(0,0,0,0.32),\n        inset 0 1px 0 rgba(255,255,255,0.04);\n      backdrop-filter: blur(6px);\n      position: relative;\n    }\n\n    .tool-card h2,\n    .tool-card h3 {\n      text-align: center;\n    }\n\n    .tool-card h2 {\n      margin: 0 0 14px 0;\n      font-size: 28px;\n      line-height: 1.2;\n      color: #ffffff;\n    }\n\n    .tool-card h3 {\n      margin: 0 0 14px 0;\n      font-size: 22px;\n      line-height: 1.25;\n      color: #ffffff;\n    }\n\n    .tool-card p {\n      margin: 0 0 16px 0;\n      line-height: 1.65;\n      color: #f0f0f0;\n    }\n\n    .wizard-step > p {\n      text-align: center;\n      max-width: 860px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n\n    .wizard-step {\n      margin-top: 30px;\n      padding: 18px 10px 0 10px;\n      border-top: 1px solid rgba(255,255,255,0.08);\n      animation: fadeSlideIn 0.35s ease;\n      transition:\n        opacity 0.28s ease,\n        transform 0.28s ease,\n        padding 0.28s ease,\n        margin 0.28s ease,\n        background 0.28s ease,\n        box-shadow 0.28s ease;\n      opacity: 1;\n      transform: scale(1);\n      border-radius: 24px;\n      scroll-margin-top: 60px;\n    }\n\n    .wizard-step.completed-step {\n      opacity: 1;\n      transform: scale(1);\n      padding: 18px 10px 0 10px;\n    }\n\n    .wizard-step.active-step {\n      opacity: 1;\n      transform: scale(1);\n      margin-top: 36px;\n      padding: 34px 30px 38px 30px;\n      background:\n        radial-gradient(circle at top center, rgba(178,0,145,0.14), transparent 58%),\n        linear-gradient(180deg, rgba(42, 0, 36, 0.82) 0%, rgba(16,20,29,0.88) 100%);\n      box-shadow:\n        0 0 0 2px rgba(178,0,145,0.42),\n        0 22px 42px rgba(178,0,145,0.14),\n        inset 0 1px 0 rgba(255,255,255,0.04);\n    }\n\n    #step0.active-step {\n      margin-top: 0;\n      padding: 0;\n      background: transparent;\n      box-shadow: none;\n    }\n\n    .wizard-step.hidden,\n    .hidden {\n      display: none !important;\n    }\n\n    .trp-hidden-strings {\n      position: absolute !important;\n      left: -99999px !important;\n      top: auto !important;\n      width: 1px !important;\n      height: 1px !important;\n      overflow: hidden !important;\n      opacity: 0 !important;\n      pointer-events: none !important;\n    }\n\n    @keyframes fadeSlideIn {\n      from { opacity: 0; transform: translateY(8px); }\n      to   { opacity: 1; transform: translateY(0); }\n    }\n\n    \/* === CHANGE 3: Rainbow gradient pulsing glow on \"Toon resultaten\" button === *\/\n    @keyframes pulseRainbowGlow {\n      0%   { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(0,100%,60%),   0 0 22px 6px hsla(0,100%,60%,0.35); }\n      16%  { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(60,100%,55%),  0 0 22px 6px hsla(60,100%,55%,0.35); }\n      33%  { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(120,100%,45%), 0 0 22px 6px hsla(120,100%,45%,0.35); }\n      50%  { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(200,100%,55%), 0 0 22px 6px hsla(200,100%,55%,0.35); }\n      66%  { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(260,100%,65%), 0 0 22px 6px hsla(260,100%,65%,0.35); }\n      83%  { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(310,100%,60%), 0 0 22px 6px hsla(310,100%,60%,0.35); }\n      100% { box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 18px rgba(0,0,0,0.22), 0 0 0 2px hsl(360,100%,60%), 0 0 22px 6px hsla(360,100%,60%,0.35); }\n    }\n\n    .choice-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n      gap: 16px;\n      margin-top: 18px;\n    }\n\n    .choice-btn,\n    .primary-btn,\n    .secondary-btn,\n    .mini-btn,\n    .reset-btn,\n    .action-link-btn {\n      appearance: none;\n      border: 1px solid #ffffff !important;\n      cursor: pointer;\n      border-radius: 16px;\n      color: white !important;\n      font-size: 16px;\n      line-height: 1.35;\n      box-sizing: border-box;\n      text-align: center;\n      text-decoration: none;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      position: relative;\n      overflow: hidden;\n      transition:\n        transform 0.22s ease,\n        box-shadow 0.28s ease,\n        border-color 0.25s ease,\n        background 0.3s ease,\n        opacity 0.22s ease,\n        filter 0.22s ease;\n    }\n\n    .choice-btn::before,\n    .primary-btn::before,\n    .secondary-btn::before,\n    .mini-btn::before,\n    .reset-btn::before,\n    .action-link-btn::before,\n    .toggle-option::before {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      background: linear-gradient(135deg, rgba(255,255,255,0.10), rgba(255,255,255,0.02) 40%, transparent 70%);\n      pointer-events: none;\n      opacity: 0.85;\n    }\n\n    .choice-btn:hover,\n    .primary-btn:hover,\n    .secondary-btn:hover,\n    .mini-btn:hover,\n    .reset-btn:hover,\n    .action-link-btn:hover,\n    .toggle-option:hover {\n      transform: translateY(-2px) scale(1.01);\n      box-shadow: 0 12px 26px rgba(0,0,0,0.28);\n      filter: brightness(1.04);\n    }\n\n    .choice-btn:active,\n    .primary-btn:active,\n    .secondary-btn:active,\n    .mini-btn:active,\n    .reset-btn:active,\n    .action-link-btn:active,\n    .toggle-option:active {\n      transform: translateY(0) scale(0.995);\n    }\n\n    .choice-btn {\n      min-height: 78px;\n      padding: 16px 18px;\n      width: 100%;\n      background:\n        linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.01)),\n        linear-gradient(135deg, #000428 0%, #010211 100%) !important;\n      box-shadow:\n        inset 0 1px 0 rgba(255,255,255,0.05),\n        0 8px 20px rgba(0,0,0,0.22);\n    }\n\n    .choice-btn.selected {\n      border: 2px solid #b20091 !important;\n      background:\n        linear-gradient(135deg, rgba(255,255,255,0.08), rgba(255,255,255,0.02)),\n        linear-gradient(135deg, #000428 0%, #010211 100%) !important;\n      box-shadow:\n        0 0 0 3px rgba(178, 0, 145, 0.16),\n        0 14px 30px rgba(178, 0, 145, 0.16),\n        inset 0 1px 0 rgba(255,255,255,0.08);\n    }\n\n    .primary-btn,\n    .secondary-btn,\n    .mini-btn,\n    .action-link-btn {\n      background:\n        linear-gradient(135deg, rgba(255,255,255,0.08), rgba(255,255,255,0.02)),\n        linear-gradient(135deg, #000428 0%, #010211 100%) !important;\n      box-shadow:\n        inset 0 1px 0 rgba(255,255,255,0.06),\n        0 8px 18px rgba(0,0,0,0.22);\n    }\n\n    .primary-btn {\n      min-height: 52px;\n      padding: 12px 18px;\n    }\n\n    \/* CHANGE 3: rainbow animation applied *\/\n    .results-trigger-btn {\n      animation: pulseRainbowGlow 2.4s linear infinite;\n    }\n\n    .secondary-btn {\n      min-height: 48px;\n      padding: 12px 18px;\n    }\n\n    .mini-btn {\n      min-height: 42px;\n      padding: 10px 14px;\n      font-size: 14px;\n    }\n\n    .action-link-btn {\n      min-height: 44px;\n      padding: 10px 14px;\n      font-size: 14px;\n      width: 100%;\n    }\n\n    .reset-zone {\n      margin-top: 18px;\n      display: flex;\n      justify-content: center;\n    }\n\n    .reset-zone.hidden {\n      display: none !important;\n    }\n\n    .reset-btn {\n      min-height: 52px;\n      padding: 12px 22px;\n      width: 100%;\n      max-width: 420px;\n      gap: 10px;\n      background:\n        linear-gradient(135deg, rgba(255,255,255,0.10), rgba(255,255,255,0.02)),\n        linear-gradient(135deg, #5e0000 0%, #b30000 50%, #ff3b30 100%) !important;\n      box-shadow:\n        inset 0 1px 0 rgba(255,255,255,0.08),\n        0 10px 22px rgba(120,0,0,0.28);\n    }\n\n    .notice-box,\n    .info-box,\n    .result-box,\n    .travel-tip {\n      margin-top: 22px;\n      padding: 20px 22px;\n      border-radius: 16px;\n      box-sizing: border-box;\n      line-height: 1.65;\n      border: 1px solid rgba(255,255,255,0.06);\n      box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);\n      scroll-margin-top: 60px;\n    }\n\n    .notice-box {\n      background: linear-gradient(180deg, #151a24 0%, #10141d 100%);\n      border-left: 4px solid #b20091;\n    }\n\n    .info-box {\n      background: linear-gradient(180deg, #111827 0%, #0d1320 100%);\n      border-left: 4px solid #4f46e5;\n    }\n\n    .result-box {\n      background: linear-gradient(180deg, #0f172a 0%, #0a1220 100%);\n      border-left: 4px solid #b20091;\n    }\n\n    .travel-tip {\n      background: linear-gradient(180deg, #111827 0%, #0d1320 100%);\n      border-left: 4px solid #b20091;\n    }\n\n    .notice-box p,\n    .info-box p,\n    .result-box p,\n    .travel-tip p {\n      margin: 0 0 10px 0;\n      text-align: left;\n      max-width: none;\n      color: #f0f0f0;\n      opacity: 1;\n    }\n\n    .notice-box p:last-child,\n    .info-box p:last-child,\n    .result-box p:last-child,\n    .travel-tip p:last-child {\n      margin-bottom: 0;\n    }\n\n    .notice-box a,\n    .info-box a,\n    .result-box a,\n    .travel-tip a,\n    .tool-card a {\n      color: #ff66d9;\n    }\n\n    .muted {\n      opacity: 1;\n      color: #f0f0f0 !important;\n    }\n\n    .input-wrap {\n      margin-top: 18px;\n      max-width: 860px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n\n    .input-wrap label {\n      display: block;\n      font-weight: 700;\n      margin-bottom: 8px;\n      text-align: center;\n    }\n\n    .input-wrap input,\n    .input-wrap select {\n      width: 100%;\n      box-sizing: border-box;\n      min-height: 54px;\n      padding: 12px 14px;\n      border-radius: 14px;\n      border: 1px solid rgba(255,255,255,0.1);\n      background: rgba(255,255,255,0.98);\n      color: #111;\n      font-size: 16px;\n      transition: border-color 0.22s ease, box-shadow 0.22s ease;\n    }\n\n    .input-wrap input:focus,\n    .input-wrap select:focus {\n      outline: none;\n      border-color: #b20091;\n      box-shadow: 0 0 0 3px rgba(178, 0, 145, 0.14);\n    }\n\n    .inline-field-row {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-top: 12px;\n      align-items: center;\n    }\n\n    .inline-field-row input,\n    .inline-field-row select {\n      flex: 1;\n      min-width: 220px;\n    }\n\n    .content-columns {\n      display: flex;\n      flex-direction: column;\n      gap: 22px;\n      margin-top: 22px;\n    }\n\n    .left-column,\n    .right-column {\n      width: 100%;\n      min-width: 0;\n    }\n\n    .table-container {\n      width: 100%;\n      overflow-x: auto;\n      margin-bottom: 20px;\n      background: white;\n      border-radius: 14px;\n      box-shadow: 0 10px 24px rgba(0,0,0,0.18);\n    }\n\n    .table-container table {\n      width: 100%;\n      border-collapse: collapse;\n      color: #111;\n      background: white;\n    }\n\n    .table-container th,\n    .table-container td {\n      padding: 10px;\n      vertical-align: middle;\n      border: 1px solid #d6d6d6;\n      font-size: 15px;\n      text-align: center;\n    }\n\n    .table-container th {\n      font-weight: 700;\n    }\n\n    .strike td {\n      color: red;\n      text-decoration: line-through;\n    }\n\n    .orange-row td {\n      color: #d97706;\n    }\n\n    #map {\n      width: 100%;\n      height: 380px;\n      border-radius: 16px;\n      overflow: hidden;\n      background: #d9d9d9;\n      box-shadow: 0 10px 24px rgba(0,0,0,0.18);\n    }\n\n    .map-heading {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      gap: 12px;\n      margin-bottom: 14px;\n      flex-wrap: wrap;\n      text-align: center;\n    }\n\n    .map-heading h3 {\n      margin: 0;\n      font-size: 20px;\n      text-align: center;\n      width: 100%;\n    }\n\n    .toggle-group {\n      display: inline-flex;\n      flex-wrap: wrap;\n      gap: 8px;\n      justify-content: center;\n    }\n\n    .toggle-group input[type=\"radio\"] {\n      position: absolute;\n      opacity: 0;\n      pointer-events: none;\n    }\n\n    .toggle-option {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 42px;\n      min-width: 125px;\n      padding: 8px 14px;\n      border-radius: 14px;\n      border: 1px solid #ffffff;\n      background:\n        linear-gradient(135deg, rgba(255,255,255,0.06), rgba(255,255,255,0.015)),\n        linear-gradient(135deg, #000428 0%, #010211 100%);\n      color: white;\n      cursor: pointer;\n      user-select: none;\n      font-size: 14px;\n      text-align: center;\n      transition:\n        transform 0.22s ease,\n        box-shadow 0.25s ease,\n        background 0.28s ease,\n        border-color 0.22s ease;\n      box-sizing: border-box;\n      position: relative;\n      overflow: hidden;\n      box-shadow:\n        inset 0 1px 0 rgba(255,255,255,0.05),\n        0 8px 18px rgba(0,0,0,0.18);\n    }\n\n    .toggle-group input[type=\"radio\"]:checked + .toggle-option {\n      border: 2px solid #b20091;\n      background:\n        linear-gradient(135deg, rgba(255,255,255,0.08), rgba(255,255,255,0.02)),\n        linear-gradient(135deg, #000428 0%, #010211 100%);\n      box-shadow:\n        0 0 0 3px rgba(178, 0, 145, 0.16),\n        0 10px 22px rgba(178, 0, 145, 0.16);\n    }\n\n    .summary-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n      gap: 12px;\n      margin-top: 18px;\n    }\n\n    .summary-item {\n      background: rgba(255,255,255,0.045);\n      border: 1px solid rgba(255,255,255,0.08);\n      border-radius: 14px;\n      padding: 14px;\n      box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);\n      text-align: center;\n    }\n\n    .summary-item strong {\n      display: block;\n      margin-bottom: 6px;\n      color: #fff;\n    }\n\n    .small-text {\n      font-size: 14px;\n      opacity: 0.9;\n    }\n\n    .action-sections {\n      display: flex;\n      flex-direction: column;\n      gap: 18px;\n      margin-top: 8px;\n      text-align: center;\n    }\n\n    .action-box {\n      background: linear-gradient(180deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.025) 100%);\n      border: 1px solid rgba(255,255,255,0.08);\n      border-radius: 16px;\n      padding: 16px;\n      box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);\n      text-align: center;\n    }\n\n    .action-box h4 {\n      margin: 0 0 12px 0;\n      font-size: 18px;\n      color: #fff;\n      text-align: center;\n    }\n\n    .action-card-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));\n      gap: 12px;\n    }\n\n    .action-card {\n      background: rgba(255,255,255,0.045);\n      border: 1px solid rgba(255,255,255,0.08);\n      border-radius: 14px;\n      padding: 14px;\n      text-align: center;\n    }\n\n    .action-card-title {\n      font-weight: 700;\n      margin-bottom: 10px;\n      color: #fff;\n      text-align: center;\n    }\n\n    .action-links {\n      display: grid;\n      gap: 8px;\n    }\n\n    @media (max-width: 700px) {\n      #trip-choice-tool {\n        padding: 0 8px;\n      }\n\n      .tool-card {\n        padding: 18px;\n        border-radius: 16px;\n      }\n\n      .tool-card h2 {\n        font-size: 24px;\n      }\n\n      .tool-card h3 {\n        font-size: 20px;\n      }\n\n      .wizard-step {\n        margin-top: 24px;\n        padding: 12px 4px 0 4px;\n      }\n\n      .wizard-step.active-step {\n        padding: 22px 14px 28px 14px;\n      }\n\n      #step0.active-step {\n        padding: 0;\n      }\n\n      .choice-grid {\n        grid-template-columns: 1fr;\n      }\n\n      .choice-btn {\n        min-height: 66px;\n      }\n\n      .table-container th,\n      .table-container td {\n        padding: 7px;\n        font-size: 13px;\n      }\n\n      #map {\n        height: 320px;\n      }\n    }\n  <\/style>\n<\/head>\n\n<body>\n  <div id=\"trip-choice-tool\">\n    <div class=\"tool-layout\">\n      <div class=\"tool-card\" id=\"toolCard\">\n\n        <div id=\"trp-strings\" class=\"trp-hidden-strings\" aria-hidden=\"true\">\n          <span id=\"trp-label-book\">Reserveren<\/span>\n          <span id=\"trp-label-profile\">Profiel<\/span>\n          <span id=\"trp-label-reviews\">Recensies<\/span>\n          <span id=\"trp-label-location-info\">Locatie info<\/span>\n          <span id=\"trp-label-guides\">Mogelijke begeleiders<\/span>\n          <span id=\"trp-label-locations\">Mogelijke locaties<\/span>\n          <span id=\"trp-label-map\">Kaart<\/span>\n          <span id=\"trp-label-guides-toggle\">Begeleiders<\/span>\n          <span id=\"trp-label-locations-toggle\">Locaties<\/span>\n          <span id=\"trp-label-guide\">Begeleider<\/span>\n          <span id=\"trp-label-city\">Plaats<\/span>\n          <span id=\"trp-label-total\">Totaal<\/span>\n          <span id=\"trp-label-distance\">Afstand<\/span>\n          <span id=\"trp-label-travel\">Reis<\/span>\n          <span id=\"trp-label-travel-time\">Reistijd<\/span>\n          <span id=\"trp-label-our-locations\">Onze locaties<\/span>\n          <span id=\"trp-label-start-location\">Startlocatie<\/span>\n          <span id=\"trp-label-private-session\">Priv\u00e9 sessie<\/span>\n          <span id=\"trp-label-open-group\">Open groepssessie<\/span>\n          <span id=\"trp-label-dutch\">Nederlands<\/span>\n          <span id=\"trp-label-english\">Engels<\/span>\n          <span id=\"trp-label-german\">Duits<\/span>\n          <span id=\"trp-label-one-person\">1 persoon<\/span>\n          <span id=\"trp-label-multiple-persons\">personen<\/span>\n          <span id=\"trp-label-own-location\">Op een eigen locatie<\/span>\n          <span id=\"trp-label-trip-location\">Op een Triptherapie locatie<\/span>\n          <span id=\"trp-label-compare\">Vergelijk beide opties<\/span>\n\n          <span id=\"trp-title-stay-nl\">Waar verwacht je in Nederland te verblijven?<\/span>\n          <span id=\"trp-title-address-nl\">Wat is jouw adres of woonplaats?<\/span>\n          <span id=\"trp-title-session-place\">Waar wil je de sessie?<\/span>\n          <span id=\"trp-title-group-options\">De psychedelische ceremonies &amp; retraites<\/span>\n\n          <span id=\"trp-msg-intake-opened\">De intake is geopend in een nieuw venster. Daarna kun je terugkomen naar deze keuzehulp om de mogelijkheden en prijzen te bekijken.<\/span>\n          <span id=\"trp-msg-intake-later\">Je kunt alvast de mogelijkheden en prijzen bekijken. Voor een definitieve boeking is het wel belangrijk dat de intake nog wordt ingevuld en beoordeeld.<\/span>\n\n          <span id=\"trp-btn-view-group-options\">Bekijk groepsopties<\/span>\n          <span id=\"trp-btn-known-stay\">Ik weet al waar ik verblijf<\/span>\n          <span id=\"trp-btn-unknown-stay\">Ik weet het nog niet precies<\/span>\n          <span id=\"trp-btn-fly-to-nl\">Ik vlieg naar Nederland<\/span>\n\n          <span id=\"trp-error-enter-location\">Vul een locatie in om de berekening uit te voeren.<\/span>\n          <span id=\"trp-error-only-netherlands\">Gebruik voor deze berekening een locatie in Nederland. Bij sessies op een eigen locatie moet die locatie in Nederland liggen.<\/span>\n          <span id=\"trp-error-location-not-found\">De ingevoerde locatie kon niet goed worden gevonden. Probeer een plaatsnaam, postcode of een duidelijk adres in Nederland.<\/span>\n\n          <div id=\"trp-link-sources\">\n            <a id=\"link-contact\" href=\"\/contact\/\">contact<\/a>\n            <a id=\"link-intake\" href=\"\/intake-triptherapie\/\">intake<\/a>\n            <a id=\"link-group-default\" href=\"\/groepssessies\/#agenda-open-groep-ceremonies\">groep<\/a>\n            <a id=\"link-group-de\" href=\"\/psychedelische-therapie-voor-klanten-uit-duitsland\/#psychedelische-groepssessies-met-duitse-begeleiding\">groep de<\/a>\n            <a id=\"link-location-bedding\" href=\"\/locatie\/bedding-den-bosch\/\">De Bedding<\/a>\n            <a id=\"link-location-sancta\" href=\"\/locatie\/sancta-psychedelica-noordwijk\/\">Sancta Psychedelica<\/a>\n            <a id=\"link-location-loft\" href=\"\/locatie\/psychedelic-loft-schiedam\/\">Psychedelic Loft<\/a>\n            <a id=\"link-book-janneke\" href=\"\/reserveringen\/book-janneke-own-location\/\">boek Janneke<\/a>\n            <a id=\"link-profile-janneke\" href=\"\/personeel\/janneke\/\">profiel Janneke<\/a>\n            <a id=\"link-review-janneke\" href=\"https:\/\/psychedelic-forum.com\/review-janneke\/\" target=\"_blank\" rel=\"noopener\">review Janneke<\/a>\n            <a id=\"link-book-marcel\" href=\"\/reserveringen\/book-marcel-own-location\/\">boek Marcel<\/a>\n            <a id=\"link-profile-marcel\" href=\"\/personeel\/marcel\/\">profiel Marcel<\/a>\n            <a id=\"link-review-marcel\" href=\"https:\/\/psychedelic-forum.com\/review-truffle-therapy-marcel\/\" target=\"_blank\" rel=\"noopener\">review Marcel<\/a>\n            <a id=\"link-book-gijs\" href=\"\/reserveringen\/book-psychedelic-session-own-location-gijs\/\">boek Gijs<\/a>\n            <a id=\"link-profile-gijs\" href=\"\/personeel\/gijs\/\">profiel Gijs<\/a>\n            <a id=\"link-review-gijs\" href=\"https:\/\/psychedelic-forum.com\/reviews-gijs\/\" target=\"_blank\" rel=\"noopener\">review Gijs<\/a>\n            <a id=\"link-book-sascha\" href=\"\/reserveringen\/book-psychedelic-session-own-location-sascha\/\">boek Sascha<\/a>\n            <a id=\"link-profile-sascha\" href=\"\/personeel\/sascha\/\">profiel Sascha<\/a>\n            <a id=\"link-review-sascha\" href=\"https:\/\/psychedelic-forum.com\/reviews-sascha\/\" target=\"_blank\" rel=\"noopener\">review Sascha<\/a>\n            <a id=\"link-book-reineke\" href=\"\/reserveringen\/agenda-reineke\/\">boek Reineke<\/a>\n            <a id=\"link-profile-reineke\" href=\"\/personeel\/reineke\/\">profiel Reineke<\/a>\n            <a id=\"link-review-reineke\" href=\"https:\/\/psychedelic-forum.com\/experiences-truffle-reineke\/\" target=\"_blank\" rel=\"noopener\">review Reineke<\/a>\n            <a id=\"link-book-ronald\" href=\"\/reserveringen\/book-psychedelic-session-own-location-ronald\/\">boek Ronald<\/a>\n            <a id=\"link-profile-ronald\" href=\"\/personeel\/ronald\/\">profiel Ronald<\/a>\n            <a id=\"link-review-ronald\" href=\"https:\/\/psychedelic-forum.com\/reviews-ronald\/\" target=\"_blank\" rel=\"noopener\">review Ronald<\/a>\n            <a id=\"link-book-sancta\" href=\"\/reserveringen\/sancta-psychedelica-noordwijk-reserveren\/\">boek Sancta<\/a>\n            <a id=\"link-book-loft\" href=\"\/reserveringen\/book-psychedelic-session-psychedelic-loft\/\">boek Loft<\/a>\n          <\/div>\n\n          <template id=\"tpl-country-info-yes\">\n            <h3 id=\"goed-om-te-weten-voor-deelnemers-uit-het-buitenland\">Goed om te weten voor deelnemers uit het buitenland<\/h3>\n            <p>Psychedelische sessies kunnen plaatsvinden op onze locaties in Nederland. Bij priv\u00e9 sessies op onze locaties is standaard \u00e9\u00e9n overnachting inbegrepen, net als eten en drinken. Ook deelname aan een open groepssessie met andere, voor jou nog onbekende deelnemers kan een optie zijn. Bij open groepssessies is eveneens standaard \u00e9\u00e9n overnachting inbegrepen, samen met eten en drinken.<\/p>\n            <p>Een andere mogelijkheid is om zelf een accommodatie in Nederland te huren en de sessie daar te laten plaatsvinden, zolang het maar in Nederland is. Bij voorkeur gaat het dan om een volledige woning, hotelkamer of Airbnb, en niet om een gedeelde accommodatie.<\/p>\n            <p>Bij priv\u00e9 boekingen mag er zonder extra kosten een vertrouwenspersoon aanwezig zijn. Op onze locaties mag deze persoon ook blijven overnachten. Dit geldt niet voor open groepssessies.<\/p>\n            <p>Ons algemene advies is om ongeveer vier tot acht weken tussen twee sessies te laten. Voor deelnemers uit het buitenland kan er vanwege mogelijke tijdsdruk soms maatwerk nodig zijn. In dat geval is het mogelijk om maximaal twee sessies in \u00e9\u00e9n week te plannen.<\/p>\n            <p>Wanneer je meerdere sessies wilt combineren met accommodatie via Triptherapie, dan is maatwerk nodig. In dat geval is het het handigst om contact met ons op te nemen via de <a id=\"tmpl-contact-yes\" href=\"\/contact\/\" target=\"_blank\" rel=\"noopener\">contactpagina<\/a>.<\/p>\n          <\/template>\n\n          <template id=\"tpl-country-info-no\">\n            <h3 id=\"goed-om-te-weten-voor-deelnemers-uit-nederland\">Goed om te weten voor deelnemers uit Nederland<\/h3>\n            <p>Psychedelische sessies kunnen plaatsvinden op onze locaties in Nederland, maar ook thuis of op een andere eigen accommodatie, zolang die omgeving geschikt is voor een sessie. Daarnaast kan deelname aan een open groepssessie met andere deelnemers ook een optie zijn.<\/p>\n            <p>Bij priv\u00e9 sessies op onze locaties is standaard \u00e9\u00e9n overnachting inbegrepen, net als eten en drinken. Bij open groepssessies is eveneens standaard \u00e9\u00e9n overnachting inbegrepen, samen met eten en drinken.<\/p>\n            <p>Als je kiest voor een sessie op een eigen locatie, dan kan dat bijvoorbeeld thuis, in een hotel, in een Airbnb of in een andere priv\u00e9omgeving. Bij voorkeur gaat het om een rustige plek met voldoende privacy. Gedeelde accommodaties zijn meestal minder geschikt.<\/p>\n            <p>Bij priv\u00e9 boekingen mag er zonder extra kosten een vertrouwenspersoon aanwezig zijn. Op onze locaties mag deze persoon ook blijven overnachten. Dit geldt niet voor open groepssessies.<\/p>\n            <p>Ons algemene advies is om ongeveer vier tot acht weken tussen twee sessies te laten. In sommige gevallen kan hiervan worden afgeweken, maar meestal heeft een ruime tussenperiode de voorkeur.<\/p>\n            <p>Wanneer je meerdere sessies wilt combineren met accommodatie via Triptherapie, dan is maatwerk nodig. In dat geval kun je het best contact opnemen via de <a id=\"tmpl-contact-no\" href=\"\/contact\/\" target=\"_blank\" rel=\"noopener\">contactpagina<\/a>.<\/p>\n          <\/template>\n\n          <template id=\"tpl-travel-tip\">\n            <p><strong>Tip:<\/strong><br>Veel deelnemers die nog geen accommodatie hebben geboekt, gebruiken eerst een stad dichtbij de gewenste begeleider of luchthaven als indicatie.<\/p>\n            <p>Schiphol is vaak handig voor een sessie op locatie <a id=\"tmpl-sancta\" href=\"\/locatie\/sancta-psychedelica-noordwijk\/\" target=\"_blank\" rel=\"noopener\">Sancta Psychedelica<\/a> of voor een priv\u00e9sessie met Marcel, Sascha of Janneke.<\/p>\n            <p>Rotterdam The Hague Airport is vaak een logische keuze voor een sessie op de <a id=\"tmpl-loft\" href=\"\/locatie\/psychedelic-loft-schiedam\/\" target=\"_blank\" rel=\"noopener\">Psychedelic Loft in Schiedam<\/a> of voor een priv\u00e9sessie met Reineke.<\/p>\n            <p>Eindhoven Airport past vaak beter bij <a id=\"tmpl-bedding\" href=\"\/locatie\/bedding-den-bosch\/\" target=\"_blank\" rel=\"noopener\">De Bedding in Den Bosch<\/a> en bij een priv\u00e9sessie met Ronald of Gijs.<\/p>\n          <\/template>\n        <\/div>\n\n        <!-- Step 0: intake -->\n        <div class=\"wizard-step\" id=\"step0\" style=\"border-top:none; padding-top:0; margin-top:0;\">\n          <h3 id=\"heb-je-al-de-intake-ingevuld-en-weet-je-of-je-veilig-kunt-deelnemen\">Heb je al de intake ingevuld en weet je of je veilig kunt deelnemen?<\/h3>\n          <p class=\"muted\">De intake helpt om in te schatten of deelname passend is. Je kunt ook eerst de mogelijkheden en prijzen bekijken en de intake later invullen.<\/p>\n          <div class=\"choice-grid\">\n            <button class=\"choice-btn\" data-intake=\"now\">Nee, ik vul het nu in<\/button>\n            <button class=\"choice-btn\" data-intake=\"yes\">Ja, ik kan deelnemen<\/button>\n            <button class=\"choice-btn\" data-intake=\"later\">Ik vul het later in en wil eerst de mogelijkheden en prijzen zien<\/button>\n          <\/div>\n          <div id=\"intakeMessage\" class=\"notice-box hidden\"><\/div>\n        <\/div>\n\n        <!-- Step 1: buiten\/binnen Nederland -->\n        <div class=\"wizard-step hidden\" id=\"step1\">\n          <h3 id=\"kom-je-van-buiten-nederland\">Kom je van buiten Nederland?<\/h3>\n          <div class=\"choice-grid\">\n            <button class=\"choice-btn\" data-outside=\"yes\">Ja, ik kom vanuit het buitenland<\/button>\n            <button class=\"choice-btn\" data-outside=\"no\">Nee, ik woon in Nederland<\/button>\n          <\/div>\n          <div id=\"countryInfoBox\" class=\"info-box hidden\"><\/div>\n        <\/div>\n\n        <!-- Step 2: priv\u00e9 of groep -->\n        <div class=\"wizard-step hidden\" id=\"step2\">\n          <h3 id=\"prive-of-open-groep\">Priv\u00e9 of open groep<\/h3>\n          <p class=\"muted\">Priv\u00e9sessies zijn sessies met 1 tot en met 6 deelnemers die je zelf samenstelt. Open groepssessies zijn psychedelische ceremonies en retraites op onze locaties, waarbij gelijkgestemde onbekenden kunnen aansluiten.<\/p>\n          <div class=\"choice-grid\">\n            <button class=\"choice-btn\" data-session=\"private\">Priv\u00e9 sessie<\/button>\n            <button class=\"choice-btn\" data-session=\"group\">Open groepssessie<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- CHANGE 4: step4 (taal) now comes BEFORE step3 (personen) in HTML order -->\n\n        <!-- Step 4: taal (shown at position 3 in wizard flow) -->\n        <div class=\"wizard-step hidden\" id=\"step4\">\n          <h3 id=\"in-welke-taal-wil-je-de-sessie\">In welke taal wil je de sessie?<\/h3>\n          <div class=\"choice-grid\">\n            <button class=\"choice-btn\" data-language=\"nl\">Nederlands<\/button>\n            <button class=\"choice-btn\" data-language=\"en\">English<\/button>\n            <button class=\"choice-btn\" data-language=\"de\">Deutsch<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- Step 3: personen (shown at position 4, only for private sessions) -->\n        <div class=\"wizard-step hidden\" id=\"step3\">\n          <h3 id=\"met-hoeveel-personen-wil-je-deelnemen\">Met hoeveel personen wil je deelnemen?<\/h3>\n          <div class=\"choice-grid\">\n            <button class=\"choice-btn\" data-persons=\"1\">1 persoon<\/button>\n            <button class=\"choice-btn\" data-persons=\"2\">2 personen<\/button>\n            <button class=\"choice-btn\" data-persons=\"3\">3 personen<\/button>\n            <button class=\"choice-btn\" data-persons=\"4\">4 personen<\/button>\n            <button class=\"choice-btn\" data-persons=\"5\">5 personen<\/button>\n            <button class=\"choice-btn\" data-persons=\"6\">6 personen<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- Step 5: sessieplaats -->\n        <div class=\"wizard-step hidden\" id=\"step5\">\n          <h3 id=\"placeStepTitle\">Waar wil je de sessie?<\/h3>\n          <p id=\"groupChoiceInfo\" class=\"muted hidden\">Je hebt gekozen voor een open groepssessie. Bekijk hier de actuele agenda van open groep ceremonies en retraites via de knop (opent een nieuw venster).<\/p>\n          <div id=\"placeChoices\" class=\"choice-grid\"><\/div>\n        <\/div>\n\n        <!-- Step 6: locatie -->\n        <div class=\"wizard-step hidden\" id=\"step6\">\n          <h3 id=\"locationStepTitle\">Wat is jouw adres of woonplaats?<\/h3>\n          <div id=\"locationModeChoices\" class=\"choice-grid hidden\"><\/div>\n\n          <div id=\"knownLocationWrap\" class=\"input-wrap hidden\">\n            <label for=\"startLocation\">Plaats of adres in Nederland<\/label>\n            <div class=\"inline-field-row\">\n              <input type=\"text\" id=\"startLocation\" placeholder=\"Bijv. Amsterdam\">\n              <button id=\"showResultsBtn\" class=\"primary-btn results-trigger-btn\" type=\"button\">Toon resultaten<\/button>\n            <\/div>\n          <\/div>\n\n          <div id=\"estimateLocationWrap\" class=\"input-wrap hidden\">\n            <label for=\"estimatedLocation\">Waarschijnlijke stad in Nederland<\/label>\n            <div class=\"inline-field-row\">\n              <input type=\"text\" id=\"estimatedLocation\" placeholder=\"Bijv. Amsterdam, Utrecht of Rotterdam\">\n              <button id=\"showEstimatedResultsBtn\" class=\"primary-btn results-trigger-btn\" type=\"button\">Toon resultaten<\/button>\n            <\/div>\n          <\/div>\n\n          <div id=\"airportWrap\" class=\"input-wrap hidden\">\n            <label for=\"airportSelect\">Kies een luchthaven in Nederland<\/label>\n            <div class=\"inline-field-row\">\n              <select id=\"airportSelect\">\n                <option value=\"\">Kies een luchthaven<\/option>\n                <option value=\"Schiphol Airport, Amsterdam, Nederland\">Airport Schiphol Amsterdam<\/option>\n                <option value=\"Rotterdam The Hague Airport, Rotterdam, Nederland\">Rotterdam The Hague Airport<\/option>\n                <option value=\"Eindhoven Airport, Eindhoven, Nederland\">Eindhoven Airport<\/option>\n              <\/select>\n              <button id=\"showAirportResultsBtn\" class=\"primary-btn results-trigger-btn\" type=\"button\">Toon resultaten<\/button>\n            <\/div>\n          <\/div>\n\n          <div id=\"travelTipBox\" class=\"travel-tip hidden\"><\/div>\n        <\/div>\n\n        <div id=\"mainResultBox\" class=\"result-box hidden\"><\/div>\n\n        <div class=\"content-columns hidden\" id=\"resultsSection\">\n          <div class=\"right-column\">\n            <div class=\"map-heading\" id=\"mapHeadingWrap\">\n              <h3 id=\"mapMainTitle\">Kaart<\/h3>\n              <div class=\"toggle-group\" id=\"mapModeGroup\">\n                <input type=\"radio\" name=\"mapMode\" id=\"mapModeGuides\" value=\"guides\" checked>\n                <label class=\"toggle-option\" for=\"mapModeGuides\" id=\"mapGuidesLabel\">Begeleiders<\/label>\n                <input type=\"radio\" name=\"mapMode\" id=\"mapModeLocations\" value=\"locations\">\n                <label class=\"toggle-option\" for=\"mapModeLocations\" id=\"mapLocationsLabel\">Locaties<\/label>\n              <\/div>\n            <\/div>\n            <div id=\"map\"><\/div>\n          <\/div>\n\n          <div class=\"left-column\">\n            <div id=\"results\"><\/div>\n            <div id=\"tableActionArea\" class=\"action-sections hidden\"><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div id=\"resetZone\" class=\"reset-zone hidden\">\n        <button id=\"resetToolBtn\" class=\"reset-btn\" type=\"button\">\n          <i class=\"fa-solid fa-trash\"><\/i>\n          <span>Wis alles en begin opnieuw<\/span>\n        <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyCi5hCWfsu72vYKb5s0C5_1yxOYxLBVh8E&callback=initMap\" async defer><\/script>\n\n  <script>\n    const EXTRA_PER_EXTRA_PERSON = 500;\n\n    const URL_KEYS = {\n      intake: \"intake\",\n      outside: \"btl\",\n      session: \"ses\",\n      persons: \"p\",\n      language: \"taal\",\n      place: \"plek\",\n      locationMode: \"loc\",\n      startLocation: \"adres\",\n      mapMode: \"kaart\"\n    };\n\n    const URL_VALUE_MAP = {\n      intake: { now: \"nee\", yes: \"ja\", later: \"later\" },\n      outside: { yes: \"ja\", no: \"nee\" },\n      session: { private: \"prive\", group: \"groep\" },\n      language: { nl: \"nl\", en: \"en\", de: \"de\" },\n      place: { own: \"eigen\", location: \"locatie\", compare: \"vergelijk\", group: \"groep\" },\n      locationMode: { known: \"bekend\", unknown: \"onbekend\", airport: \"vlucht\" },\n      mapMode: { guides: \"begeleiders\", locations: \"locaties\" }\n    };\n\n    const URL_REVERSE_MAP = {\n      intake: { nee: \"now\", ja: \"yes\", later: \"later\" },\n      outside: { ja: \"yes\", nee: \"no\" },\n      session: { prive: \"private\", groep: \"group\" },\n      language: { nl: \"nl\", en: \"en\", de: \"de\" },\n      place: { eigen: \"own\", locatie: \"location\", vergelijk: \"compare\", groep: \"group\" },\n      locationMode: { bekend: \"known\", onbekend: \"unknown\", vlucht: \"airport\" },\n      mapMode: { begeleiders: \"guides\", locaties: \"locations\" }\n    };\n\n    const baseDestinations = [\n      { name: \"Marcel\",  address: \"2204 CB Noordwijk\",    city: \"Noordwijk\",    addition: 850, color: \"#8B0000\", languages: [\"nl\", \"en\"] },\n      { name: \"Reineke\", address: \"3142 CA Maassluis\",    city: \"Maassluis\",    addition: 850, color: \"#006400\", languages: [\"nl\", \"en\", \"de\"] },\n      { name: \"Sascha\",  address: \"1404 HC Bussum\",       city: \"Bussum\",       addition: 850, color: \"#006666\", languages: [\"nl\", \"en\"] },\n      { name: \"Gijs\",    address: \"5231 EK Den Bosch\",    city: \"Den Bosch\",    addition: 850, color: \"#8B4513\", languages: [\"nl\", \"en\", \"de\"] },\n      { name: \"Ronald\",  address: \"5554 SH Valkenswaard\", city: \"Valkenswaard\", addition: 950, color: \"#4B0082\", languages: [\"nl\", \"en\", \"de\"] },\n      { name: \"Janneke\", address: \"3137 RL Vlaardingen\",  city: \"Vlaardingen\",  addition: 750, color: \"#00008B\", languages: [\"nl\", \"en\"] }\n    ];\n\n    const baseLocations = [\n      { name: \"De Bedding\",          address: \"5231 EK Den Bosch\", city: \"Den Bosch\", price: 850,  color: \"#b20091\" },\n      { name: \"Sancta Psychedelica\", address: \"2204 CB Noordwijk\", city: \"Noordwijk\", price: 1050, color: \"#c2185b\" },\n      { name: \"Psychedelic Loft\",    address: \"3111 ND Schiedam\",  city: \"Schiedam\",  price: 1250, color: \"#7b1fa2\" }\n    ];\n\n    let destinations = [];\n    let locations = [];\n    let currentlyAvailableGuideNames = [];\n\n    const state = {\n      intakeStatus: \"\",\n      outsideNetherlands: \"\",\n      sessionType: \"\",\n      persons: null,\n      language: \"\",\n      placeType: \"\",\n      locationMode: \"\",\n      startLocation: \"\"\n    };\n\n    let map;\n    let directionsService;\n    let directionsRenderers = [];\n    let geocoder;\n    let markers = [];\n    let markerBounds;\n    let overlay;\n    let alternateTick = 0;\n\n    function escapeHtml(text) {\n      return String(text)\n        .replaceAll(\"&\", \"&amp;\")\n        .replaceAll(\"<\", \"&lt;\")\n        .replaceAll(\">\", \"&gt;\")\n        .replaceAll('\"', \"&quot;\")\n        .replaceAll(\"'\", \"&#039;\");\n    }\n\n    function t(id) {\n      const el = document.getElementById(id);\n      return el ? el.textContent.trim() : \"\";\n    }\n\n    function tpl(id) {\n      const el = document.getElementById(id);\n      return el ? el.innerHTML.trim() : \"\";\n    }\n\n    function trpHref(id, fallback = \"#\") {\n      const el = document.getElementById(id);\n      if (!el) return fallback;\n      return el.getAttribute(\"href\") || fallback;\n    }\n\n    function setTranslateableUILabels() {\n      const mapMainTitle = document.getElementById(\"mapMainTitle\");\n      const mapGuidesLabel = document.getElementById(\"mapGuidesLabel\");\n      const mapLocationsLabel = document.getElementById(\"mapLocationsLabel\");\n      if (mapMainTitle) mapMainTitle.textContent = t(\"trp-label-map\") || \"Kaart\";\n      if (mapGuidesLabel) mapGuidesLabel.textContent = t(\"trp-label-guides-toggle\") || \"Begeleiders\";\n      if (mapLocationsLabel) mapLocationsLabel.textContent = t(\"trp-label-locations-toggle\") || \"Locaties\";\n    }\n\n    function applyTemplateLinks(container) {\n      if (!container) return;\n      const mapLinks = {\n        \"tmpl-contact-yes\": \"link-contact\",\n        \"tmpl-contact-no\": \"link-contact\",\n        \"tmpl-sancta\": \"link-location-sancta\",\n        \"tmpl-loft\": \"link-location-loft\",\n        \"tmpl-bedding\": \"link-location-bedding\"\n      };\n      Object.entries(mapLinks).forEach(([templateAnchorId, sourceLinkId]) => {\n        const anchor = container.querySelector(\"#\" + templateAnchorId);\n        if (anchor) anchor.setAttribute(\"href\", trpHref(sourceLinkId, anchor.getAttribute(\"href\") || \"#\"));\n      });\n    }\n\n    \/\/ CHANGE 2: consistent 60px offset above target element for all scrolls\n    function scrollToElement(el) {\n      if (!el) return;\n      const rect = el.getBoundingClientRect();\n      const absoluteTop = window.pageYOffset + rect.top - 60;\n      window.scrollTo({ top: Math.max(0, absoluteTop), behavior: \"smooth\" });\n    }\n\n    function scrollToTopOfTool() {\n      const tool = document.getElementById(\"trip-choice-tool\");\n      if (!tool) return;\n      const rect = tool.getBoundingClientRect();\n      const absoluteTop = window.pageYOffset + rect.top - 60;\n      window.scrollTo({ top: Math.max(0, absoluteTop), behavior: \"smooth\" });\n    }\n\n    function showResetButton() { document.getElementById(\"resetZone\").classList.remove(\"hidden\"); }\n    function hideResetButton() { document.getElementById(\"resetZone\").classList.add(\"hidden\"); }\n\n    function clearDirections() { directionsRenderers.forEach(r => r.setMap(null)); directionsRenderers = []; }\n    function clearMarkers() { markers.forEach(m => m.setMap(null)); markers = []; }\n\n    function getExtraPersonsPrice(persons) { return (Math.max(1, persons) - 1) * EXTRA_PER_EXTRA_PERSON; }\n\n    function getLanguageLabel(lang) {\n      if (lang === \"nl\") return t(\"trp-label-dutch\") || \"Nederlands\";\n      if (lang === \"en\") return t(\"trp-label-english\") || \"Engels\";\n      if (lang === \"de\") return t(\"trp-label-german\") || \"Duits\";\n      return \"\";\n    }\n\n    function getPersonsLabel(persons) {\n      if (persons === 1) return t(\"trp-label-one-person\") || \"1 persoon\";\n      return persons + \" \" + (t(\"trp-label-multiple-persons\") || \"personen\");\n    }\n\n    function getPlaceLabel(placeType) {\n      if (placeType === \"own\") return t(\"trp-label-own-location\") || \"Op een eigen locatie\";\n      if (placeType === \"location\") return t(\"trp-label-trip-location\") || \"Op een Triptherapie locatie\";\n      if (placeType === \"compare\") return t(\"trp-label-compare\") || \"Vergelijk beide opties\";\n      return \"\";\n    }\n\n    function filterGuidesForPrivateUpTo3(language) {\n      if (language === \"de\") return baseDestinations.filter(guide => guide.languages.includes(\"de\"));\n      return [...baseDestinations];\n    }\n\n    function rebuildPricingData() {\n      const persons = state.persons || 1;\n      const extra = getExtraPersonsPrice(persons);\n      let sourceGuides = [...baseDestinations];\n      if (state.sessionType === \"private\" && persons <= 3) {\n        sourceGuides = filterGuidesForPrivateUpTo3(state.language);\n      }\n      destinations = sourceGuides.map(item => ({ ...item, addition: item.addition + extra }));\n      locations = baseLocations.map(item => ({ ...item, price: item.price + extra }));\n    }\n\n    function getGuideLinks(name) {\n      const labelBook = t(\"trp-label-book\") || \"Reserveren\";\n      const labelProfile = t(\"trp-label-profile\") || \"Profiel\";\n      const labelReviews = t(\"trp-label-reviews\") || \"Recensies\";\n      if (name === \"Janneke\") return [{ label: labelBook, url: trpHref(\"link-book-janneke\") }, { label: labelProfile, url: trpHref(\"link-profile-janneke\") }, { label: labelReviews, url: trpHref(\"link-review-janneke\") }];\n      if (name === \"Marcel\")  return [{ label: labelBook, url: trpHref(\"link-book-marcel\") },  { label: labelProfile, url: trpHref(\"link-profile-marcel\") },  { label: labelReviews, url: trpHref(\"link-review-marcel\") }];\n      if (name === \"Gijs\")    return [{ label: labelBook, url: trpHref(\"link-book-gijs\") },    { label: labelProfile, url: trpHref(\"link-profile-gijs\") },    { label: labelReviews, url: trpHref(\"link-review-gijs\") }];\n      if (name === \"Sascha\")  return [{ label: labelBook, url: trpHref(\"link-book-sascha\") },  { label: labelProfile, url: trpHref(\"link-profile-sascha\") },  { label: labelReviews, url: trpHref(\"link-review-sascha\") }];\n      if (name === \"Reineke\") return [{ label: labelBook, url: trpHref(\"link-book-reineke\") }, { label: labelProfile, url: trpHref(\"link-profile-reineke\") }, { label: labelReviews, url: trpHref(\"link-review-reineke\") }];\n      if (name === \"Ronald\")  return [{ label: labelBook, url: trpHref(\"link-book-ronald\") },  { label: labelProfile, url: trpHref(\"link-profile-ronald\") },  { label: labelReviews, url: trpHref(\"link-review-ronald\") }];\n      return [];\n    }\n\n    function getLocationLinks(name) {\n      const labelLocationInfo = t(\"trp-label-location-info\") || \"Locatie info\";\n      const labelBook = t(\"trp-label-book\") || \"Reserveren\";\n      if (name === \"De Bedding\")          return [{ label: labelLocationInfo, url: trpHref(\"link-location-bedding\") }, { label: labelBook, url: trpHref(\"link-book-gijs\") }];\n      if (name === \"Sancta Psychedelica\") return [{ label: labelLocationInfo, url: trpHref(\"link-location-sancta\") }, { label: labelBook, url: trpHref(\"link-book-sancta\") }];\n      if (name === \"Psychedelic Loft\")    return [{ label: labelLocationInfo, url: trpHref(\"link-location-loft\") },   { label: labelBook, url: trpHref(\"link-book-loft\") }];\n      return [];\n    }\n\n    function buildActionCards(items, type) {\n      if (!items || !items.length) return \"\";\n      let html = `<div class=\"action-card-grid\">`;\n      items.forEach(item => {\n        const links = type === \"guide\" ? getGuideLinks(item.name) : getLocationLinks(item.name);\n        if (!links.length) return;\n        html += `<div class=\"action-card\"><div class=\"action-card-title\">${escapeHtml(item.name)}<\/div><div class=\"action-links\">`;\n        links.forEach(link => { html += `<a class=\"action-link-btn\" href=\"${escapeHtml(link.url)}\" target=\"_blank\" rel=\"noopener\">${escapeHtml(link.label)}<\/a>`; });\n        html += `<\/div><\/div>`;\n      });\n      html += `<\/div>`;\n      return html;\n    }\n\n    function renderActionAreas(options = {}) {\n      const tableArea = document.getElementById(\"tableActionArea\");\n      const guides = options.guides || [];\n      const locs = options.locations || [];\n      const labelGuides = t(\"trp-label-guides\") || \"Mogelijke begeleiders\";\n      const labelLocations = t(\"trp-label-locations\") || \"Mogelijke locaties\";\n      let tableHtml = \"\";\n      if (guides.length) tableHtml += `<div class=\"action-box\"><h4>${escapeHtml(labelGuides)}<\/h4>${buildActionCards(guides, \"guide\")}<\/div>`;\n      if (locs.length)   tableHtml += `<div class=\"action-box\"><h4>${escapeHtml(labelLocations)}<\/h4>${buildActionCards(locs, \"location\")}<\/div>`;\n      tableArea.innerHTML = tableHtml;\n      tableArea.classList.toggle(\"hidden\", !tableHtml);\n    }\n\n    function syncMapModeUI() {\n      const mapLocationsInput = document.getElementById(\"mapModeLocations\");\n      const mapModeGroup = document.getElementById(\"mapModeGroup\");\n      if (state.placeType === \"location\") {\n        mapLocationsInput.checked = true;\n        mapModeGroup.classList.add(\"hidden\");\n      } else {\n        mapModeGroup.classList.remove(\"hidden\");\n      }\n    }\n\n    function getCurrentMapMode() {\n      if (state.placeType === \"location\") return \"locations\";\n      return document.querySelector('input[name=\"mapMode\"]:checked')?.value || \"guides\";\n    }\n\n    function clearSelectedButtons(scope) {\n      const root = scope || document;\n      root.querySelectorAll(\".choice-btn.selected\").forEach(btn => btn.classList.remove(\"selected\"));\n    }\n\n    function markSelectedButton(button) {\n      if (!button) return;\n      const grid = button.closest(\".choice-grid\");\n      if (grid) clearSelectedButtons(grid);\n      button.classList.add(\"selected\");\n    }\n\n    function markSelectedByData(attr, value, root = document) {\n      if (value === undefined || value === null || value === \"\") return;\n      const btn = root.querySelector(`.choice-btn[${attr}=\"${value}\"]`);\n      if (btn) markSelectedButton(btn);\n    }\n\n    function updateStepStates(activeId) {\n      const steps = Array.from(document.querySelectorAll(\".wizard-step\")).filter(step => !step.classList.contains(\"hidden\"));\n      let activeFound = false;\n      steps.forEach(step => {\n        step.classList.remove(\"active-step\", \"completed-step\");\n        if (step.id === activeId) { step.classList.add(\"active-step\"); activeFound = true; }\n        else if (!activeFound) { step.classList.add(\"completed-step\"); }\n      });\n    }\n\n    function setActiveStep(activeId, scrollMode = \"step\") {\n      updateStepStates(activeId);\n      const activeEl = document.getElementById(activeId);\n      if (!activeEl || activeEl.classList.contains(\"hidden\")) return;\n      if (scrollMode === \"step\") scrollToElement(activeEl);\n    }\n\n    function showStep(id, scrollMode = \"none\") {\n      const el = document.getElementById(id);\n      if (el) { el.classList.remove(\"hidden\"); setActiveStep(id, scrollMode); }\n    }\n\n    function hideStep(id) {\n      const el = document.getElementById(id);\n      if (el) { el.classList.add(\"hidden\"); el.classList.remove(\"active-step\", \"completed-step\"); }\n    }\n\n    \/\/ CHANGE 4: updated step order in resetAfterStep array \u2014 language (step4) before persons (step3)\n    function resetAfterStep(stepNumber) {\n      const all = [\"step1\", \"step2\", \"step4\", \"step3\", \"step5\", \"step6\"];\n      all.forEach((id, index) => { if (index + 1 > stepNumber) hideStep(id); });\n      document.getElementById(\"mainResultBox\").classList.add(\"hidden\");\n      document.getElementById(\"mainResultBox\").innerHTML = \"\";\n      document.getElementById(\"results\").innerHTML = \"\";\n      document.getElementById(\"resultsSection\").classList.add(\"hidden\");\n      document.getElementById(\"tableActionArea\").innerHTML = \"\";\n      document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n      document.getElementById(\"groupChoiceInfo\").classList.add(\"hidden\");\n      currentlyAvailableGuideNames = [];\n      hideLocationModeParts();\n      clearDirections();\n      clearMarkers();\n      if (map && markerBounds && !markerBounds.isEmpty()) map.fitBounds(markerBounds);\n    }\n\n    function renderCountryInfo() {\n      const box = document.getElementById(\"countryInfoBox\");\n      box.innerHTML = state.outsideNetherlands === \"yes\"\n        ? tpl(\"tpl-country-info-yes\")\n        : tpl(\"tpl-country-info-no\");\n      applyTemplateLinks(box);\n      box.classList.remove(\"hidden\");\n    }\n\n    function renderPlaceChoices() {\n      const wrap = document.getElementById(\"placeChoices\");\n      const title = document.getElementById(\"placeStepTitle\");\n      const groupChoiceInfo = document.getElementById(\"groupChoiceInfo\");\n      wrap.innerHTML = \"\";\n      groupChoiceInfo.classList.add(\"hidden\");\n\n      const addBtn = (value, label, href = \"\") => {\n        if (href) {\n          const a = document.createElement(\"a\");\n          a.href = href; a.target = \"_blank\"; a.rel = \"noopener\";\n          a.className = \"choice-btn\"; a.dataset.place = value; a.textContent = label;\n          wrap.appendChild(a);\n        } else {\n          const btn = document.createElement(\"button\");\n          btn.type = \"button\"; btn.className = \"choice-btn\"; btn.dataset.place = value; btn.textContent = label;\n          wrap.appendChild(btn);\n        }\n      };\n\n      if (state.sessionType === \"group\") {\n        title.textContent = t(\"trp-title-group-options\") || \"De psychedelische ceremonies & retraites\";\n        groupChoiceInfo.textContent = \"Je hebt gekozen voor een open groepssessie. Bekijk hier de actuele agenda van open groep ceremonies en retraites via de knop (opent een nieuw venster).\";\n        groupChoiceInfo.classList.remove(\"hidden\");\n        if (state.language === \"de\") {\n          addBtn(\"group\", t(\"trp-btn-view-group-options\") || \"Bekijk groepsopties\", trpHref(\"link-group-de\"));\n        } else {\n          addBtn(\"group\", t(\"trp-btn-view-group-options\") || \"Bekijk groepsopties\", trpHref(\"link-group-default\"));\n        }\n        return;\n      }\n\n      title.textContent = t(\"trp-title-session-place\") || \"Waar wil je de sessie?\";\n      addBtn(\"own\", getPlaceLabel(\"own\"));\n      addBtn(\"location\", getPlaceLabel(\"location\"));\n      addBtn(\"compare\", getPlaceLabel(\"compare\"));\n    }\n\n    function needsLocationInput() {\n      return state.sessionType === \"private\" && (state.placeType === \"own\" || state.placeType === \"compare\");\n    }\n\n    function hideLocationModeParts() {\n      document.getElementById(\"knownLocationWrap\").classList.add(\"hidden\");\n      document.getElementById(\"estimateLocationWrap\").classList.add(\"hidden\");\n      document.getElementById(\"airportWrap\").classList.add(\"hidden\");\n    }\n\n    function renderTravelTip() {\n      const box = document.getElementById(\"travelTipBox\");\n      box.innerHTML = tpl(\"tpl-travel-tip\");\n      applyTemplateLinks(box);\n      box.classList.remove(\"hidden\");\n    }\n\n    function fillLocationInputsFromState() {\n      document.getElementById(\"startLocation\").value = \"\";\n      document.getElementById(\"estimatedLocation\").value = \"\";\n      document.getElementById(\"airportSelect\").value = \"\";\n      if (!state.startLocation) return;\n      if (state.outsideNetherlands === \"yes\") {\n        if (state.locationMode === \"known\") document.getElementById(\"startLocation\").value = state.startLocation;\n        else if (state.locationMode === \"unknown\") document.getElementById(\"estimatedLocation\").value = state.startLocation;\n        else if (state.locationMode === \"airport\") document.getElementById(\"airportSelect\").value = state.startLocation;\n      } else {\n        document.getElementById(\"startLocation\").value = state.startLocation;\n      }\n    }\n\n    function applyLocationModeUI() {\n      const travelTipBox = document.getElementById(\"travelTipBox\");\n      hideLocationModeParts();\n      travelTipBox.classList.add(\"hidden\");\n      travelTipBox.innerHTML = \"\";\n      if (!needsLocationInput()) return;\n      if (state.outsideNetherlands === \"no\") {\n        state.locationMode = \"known\";\n        document.getElementById(\"knownLocationWrap\").classList.remove(\"hidden\");\n        return;\n      }\n      if (!state.locationMode) return;\n      markSelectedByData(\"data-locationmode\", state.locationMode, document.getElementById(\"locationModeChoices\"));\n      if (state.locationMode === \"known\") document.getElementById(\"knownLocationWrap\").classList.remove(\"hidden\");\n      else if (state.locationMode === \"unknown\") { document.getElementById(\"estimateLocationWrap\").classList.remove(\"hidden\"); renderTravelTip(); }\n      else if (state.locationMode === \"airport\") { document.getElementById(\"airportWrap\").classList.remove(\"hidden\"); renderTravelTip(); }\n    }\n\n    function renderLocationStep() {\n      const title = document.getElementById(\"locationStepTitle\");\n      const modeChoices = document.getElementById(\"locationModeChoices\");\n      const travelTipBox = document.getElementById(\"travelTipBox\");\n      hideLocationModeParts();\n      travelTipBox.classList.add(\"hidden\");\n      travelTipBox.innerHTML = \"\";\n      if (!needsLocationInput()) { hideStep(\"step6\"); renderFinalResultsWithoutLocation(); return; }\n      showStep(\"step6\", \"none\");\n      if (state.outsideNetherlands === \"yes\") {\n        title.textContent = t(\"trp-title-stay-nl\") || \"Waar verwacht je in Nederland te verblijven?\";\n        modeChoices.innerHTML = `\n          <button class=\"choice-btn\" type=\"button\" data-locationmode=\"known\">${escapeHtml(t(\"trp-btn-known-stay\") || \"Ik weet al waar ik verblijf\")}<\/button>\n          <button class=\"choice-btn\" type=\"button\" data-locationmode=\"unknown\">${escapeHtml(t(\"trp-btn-unknown-stay\") || \"Ik weet het nog niet precies\")}<\/button>\n          <button class=\"choice-btn\" type=\"button\" data-locationmode=\"airport\">${escapeHtml(t(\"trp-btn-fly-to-nl\") || \"Ik vlieg naar Nederland\")}<\/button>\n        `;\n        modeChoices.classList.remove(\"hidden\");\n      } else {\n        title.textContent = t(\"trp-title-address-nl\") || \"Wat is jouw adres of woonplaats?\";\n        modeChoices.classList.add(\"hidden\");\n        state.locationMode = \"known\";\n        document.getElementById(\"knownLocationWrap\").classList.remove(\"hidden\");\n      }\n      applyLocationModeUI();\n      fillLocationInputsFromState();\n    }\n\n    function renderFinalResultsWithoutLocation() {\n      if (state.sessionType === \"group\") {\n        document.getElementById(\"mainResultBox\").classList.add(\"hidden\");\n        document.getElementById(\"mainResultBox\").innerHTML = \"\";\n        document.getElementById(\"resultsSection\").classList.add(\"hidden\");\n        document.getElementById(\"tableActionArea\").innerHTML = \"\";\n        document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n        clearDirections(); clearMarkers(); return;\n      }\n      if (state.persons >= 4) { renderLargeGroupWithoutLocationInput(); return; }\n      rebuildPricingData();\n      renderPrivateUpTo3WithoutLocation();\n      showRelevantMarkersWithoutRoutes();\n    }\n\n    function renderPrivateUpTo3WithoutLocation() {\n      const box = document.getElementById(\"mainResultBox\");\n      const resultsSection = document.getElementById(\"resultsSection\");\n      box.classList.add(\"hidden\"); box.innerHTML = \"\";\n      currentlyAvailableGuideNames = [];\n      syncMapModeUI();\n      document.getElementById(\"results\").innerHTML = buildStaticResultsTables(state.placeType);\n      resultsSection.classList.remove(\"hidden\");\n      const visibleGuides = (state.placeType === \"own\" || state.placeType === \"compare\") ? destinations : [];\n      const visibleLocations = (state.placeType === \"location\" || state.placeType === \"compare\") ? locations : [];\n      renderActionAreas({ guides: visibleGuides, locations: visibleLocations });\n    }\n\n    function buildStaticResultsTables(placeType) {\n      let html = \"\";\n      const thGuide = t(\"trp-label-guide\") || \"Begeleider\";\n      const thCity = t(\"trp-label-city\") || \"Plaats\";\n      const thTotal = t(\"trp-label-total\") || \"Totaal\";\n      const thOurLocations = t(\"trp-label-our-locations\") || \"Onze locaties\";\n      if (placeType === \"own\" || placeType === \"compare\") {\n        html += '<div class=\"table-container\"><table>';\n        html += `<tr style='background:#000428;color:white;'><th>${escapeHtml(thGuide)}<\/th><th>${escapeHtml(thCity)}<\/th><th>${escapeHtml(thTotal)}<\/th><\/tr>`;\n        destinations.forEach(dest => { html += `<tr><td>${escapeHtml(dest.name)}<\/td><td>${escapeHtml(dest.city)}<\/td><td>\u20ac${escapeHtml(dest.addition)}<\/td><\/tr>`; });\n        html += \"<\/table><\/div>\";\n      }\n      if (placeType === \"location\" || placeType === \"compare\") {\n        html += '<div class=\"table-container\"><table>';\n        html += `<tr style='background:#b20091;color:white;'><th>${escapeHtml(thOurLocations)}<\/th><th>${escapeHtml(thCity)}<\/th><th>${escapeHtml(thTotal)}<\/th><\/tr>`;\n        locations.forEach(loc => { html += `<tr><td>${escapeHtml(loc.name)}<\/td><td>${escapeHtml(loc.city)}<\/td><td>\u20ac${escapeHtml(loc.price)}<\/td><\/tr>`; });\n        html += \"<\/table><\/div>\";\n      }\n      return html;\n    }\n\n    function renderLargeGroupWithoutLocationInput() {\n      const box = document.getElementById(\"mainResultBox\");\n      box.classList.remove(\"hidden\");\n      document.getElementById(\"resultsSection\").classList.add(\"hidden\");\n      document.getElementById(\"tableActionArea\").innerHTML = \"\";\n      document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n      currentlyAvailableGuideNames = [];\n      syncMapModeUI();\n      const personsText = getPersonsLabel(state.persons);\n      let html = `<h3 id=\"groep-vanaf-4-personen\">Groep vanaf 4 personen<\/h3>`;\n      html += `<div class=\"summary-grid\">\n        <div class=\"summary-item\"><strong>Aantal personen<\/strong>${escapeHtml(personsText)}<\/div>\n        <div class=\"summary-item\"><strong>Taal<\/strong>${escapeHtml(getLanguageLabel(state.language))}<\/div>\n        <div class=\"summary-item\"><strong>Voorkeur<\/strong>${escapeHtml(getPlaceLabel(state.placeType))}<\/div>\n      <\/div>`;\n      if (state.placeType === \"location\") {\n        html += `<p style=\"margin-top:16px; text-align:center;\"><strong>Prijs:<\/strong> \u20ac650 per persoon.<\/p>`;\n        html += `<p style=\"text-align:center;\">Dit is inclusief Triptherapie locatie, standaard \u00e9\u00e9n overnachting, eten en drinken.<\/p>`;\n        html += `<p style=\"text-align:center;\">Deze optie is geschikt voor groepen van 4 tot en met 6 personen die liever op een vaste locatie werken.<\/p>`;\n        html += `<p style=\"text-align:center;\"><a href=\"${escapeHtml(trpHref(\"link-contact\"))}\" target=\"_blank\" rel=\"noopener\">Neem contact op voor maatwerk of meerdere sessies<\/a><\/p>`;\n      } else if (state.placeType === \"compare\") {\n        html += `<p style=\"margin-top:16px; text-align:center;\"><strong>Op een Triptherapie locatie:<\/strong> \u20ac650 per persoon, inclusief standaard \u00e9\u00e9n overnachting, eten en drinken.<\/p>`;\n        html += `<p style=\"text-align:center;\"><strong>Op een eigen locatie:<\/strong> \u20ac550 per persoon, plus de reiskosten van twee begeleiders. Voor die optie is een startlocatie in Nederland nodig, zodat de twee best passende begeleiders berekend kunnen worden.<\/p>`;\n      }\n      box.innerHTML = html;\n      showRelevantMarkersWithoutRoutes();\n    }\n\n    function initMap() {\n      setTranslateableUILabels();\n      map = new google.maps.Map(document.getElementById(\"map\"), {\n        center: { lat: 52.1326, lng: 5.2913 }, zoom: 7,\n        mapTypeControl: false, streetViewControl: false,\n        styles: [{ featureType: \"poi\", elementType: \"all\", stylers: [{ visibility: \"off\" }] }]\n      });\n      directionsService = new google.maps.DirectionsService();\n      geocoder = new google.maps.Geocoder();\n      markerBounds = new google.maps.LatLngBounds();\n      overlay = new google.maps.OverlayView();\n      overlay.onAdd = function() {}; overlay.draw = function() {}; overlay.onRemove = function() {};\n      overlay.setMap(map);\n      setInterval(alternateMarkerZIndex, 5000);\n      applyStateFromUrl();\n      renderFromState({ scroll: true, autoRunCalculation: true }).finally(() => { showRelevantMarkersWithoutRoutes(); });\n    }\n\n    function hexToRgb(hex) {\n      hex = (hex || \"\").replace(\/^#\/, \"\");\n      if (hex.length !== 6) return null;\n      const bigint = parseInt(hex, 16);\n      return { r: (bigint >> 16) & 255, g: (bigint >> 8) & 255, b: bigint & 255 };\n    }\n\n    function getAdjustedSVGIcon(markerLike, markerType) {\n      const color = markerLike.customColor || \"#8B0000\";\n      const rgb = hexToRgb(color);\n      if (!rgb) return null;\n      let width = 150, height = 28, radius = 5;\n      if (markerType === \"guide\") { width = 60; height = 20; radius = 3; }\n      const rgbaColor = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`;\n      const svg = `<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"0 0 ${width} ${height}\"><rect x=\"0\" y=\"0\" width=\"${width}\" height=\"${height}\" rx=\"${radius}\" ry=\"${radius}\" fill=\"${rgbaColor}\"\/><\/svg>`;\n      return {\n        url: \"data:image\/svg+xml;charset=UTF-8,\" + encodeURIComponent(svg),\n        scaledSize: new google.maps.Size(width, height),\n        anchor: new google.maps.Point(width \/ 2, height \/ 2),\n        labelOrigin: new google.maps.Point(width \/ 2, height \/ 2)\n      };\n    }\n\n    function addOriginMarker(originAddress) {\n      geocoder.geocode({ address: originAddress }, function(results, status) {\n        if (status === google.maps.GeocoderStatus.OK) {\n          const pos = results[0].geometry.location;\n          const marker = new google.maps.Marker({ map, position: pos, title: t(\"trp-label-start-location\") || \"Startlocatie\", icon: \"http:\/\/maps.google.com\/mapfiles\/ms\/icons\/blue-dot.png\" });\n          marker.isRotatingMarker = false;\n          markers.push(marker);\n          markerBounds.extend(marker.getPosition());\n        }\n      });\n    }\n\n    function addNamedMarker(item, origin) {\n      const address = item.address + \", \" + item.city + \", Nederland\";\n      const markerType = locations.some(loc => loc.name === item.name) ? \"location\" : \"guide\";\n      geocoder.geocode({ address }, function(results, status) {\n        if (status === google.maps.GeocoderStatus.OK) {\n          const pos = results[0].geometry.location;\n          const marker = new google.maps.Marker({\n            map, position: pos, title: item.name,\n            icon: getAdjustedSVGIcon({ customColor: item.color }, markerType),\n            label: { text: item.name, color: \"white\", fontSize: markerType === \"guide\" ? \"10px\" : \"11px\", fontWeight: \"bold\" }\n          });\n          marker.customColor = item.color;\n          marker.isRotatingMarker = true;\n          markers.push(marker);\n          markerBounds.extend(marker.getPosition());\n          marker.addListener(\"click\", function() { if (!origin) return; drawRoute(origin, address, item.color); });\n          if (origin) drawRoute(origin, address, item.color);\n        }\n      });\n    }\n\n    function drawRoute(originAddress, destAddress, color) {\n      geocoder.geocode({ address: originAddress }, function(resultsOrigin, statusOrigin) {\n        if (statusOrigin !== google.maps.GeocoderStatus.OK) return;\n        const originLocation = resultsOrigin[0].geometry.location;\n        geocoder.geocode({ address: destAddress }, function(resultsDest, statusDest) {\n          if (statusDest !== google.maps.GeocoderStatus.OK) return;\n          const destLocation = resultsDest[0].geometry.location;\n          directionsService.route({ origin: originLocation, destination: destLocation, travelMode: google.maps.TravelMode.DRIVING }, function(response, status) {\n            if (status === \"OK\") {\n              const renderer = new google.maps.DirectionsRenderer({ suppressMarkers: true, polylineOptions: { strokeColor: color, strokeOpacity: 0.5, strokeWeight: 5 } });\n              renderer.setMap(map); renderer.setDirections(response); directionsRenderers.push(renderer);\n            }\n          });\n        });\n      });\n    }\n\n    function getMapItemsForCurrentState() {\n      rebuildPricingData(); syncMapModeUI();\n      const mapMode = getCurrentMapMode();\n      if (mapMode === \"locations\") return locations;\n      if (state.startLocation && currentlyAvailableGuideNames.length > 0)\n        return destinations.filter(item => currentlyAvailableGuideNames.includes(item.name));\n      if (state.sessionType === \"private\" && state.persons >= 4 && state.placeType === \"own\" && state.language === \"de\")\n        return [...baseDestinations];\n      return destinations.length ? destinations : baseDestinations;\n    }\n\n    function showRelevantMarkersWithoutRoutes() {\n      if (!map || !geocoder) return;\n      syncMapModeUI(); clearMarkers(); clearDirections();\n      markerBounds = new google.maps.LatLngBounds();\n      const items = getMapItemsForCurrentState();\n      items.forEach(item => addNamedMarker(item, null));\n      setTimeout(function() {\n        if (!markerBounds.isEmpty()) map.fitBounds(markerBounds);\n        else { map.setCenter({ lat: 52.1326, lng: 5.2913 }); map.setZoom(7); }\n      }, 700);\n    }\n\n    function alternateMarkerZIndex() {\n      if (!overlay || !overlay.getProjection()) return;\n      const rotatingMarkers = markers.filter(m => m.isRotatingMarker);\n      const n = rotatingMarkers.length;\n      if (n === 0) return;\n      const proj = overlay.getProjection();\n      const positions = rotatingMarkers.map(m => proj.fromLatLngToDivPixel(m.getPosition()));\n      const overlappingIndices = [];\n      for (let i = 0; i < n; i++) {\n        for (let j = i + 1; j < n; j++) {\n          const dx = positions[i].x - positions[j].x, dy = positions[i].y - positions[j].y;\n          const d = Math.sqrt(dx * dx + dy * dy);\n          if (d < 40) { if (!overlappingIndices.includes(i)) overlappingIndices.push(i); if (!overlappingIndices.includes(j)) overlappingIndices.push(j); }\n        }\n      }\n      for (let i = 0; i < n; i++) { if (!overlappingIndices.includes(i)) rotatingMarkers[i].setZIndex(100); }\n      if (overlappingIndices.length > 0) {\n        const topPos = alternateTick % overlappingIndices.length;\n        overlappingIndices.forEach((markerIndex, posIndex) => { rotatingMarkers[markerIndex].setZIndex(posIndex === topPos ? 200 : -1); });\n        alternateTick++;\n      }\n    }\n\n    function isAddressInNetherlands(geocodeResult) {\n      if (!geocodeResult || !geocodeResult.address_components) return false;\n      const countryComponent = geocodeResult.address_components.find(c => c.types && c.types.includes(\"country\"));\n      if (!countryComponent) return false;\n      const countryLong = (countryComponent.long_name || \"\").toLowerCase();\n      const countryShort = (countryComponent.short_name || \"\").toLowerCase();\n      return countryLong === \"netherlands\" || countryLong === \"nederland\" || countryShort === \"nl\";\n    }\n\n    function geocodeDutchPromise(address) {\n      return new Promise((resolve, reject) => {\n        const attempts = [];\n        const trimmed = String(address || \"\").trim();\n        if (!trimmed) { reject(\"ZERO_RESULTS\"); return; }\n        attempts.push(trimmed);\n        if (!\/nederland|netherlands\/i.test(trimmed)) attempts.push(trimmed + \", Nederland\");\n        let index = 0;\n        function tryNext() {\n          if (index >= attempts.length) { reject(\"ZERO_RESULTS\"); return; }\n          geocoder.geocode({ address: attempts[index], componentRestrictions: { country: \"NL\" } }, function(results, status) {\n            if (status === google.maps.GeocoderStatus.OK && results && results[0]) resolve(results[0]);\n            else { index++; tryNext(); }\n          });\n        }\n        tryNext();\n      });\n    }\n\n    function distanceMatrixPromise(origin, destinationsList) {\n      return new Promise((resolve, reject) => {\n        const service = new google.maps.DistanceMatrixService();\n        service.getDistanceMatrix({ origins: [origin], destinations: destinationsList, travelMode: google.maps.TravelMode.DRIVING, unitSystem: google.maps.UnitSystem.METRIC }, function(response, status) {\n          if (status === google.maps.DistanceMatrixStatus.OK) resolve(response);\n          else reject(status);\n        });\n      });\n    }\n\n    function getGuideMaxTime(name) {\n      if (name === \"Marcel\") return 120;\n      if ([\"Reineke\", \"Janneke\", \"Gijs\", \"Ronald\"].includes(name)) return 45;\n      if (name === \"Sascha\") return 60;\n      return 60;\n    }\n\n    function calculateTravelCost(oneWayKm, travelTimeMinutes) {\n      let travelCostCalculated = Math.round(oneWayKm);\n      if (travelTimeMinutes > 45) travelCostCalculated += Math.ceil(travelTimeMinutes - 45);\n      return travelCostCalculated;\n    }\n\n    async function runLocationCalculation(origin, options = {}) {\n      const scrollAfter = options.scrollAfter !== false;\n      state.startLocation = origin;\n      updateUrlFromState();\n      rebuildPricingData();\n      syncMapModeUI();\n      const resultBox = document.getElementById(\"mainResultBox\");\n      const resultsSection = document.getElementById(\"resultsSection\");\n      if (!origin) {\n        resultBox.innerHTML = `<p>${escapeHtml(t(\"trp-error-enter-location\") || \"Vul een locatie in om de berekening uit te voeren.\")}<\/p>`;\n        resultBox.classList.remove(\"hidden\");\n        if (scrollAfter) scrollToElement(resultBox);\n        return;\n      }\n      try {\n        const originResult = await geocodeDutchPromise(origin);\n        if (!isAddressInNetherlands(originResult)) {\n          resultBox.innerHTML = `<p>${escapeHtml(t(\"trp-error-only-netherlands\") || \"Gebruik voor deze berekening een locatie in Nederland. Bij sessies op een eigen locatie moet die locatie in Nederland liggen.\")}<\/p>`;\n          resultBox.classList.remove(\"hidden\");\n          document.getElementById(\"results\").innerHTML = \"\";\n          resultsSection.classList.add(\"hidden\");\n          document.getElementById(\"tableActionArea\").innerHTML = \"\";\n          document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n          currentlyAvailableGuideNames = [];\n          clearDirections(); showRelevantMarkersWithoutRoutes();\n          if (scrollAfter) scrollToElement(resultBox);\n          return;\n        }\n        if (state.persons >= 4) await renderLargeGroupWithLocation(origin, { scrollAfter });\n        else await renderPrivateUpTo3WithLocation(origin, { scrollAfter });\n      } catch (error) {\n        resultBox.innerHTML = `<p>${escapeHtml(t(\"trp-error-location-not-found\") || \"De ingevoerde locatie kon niet goed worden gevonden. Probeer een plaatsnaam, postcode of een duidelijk adres in Nederland.\")}<\/p>`;\n        resultBox.classList.remove(\"hidden\");\n        document.getElementById(\"results\").innerHTML = \"\";\n        resultsSection.classList.add(\"hidden\");\n        document.getElementById(\"tableActionArea\").innerHTML = \"\";\n        document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n        currentlyAvailableGuideNames = [];\n        clearDirections(); showRelevantMarkersWithoutRoutes();\n        if (scrollAfter) scrollToElement(resultBox);\n      }\n    }\n\n    async function renderPrivateUpTo3WithLocation(origin, options = {}) {\n      const scrollAfter = options.scrollAfter !== false;\n      const resultBox = document.getElementById(\"mainResultBox\");\n      const resultsSection = document.getElementById(\"resultsSection\");\n      rebuildPricingData(); syncMapModeUI();\n      const guideAddresses = destinations.map(d => d.address + \", \" + d.city + \", Nederland\");\n      const locationAddresses = locations.map(l => l.address + \", \" + l.city + \", Nederland\");\n      const [guidesResponse, locationsResponse] = await Promise.all([\n        distanceMatrixPromise(origin, guideAddresses),\n        distanceMatrixPromise(origin, locationAddresses)\n      ]);\n      const guideResultsArray = [];\n      const guideElements = guidesResponse.rows[0].elements;\n      for (let i = 0; i < guideElements.length; i++) {\n        const element = guideElements[i], item = destinations[i];\n        if (element.status === \"OK\") {\n          const oneWayKm = element.distance.value \/ 1000;\n          const oneWayDisplay = Math.round(oneWayKm);\n          const travelTimeMinutes = element.duration.value \/ 60;\n          const travelCostCalculated = calculateTravelCost(oneWayKm, travelTimeMinutes);\n          const maxTime = getGuideMaxTime(item.name);\n          if (travelTimeMinutes <= maxTime) {\n            guideResultsArray.push({ ...item, distance: oneWayDisplay, travelCost: travelCostCalculated, totalPrice: travelCostCalculated + item.addition, travelTime: travelTimeMinutes, strike: false, orange: false, group: 1, sortPrice: travelCostCalculated + item.addition });\n          } else if (travelTimeMinutes <= maxTime + 15) {\n            guideResultsArray.push({ ...item, distance: oneWayDisplay, travelCost: travelCostCalculated, totalPrice: travelCostCalculated + item.addition, travelTime: travelTimeMinutes, strike: false, orange: true, group: 2, sortPrice: travelCostCalculated + item.addition });\n          } else {\n            guideResultsArray.push({ ...item, distance: \"-\", travelCost: \"-\", totalPrice: \"-\", travelTime: travelTimeMinutes, strike: true, orange: false, group: 3, sortPrice: Infinity });\n          }\n        } else {\n          guideResultsArray.push({ ...item, distance: \"-\", travelCost: \"-\", totalPrice: \"-\", travelTime: \"-\", strike: true, orange: false, group: 3, sortPrice: Infinity });\n        }\n      }\n      guideResultsArray.sort((a, b) => (a.group !== b.group) ? (a.group - b.group) : (a.sortPrice - b.sortPrice));\n      const locationResultsArray = [];\n      const locationElements = locationsResponse.rows[0].elements;\n      for (let i = 0; i < locationElements.length; i++) {\n        const element = locationElements[i], item = locations[i];\n        if (element.status === \"OK\") {\n          locationResultsArray.push({ ...item, distance: Math.round(element.distance.value \/ 1000), travelTime: element.duration.value \/ 60, totalPrice: item.price, sortPrice: item.price });\n        }\n      }\n      locationResultsArray.sort((a, b) => a.sortPrice - b.sortPrice);\n      currentlyAvailableGuideNames = guideResultsArray.filter(item => !item.strike).map(item => item.name);\n      resultBox.classList.add(\"hidden\"); resultBox.innerHTML = \"\";\n      let html = \"\";\n      let actionGuides = [], actionLocations = [];\n      const thGuide = t(\"trp-label-guide\") || \"Begeleider\";\n      const thDistance = t(\"trp-label-distance\") || \"Afstand\";\n      const thTravel = t(\"trp-label-travel\") || \"Reis\";\n      const thTravelTime = t(\"trp-label-travel-time\") || \"Reistijd\";\n      const thTotal = t(\"trp-label-total\") || \"Totaal\";\n      const thOurLocations = t(\"trp-label-our-locations\") || \"Onze locaties\";\n      const thCity = t(\"trp-label-city\") || \"Plaats\";\n      if (state.placeType === \"own\" || state.placeType === \"compare\") {\n        html += '<div class=\"table-container\"><table>';\n        html += `<tr style='background:#000428;color:white;'><th>${escapeHtml(thGuide)}<\/th><th>${escapeHtml(thDistance)}<\/th><th>${escapeHtml(thTravel)}<\/th><th>${escapeHtml(thTravelTime)}<\/th><th>${escapeHtml(thTotal)}<\/th><\/tr>`;\n        guideResultsArray.forEach(item => {\n          html += item.strike ? \"<tr class='strike'>\" : (item.orange ? \"<tr class='orange-row'>\" : \"<tr>\");\n          html += `<td>${escapeHtml(item.name)}<\/td>`;\n          html += `<td>${item.distance}${item.distance !== \"-\" ? \" km\" : \"\"}<\/td>`;\n          html += `<td>${item.strike ? \"\" : (item.travelCost !== \"-\" ? \"\u20ac\" + item.travelCost : item.travelCost)}<\/td>`;\n          html += `<td>${item.travelTime !== \"-\" ? Math.round(item.travelTime) + \" min\" : item.travelTime}<\/td>`;\n          html += `<td>${item.strike ? \"\" : \"\u20ac\" + item.totalPrice}<\/td><\/tr>`;\n        });\n        html += \"<\/table><\/div>\";\n        actionGuides = guideResultsArray.filter(item => !item.strike);\n      }\n      if (state.placeType === \"location\" || state.placeType === \"compare\") {\n        html += '<div class=\"table-container\"><table>';\n        html += `<tr style='background:#b20091;color:white;'><th>${escapeHtml(thOurLocations)}<\/th><th>${escapeHtml(thCity)}<\/th><th>${escapeHtml(thDistance)}<\/th><th>${escapeHtml(thTravelTime)}<\/th><th>${escapeHtml(thTotal)}<\/th><\/tr>`;\n        locationResultsArray.forEach(item => {\n          html += `<tr><td>${escapeHtml(item.name)}<\/td><td>${escapeHtml(item.city)}<\/td><td>${item.distance} km<\/td><td>${Math.round(item.travelTime)} min<\/td><td>\u20ac${item.totalPrice}<\/td><\/tr>`;\n        });\n        html += \"<\/table><\/div>\";\n        actionLocations = locationResultsArray;\n      }\n      document.getElementById(\"results\").innerHTML = html;\n      resultsSection.classList.remove(\"hidden\");\n      renderActionAreas({ guides: actionGuides, locations: actionLocations });\n      clearDirections(); clearMarkers();\n      markerBounds = new google.maps.LatLngBounds();\n      addOriginMarker(origin);\n      const mapMode = getCurrentMapMode();\n      const mapItems = mapMode === \"locations\" ? locations : destinations.filter(item => currentlyAvailableGuideNames.includes(item.name));\n      mapItems.forEach(item => addNamedMarker(item, origin));\n      setTimeout(function() { if (!markerBounds.isEmpty()) map.fitBounds(markerBounds); }, 1500);\n      if (scrollAfter) scrollToElement(resultsSection);\n    }\n\n    async function renderLargeGroupWithLocation(origin, options = {}) {\n      const scrollAfter = options.scrollAfter !== false;\n      const resultBox = document.getElementById(\"mainResultBox\");\n      const resultsSection = document.getElementById(\"resultsSection\");\n      resultsSection.classList.add(\"hidden\");\n      document.getElementById(\"results\").innerHTML = \"\";\n      document.getElementById(\"tableActionArea\").innerHTML = \"\";\n      document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n      syncMapModeUI();\n      if (state.placeType === \"location\") {\n        const total = state.persons * 650;\n        let html = `<h3 id=\"groep-vanaf-4-personen-op-een-triptherapie-locatie\">Groep vanaf 4 personen op een Triptherapie locatie<\/h3>`;\n        html += `<div class=\"summary-grid\">\n          <div class=\"summary-item\"><strong>Aantal personen<\/strong>${escapeHtml(getPersonsLabel(state.persons))}<\/div>\n          <div class=\"summary-item\"><strong>Taal<\/strong>${escapeHtml(getLanguageLabel(state.language))}<\/div>\n          <div class=\"summary-item\"><strong>Prijs per persoon<\/strong>\u20ac650<\/div>\n          <div class=\"summary-item\"><strong>Totaal indicatie<\/strong>\u20ac${escapeHtml(total)}<\/div>\n        <\/div>`;\n        html += `<p style=\"margin-top:16px; text-align:center;\">Deze prijs is inclusief Triptherapie locatie, standaard \u00e9\u00e9n overnachting, eten en drinken.<\/p>`;\n        html += `<p style=\"text-align:center;\">Wanneer je meerdere sessies inclusief accommodatie via Triptherapie wilt plannen, dan is maatwerk nodig. Gebruik daarvoor de <a href=\"${escapeHtml(trpHref(\"link-contact\"))}\" target=\"_blank\" rel=\"noopener\">contactpagina<\/a>.<\/p>`;\n        resultBox.innerHTML = html; resultBox.classList.remove(\"hidden\");\n        currentlyAvailableGuideNames = [];\n        showRelevantMarkersWithOrigin(origin, \"locations\");\n        renderActionAreas({ guides: [], locations: locations });\n        if (scrollAfter) scrollToElement(resultBox);\n        return;\n      }\n      const candidateGuides = [...baseDestinations];\n      const guideAddresses = candidateGuides.map(d => d.address + \", \" + d.city + \", Nederland\");\n      const guidesResponse = await distanceMatrixPromise(origin, guideAddresses);\n      const guideElements = guidesResponse.rows[0].elements;\n      const validGuides = [];\n      for (let i = 0; i < guideElements.length; i++) {\n        const element = guideElements[i], item = candidateGuides[i];\n        if (element.status !== \"OK\") continue;\n        const oneWayKm = element.distance.value \/ 1000;\n        const travelTimeMinutes = element.duration.value \/ 60;\n        const travelCostCalculated = calculateTravelCost(oneWayKm, travelTimeMinutes);\n        validGuides.push({ ...item, distance: Math.round(oneWayKm), travelTime: travelTimeMinutes, travelCost: travelCostCalculated, isGerman: item.languages.includes(\"de\") });\n      }\n      if (validGuides.length < 2) {\n        resultBox.innerHTML = `<p>Er konden niet genoeg begeleiders worden berekend voor deze locatie. Neem contact op via de <a href=\"${escapeHtml(trpHref(\"link-contact\"))}\" target=\"_blank\" rel=\"noopener\">contactpagina<\/a>.<\/p>`;\n        resultBox.classList.remove(\"hidden\"); currentlyAvailableGuideNames = [];\n        showRelevantMarkersWithOrigin(origin, \"guides\", []); renderActionAreas({ guides: [], locations: [] });\n        if (scrollAfter) scrollToElement(resultBox); return;\n      }\n      let selectedTwo = null;\n      if (state.language === \"de\") {\n        let bestCombo = null;\n        for (let i = 0; i < validGuides.length; i++) {\n          for (let j = i + 1; j < validGuides.length; j++) {\n            const combo = [validGuides[i], validGuides[j]];\n            if (!combo.some(g => g.isGerman)) continue;\n            const comboCost = combo[0].travelCost + combo[1].travelCost;\n            if (!bestCombo || comboCost < bestCombo.totalTravelCost) bestCombo = { guides: combo, totalTravelCost: comboCost };\n          }\n        }\n        if (bestCombo) selectedTwo = bestCombo.guides;\n      } else {\n        validGuides.sort((a, b) => a.travelCost - b.travelCost);\n        selectedTwo = [validGuides[0], validGuides[1]];\n      }\n      if (!selectedTwo || selectedTwo.length < 2) {\n        resultBox.innerHTML = `<p>Er kon geen geldige combinatie van twee begeleiders worden gevonden. Neem contact op via de <a href=\"${escapeHtml(trpHref(\"link-contact\"))}\" target=\"_blank\" rel=\"noopener\">contactpagina<\/a>.<\/p>`;\n        resultBox.classList.remove(\"hidden\"); currentlyAvailableGuideNames = [];\n        showRelevantMarkersWithOrigin(origin, \"guides\", []); renderActionAreas({ guides: [], locations: [] });\n        if (scrollAfter) scrollToElement(resultBox); return;\n      }\n      currentlyAvailableGuideNames = selectedTwo.map(item => item.name);\n      const baseTotal = state.persons * 550;\n      const travelTotal = selectedTwo[0].travelCost + selectedTwo[1].travelCost;\n      const grandTotal = baseTotal + travelTotal;\n      let html = `<h3 id=\"groep-vanaf-4-personen-op-een-eigen-locatie\">Groep vanaf 4 personen op een eigen locatie<\/h3>`;\n      html += `<div class=\"summary-grid\">\n        <div class=\"summary-item\"><strong>Aantal personen<\/strong>${escapeHtml(getPersonsLabel(state.persons))}<\/div>\n        <div class=\"summary-item\"><strong>Taal<\/strong>${escapeHtml(getLanguageLabel(state.language))}<\/div>\n        <div class=\"summary-item\"><strong>Prijs per persoon<\/strong>\u20ac550<\/div>\n        <div class=\"summary-item\"><strong>Basistotaal<\/strong>\u20ac${escapeHtml(baseTotal)}<\/div>\n      <\/div>`;\n      html += `<p style=\"margin-top:16px; text-align:center;\">Voor groepen vanaf 4 personen op een eigen locatie rekent de tool met \u20ac550 per persoon, plus de reiskosten van twee begeleiders.<\/p>`;\n      if (state.language === \"de\") html += `<p style=\"text-align:center;\">Bij een Duitse sessie hoeft bij deze optie minimaal \u00e9\u00e9n van de twee begeleiders Duits te kunnen begeleiden. Op basis van jouw locatie is hieronder de voordeligste geldige combinatie berekend.<\/p>`;\n      html += `<div class=\"table-container\" style=\"margin-top:16px;\"><table>\n        <tr style=\"background:#000428;color:white;\">\n          <th>${escapeHtml(t(\"trp-label-guide\") || \"Begeleider\")}<\/th>\n          <th>${escapeHtml(t(\"trp-label-distance\") || \"Afstand\")}<\/th>\n          <th>${escapeHtml(t(\"trp-label-travel\") || \"Reis\")}<\/th>\n          <th>${escapeHtml(t(\"trp-label-travel-time\") || \"Reistijd\")}<\/th>\n        <\/tr>\n        <tr><td>${escapeHtml(selectedTwo[0].name)}<\/td><td>${selectedTwo[0].distance} km<\/td><td>\u20ac${selectedTwo[0].travelCost}<\/td><td>${Math.round(selectedTwo[0].travelTime)} min<\/td><\/tr>\n        <tr><td>${escapeHtml(selectedTwo[1].name)}<\/td><td>${selectedTwo[1].distance} km<\/td><td>\u20ac${selectedTwo[1].travelCost}<\/td><td>${Math.round(selectedTwo[1].travelTime)} min<\/td><\/tr>\n      <\/table><\/div>`;\n      html += `<p style=\"text-align:center;\"><strong>Totale reiskosten twee begeleiders:<\/strong> \u20ac${travelTotal}<\/p>`;\n      html += `<p style=\"text-align:center;\"><strong>Totaalindicatie groepssessie:<\/strong> \u20ac${grandTotal}<\/p>`;\n      html += `<p style=\"text-align:center;\">Deze optie moet handmatig worden ingepland. Neem hiervoor contact op via de <a href=\"${escapeHtml(trpHref(\"link-contact\"))}\" target=\"_blank\" rel=\"noopener\">contactpagina<\/a>.<\/p>`;\n      if (state.outsideNetherlands === \"yes\") html += `<p class=\"small-text\" style=\"text-align:center;\">Voor deelnemers uit het buitenland geldt dat de eigen accommodatie in Nederland moet liggen. Bij voorkeur is dat een volledige woning, Airbnb of andere priv\u00e9 accommodatie en geen gedeelde accommodatie.<\/p>`;\n      resultBox.innerHTML = html; resultBox.classList.remove(\"hidden\");\n      showSelectedGuidesWithOrigin(origin, selectedTwo);\n      renderActionAreas({ guides: selectedTwo, locations: [] });\n      if (scrollAfter) scrollToElement(resultBox);\n    }\n\n    function showRelevantMarkersWithOrigin(origin, mode, guideFilter = null) {\n      syncMapModeUI(); clearDirections(); clearMarkers();\n      markerBounds = new google.maps.LatLngBounds();\n      addOriginMarker(origin);\n      let items = [];\n      if (mode === \"locations\") {\n        items = locations;\n      } else {\n        let guideItems = destinations.length ? destinations : baseDestinations;\n        if (Array.isArray(guideFilter)) guideItems = guideItems.filter(item => guideFilter.includes(item.name));\n        items = guideItems;\n      }\n      items.forEach(item => addNamedMarker(item, origin));\n      setTimeout(function() { if (!markerBounds.isEmpty()) map.fitBounds(markerBounds); }, 1500);\n    }\n\n    function showSelectedGuidesWithOrigin(origin, selectedGuides) {\n      syncMapModeUI(); clearDirections(); clearMarkers();\n      markerBounds = new google.maps.LatLngBounds();\n      addOriginMarker(origin);\n      selectedGuides.forEach(item => addNamedMarker(item, origin));\n      setTimeout(function() { if (!markerBounds.isEmpty()) map.fitBounds(markerBounds); }, 1500);\n    }\n\n    function setQueryParam(params, key, value) {\n      if (value === undefined || value === null || value === \"\") params.delete(key);\n      else params.set(key, value);\n    }\n\n    function updateUrlFromState() {\n      const params = new URLSearchParams(window.location.search);\n      setQueryParam(params, URL_KEYS.intake, URL_VALUE_MAP.intake[state.intakeStatus] || \"\");\n      setQueryParam(params, URL_KEYS.outside, URL_VALUE_MAP.outside[state.outsideNetherlands] || \"\");\n      setQueryParam(params, URL_KEYS.session, URL_VALUE_MAP.session[state.sessionType] || \"\");\n      setQueryParam(params, URL_KEYS.persons, state.persons ? String(state.persons) : \"\");\n      setQueryParam(params, URL_KEYS.language, URL_VALUE_MAP.language[state.language] || \"\");\n      setQueryParam(params, URL_KEYS.place, URL_VALUE_MAP.place[state.placeType] || \"\");\n      const effectiveLocMode = state.outsideNetherlands === \"no\" && needsLocationInput() ? \"known\" : state.locationMode;\n      setQueryParam(params, URL_KEYS.locationMode, URL_VALUE_MAP.locationMode[effectiveLocMode] || \"\");\n      setQueryParam(params, URL_KEYS.startLocation, (state.startLocation || \"\").trim());\n      const currentMapMode = getCurrentMapMode();\n      setQueryParam(params, URL_KEYS.mapMode, URL_VALUE_MAP.mapMode[currentMapMode] || \"\");\n      const queryString = params.toString();\n      const newUrl = window.location.pathname + (queryString ? \"?\" + queryString : \"\") + window.location.hash;\n      window.history.replaceState({}, \"\", newUrl);\n    }\n\n    function applyStateFromUrl() {\n      const params = new URLSearchParams(window.location.search);\n      const intakeParam = (params.get(URL_KEYS.intake) || \"\").toLowerCase();\n      const outsideParam = (params.get(URL_KEYS.outside) || \"\").toLowerCase();\n      const sessionParam = (params.get(URL_KEYS.session) || \"\").toLowerCase();\n      const personsParam = (params.get(URL_KEYS.persons) || \"\").trim();\n      const languageParam = (params.get(URL_KEYS.language) || \"\").toLowerCase();\n      const placeParam = (params.get(URL_KEYS.place) || \"\").toLowerCase();\n      const locationModeParam = (params.get(URL_KEYS.locationMode) || \"\").toLowerCase();\n      const startLocationParam = (params.get(URL_KEYS.startLocation) || \"\").trim();\n      const mapModeParam = (params.get(URL_KEYS.mapMode) || \"\").toLowerCase();\n      state.intakeStatus = URL_REVERSE_MAP.intake[intakeParam] || \"\";\n      state.outsideNetherlands = URL_REVERSE_MAP.outside[outsideParam] || \"\";\n      state.sessionType = URL_REVERSE_MAP.session[sessionParam] || \"\";\n      state.persons = \/^[1-6]$\/.test(personsParam) ? parseInt(personsParam, 10) : null;\n      state.language = URL_REVERSE_MAP.language[languageParam] || \"\";\n      state.placeType = URL_REVERSE_MAP.place[placeParam] || \"\";\n      state.locationMode = URL_REVERSE_MAP.locationMode[locationModeParam] || \"\";\n      state.startLocation = startLocationParam;\n      if (mapModeParam && URL_REVERSE_MAP.mapMode[mapModeParam]) {\n        const desiredMapMode = URL_REVERSE_MAP.mapMode[mapModeParam];\n        document.getElementById(desiredMapMode === \"locations\" ? \"mapModeLocations\" : \"mapModeGuides\").checked = true;\n      }\n    }\n\n    function clearVisualStateOnly() {\n      document.querySelectorAll(\".choice-btn.selected\").forEach(btn => btn.classList.remove(\"selected\"));\n      document.getElementById(\"intakeMessage\").classList.add(\"hidden\");\n      document.getElementById(\"intakeMessage\").innerHTML = \"\";\n      document.getElementById(\"countryInfoBox\").classList.add(\"hidden\");\n      document.getElementById(\"countryInfoBox\").innerHTML = \"\";\n      document.getElementById(\"travelTipBox\").classList.add(\"hidden\");\n      document.getElementById(\"travelTipBox\").innerHTML = \"\";\n      document.getElementById(\"groupChoiceInfo\").classList.add(\"hidden\");\n      document.getElementById(\"mainResultBox\").classList.add(\"hidden\");\n      document.getElementById(\"mainResultBox\").innerHTML = \"\";\n      document.getElementById(\"results\").innerHTML = \"\";\n      document.getElementById(\"resultsSection\").classList.add(\"hidden\");\n      document.getElementById(\"tableActionArea\").innerHTML = \"\";\n      document.getElementById(\"tableActionArea\").classList.add(\"hidden\");\n      document.getElementById(\"placeChoices\").innerHTML = \"\";\n      document.getElementById(\"locationModeChoices\").innerHTML = \"\";\n      hideStep(\"step1\"); hideStep(\"step2\"); hideStep(\"step3\"); hideStep(\"step4\"); hideStep(\"step5\"); hideStep(\"step6\");\n      hideLocationModeParts();\n      document.getElementById(\"mapModeGroup\").classList.remove(\"hidden\");\n    }\n\n    function getVisibleLocationInputValue() {\n      if (!document.getElementById(\"knownLocationWrap\").classList.contains(\"hidden\")) return document.getElementById(\"startLocation\").value.trim();\n      if (!document.getElementById(\"estimateLocationWrap\").classList.contains(\"hidden\")) return document.getElementById(\"estimatedLocation\").value.trim();\n      if (!document.getElementById(\"airportWrap\").classList.contains(\"hidden\")) return document.getElementById(\"airportSelect\").value.trim();\n      return \"\";\n    }\n\n    function syncStateStartLocationFromInputs() {\n      state.startLocation = getVisibleLocationInputValue();\n      updateUrlFromState();\n    }\n\n    \/\/ CHANGE 4: renderFromState now shows language (step4) BEFORE persons (step3)\n    async function renderFromState(options = {}) {\n      const doScroll = options.scroll !== false;\n      const autoRunCalculation = options.autoRunCalculation !== false;\n      clearVisualStateOnly();\n      rebuildPricingData();\n      let targetEl = document.getElementById(\"step0\");\n      showStep(\"step0\", \"none\");\n\n      if (state.intakeStatus) {\n        markSelectedByData(\"data-intake\", state.intakeStatus);\n        showResetButton();\n        const intakeBox = document.getElementById(\"intakeMessage\");\n        if (state.intakeStatus === \"now\") {\n          intakeBox.innerHTML = `<p>${escapeHtml(t(\"trp-msg-intake-opened\") || \"De intake is geopend in een nieuw venster. Daarna kun je terugkomen naar deze keuzehulp om de mogelijkheden en prijzen te bekijken.\")}<\/p>`;\n          intakeBox.classList.remove(\"hidden\");\n        } else if (state.intakeStatus === \"later\") {\n          intakeBox.innerHTML = `<p>${escapeHtml(t(\"trp-msg-intake-later\") || \"Je kunt alvast de mogelijkheden en prijzen bekijken. Voor een definitieve boeking is het wel belangrijk dat de intake nog wordt ingevuld en beoordeeld.\")}<\/p>`;\n          intakeBox.classList.remove(\"hidden\");\n        }\n      } else {\n        hideResetButton();\n        setActiveStep(\"step0\", \"none\");\n        if (doScroll) scrollToElement(targetEl);\n        updateUrlFromState(); return;\n      }\n\n      showStep(\"step1\", \"none\");\n      if (state.outsideNetherlands) {\n        markSelectedByData(\"data-outside\", state.outsideNetherlands);\n        renderCountryInfo();\n      } else {\n        targetEl = document.getElementById(\"step1\");\n        setActiveStep(\"step1\", \"none\");\n        if (doScroll) scrollToElement(targetEl);\n        updateUrlFromState(); return;\n      }\n\n      showStep(\"step2\", \"none\");\n      if (state.sessionType) {\n        markSelectedByData(\"data-session\", state.sessionType);\n      } else {\n        targetEl = document.getElementById(\"step2\");\n        setActiveStep(\"step2\", \"none\");\n        if (doScroll) scrollToElement(targetEl);\n        updateUrlFromState(); return;\n      }\n\n      \/\/ CHANGE 4: language (step4) now comes before persons (step3)\n      showStep(\"step4\", \"none\");\n      if (state.language) {\n        markSelectedByData(\"data-language\", state.language);\n      } else {\n        targetEl = document.getElementById(\"step4\");\n        setActiveStep(\"step4\", \"none\");\n        if (doScroll) scrollToElement(targetEl);\n        updateUrlFromState(); return;\n      }\n\n      \/\/ Persons (step3) only for private sessions, shown after language\n      if (state.sessionType === \"private\") {\n        showStep(\"step3\", \"none\");\n        if (state.persons) {\n          markSelectedByData(\"data-persons\", String(state.persons));\n        } else {\n          targetEl = document.getElementById(\"step3\");\n          setActiveStep(\"step3\", \"none\");\n          if (doScroll) scrollToElement(targetEl);\n          updateUrlFromState(); return;\n        }\n      } else {\n        hideStep(\"step3\");\n      }\n\n      showStep(\"step5\", \"none\");\n      renderPlaceChoices();\n\n      if (state.sessionType === \"group\") {\n        if (state.placeType) markSelectedByData(\"data-place\", state.placeType, document.getElementById(\"placeChoices\"));\n        updateUrlFromState();\n        if (doScroll) scrollToElement(document.getElementById(\"step5\"));\n        return;\n      }\n\n      if (state.placeType) {\n        markSelectedByData(\"data-place\", state.placeType, document.getElementById(\"placeChoices\"));\n      } else {\n        targetEl = document.getElementById(\"step5\");\n        setActiveStep(\"step5\", \"none\");\n        if (doScroll) scrollToElement(targetEl);\n        updateUrlFromState(); return;\n      }\n\n      renderLocationStep();\n\n      if (!needsLocationInput()) {\n        updateUrlFromState();\n        if (state.placeType === \"location\" || state.persons >= 4) {\n          const target = document.getElementById(\"mainResultBox\").classList.contains(\"hidden\")\n            ? document.getElementById(\"resultsSection\")\n            : document.getElementById(\"mainResultBox\");\n          if (doScroll && target && !target.classList.contains(\"hidden\")) scrollToElement(target);\n        } else if (doScroll && !document.getElementById(\"resultsSection\").classList.contains(\"hidden\")) {\n          scrollToElement(document.getElementById(\"resultsSection\"));\n        }\n        return;\n      }\n\n      if (state.outsideNetherlands === \"yes\" && !state.locationMode) {\n        targetEl = document.getElementById(\"step6\");\n        setActiveStep(\"step6\", \"none\");\n        if (doScroll) scrollToElement(targetEl);\n        updateUrlFromState(); return;\n      }\n\n      applyLocationModeUI();\n      fillLocationInputsFromState();\n\n      if (!state.startLocation) {\n        targetEl = document.getElementById(\"step6\");\n        setActiveStep(\"step6\", \"none\");\n        if (doScroll) {\n          if (!document.getElementById(\"knownLocationWrap\").classList.contains(\"hidden\")) scrollToElement(document.getElementById(\"knownLocationWrap\"));\n          else if (!document.getElementById(\"estimateLocationWrap\").classList.contains(\"hidden\")) scrollToElement(document.getElementById(\"estimateLocationWrap\"));\n          else if (!document.getElementById(\"airportWrap\").classList.contains(\"hidden\")) scrollToElement(document.getElementById(\"airportWrap\"));\n          else scrollToElement(targetEl);\n        }\n        updateUrlFromState(); return;\n      }\n\n      updateUrlFromState();\n      if (autoRunCalculation && geocoder) {\n        await runLocationCalculation(state.startLocation, { scrollAfter: doScroll });\n      } else {\n        setActiveStep(\"step6\", \"none\");\n        if (doScroll) scrollToElement(document.getElementById(\"step6\"));\n      }\n    }\n\n    function resetTool() {\n      state.intakeStatus = \"\"; state.outsideNetherlands = \"\"; state.sessionType = \"\"; state.persons = null;\n      state.language = \"\"; state.placeType = \"\"; state.locationMode = \"\"; state.startLocation = \"\";\n      currentlyAvailableGuideNames = [];\n      document.getElementById(\"startLocation\").value = \"\";\n      document.getElementById(\"estimatedLocation\").value = \"\";\n      document.getElementById(\"airportSelect\").value = \"\";\n      document.getElementById(\"mapModeGuides\").checked = true;\n      document.getElementById(\"mapModeGroup\").classList.remove(\"hidden\");\n      clearDirections(); clearMarkers(); clearVisualStateOnly();\n      showRelevantMarkersWithoutRoutes();\n      hideResetButton(); setActiveStep(\"step0\", \"none\"); updateUrlFromState(); scrollToTopOfTool();\n    }\n\n    async function handleIntakeSelection(value, options = {}) {\n      state.intakeStatus = value;\n      updateUrlFromState();\n      await renderFromState({ scroll: true, autoRunCalculation: true });\n      if (value === \"now\" && !options.fromUrl) window.open(trpHref(\"link-intake\"), \"_blank\");\n    }\n\n    \/\/ CHANGE 1: after selecting outside\/NL, scroll to the countryInfoBox (info box) instead of next step\n    async function handleOutsideSelection(value) {\n      state.outsideNetherlands = value;\n      if (state.outsideNetherlands === \"no\" && !state.locationMode) state.locationMode = \"known\";\n      updateUrlFromState();\n      \/\/ Render without auto-scroll so we can control exactly where we land\n      await renderFromState({ scroll: false, autoRunCalculation: true });\n      \/\/ CHANGE 1: scroll to countryInfoBox after selection\n      const countryInfoBox = document.getElementById(\"countryInfoBox\");\n      if (countryInfoBox && !countryInfoBox.classList.contains(\"hidden\")) {\n        scrollToElement(countryInfoBox);\n      }\n    }\n\n    async function handleSessionSelection(value) {\n      state.sessionType = value;\n      updateUrlFromState();\n      await renderFromState({ scroll: true, autoRunCalculation: true });\n    }\n\n    async function handlePersonsSelection(value) {\n      state.persons = parseInt(value, 10);\n      updateUrlFromState();\n      await renderFromState({ scroll: true, autoRunCalculation: true });\n    }\n\n    async function handleLanguageSelection(value) {\n      state.language = value;\n      updateUrlFromState();\n      await renderFromState({ scroll: true, autoRunCalculation: true });\n    }\n\n    async function handlePlaceSelection(value) {\n      state.placeType = value;\n      if (value === \"location\") document.getElementById(\"mapModeLocations\").checked = true;\n      else if (value === \"own\") document.getElementById(\"mapModeGuides\").checked = true;\n      updateUrlFromState();\n      await renderFromState({ scroll: true, autoRunCalculation: true });\n    }\n\n    async function handleLocationModeSelection(value) {\n      state.locationMode = value;\n      updateUrlFromState();\n      await renderFromState({ scroll: true, autoRunCalculation: false });\n    }\n\n    \/\/ Event listeners\n    document.querySelectorAll(\"[data-intake]\").forEach(btn => {\n      btn.addEventListener(\"click\", function() {\n        showResetButton(); markSelectedButton(this); resetAfterStep(0);\n        handleIntakeSelection(this.dataset.intake, { fromUrl: false });\n      });\n    });\n\n    document.querySelectorAll(\"[data-outside]\").forEach(btn => {\n      btn.addEventListener(\"click\", function() {\n        showResetButton(); markSelectedButton(this); resetAfterStep(1);\n        handleOutsideSelection(this.dataset.outside);\n      });\n    });\n\n    document.querySelectorAll(\"[data-session]\").forEach(btn => {\n      btn.addEventListener(\"click\", function() {\n        showResetButton(); markSelectedButton(this); resetAfterStep(2);\n        handleSessionSelection(this.dataset.session);\n      });\n    });\n\n    \/\/ CHANGE 4: language buttons now at position 3 in flow, resetAfterStep(3) resets persons+place+location\n    document.querySelectorAll(\"[data-language]\").forEach(btn => {\n      btn.addEventListener(\"click\", function() {\n        showResetButton(); markSelectedButton(this); resetAfterStep(3);\n        handleLanguageSelection(this.dataset.language);\n      });\n    });\n\n    \/\/ CHANGE 4: persons buttons now at position 4, resetAfterStep(4) resets place+location\n    document.addEventListener(\"click\", function(e) {\n      const personsBtn = e.target.closest(\"[data-persons]\");\n      if (personsBtn) {\n        showResetButton(); markSelectedButton(personsBtn); resetAfterStep(4);\n        handlePersonsSelection(personsBtn.dataset.persons);\n      }\n    });\n\n    document.getElementById(\"placeChoices\").addEventListener(\"click\", function(e) {\n      const btn = e.target.closest(\"[data-place]\");\n      if (!btn) return;\n      showResetButton(); markSelectedButton(btn);\n      if (btn.tagName === \"A\") { state.placeType = btn.dataset.place; updateUrlFromState(); return; }\n      resetAfterStep(5);\n      handlePlaceSelection(btn.dataset.place);\n    });\n\n    document.getElementById(\"locationModeChoices\").addEventListener(\"click\", function(e) {\n      const btn = e.target.closest(\"[data-locationmode]\");\n      if (!btn) return;\n      showResetButton(); markSelectedButton(btn); handleLocationModeSelection(btn.dataset.locationmode);\n    });\n\n    document.getElementById(\"showResultsBtn\").addEventListener(\"click\", function() {\n      state.locationMode = \"known\"; syncStateStartLocationFromInputs();\n      runLocationCalculation(state.startLocation, { scrollAfter: true });\n    });\n\n    document.getElementById(\"showEstimatedResultsBtn\").addEventListener(\"click\", function() {\n      state.locationMode = \"unknown\"; syncStateStartLocationFromInputs();\n      runLocationCalculation(state.startLocation, { scrollAfter: true });\n    });\n\n    document.getElementById(\"showAirportResultsBtn\").addEventListener(\"click\", function() {\n      state.locationMode = \"airport\"; syncStateStartLocationFromInputs();\n      runLocationCalculation(state.startLocation, { scrollAfter: true });\n    });\n\n    document.getElementById(\"startLocation\").addEventListener(\"input\", function() {\n      if (needsLocationInput()) { state.locationMode = \"known\"; syncStateStartLocationFromInputs(); }\n    });\n\n    document.getElementById(\"estimatedLocation\").addEventListener(\"input\", function() {\n      if (needsLocationInput()) { state.locationMode = \"unknown\"; syncStateStartLocationFromInputs(); }\n    });\n\n    document.getElementById(\"airportSelect\").addEventListener(\"change\", function() {\n      if (needsLocationInput()) { state.locationMode = \"airport\"; syncStateStartLocationFromInputs(); }\n    });\n\n    document.getElementById(\"startLocation\").addEventListener(\"keydown\", function(e) {\n      if (e.key === \"Enter\") { state.locationMode = \"known\"; syncStateStartLocationFromInputs(); runLocationCalculation(state.startLocation, { scrollAfter: true }); }\n    });\n\n    document.getElementById(\"estimatedLocation\").addEventListener(\"keydown\", function(e) {\n      if (e.key === \"Enter\") { state.locationMode = \"unknown\"; syncStateStartLocationFromInputs(); runLocationCalculation(state.startLocation, { scrollAfter: true }); }\n    });\n\n    document.querySelectorAll('input[name=\"mapMode\"]').forEach(input => {\n      input.addEventListener(\"change\", function() {\n        updateUrlFromState();\n        if (state.startLocation) runLocationCalculation(state.startLocation, { scrollAfter: false });\n        else showRelevantMarkersWithoutRoutes();\n      });\n    });\n\n    document.getElementById(\"resetToolBtn\").addEventListener(\"click\", resetTool);\n\n    setTranslateableUILabels();\n    setActiveStep(\"step0\", \"none\");\n    hideResetButton();\n  <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1845135 e-flex e-con-boxed e-con e-child\" data-id=\"1845135\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-538aea2 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"538aea2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/triptherapie.nl\/\" target=\"_blank\" aria-label=\"Telefoongesprek starten\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-home\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c32aa4c elementor-widget elementor-widget-heading\" data-id=\"c32aa4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/triptherapie.nl\/contact\/\" target=\"_blank\">CONTACT<\/a><\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-816c0d5 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"816c0d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"tel:0031640898455\" target=\"_blank\" rel=\"nofollow\" aria-label=\"Telefoongesprek starten\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-phone-alt\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-642263b elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"642263b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/api.whatsapp.com\/send\/?phone=31640898455\" target=\"_blank\" rel=\"nofollow noopener\" aria-label=\"Whastappen met Triptherapie\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-whatsapp\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b0e9a0 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"7b0e9a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/t.me\/Triptherapie\" target=\"_blank\" rel=\"nofollow\" aria-label=\"Telegram Triptherapie\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-telegram-plane\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c79906 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"2c79906\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"mailto:info@triptherapie.nl\" target=\"_blank\" rel=\"nofollow\" aria-label=\"Email Triptherapie\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-envelope\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b85acc6 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"b85acc6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/triptherapie.nl\/start-trippy-chat\/\" target=\"_blank\" aria-label=\"AI chat Trippychat\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-robot\" viewBox=\"0 0 640 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"><\/path><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aaf89e5 e-flex e-con-boxed e-con e-parent\" data-id=\"aaf89e5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3a03476 elementor-widget elementor-widget-spacer\" data-id=\"3a03476\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>With this selection tool, you gain quick insight into the possibilities for a guided psychedelic experience in the Netherlands. By entering your preferences step by step, such as the type of session (private, duo, or group), location, number of participants, and language, you will immediately see which options and corresponding prices suit your situation.<\/p>\n<p>The tool helps you determine, without any hassle, what best suits your wishes. Whether you choose an individual session with full attention, a duo experience with a partner or friend, or a group ceremony with like-minded individuals, you get an immediate, clear overview of the possibilities.<\/p>\n<p>In addition, the selection tool takes practical matters into account, such as travel distance, available guides, and suitable locations. This allows you to easily compare and make an informed choice.<\/p>\n<p>After completing the steps, you can click directly through to the correct reservation page to secure your spot.<\/p>","protected":false},"author":1,"featured_media":56473,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-56156","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages\/56156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/comments?post=56156"}],"version-history":[{"count":25,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages\/56156\/revisions"}],"predecessor-version":[{"id":56479,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages\/56156\/revisions\/56479"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/media\/56473"}],"wp:attachment":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/media?parent=56156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}