{"id":8,"date":"2026-07-10T14:58:08","date_gmt":"2026-07-10T13:58:08","guid":{"rendered":"https:\/\/coachbasit.co.uk\/?page_id=8"},"modified":"2026-07-10T14:58:08","modified_gmt":"2026-07-10T13:58:08","slug":"home","status":"publish","type":"page","link":"https:\/\/coachbasit.co.uk\/","title":{"rendered":"Home"},"content":{"rendered":"<div class=\"ib-booking\" id=\"ib-booking-app\">\n\n\t<div class=\"ib-progress\">\n\t\t<span class=\"ib-step-dot active\" data-step-dot=\"1\">1<\/span>\n\t\t<span class=\"ib-step-line\"><\/span>\n\t\t<span class=\"ib-step-dot\" data-step-dot=\"2\">2<\/span>\n\t\t<span class=\"ib-step-line\"><\/span>\n\t\t<span class=\"ib-step-dot\" data-step-dot=\"3\">3<\/span>\n\t\t<span class=\"ib-step-line\"><\/span>\n\t\t<span class=\"ib-step-dot\" data-step-dot=\"4\">4<\/span>\n\t\t<span class=\"ib-step-line\"><\/span>\n\t\t<span class=\"ib-step-dot\" data-step-dot=\"5\">5<\/span>\n\t<\/div>\n\n\t<form id=\"ib-booking-form\" novalidate>\n\t\t<input type=\"hidden\" name=\"package_id\" id=\"ib-field-package_id\">\n\t\t<input type=\"hidden\" name=\"meeting_type\" id=\"ib-field-meeting_type\" value=\"in_person\">\n\t\t<input type=\"hidden\" name=\"booking_date\" id=\"ib-field-booking_date\">\n\t\t<input type=\"hidden\" name=\"start_time\" id=\"ib-field-start_time\">\n\n\t\t<!-- STEP 1: Package -->\n\t\t<section class=\"ib-step\" data-step=\"1\">\n\t\t\t<h3 class=\"ib-step-title\">Choose how you'd like to work together<\/h3>\n\t\t\t<div class=\"ib-package-grid\">\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ib-package-card\" data-package-id=\"1\" data-package-length=\"30\">\n\t\t\t\t\t\t<span class=\"ib-package-name\">Free Introductory Call<\/span>\n\t\t\t\t\t\t<span class=\"ib-package-price\">\n\t\t\t\t\t\t\tFree\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"ib-package-meta\">1 session \u00b7 30 min<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"ib-package-desc\">A short, no-cost introductory conversation to see if we are a good fit.<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ib-package-card\" data-package-id=\"2\" data-package-length=\"90\">\n\t\t\t\t\t\t<span class=\"ib-package-name\">Single Session<\/span>\n\t\t\t\t\t\t<span class=\"ib-package-price\">\n\t\t\t\t\t\t\t\u00a3120.00\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"ib-package-meta\">1 session \u00b7 90 min<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"ib-package-desc\">One focused 90-minute coaching session.<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"ib-package-card\" data-package-id=\"3\" data-package-length=\"90\">\n\t\t\t\t\t\t<span class=\"ib-package-name\">Custom Package<\/span>\n\t\t\t\t\t\t<span class=\"ib-package-price\">\n\t\t\t\t\t\t\tCustom \u2014 priced after intake\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"ib-package-meta\">4 sessions \u00b7 90 min<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"ib-package-desc\">A tailored number of sessions \u2014 price agreed with you directly after intake.<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\n\t\t<!-- STEP 2: Meeting type -->\n\t\t<section class=\"ib-step\" data-step=\"2\" hidden>\n\t\t\t<h3 class=\"ib-step-title\">How would you like to meet?<\/h3>\n\t\t\t<div class=\"ib-meeting-grid\">\n\t\t\t\t<button type=\"button\" class=\"ib-meeting-card\" data-meeting-type=\"in_person\">\n\t\t\t\t\t<span class=\"ib-meeting-name\">Face to face<\/span>\n\t\t\t\t\t<span class=\"ib-meeting-desc\">Meet in person.<\/span>\n\t\t\t\t<\/button>\n\t\t\t\t<button type=\"button\" class=\"ib-meeting-card\" data-meeting-type=\"video\" id=\"ib-video-option\" hidden>\n\t\t\t\t\t<span class=\"ib-meeting-name\">Video call<\/span>\n\t\t\t\t\t<span class=\"ib-meeting-desc\">A Zoom link is sent after booking.<\/span>\n\t\t\t\t<\/button>\n\t\t\t<\/div>\n\t\t\t<div class=\"ib-step-actions\">\n\t\t\t\t<button type=\"button\" class=\"ib-btn ib-btn-ghost\" data-back>Back<\/button>\n\t\t\t<\/div>\n\t\t<\/section>\n\n\t\t<!-- STEP 3: Date & time -->\n\t\t<section class=\"ib-step\" data-step=\"3\" hidden>\n\t\t\t<h3 class=\"ib-step-title\">Pick a date and time<\/h3>\n\t\t\t<div class=\"ib-datetime-grid\">\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-date-input\">Date<\/label>\n\t\t\t\t\t<input type=\"date\" id=\"ib-date-input\">\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<label>Available times<\/label>\n\t\t\t\t\t<div class=\"ib-slots\" id=\"ib-slots\">\n\t\t\t\t\t\t<p class=\"ib-hint\">Choose a date to see available times.<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"ib-step-actions\">\n\t\t\t\t<button type=\"button\" class=\"ib-btn ib-btn-ghost\" data-back>Back<\/button>\n\t\t\t<\/div>\n\t\t<\/section>\n\n\t\t<!-- STEP 4: Details & questionnaire -->\n\t\t<section class=\"ib-step\" data-step=\"4\" hidden>\n\t\t\t<h3 class=\"ib-step-title\">Your details<\/h3>\n\t\t\t<div class=\"ib-form-row\">\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-name\">Full name *<\/label>\n\t\t\t\t\t<input type=\"text\" id=\"ib-name\" name=\"customer_name\" required>\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-email\">Email *<\/label>\n\t\t\t\t\t<input type=\"email\" id=\"ib-email\" name=\"customer_email\" required>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"ib-form-row\">\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-phone\">Phone<\/label>\n\t\t\t\t\t<input type=\"tel\" id=\"ib-phone\" name=\"customer_phone\">\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-postcode\">Postcode<\/label>\n\t\t\t\t\t<div class=\"ib-postcode-row\">\n\t\t\t\t\t\t<input type=\"text\" id=\"ib-postcode\" name=\"postcode\">\n\t\t\t\t\t\t<button type=\"button\" class=\"ib-btn ib-btn-small\" id=\"ib-postcode-lookup\">Find address<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<p class=\"ib-hint\" id=\"ib-postcode-status\"><\/p>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"ib-form-row\">\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-address1\">House \/ flat number & street<\/label>\n\t\t\t\t\t<input type=\"text\" id=\"ib-address1\" name=\"address_line1\">\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-address2\">Address line 2 (optional)<\/label>\n\t\t\t\t\t<input type=\"text\" id=\"ib-address2\" name=\"address_line2\">\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"ib-form-row\">\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-town\">Town<\/label>\n\t\t\t\t\t<input type=\"text\" id=\"ib-town\" name=\"town\">\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<label for=\"ib-county\">County<\/label>\n\t\t\t\t\t<input type=\"text\" id=\"ib-county\" name=\"county\">\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<h3 class=\"ib-step-title ib-step-title-sub\">A little more about your situation<\/h3>\n\t\t\t\t\t\t\t\t\t<div class=\"ib-form-field\" data-question=\"&quot;How would you describe what is going on, in your own words?&quot;\">\n\t\t\t\t\t\t<label for=\"ib-q_1\">\n\t\t\t\t\t\t\tHow would you describe what is going on, in your own words? *\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea id=\"ib-q_1\" class=\"ib-answer\" rows=\"3\" required><\/textarea>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ib-form-field\" data-question=\"&quot;How long has this been going on?&quot;\">\n\t\t\t\t\t\t<label for=\"ib-q_2\">\n\t\t\t\t\t\t\tHow long has this been going on? *\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" id=\"ib-q_2\" class=\"ib-answer\" required>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ib-form-field\" data-question=\"&quot;Is this session for you individually, or you and a partner?&quot;\">\n\t\t\t\t\t\t<label for=\"ib-q_3\">\n\t\t\t\t\t\t\tIs this session for you individually, or you and a partner? *\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<select id=\"ib-q_3\" class=\"ib-answer\" required>\n\t\t\t\t\t\t\t\t<option value=\"\">Select\u2026<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"Just me\">Just me<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"Me and my partner\">Me and my partner<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"Not sure yet\">Not sure yet<\/option>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/select>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ib-form-field\" data-question=\"&quot;Have you worked with a coach or therapist before?&quot;\">\n\t\t\t\t\t\t<label for=\"ib-q_4\">\n\t\t\t\t\t\t\tHave you worked with a coach or therapist before?\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"ib-choice-group\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"ib-choice\">\n\t\t\t\t\t\t\t\t\t\t<input type=\"radio\" name=\"ib-radio-4\" class=\"ib-answer\" value=\"Yes\">\n\t\t\t\t\t\t\t\t\t\tYes\t\t\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label class=\"ib-choice\">\n\t\t\t\t\t\t\t\t\t\t<input type=\"radio\" name=\"ib-radio-4\" class=\"ib-answer\" value=\"No\">\n\t\t\t\t\t\t\t\t\t\tNo\t\t\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ib-form-field\" data-question=\"&quot;Is there anything you would prefer not to discuss in the first session?&quot;\">\n\t\t\t\t\t\t<label for=\"ib-q_5\">\n\t\t\t\t\t\t\tIs there anything you would prefer not to discuss in the first session?\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<textarea id=\"ib-q_5\" class=\"ib-answer\" rows=\"3\" ><\/textarea>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"ib-form-field\" data-question=\"&quot;How did you hear about this service?&quot;\">\n\t\t\t\t\t\t<label for=\"ib-q_6\">\n\t\t\t\t\t\t\tHow did you hear about this service?\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" id=\"ib-q_6\" class=\"ib-answer\" >\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t<div class=\"ib-step-actions\">\n\t\t\t\t<button type=\"button\" class=\"ib-btn ib-btn-ghost\" data-back>Back<\/button>\n\t\t\t\t<button type=\"button\" class=\"ib-btn ib-btn-primary\" data-to-review>Review booking<\/button>\n\t\t\t<\/div>\n\t\t<\/section>\n\n\t\t<!-- STEP 5: Review & submit -->\n\t\t<section class=\"ib-step\" data-step=\"5\" hidden>\n\t\t\t<h3 class=\"ib-step-title\">Review & confirm<\/h3>\n\t\t\t<div class=\"ib-review\" id=\"ib-review-summary\"><\/div>\n\t\t\t<div class=\"ib-note-box\">\n\t\t\t\tA quick, honest note: this form isn't the work \u2014 it just books the room. Real change happens in the session itself, not in a form or anywhere else you might currently be looking for it.\n\t\t\t<\/div>\n\t\t\t<div class=\"ib-step-actions\">\n\t\t\t\t<button type=\"button\" class=\"ib-btn ib-btn-ghost\" data-back>Back<\/button>\n\t\t\t\t<button type=\"submit\" class=\"ib-btn ib-btn-primary\" id=\"ib-submit-btn\">Confirm Booking<\/button>\n\t\t\t<\/div>\n\t\t\t<p class=\"ib-form-message\" id=\"ib-form-message\" role=\"alert\"><\/p>\n\t\t<\/section>\n\n\t\t<!-- SUCCESS -->\n\t\t<section class=\"ib-step ib-success\" data-step=\"success\" hidden>\n\t\t\t<h3 class=\"ib-step-title\">Booking received<\/h3>\n\t\t\t<p id=\"ib-success-text\">Thank you \u2014 check your email for the details.<\/p>\n\t\t<\/section>\n\t<\/form>\n<\/div>\n<script data-cfasync=\"false\" data-no-optimize=\"1\" data-no-defer=\"1\">\n(function () {\n\t'use strict';\n\n\tvar IB_DATA = {\"ajax_url\":\"https:\\\/\\\/coachbasit.co.uk\\\/wp-admin\\\/admin-ajax.php\",\"nonce\":\"d5a52a5a6c\",\"enable_video\":0,\"window_days\":60};\n\n\tvar app = document.getElementById('ib-booking-app');\n\tif (!app) { return; }\n\n\tvar form = document.getElementById('ib-booking-form');\n\tvar steps = app.querySelectorAll('.ib-step');\n\tvar dots = app.querySelectorAll('[data-step-dot]');\n\tvar currentStep = 1;\n\n\tvar state = {\n\t\tpackage_id: null,\n\t\tpackage_name: '',\n\t\tpackage_price_label: '',\n\t\tsession_length: 90,\n\t\tmeeting_type: 'in_person',\n\t\tbooking_date: '',\n\t\tstart_time: '',\n\t\tend_time: '',\n\t\tslot_label: ''\n\t};\n\n\tfunction showStep(step) {\n\t\tfor (var i = 0; i < steps.length; i++) {\n\t\t\tsteps[i].hidden = steps[i].getAttribute('data-step') != step;\n\t\t}\n\t\tfor (var j = 0; j < dots.length; j++) {\n\t\t\tvar n = parseInt(dots[j].getAttribute('data-step-dot'), 10);\n\t\t\tdots[j].classList.remove('active', 'done');\n\t\t\tif (n === step) { dots[j].classList.add('active'); }\n\t\t\telse if (n < step) { dots[j].classList.add('done'); }\n\t\t}\n\t\tcurrentStep = step;\n\t\tapp.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\t}\n\n\t\/\/ Step 1: package selection\n\tvar packageCards = app.querySelectorAll('.ib-package-card');\n\tpackageCards.forEach(function (card) {\n\t\tcard.addEventListener('click', function () {\n\t\t\tpackageCards.forEach(function (c) { c.classList.remove('selected'); });\n\t\t\tcard.classList.add('selected');\n\t\t\tstate.package_id = card.getAttribute('data-package-id');\n\t\t\tstate.package_name = card.querySelector('.ib-package-name').textContent;\n\t\t\tstate.package_price_label = card.querySelector('.ib-package-price').textContent;\n\t\t\tstate.session_length = parseInt(card.getAttribute('data-package-length'), 10) || 90;\n\t\t\tdocument.getElementById('ib-field-package_id').value = state.package_id;\n\t\t\tshowStep(2);\n\t\t});\n\t});\n\n\t\/\/ Step 2: meeting type\n\tvar videoOption = document.getElementById('ib-video-option');\n\tif (IB_DATA.enable_video == 1 && videoOption) {\n\t\tvideoOption.hidden = false;\n\t}\n\tvar meetingCards = app.querySelectorAll('.ib-meeting-card');\n\tmeetingCards.forEach(function (card) {\n\t\tcard.addEventListener('click', function () {\n\t\t\tmeetingCards.forEach(function (c) { c.classList.remove('selected'); });\n\t\t\tcard.classList.add('selected');\n\t\t\tstate.meeting_type = card.getAttribute('data-meeting-type');\n\t\t\tdocument.getElementById('ib-field-meeting_type').value = state.meeting_type;\n\t\t\tshowStep(3);\n\t\t});\n\t});\n\n\t\/\/ Step 3: date & slots\n\tvar dateInput = document.getElementById('ib-date-input');\n\tvar slotsWrap = document.getElementById('ib-slots');\n\tif (dateInput) {\n\t\tvar today = new Date();\n\t\tvar minDate = new Date(today.getTime() + 24 * 60 * 60 * 1000);\n\t\tvar maxDate = new Date(today.getTime() + (IB_DATA.window_days || 60) * 24 * 60 * 60 * 1000);\n\t\tdateInput.min = minDate.toISOString().slice(0, 10);\n\t\tdateInput.max = maxDate.toISOString().slice(0, 10);\n\n\t\tdateInput.addEventListener('change', function () {\n\t\t\tstate.booking_date = dateInput.value;\n\t\t\tstate.start_time = '';\n\t\t\tdocument.getElementById('ib-field-booking_date').value = state.booking_date;\n\t\t\tfetchSlots();\n\t\t});\n\t}\n\n\tfunction fetchSlots() {\n\t\tslotsWrap.innerHTML = '<p class=\"ib-hint\">Loading available times\u2026<\/p>';\n\t\tvar body = new URLSearchParams();\n\t\tbody.append('action', 'ib_get_slots');\n\t\tbody.append('nonce', IB_DATA.nonce);\n\t\tbody.append('date', state.booking_date);\n\t\tbody.append('package_id', state.package_id || '');\n\n\t\tfetch(IB_DATA.ajax_url, { method: 'POST', body: body })\n\t\t\t.then(function (r) { return r.json(); })\n\t\t\t.then(function (res) {\n\t\t\t\tslotsWrap.innerHTML = '';\n\t\t\t\tif (!res.success || !res.data.slots || res.data.slots.length === 0) {\n\t\t\t\t\tslotsWrap.innerHTML = '<p class=\"ib-hint\">No times available that day. Please try another date.<\/p>';\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tres.data.slots.forEach(function (slot) {\n\t\t\t\t\tvar btn = document.createElement('button');\n\t\t\t\t\tbtn.type = 'button';\n\t\t\t\t\tbtn.className = 'ib-slot-btn';\n\t\t\t\t\tbtn.textContent = slot.label;\n\t\t\t\t\tbtn.setAttribute('data-start', slot.start);\n\t\t\t\t\tbtn.setAttribute('data-end', slot.end);\n\t\t\t\t\tbtn.addEventListener('click', function () {\n\t\t\t\t\t\tvar all = slotsWrap.querySelectorAll('.ib-slot-btn');\n\t\t\t\t\t\tall.forEach(function (b) { b.classList.remove('selected'); });\n\t\t\t\t\t\tbtn.classList.add('selected');\n\t\t\t\t\t\tstate.start_time = slot.start;\n\t\t\t\t\t\tstate.end_time = slot.end;\n\t\t\t\t\t\tstate.slot_label = slot.label;\n\t\t\t\t\t\tdocument.getElementById('ib-field-start_time').value = slot.start;\n\t\t\t\t\t\tsetTimeout(function () { showStep(4); }, 250);\n\t\t\t\t\t});\n\t\t\t\t\tslotsWrap.appendChild(btn);\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(function () {\n\t\t\t\tslotsWrap.innerHTML = '<p class=\"ib-hint\">Could not load times. Please try again.<\/p>';\n\t\t\t});\n\t}\n\n\t\/\/ Step 4: postcode lookup\n\tvar lookupBtn = document.getElementById('ib-postcode-lookup');\n\tvar postcodeStatus = document.getElementById('ib-postcode-status');\n\tif (lookupBtn) {\n\t\tlookupBtn.addEventListener('click', function () {\n\t\t\tvar postcode = document.getElementById('ib-postcode').value.trim();\n\t\t\tif (!postcode) { return; }\n\t\t\tpostcodeStatus.textContent = 'Looking up\u2026';\n\n\t\t\tvar body = new URLSearchParams();\n\t\t\tbody.append('action', 'ib_lookup_postcode');\n\t\t\tbody.append('nonce', IB_DATA.nonce);\n\t\t\tbody.append('postcode', postcode);\n\n\t\t\tfetch(IB_DATA.ajax_url, { method: 'POST', body: body })\n\t\t\t\t.then(function (r) { return r.json(); })\n\t\t\t\t.then(function (res) {\n\t\t\t\t\tif (!res.success) {\n\t\t\t\t\t\tpostcodeStatus.textContent = res.data.message || 'Postcode not found. Please enter your address manually.';\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tdocument.getElementById('ib-town').value = res.data.town || res.data.district || '';\n\t\t\t\t\tdocument.getElementById('ib-county').value = res.data.county || '';\n\t\t\t\t\tpostcodeStatus.textContent = 'Town\/county filled in \u2014 please add your house number and street above.';\n\t\t\t\t})\n\t\t\t\t.catch(function () {\n\t\t\t\t\tpostcodeStatus.textContent = 'Could not look up that postcode. Please enter your address manually.';\n\t\t\t\t});\n\t\t});\n\t}\n\n\t\/\/ Step 4 -> 5: build review\n\tvar toReviewBtn = app.querySelector('[data-to-review]');\n\tif (toReviewBtn) {\n\t\ttoReviewBtn.addEventListener('click', function () {\n\t\t\tvar name = document.getElementById('ib-name').value.trim();\n\t\t\tvar email = document.getElementById('ib-email').value.trim();\n\t\t\tif (!name || !email) {\n\t\t\t\talert('Please enter your name and email.');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbuildReview();\n\t\t\tshowStep(5);\n\t\t});\n\t}\n\n\tfunction buildReview() {\n\t\tvar name = document.getElementById('ib-name').value.trim();\n\t\tvar email = document.getElementById('ib-email').value.trim();\n\t\tvar phone = document.getElementById('ib-phone').value.trim();\n\n\t\tvar meetingLabel = state.meeting_type === 'video' ? 'Video call' : 'Face to face (in person)';\n\n\t\tvar html = '<dl>';\n\t\thtml += '<dt>Package<\/dt><dd>' + escapeHtml(state.package_name) + ' \u2014 ' + escapeHtml(state.package_price_label) + '<\/dd>';\n\t\thtml += '<dt>Meeting<\/dt><dd>' + escapeHtml(meetingLabel) + '<\/dd>';\n\t\thtml += '<dt>Date<\/dt><dd>' + escapeHtml(state.booking_date) + '<\/dd>';\n\t\thtml += '<dt>Time<\/dt><dd>' + escapeHtml(state.slot_label) + '<\/dd>';\n\t\thtml += '<dt>Name<\/dt><dd>' + escapeHtml(name) + '<\/dd>';\n\t\thtml += '<dt>Email<\/dt><dd>' + escapeHtml(email) + '<\/dd>';\n\t\tif (phone) { html += '<dt>Phone<\/dt><dd>' + escapeHtml(phone) + '<\/dd>'; }\n\t\thtml += '<\/dl>';\n\n\t\tdocument.getElementById('ib-review-summary').innerHTML = html;\n\t}\n\n\tfunction escapeHtml(str) {\n\t\tvar div = document.createElement('div');\n\t\tdiv.textContent = str;\n\t\treturn div.innerHTML;\n\t}\n\n\t\/\/ Back buttons\n\tvar backButtons = app.querySelectorAll('[data-back]');\n\tbackButtons.forEach(function (btn) {\n\t\tbtn.addEventListener('click', function () {\n\t\t\tshowStep(Math.max(1, currentStep - 1));\n\t\t});\n\t});\n\n\t\/\/ Collect questionnaire answers\n\tfunction collectAnswers() {\n\t\tvar answers = {};\n\t\tvar fields = app.querySelectorAll('.ib-form-field[data-question]');\n\t\tfields.forEach(function (field) {\n\t\t\tvar questionText = JSON.parse(field.getAttribute('data-question'));\n\t\t\tvar multi = field.querySelectorAll('.ib-answer-multi');\n\t\t\tif (multi.length) {\n\t\t\t\tvar checked = [];\n\t\t\t\tmulti.forEach(function (cb) { if (cb.checked) { checked.push(cb.value); } });\n\t\t\t\tanswers[questionText] = checked;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar radios = field.querySelectorAll('input[type=\"radio\"]');\n\t\t\tif (radios.length) {\n\t\t\t\tradios.forEach(function (r) { if (r.checked) { answers[questionText] = r.value; } });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar single = field.querySelector('.ib-answer');\n\t\t\tif (single) { answers[questionText] = single.value; }\n\t\t});\n\t\treturn answers;\n\t}\n\n\t\/\/ Submit\n\tif (form) {\n\t\tform.addEventListener('submit', function (e) {\n\t\t\te.preventDefault();\n\t\t\tvar submitBtn = document.getElementById('ib-submit-btn');\n\t\t\tvar msg = document.getElementById('ib-form-message');\n\t\t\tsubmitBtn.disabled = true;\n\t\t\tmsg.textContent = '';\n\t\t\tmsg.classList.remove('ib-success-msg');\n\n\t\t\tvar body = new URLSearchParams();\n\t\t\tbody.append('action', 'ib_submit_booking');\n\t\t\tbody.append('nonce', IB_DATA.nonce);\n\t\t\tbody.append('package_id', state.package_id || '');\n\t\t\tbody.append('meeting_type', state.meeting_type);\n\t\t\tbody.append('booking_date', state.booking_date);\n\t\t\tbody.append('start_time', state.start_time);\n\t\t\tbody.append('customer_name', document.getElementById('ib-name').value.trim());\n\t\t\tbody.append('customer_email', document.getElementById('ib-email').value.trim());\n\t\t\tbody.append('customer_phone', document.getElementById('ib-phone').value.trim());\n\t\t\tbody.append('postcode', document.getElementById('ib-postcode').value.trim());\n\t\t\tbody.append('address_line1', document.getElementById('ib-address1').value.trim());\n\t\t\tbody.append('address_line2', document.getElementById('ib-address2').value.trim());\n\t\t\tbody.append('town', document.getElementById('ib-town').value.trim());\n\t\t\tbody.append('county', document.getElementById('ib-county').value.trim());\n\t\t\tbody.append('answers', JSON.stringify(collectAnswers()));\n\n\t\t\tfetch(IB_DATA.ajax_url, { method: 'POST', body: body })\n\t\t\t\t.then(function (r) { return r.json(); })\n\t\t\t\t.then(function (res) {\n\t\t\t\t\tsubmitBtn.disabled = false;\n\t\t\t\t\tif (!res.success) {\n\t\t\t\t\t\tmsg.textContent = res.data.message || 'Something went wrong. Please try again.';\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar successText = document.getElementById('ib-success-text');\n\t\t\t\t\tif (res.data.payment_required) {\n\t\t\t\t\t\tsuccessText.textContent = 'Thank you \u2014 your slot is held. Check your email for details; we will be in touch to arrange payment.';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsuccessText.textContent = 'Thank you \u2014 check your email for the details. We look forward to meeting you.';\n\t\t\t\t\t}\n\t\t\t\t\tfor (var i = 0; i < steps.length; i++) { steps[i].hidden = true; }\n\t\t\t\t\tvar successEl = app.querySelector('.ib-success');\n\t\t\t\t\tsuccessEl.hidden = false;\n\t\t\t\t\tvar progressEl = app.querySelector('.ib-progress');\n\t\t\t\t\tif (progressEl) { progressEl.style.display = 'none'; }\n\t\t\t\t})\n\t\t\t\t.catch(function () {\n\t\t\t\t\tsubmitBtn.disabled = false;\n\t\t\t\t\tmsg.textContent = 'Could not submit the booking. Please check your connection and try again.';\n\t\t\t\t});\n\t\t});\n\t}\n\n\tshowStep(1);\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ai_generated_summary":"","wpai_meta_description":"","footnotes":""},"class_list":["post-8","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":1,"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/8\/revisions"}],"predecessor-version":[{"id":10,"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/8\/revisions\/10"}],"wp:attachment":[{"href":"https:\/\/coachbasit.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}