We’re Here to Help

Contact Solace Haven

Questions about treatments, appointment requests or service areas? Contact us using our business contact details.

Hours

Daily, by appointment. Hours vary by location and therapist availability.

Frequently Asked Questions

Is my appointment confirmed immediately?

No. Appointment requests are reviewed for time and therapist availability. Your appointment is confirmed only after approval and any required next steps.

Do you offer home visits?

Mobile service may be available in selected areas. Submit your city and address in the booking request so availability can be checked.

How do I pay?

Online payment options will be added after the booking process and payment provider are configured.

const menuBtn=document.getElementById('menuBtn'); if(menuBtn) menuBtn.addEventListener('click',()=>document.getElementById('navLinks').classList.toggle('open')); const dateInput=document.getElementById('date'); if(dateInput){const today=new Date(); dateInput.min=new Date(today.getTime()-today.getTimezoneOffset()*60000).toISOString().slice(0,10);} const servicePrices={'Swedish Massage':{'60':55,'90':75},'Deep Tissue Massage':{'60':65,'90':90},'Hot Stone Massage':{'60':70,'90':95},'Aromatherapy Massage':{'60':60,'90':80},'Couples Massage':{'60':120,'90':170},'Nuru Massage':{'60':100,'90':140}}; const serviceEl=document.getElementById('service'), durationEl=document.getElementById('duration'), priceOut=document.getElementById('bookingPrice'); function updateBookingPrice(){if(!serviceEl||!durationEl||!priceOut)return;const service=serviceEl.value,duration=durationEl.value;if(service&&duration&&servicePrices[service])priceOut.textContent='Selected price: $'+servicePrices[service][duration]+(service==='Couples Massage'?' per couple':'')+' for '+duration+' minutes.';else priceOut.textContent='Select a service and duration to see the price.';} if(serviceEl)serviceEl.addEventListener('change',updateBookingPrice);if(durationEl)durationEl.addEventListener('change',updateBookingPrice); const serviceType=document.getElementById('serviceType'), mobileDetails=document.getElementById('mobileDetails'), stateField=document.getElementById('stateField'), stateSelect=document.getElementById('state'), mobileAddress=document.getElementById('mobileAddress'), mobileCity=document.getElementById('mobileCity'), mobileZip=document.getElementById('mobileZip'), mobileState=document.getElementById('mobileState'); function updateServiceLocation(){if(!serviceType||!mobileDetails||!stateField||!stateSelect||!mobileAddress||!mobileCity||!mobileZip||!mobileState)return;const mobile=serviceType.value==='mobile';mobileDetails.classList.toggle('show',mobile);stateField.style.display=mobile?'none':'flex';stateSelect.required=!mobile;mobileAddress.required=mobile;mobileCity.required=mobile;mobileZip.required=mobile;mobileState.required=mobile;stateSelect.disabled=mobile;mobileAddress.disabled=!mobile;mobileCity.disabled=!mobile;mobileZip.disabled=!mobile;mobileState.disabled=!mobile;const access=document.getElementById('accessDetails');if(access)access.disabled=!mobile;} if(serviceType){serviceType.addEventListener('change',updateServiceLocation);updateServiceLocation();} const bookingForm=document.getElementById('bookingForm');if(bookingForm)bookingForm.addEventListener('submit',e=>{e.preventDefault();const toast=document.getElementById('formToast');const isMobile=serviceType&&serviceType.value==='mobile';const chosenState=isMobile?mobileState.value:stateSelect.value;const servicePlace=isMobile?'Mobile / Home Service — '+mobileAddress.value+', '+mobileCity.value+', '+chosenState+' '+mobileZip.value:'Spa visit — '+chosenState;toast.textContent='Thank you, '+document.getElementById('name').value+'. Request preview: '+servicePlace+'. This preview has not sent your request. Connect a secure booking backend before accepting real appointments.';toast.classList.add('show');}); /* NAV_ACTIVE_LINK */ (()=>{const current=(location.pathname.split('/').pop()||'index.html').toLowerCase();document.querySelectorAll('#navLinks a').forEach(a=>{const target=(a.getAttribute('href')||'').split('#')[0].toLowerCase();if(target===current){a.setAttribute('aria-current','page');}});})();