{#if submitted} (submitted = false)} /> {/if} {#if showErrorModal} (showErrorModal = false)} onRetry={() => (showErrorModal = false)} /> {/if}
{bookingEyebrow}

{headingParts.plain}{' '} {headingParts.highlight}

{bookingIntro}

Reply within 24 hours Free, no-obligation Meet & Greet
{#if step === 1}
{#if detailsStepIntro}
{detailsStepIntro}
{/if}
{#if allowGeneralEnquiry}

General enquiries cover feedback, complaints, business enquiries, and other non-booking messages.

{/if} {#if !isGeneralEnquiry}
clearError('petName')} /> {#if errors.petName}

{errors.petName}

{/if}
clearError('location')} /> {#if errors.location}

{errors.location}

{/if}
{#if errors.message}

{errors.message}

{/if}
{#if hasServices}
 Services
{#each booking.serviceOptions as service} {/each}
{/if}
{/if} {#if isGeneralEnquiry}
{#if errors.message}

{errors.message}

{/if}
{/if}

No payment, no pressure, just the right starting point for your dog.

{:else}
{#if ownerIntro}
{ownerIntro}
{/if}
clearError('fullName')} /> {#if errors.fullName}

{errors.fullName}

{/if}
clearError('email')} on:blur={() => { if (!email.trim()) return; const msg = validateEmail(email); errors = { ...errors, email: msg }; }} /> {#if errors.email}

{errors.email}

{/if}
clearError('phone')} /> {#if errors.phone}

{errors.phone}

{/if}
{/if}