- {#if detailsStepIntro}
+ {#if detailsStepIntro && !isCardStepper}
{#if allowGeneralEnquiry && !isGeneralEnquiry}
@@ -684,12 +737,12 @@
- {#if ownerIntro}
+ {#if ownerIntro && !isCardStepper}
{ownerIntro}
{/if}
@@ -791,6 +844,8 @@
{/if}
+
+
@@ -820,4 +875,522 @@
opacity: 0;
pointer-events: none;
}
+
+ .booking-shell--card-stepper {
+ background:
+ linear-gradient(180deg, rgba(255, 255, 255, 0.7), rgba(248, 247, 242, 0.9));
+ }
+
+ .booking-shell--card-stepper :global(.form-inner) {
+ max-width: 1040px;
+ }
+
+ .booking-shell--card-stepper .booking-header {
+ max-width: 840px;
+ margin: 0 auto 34px;
+ }
+
+ .booking-shell--card-stepper .booking-eyebrow {
+ padding: 7px 14px;
+ background: rgba(33, 48, 33, 0.05);
+ box-shadow: inset 0 0 0 1px rgba(17, 20, 24, 0.05);
+ text-transform: none;
+ letter-spacing: 0.04em;
+ }
+
+ .booking-shell--card-stepper .booking-title {
+ margin-bottom: 20px;
+ font-size: clamp(38px, 5vw, 58px);
+ line-height: 1.02;
+ }
+
+ .booking-shell--card-stepper .booking-intro {
+ max-width: 42rem;
+ margin: 0 auto;
+ }
+
+ .booking-shell--card-stepper .booking-form-shell {
+ max-width: 900px;
+ margin: 0 auto;
+ padding: 0 24px 28px;
+ border-radius: 30px;
+ background: rgba(255, 255, 255, 0.94);
+ box-shadow:
+ inset 0 0 0 1px rgba(17, 20, 24, 0.06),
+ 0 22px 52px rgba(17, 20, 24, 0.08);
+ }
+
+ .booking-shell--card-stepper .booking-social-proof {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 16px;
+ margin: 0 -24px;
+ padding: 16px 24px;
+ border-radius: 30px 30px 0 0;
+ background:
+ linear-gradient(180deg, rgba(33, 48, 33, 0.06), rgba(33, 48, 33, 0.035));
+ box-shadow: inset 0 -1px 0 rgba(17, 20, 24, 0.08);
+ }
+
+ .booking-shell--card-stepper .booking-form-shell-top {
+ padding: 22px 0;
+ border-bottom: 1px solid rgba(17, 20, 24, 0.08);
+ }
+
+ .booking-shell--card-stepper .booking-social-proof p {
+ margin: 0;
+ color: var(--gw-green);
+ font-family: var(--font-head);
+ font-size: 17px;
+ font-weight: 600;
+ line-height: 1.3;
+ text-wrap: balance;
+ text-align: center;
+ }
+
+ .booking-shell--card-stepper .booking-avatar-group {
+ display: flex;
+ align-items: center;
+ flex: none;
+ padding-left: 14px;
+ }
+
+ .booking-shell--card-stepper .booking-avatar-bubble {
+ display: inline-flex;
+ width: 50px;
+ height: 50px;
+ margin-left: -14px;
+ overflow: hidden;
+ border: 3px solid rgba(255, 255, 255, 0.96);
+ border-radius: 50%;
+ background: rgba(255, 255, 255, 0.16);
+ box-shadow: 0 8px 18px rgba(17, 20, 24, 0.08);
+ }
+
+ .booking-shell--card-stepper .booking-avatar-bubble img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+
+ .booking-shell--card-stepper .booking-stepper {
+ gap: 20px;
+ margin-top: 24px;
+ padding: 0;
+ background: transparent;
+ box-shadow: none;
+ }
+
+ .booking-shell--card-stepper .booking-step {
+ min-height: 50px;
+ padding: 10px 16px;
+ border-radius: 999px;
+ }
+
+ .booking-shell--card-stepper .booking-step.active {
+ background: rgba(33, 48, 33, 0.06);
+ }
+
+ .booking-shell--card-stepper .booking-step-number {
+ width: 42px;
+ height: 42px;
+ border: none;
+ border-radius: 13px;
+ background: var(--gw-green);
+ color: var(--yellow);
+ font-size: 18px;
+ }
+
+ .booking-shell--card-stepper .booking-step.active .booking-step-number {
+ background: linear-gradient(135deg, var(--gw-green), var(--green-mid));
+ border: none;
+ }
+
+ .booking-shell--card-stepper .booking-step-divider {
+ width: 48px;
+ height: 1px;
+ background: rgba(17, 20, 24, 0.12);
+ }
+
+ .booking-shell--card-stepper .booking-panel {
+ max-width: none;
+ margin: 24px 0 0;
+ padding: 0;
+ background: transparent;
+ box-shadow: none;
+ }
+
+ .booking-shell--card-stepper .booking-panel-banner {
+ margin-bottom: 18px;
+ padding: 0;
+ border: none;
+ border-radius: 0;
+ background: transparent;
+ box-shadow: none;
+ color: #4f555c;
+ font-size: 16px;
+ line-height: 1.65;
+ }
+
+ .booking-shell--card-stepper .booking-card-grid {
+ gap: 14px;
+ }
+
+ .booking-shell--card-stepper .booking-card-grid-with-banner .booking-field-card {
+ border-radius: 26px;
+ }
+
+ .booking-shell--card-stepper .booking-field-card {
+ border-radius: 0;
+ background: transparent;
+ box-shadow: none;
+ padding: 0;
+ }
+
+ .booking-shell--card-stepper .booking-field-card-group {
+ padding: 0;
+ }
+
+ .booking-shell--card-stepper .booking-inline-switch {
+ justify-content: flex-start;
+ padding: 0 4px;
+ margin-bottom: 0;
+ color: #5d636a;
+ background: transparent;
+ box-shadow: none;
+ }
+
+ .booking-shell--card-stepper .booking-field-card label,
+ .booking-shell--card-stepper .booking-service-label {
+ color: #171b20;
+ font-size: 15px;
+ font-weight: 600;
+ letter-spacing: 0;
+ text-transform: none;
+ }
+
+ .booking-shell--card-stepper .booking-field-card input,
+ .booking-shell--card-stepper .booking-field-card textarea {
+ border: 1px solid rgba(17, 20, 24, 0.1);
+ background: #fff;
+ box-shadow: none;
+ }
+
+ .booking-shell--card-stepper .booking-field-card input:hover,
+ .booking-shell--card-stepper .booking-field-card textarea:hover {
+ border-color: rgba(17, 20, 24, 0.18);
+ background: #fff;
+ box-shadow: none;
+ }
+
+ .booking-shell--card-stepper .booking-field-card input:focus,
+ .booking-shell--card-stepper .booking-field-card textarea:focus {
+ border-color: rgba(33, 48, 33, 0.45);
+ background: #fff;
+ box-shadow: 0 0 0 4px rgba(255, 209, 0, 0.12);
+ }
+
+ .booking-shell--card-stepper .booking-selected-service-chip,
+ .booking-shell--card-stepper .booking-check-option {
+ background: transparent;
+ }
+
+ .booking-shell--card-stepper .booking-actions {
+ max-width: none;
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .booking-shell--card-stepper .booking-actions-next,
+ .booking-shell--card-stepper .booking-actions-final {
+ margin-top: 18px;
+ }
+
+ .booking-shell--card-stepper .booking-next-note {
+ color: #687076;
+ }
+
+ .booking-shell--card-stepper .booking-submit-button,
+ .booking-shell--card-stepper .booking-next-button {
+ box-shadow:
+ inset 0 -2px 0 rgba(0, 0, 0, 0.08),
+ 0 12px 24px rgba(17, 20, 24, 0.1);
+ }
+
+ .booking-shell--minimal-premium {
+ background:
+ linear-gradient(180deg, rgba(255, 255, 255, 0.78), rgba(248, 247, 242, 0.72));
+ }
+
+ .booking-shell--minimal-premium :global(.form-inner) {
+ max-width: 980px;
+ }
+
+ .booking-shell--minimal-premium .booking-header {
+ max-width: 760px;
+ margin: 0 auto 34px;
+ }
+
+ .booking-shell--minimal-premium .booking-eyebrow {
+ background: rgba(33, 48, 33, 0.06);
+ box-shadow: inset 0 0 0 1px rgba(17, 20, 24, 0.05);
+ color: var(--gw-green);
+ }
+
+ .booking-shell--minimal-premium .booking-title {
+ margin-bottom: 18px;
+ color: #11171b;
+ }
+
+ .booking-shell--minimal-premium .booking-intro {
+ max-width: 38rem;
+ margin: 0 auto;
+ color: #59606d;
+ font-size: 16px;
+ line-height: 1.65;
+ }
+
+ .booking-shell--minimal-premium .booking-trust-row {
+ justify-content: center;
+ gap: 10px;
+ margin-top: 20px;
+ }
+
+ .booking-shell--minimal-premium .booking-trust-chip {
+ background: rgba(33, 48, 33, 0.05);
+ box-shadow: inset 0 0 0 1px rgba(17, 20, 24, 0.05);
+ color: var(--gw-green);
+ }
+
+ .booking-shell--minimal-premium .booking-stepper {
+ justify-content: center;
+ margin-top: 24px;
+ }
+
+ .booking-shell--minimal-premium .booking-step {
+ background: rgba(255, 255, 255, 0.86);
+ box-shadow:
+ inset 0 0 0 1px rgba(17, 20, 24, 0.06),
+ 0 8px 18px rgba(17, 20, 24, 0.05);
+ }
+
+ .booking-shell--minimal-premium .booking-step.active {
+ background: rgba(33, 48, 33, 0.08);
+ }
+
+ .booking-shell--minimal-premium .booking-panel {
+ max-width: 860px;
+ margin: 0 auto;
+ padding: 30px;
+ border-radius: 32px;
+ background: rgba(251, 251, 251, 0.92);
+ box-shadow:
+ inset 0 0 0 1px rgba(17, 20, 24, 0.05),
+ 0 22px 52px rgba(17, 20, 24, 0.08);
+ }
+
+ .booking-shell--minimal-premium .booking-panel-banner {
+ margin-bottom: 22px;
+ padding: 0;
+ border-radius: 0;
+ background: transparent;
+ box-shadow: none;
+ color: #59606d;
+ font-size: 15px;
+ line-height: 1.65;
+ }
+
+ .booking-shell--minimal-premium .booking-card-grid {
+ gap: 18px;
+ }
+
+ .booking-shell--minimal-premium .booking-field-card,
+ .booking-shell--minimal-premium .booking-inline-switch {
+ border-radius: 24px;
+ background: linear-gradient(180deg, rgba(251, 251, 251, 0.98), rgba(247, 248, 246, 1));
+ box-shadow:
+ inset 0 0 0 1px rgba(17, 20, 24, 0.05),
+ 0 12px 26px rgba(17, 20, 24, 0.05);
+ }
+
+ .booking-shell--minimal-premium .booking-field-card {
+ padding: 24px;
+ }
+
+ .booking-shell--minimal-premium .booking-field-card-group {
+ padding: 24px;
+ }
+
+ .booking-shell--minimal-premium .booking-inline-switch {
+ padding: 16px 18px;
+ }
+
+ .booking-shell--minimal-premium .booking-field-card label,
+ .booking-shell--minimal-premium .booking-service-label {
+ color: #171b20;
+ }
+
+ .booking-shell--minimal-premium .booking-field-card input,
+ .booking-shell--minimal-premium .booking-field-card textarea {
+ border: none;
+ background: rgba(255, 255, 255, 0.96);
+ box-shadow:
+ inset 0 0 0 1px rgba(17, 20, 24, 0.08),
+ 0 1px 0 rgba(255, 255, 255, 0.3);
+ }
+
+ .booking-shell--minimal-premium .booking-field-card input:hover,
+ .booking-shell--minimal-premium .booking-field-card textarea:hover {
+ border: none;
+ background: #fff;
+ box-shadow:
+ inset 0 0 0 1px rgba(17, 20, 24, 0.12),
+ 0 4px 12px rgba(17, 20, 24, 0.04);
+ }
+
+ .booking-shell--minimal-premium .booking-field-card input:focus,
+ .booking-shell--minimal-premium .booking-field-card textarea:focus {
+ border: none;
+ background: #fff;
+ box-shadow:
+ inset 0 0 0 2px rgba(255, 209, 0, 0.6),
+ 0 0 0 4px rgba(255, 209, 0, 0.14);
+ }
+
+ .booking-shell--minimal-premium .booking-selected-service-chip,
+ .booking-shell--minimal-premium .booking-check-option {
+ background: rgba(255, 255, 255, 0.9);
+ }
+
+ .booking-shell--minimal-premium .booking-actions {
+ max-width: 860px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ .booking-shell--minimal-premium .booking-actions-next {
+ margin-top: 18px;
+ }
+
+ .booking-shell--minimal-premium .booking-actions-final {
+ margin-top: 18px;
+ }
+
+ .booking-shell--minimal-premium .booking-next-note {
+ color: #687076;
+ }
+
+ .booking-shell--minimal-premium .booking-submit-button,
+ .booking-shell--minimal-premium .booking-next-button {
+ box-shadow:
+ inset 0 -2px 0 rgba(0, 0, 0, 0.08),
+ 0 12px 24px rgba(17, 20, 24, 0.1);
+ }
+
+ @media (max-width: 768px) {
+ .booking-shell--card-stepper .booking-header {
+ margin-bottom: 26px;
+ }
+
+ .booking-shell--card-stepper .booking-title {
+ margin-bottom: 18px;
+ font-size: 34px;
+ }
+
+ .booking-shell--card-stepper .booking-form-shell {
+ padding: 0 18px 22px;
+ border-radius: 24px;
+ }
+
+ .booking-shell--card-stepper .booking-social-proof {
+ align-items: center;
+ flex-direction: column;
+ gap: 10px;
+ margin: 0 -18px;
+ padding: 14px 18px;
+ border-radius: 24px 24px 0 0;
+ }
+
+ .booking-shell--card-stepper .booking-form-shell-top {
+ padding: 18px 0;
+ }
+
+ .booking-shell--card-stepper .booking-social-proof p {
+ font-size: 16px;
+ }
+
+ .booking-shell--card-stepper .booking-stepper {
+ gap: 10px;
+ padding: 0;
+ }
+
+ .booking-shell--card-stepper .booking-step {
+ min-width: 0;
+ flex: 1 1 0;
+ justify-content: center;
+ gap: 8px;
+ padding: 10px;
+ }
+
+ .booking-shell--card-stepper .booking-step-number {
+ width: 38px;
+ height: 38px;
+ font-size: 15px;
+ }
+
+ .booking-shell--card-stepper .booking-step-label {
+ font-size: 13px;
+ }
+
+ .booking-shell--card-stepper .booking-step-divider {
+ display: none;
+ }
+
+ .booking-shell--card-stepper .booking-panel {
+ margin-top: 20px;
+ }
+
+ .booking-shell--card-stepper .booking-panel-banner {
+ font-size: 15px;
+ }
+
+ .booking-shell--card-stepper .booking-field-card,
+ .booking-shell--card-stepper .booking-field-card-group {
+ padding: 0;
+ border-radius: 0;
+ }
+
+ .booking-shell--card-stepper .booking-inline-switch {
+ border-radius: 20px;
+ }
+
+ .booking-shell--minimal-premium .booking-header {
+ margin-bottom: 26px;
+ }
+
+ .booking-shell--minimal-premium .booking-intro {
+ font-size: 15px;
+ line-height: 1.58;
+ }
+
+ .booking-shell--minimal-premium .booking-stepper {
+ gap: 8px;
+ }
+
+ .booking-shell--minimal-premium .booking-panel {
+ padding: 18px;
+ border-radius: 24px;
+ }
+
+ .booking-shell--minimal-premium .booking-field-card,
+ .booking-shell--minimal-premium .booking-field-card-group {
+ padding: 20px;
+ border-radius: 22px;
+ }
+
+ .booking-shell--minimal-premium .booking-inline-switch {
+ border-radius: 20px;
+ }
+ }
diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte
index 03cf698..dde46f4 100644
--- a/src/lib/components/Footer.svelte
+++ b/src/lib/components/Footer.svelte
@@ -46,16 +46,22 @@
decoding="async"
/>
{footer.brandText}
-
-
-
-
-
-
-
-
-
-
+
{#if footer.email || footer.phone}
diff --git a/src/lib/components/PricingPage.svelte b/src/lib/components/PricingPage.svelte
index f4bfac8..1b1573b 100644
--- a/src/lib/components/PricingPage.svelte
+++ b/src/lib/components/PricingPage.svelte
@@ -14,14 +14,12 @@
let showMeetGreetPrompt = false;
let dismissMeetGreetPrompt = false;
- let bookingInView = false;
let promptShown = false;
let canShowDesktopPrompt = false;
const desktopPromptMediaQuery = '(min-width: 769px)';
- const scrollDepthThreshold = 0.65;
function revealMeetGreetPrompt() {
- if (dismissMeetGreetPrompt || bookingInView || promptShown || !canShowDesktopPrompt) {
+ if (dismissMeetGreetPrompt || promptShown || !canShowDesktopPrompt) {
return;
}
@@ -39,7 +37,7 @@
dismissMeetGreetPrompt = true;
}
- $: if ((!canShowDesktopPrompt || bookingInView) && showMeetGreetPrompt) {
+ $: if (!canShowDesktopPrompt && showMeetGreetPrompt) {
showMeetGreetPrompt = false;
}
@@ -51,42 +49,27 @@
canShowDesktopPrompt = event.matches;
};
+ const firstPricingSection = document.querySelector
('.pricing-section');
+
const handleScroll = () => {
- if (promptShown || dismissMeetGreetPrompt || bookingInView || !canShowDesktopPrompt) {
+ if (promptShown || dismissMeetGreetPrompt || !canShowDesktopPrompt || !firstPricingSection) {
return;
}
- const scrollableHeight = document.documentElement.scrollHeight - window.innerHeight;
- if (scrollableHeight <= 0) return;
-
- const scrollPercent = window.scrollY / scrollableHeight;
- if (scrollPercent >= scrollDepthThreshold) {
+ const firstSectionBottom = firstPricingSection.getBoundingClientRect().bottom;
+ if (firstSectionBottom <= 0) {
revealMeetGreetPrompt();
}
};
window.addEventListener('scroll', handleScroll, { passive: true });
- const bookingSection = document.getElementById('newlead');
- const bookingObserver = bookingSection
- ? new IntersectionObserver(
- ([entry]) => {
- bookingInView = entry.isIntersecting;
- },
- { threshold: 0.2 }
- )
- : null;
-
- if (bookingObserver && bookingSection) {
- bookingObserver.observe(bookingSection);
- }
-
desktopPromptQuery.addEventListener('change', handleDesktopPromptViewportChange);
+ handleScroll();
return () => {
window.removeEventListener('scroll', handleScroll);
desktopPromptQuery.removeEventListener('change', handleDesktopPromptViewportChange);
- bookingObserver?.disconnect();
};
});
@@ -174,7 +157,7 @@
testimonials={content.testimonials}
seedKey="/our-pricing"
/>
-
+
{#if showMeetGreetPrompt}
@@ -183,16 +166,36 @@
-
-
- Free Meet & Greet
-
+
+
+
+ Free Meet & Greet
+
+
+
+
+
+ Talk it through with Aless
+ Founder, Goodwalk
+
+
+
+
- Not sure which option fits best? We can talk it through together and make sure your dog ends up happy.
+ Not sure which option fits best? Aless can help you choose the right walk or visit for your dog, routine, and temperament.
- Book a Meet & Greet
+
+ Book a Meet & Greet
+
+
{/if}
@@ -276,8 +279,8 @@
height: 56px;
margin-bottom: 16px;
border-radius: 16px;
- background: var(--gw-green);
- color: #fff;
+ background: linear-gradient(135deg, var(--gw-green), var(--green-mid));
+ color: var(--yellow);
font-size: 22px;
}
@@ -304,6 +307,8 @@
.pricing-plan-grid-three {
grid-template-columns: repeat(3, minmax(0, 1fr));
+ max-width: calc(((var(--max-w) - (var(--space-container-x) * 2) - (22px * 3)) / 4 * 3) + (22px * 2));
+ margin-inline: auto;
}
.pricing-section-mobile-cta,
@@ -317,23 +322,30 @@
bottom: 24px;
z-index: 30;
display: flex;
- align-items: flex-end;
+ flex-direction: column;
gap: 18px;
- width: min(420px, calc(100vw - 32px));
- padding: 18px 18px 18px 20px;
- border-radius: 28px;
+ width: min(430px, calc(100vw - 32px));
+ padding: 20px;
+ border-radius: 30px;
background:
- linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(247, 243, 232, 0.98));
+ radial-gradient(circle at top right, rgba(255, 209, 0, 0.12), rgba(255, 209, 0, 0) 34%),
+ linear-gradient(180deg, rgba(251, 251, 251, 0.98), rgba(247, 248, 246, 0.98));
box-shadow:
- 0 20px 40px rgba(17, 20, 24, 0.16),
- 0 0 0 1px rgba(17, 20, 24, 0.06);
+ 0 20px 40px rgba(17, 20, 24, 0.14),
+ inset 0 0 0 1px rgba(17, 20, 24, 0.06);
animation: meet-greet-rise 0.28s cubic-bezier(0.22, 1, 0.36, 1);
backdrop-filter: blur(10px);
}
.meet-greet-copy {
min-width: 0;
- flex: 1;
+ }
+
+ .meet-greet-top {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 14px;
}
.meet-greet-kicker {
@@ -355,22 +367,69 @@
font-size: 12px;
}
+ .meet-greet-profile {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ min-width: 0;
+ padding: 8px 10px 8px 8px;
+ border-radius: 18px;
+ background: rgba(33, 48, 33, 0.05);
+ box-shadow: inset 0 0 0 1px rgba(33, 48, 33, 0.07);
+ }
+
+ .meet-greet-avatar {
+ width: 52px;
+ height: 52px;
+ border-radius: 16px;
+ object-fit: cover;
+ object-position: center top;
+ flex: 0 0 auto;
+ box-shadow:
+ 0 8px 20px rgba(17, 20, 24, 0.12),
+ inset 0 0 0 1px rgba(255, 255, 255, 0.18);
+ }
+
+ .meet-greet-profile-copy {
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ }
+
+ .meet-greet-profile-copy strong {
+ color: #16181d;
+ font-family: var(--font-head);
+ font-size: 12px;
+ font-weight: 700;
+ line-height: 1.3;
+ }
+
+ .meet-greet-profile-copy span {
+ color: #59606d;
+ font-size: 12px;
+ line-height: 1.35;
+ }
+
.meet-greet-copy p {
- margin: 0;
+ margin: 14px 0 0;
color: #2f3134;
font-size: 15px;
line-height: 1.55;
}
.meet-greet-cta {
- flex-shrink: 0;
- align-self: center;
- padding: 12px 18px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 10px;
+ width: 100%;
+ padding: 14px 18px;
border-radius: 999px;
- background: var(--yellow);
+ background: linear-gradient(135deg, #ffd54a, var(--yellow-soft));
color: #111;
font-family: var(--font-head);
font-size: 14px;
+ font-weight: 700;
text-decoration: none;
box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.08);
transition:
@@ -401,7 +460,7 @@
@media (hover: hover) {
.meet-greet-cta:hover {
transform: translateY(-2px);
- background: #ffd100;
+ background: linear-gradient(135deg, #ffdc66, #f4c94f);
box-shadow:
inset 0 -2px 0 rgba(0, 0, 0, 0.08),
0 12px 24px rgba(17, 20, 24, 0.12);
@@ -434,6 +493,7 @@
.pricing-plan-grid,
.pricing-plan-grid-three {
grid-template-columns: repeat(2, minmax(0, 1fr));
+ max-width: none;
}
}
@@ -470,6 +530,7 @@
.pricing-plan-grid-three {
grid-template-columns: 1fr;
gap: 18px;
+ max-width: none;
}
.pricing-section-mobile-cta {
@@ -518,13 +579,17 @@
left: 16px;
bottom: 16px;
width: auto;
- flex-direction: column;
- align-items: stretch;
gap: 14px;
padding: 18px 18px 16px;
border-radius: 28px;
}
+ .meet-greet-top {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 12px;
+ }
+
.meet-greet-copy p {
font-size: 14px;
line-height: 1.5;
@@ -532,7 +597,7 @@
}
.meet-greet-cta {
- align-self: flex-start;
+ width: 100%;
}
}
diff --git a/src/lib/components/PricingPlanCard.svelte b/src/lib/components/PricingPlanCard.svelte
index 1c69b74..699d33e 100644
--- a/src/lib/components/PricingPlanCard.svelte
+++ b/src/lib/components/PricingPlanCard.svelte
@@ -1,4 +1,6 @@
+
+
+
+
diff --git a/src/lib/styles/responsive.css b/src/lib/styles/responsive.css
index 4fe11c4..f328284 100644
--- a/src/lib/styles/responsive.css
+++ b/src/lib/styles/responsive.css
@@ -673,6 +673,19 @@
max-width: none;
}
+ .footer-social-cluster {
+ gap: 8px;
+ }
+
+ .footer-social-invite {
+ font-size: 11px;
+ padding-left: 2px;
+ }
+
+ :global(.footer-social-invite-arrow) {
+ font-size: 13px;
+ }
+
.footer-col-label {
margin-bottom: 12px;
}
diff --git a/src/lib/styles/sections.css b/src/lib/styles/sections.css
index ab0624f..23256ea 100644
--- a/src/lib/styles/sections.css
+++ b/src/lib/styles/sections.css
@@ -545,6 +545,33 @@ footer {
max-width: 30ch;
}
+.footer-social-cluster {
+ display: inline-flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 10px;
+}
+
+.footer-social-invite {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ padding-left: 4px;
+ color: rgba(255, 255, 255, 0.82);
+ font-family: var(--font-head);
+ font-size: 12px;
+ font-weight: 700;
+ letter-spacing: 0.02em;
+ line-height: 1.2;
+}
+
+:global(.footer-social-invite-arrow) {
+ font-size: 14px;
+ color: var(--yellow);
+ transform: rotate(24deg);
+ transition: transform 0.18s cubic-bezier(0.22, 1, 0.36, 1);
+}
+
.social-links a {
width: 44px;
height: 44px;
@@ -567,6 +594,12 @@ footer {
transform: translateY(-1px);
}
+@media (hover: hover) {
+ .footer-social-cluster:hover :global(.footer-social-invite-arrow) {
+ transform: rotate(34deg) translateX(1px) translateY(1px);
+ }
+}
+
.footer-col-label {
margin: 0 0 14px;
font-family: var(--font-head);
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 2ede4be..b13699a 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -138,7 +138,7 @@
-
+
{/if}
diff --git a/src/routes/variants-contact-form/+page.svelte b/src/routes/variants-contact-form/+page.svelte
new file mode 100644
index 0000000..b2962a0
--- /dev/null
+++ b/src/routes/variants-contact-form/+page.svelte
@@ -0,0 +1,922 @@
+
+
+
+ Contact Form Variants | Goodwalk
+
+
+
+
+
+
+
+
+ Premium, calm, small-dog focused
+
+
+
+ Free Meet & Greet CTA in every version
+
+
+
+ Mobile-first comparison
+
+
+
+
+
+
+
+
+
+
+ 01. Improved current
+
Keep the friendly Goodwalk feel, but lighten the weight and improve the rhythm.
+
+
+ This is the safest replacement direction. It still feels recognisably Goodwalk, but the hierarchy is clearer,
+ the trust cues breathe more, and the form reads more like an application than an enquiry box.
+
+
+
+
+
+
+
+
+ Reply within 24 hours
+
+
+
+ Nervous dogs welcome
+
+
+
+ Free Meet & Greet first
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 02. Split hero + form
+
Put the emotional reassurance and brand story beside the action.
+
+
+ Better when the primary objection is trust. The left panel does the calming and framing; the right panel asks
+ for details once the page already feels safe.
+
+
+
+
+
+
+
+
+
+
Book with confidence
+
Your dog starts with a real person, not a platform.
+
+ Every enquiry goes to Aless. If your dog would thrive in Tiny Gang, we will say so. If they need more space,
+ time, or a calmer first step, we will say that too.
+
+
+ Small-dog aware matching, not one-size-fits-all scheduling
+ Free Meet & Greet before anything starts
+ Strong fit for tiny dogs, nervous dogs, and routine-focused owners
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 03. Card-based stepper
+
Make the guided application structure feel deliberate and premium.
+
+
+ This version leans into progression and sequencing. Strong if you want the form to feel curated and higher-value
+ rather than like a standard contact action.
+
+
+
+
+
+
+ 1
+ Dog fit
+ Temperament, location, and Tiny Gang suitability.
+
+
+ 2
+ Owner details
+ Just enough to reply and arrange the Meet & Greet.
+
+
+ 3
+ Warm follow-up
+ Personal reply from Aless within 24 hours.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 04. Conversational form
+
Sound more like Goodwalk speaking directly to the owner.
+
+
+ This version is the warmest. Strongest if conversion improves when the interaction feels personal and guided,
+ especially for worried owners and first-time dog-walking clients.
+
+
+
+
+
+ A calmer first step
+
+ We are not looking for perfect answers here. Just enough context to understand your dog properly and point you
+ toward the right walk, visit, or Meet & Greet conversation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 05. Trust-first form
+
Lead with reassurance before asking for any effort.
+
+
+ Best when the core conversion barrier is “Can I trust you with my dog?” rather than “Do I understand the service?”
+ The form still matters, but the trust panel leads the page.
+
+
+
+
+
+
+
+
+
+
+
+ 06. Ultra-minimal premium
+
Cut almost everything back and let spacing, typography, and reassurance do the work.
+
+
+ The quietest option. Strong if the brand is confident enough to convert with restraint rather than explanation.
+ Probably best for a higher-trust audience or repeat referrals.
+
+
+
+
+
+
Free Meet & Greet
+
Start with the right fit.
+
+ Tell us about your dog, your area, and the kind of support you need. We will come back with a calm next step,
+ not a hard sell.
+
+
+
+
+
+
+
+
+
+
+
+