2026-05-13 20:44:01 +12:00
< script lang = "ts" >
2026-05-15 01:28:10 +12:00
import { reveal } from '$lib/actions/reveal' ;
import Icon from '$lib/components/Icon.svelte' ;
2026-05-13 20:44:01 +12:00
import { getEnhancedImage } from '$lib/enhanced-images' ;
import type { FounderStoryContent } from '$lib/types' ;
export let founderStory : FounderStoryContent ;
2026-05-18 09:43:29 +12:00
const founderTrustNotes = [
'The same friendly face at the door' ,
'Little groups, never a crowded van' ,
'Updates that help you relax while you are out'
];
2026-05-15 01:28:10 +12:00
const founderStoryParagraphs = [
'Goodwalk started with my own little dog and the kind of relationship I have always had with animals. Growing up in Italy with a German Shepherd, I saw early on how much joy, comfort, personality, and companionship dogs bring into a home. They are not just pets. They become part of your family and your daily life.' ,
'When I moved to Auckland, I noticed a lot of dog walking felt rushed, overcrowded, or impersonal, especially for smaller dogs. So I built Goodwalk around the kind of care I would want for my own dog: familiar faces, safe and social little groups, lots of fun, and genuine relationships with every dog we walk.' ,
'The Tiny Gang is built around routine, trust, and dogs having the absolute best part of their day together. Older dogs help younger ones settle in, nervous dogs build confidence, and playful dogs get to burn energy with their friends.' ,
'You know exactly who is caring for your dog. Your dog knows who is at the door. And you come home to a happy, fulfilled dog that has had a proper adventure. Ready to join the Tiny Gang?'
];
2026-05-13 20:44:01 +12:00
$ : founderStoryEnhanced = getEnhancedImage ( founderStory . imageUrl );
</ script >
2026-05-15 01:28:10 +12:00
< section id = "promise" use:reveal = {{ delay : 20 }} class="reveal-block" >
< div class = "founder-inner" >
< article class = "founder-note" >
2026-05-18 09:43:29 +12:00
< div class = "founder-intro" >
< span class = "eyebrow founder-kicker" > A note from Aless</ span >
< span class = "founder-greeting" > Hi, I'm Aless.</ span >
2026-05-13 20:44:01 +12:00
</ div >
2026-05-18 09:43:29 +12:00
< h2 class = "founder-heading" >
< span class = "founder-heading-main" > { founderStory . title } </ span >
< span class = "founder-heading-sub" > Goodwalk is built around trust.</ span >
</ h2 >
< div class = "founder-trust-strip" aria-label = "What owners can expect from Goodwalk" >
< span class = "founder-trust-label" > What owners notice first</ span >
< ul class = "founder-trust-list" >
{ #each founderTrustNotes as note }
< li > { note } </ li >
{ /each }
</ ul >
2026-05-15 01:28:10 +12:00
</ div >
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
< div class = "founder-body" >
{ #each founderStoryParagraphs as paragraph }
< p > { paragraph } </ p >
{ /each }
</ div >
< p class = "founder-closing" >
Ready to < strong > { founderStory . emphasis } </ strong >
</ p >
< div class = "founder-actions" >
< a class = "founder-contact-note" href = "mailto:info@goodwalk.co.nz" aria-label = "Email Aless at Goodwalk" >
< span class = "founder-contact-wave" aria-hidden = "true" > 👋</ span >
< span > If you are unsure about anything, feel free to email me anytime.</ span >
</ a >
< a href = { founderStory . cta . href } class="btn btn-green btn-with-arrow btn-hide-arrow-mobile founder-cta " >
{ founderStory . cta . label }
< Icon name = "fas fa-arrow-right" />
</ a >
</ div >
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
< div class = "founder-signoff" >
< div class = "founder-signoff-copy" >
< p class = "founder-signoff-name" > Aless, founder of Goodwalk</ p >
< p class = "founder-signoff-line" > The same calm face at the door, the same trusted routine for your dog.</ p >
</ div >
< div class = "founder-media-card" >
{ #if founderStoryEnhanced }
< enhanced:img
class = "founder-portrait"
src = { founderStoryEnhanced }
alt= { founderStory . imageAlt }
loading = "lazy"
decoding = "async"
/>
{ : else }
< img
class = "founder-portrait"
src = { founderStory . imageUrl }
alt= { founderStory . imageAlt }
loading = "lazy"
decoding = "async"
/>
{ /if }
</ div >
</ div >
2026-05-15 01:28:10 +12:00
</ article >
2026-05-13 20:44:01 +12:00
</ div >
</ section >
< style >
2026-05-18 09:43:29 +12:00
# promise {
content-visibility : auto ;
contain-intrinsic-size : 980 px ;
}
2026-05-15 01:28:10 +12:00
. founder-inner {
2026-05-18 09:43:29 +12:00
max-width : 880 px ;
2026-05-15 01:28:10 +12:00
margin : 0 auto ;
padding : 0 50 px ;
2026-05-13 20:44:01 +12:00
}
2026-05-18 09:43:29 +12:00
. founder-media-card {
overflow : hidden ;
width : min ( 100 % , 168 px );
border-radius : 24 px ;
background :
linear-gradient ( 180 deg , oklch ( 0.97 0.02 100 ) 0 % , oklch ( 0.93 0.03 102 ) 100 % );
box-shadow : 0 16 px 30 px rgba ( 17 , 20 , 24 , 0.08 );
}
. founder-portrait {
display : block ;
width : 100 % ;
aspect-ratio : 0.86 ;
object-fit : cover ;
object-position : center 24 % ;
}
2026-05-15 01:28:10 +12:00
. founder-note {
2026-05-18 09:43:29 +12:00
padding : clamp ( 32 px , 4 vw , 48 px );
background : var ( -- surface - panel );
border : 1 px solid var ( -- border - soft );
border-radius : 34 px ;
box-shadow : 0 24 px 60 px rgba ( 17 , 20 , 24 , 0.06 );
}
. founder-intro {
display : grid ;
gap : 8 px ;
margin-bottom : 18 px ;
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-kicker {
2026-05-18 09:43:29 +12:00
display : inline-block ;
color : var ( -- text - subtle );
font-size : 11 px ;
font-weight : 700 ;
letter-spacing : 0.16 em ;
text-transform : uppercase ;
}
. founder-greeting {
color : oklch ( 0.29 0.02 118 );
font-family : var ( -- font - head );
font-size : clamp ( 22 px , 2.5 vw , 28 px );
font-weight : 600 ;
letter-spacing : -0.03 em ;
line-height : 1.5 ;
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-heading {
2026-05-18 09:43:29 +12:00
display : grid ;
gap : 8 px ;
margin : 0 0 24 px ;
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-heading-main {
2026-05-13 20:44:01 +12:00
display : block ;
2026-05-18 09:43:29 +12:00
color : oklch ( 0.23 0.02 136 );
2026-05-13 20:44:01 +12:00
font-family : var ( -- font - head );
2026-05-18 09:43:29 +12:00
font-size : clamp ( 28 px , 3.6 vw , 42 px );
font-weight : 700 ;
letter-spacing : -0.035 em ;
line-height : 1.02 ;
2026-05-13 20:44:01 +12:00
}
2026-05-18 09:43:29 +12:00
. founder-heading-sub {
display : block ;
max-width : 28 ch ;
color : oklch ( 0.4 0.018 118 );
font-size : clamp ( 16 px , 1.8 vw , 20 px );
font-weight : 500 ;
line-height : 1.45 ;
}
. founder-trust-strip {
2026-05-15 01:28:10 +12:00
display : grid ;
2026-05-18 09:43:29 +12:00
gap : 10 px ;
margin : 0 0 28 px ;
padding-top : 18 px ;
border-top : 1 px solid var ( -- border - soft );
2026-05-13 20:44:01 +12:00
}
2026-05-18 09:43:29 +12:00
. founder-trust-label {
color : var ( -- text - subtle );
font-size : 11 px ;
font-weight : 700 ;
letter-spacing : 0.16 em ;
text-transform : uppercase ;
2026-05-13 20:44:01 +12:00
}
2026-05-18 09:43:29 +12:00
. founder-trust-list {
2026-05-15 01:28:10 +12:00
display : flex ;
2026-05-18 09:43:29 +12:00
flex-wrap : wrap ;
gap : 8 px 14 px ;
margin : 0 ;
padding : 0 ;
list-style : none ;
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-trust-list li {
position : relative ;
padding-left : 14 px ;
color : oklch ( 0.35 0.017 118 );
font-size : 14 px ;
font-weight : 600 ;
line-height : 1.5 ;
}
. founder-trust-list li :: before {
content : '' ;
position : absolute ;
top : 0.65 em ;
left : 0 ;
width : 6 px ;
height : 6 px ;
2026-05-15 01:28:10 +12:00
border-radius : 50 % ;
2026-05-18 09:43:29 +12:00
background : color-mix ( in srgb , var ( -- gw - green ) 72 % , white );
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-body {
display : grid ;
gap : 18 px ;
max-width : 67 ch ;
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-body p {
margin : 0 ;
color : oklch ( 0.39 0.014 105 );
font-size : var ( -- body - copy - size );
line-height : 1.75 ;
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-closing {
margin : 24 px 0 0 ;
color : oklch ( 0.24 0.018 136 );
2026-05-15 01:28:10 +12:00
font-family : var ( -- font - head );
2026-05-18 09:43:29 +12:00
font-size : clamp ( 18 px , 2 vw , 22 px );
font-weight : 600 ;
letter-spacing : -0.025 em ;
line-height : 1.25 ;
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-closing strong {
color : var ( -- gw - green );
font-weight : 800 ;
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-actions {
display : grid ;
gap : 18 px ;
justify-items : start ;
2026-05-15 01:28:10 +12:00
margin-top : 28 px ;
}
2026-05-13 20:44:01 +12:00
2026-05-15 01:28:10 +12:00
. founder-contact-note {
display : inline-flex ;
align-items : center ;
gap : 10 px ;
2026-05-18 09:43:29 +12:00
padding : 0 ;
2026-05-15 01:28:10 +12:00
border-radius : 18 px ;
2026-05-18 09:43:29 +12:00
color : oklch ( 0.33 0.018 118 );
2026-05-15 01:28:10 +12:00
font-size : 14 px ;
font-weight : 600 ;
line-height : 1.5 ;
text-decoration : none ;
2026-05-18 09:43:29 +12:00
transition :
color 0.18 s ease ,
transform 0.18 s ease ;
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-15 01:28:10 +12:00
. founder-contact-wave {
display : inline-flex ;
align-items : center ;
justify-content : center ;
width : 28 px ;
height : 28 px ;
border-radius : 50 % ;
2026-05-18 09:43:29 +12:00
background : var ( -- surface - panel - muted );
box-shadow : inset 0 0 0 1 px var ( -- border - soft );
2026-05-15 01:28:10 +12:00
font-size : 16 px ;
flex : 0 0 auto ;
}
2026-05-13 20:44:01 +12:00
2026-05-18 09:43:29 +12:00
. founder-cta {
margin-top : 2 px ;
}
. founder-signoff {
display : flex ;
align-items : end ;
justify-content : space-between ;
gap : 22 px ;
margin-top : 34 px ;
padding-top : 24 px ;
border-top : 1 px solid var ( -- border - soft );
}
. founder-signoff-copy {
display : grid ;
gap : 6 px ;
max-width : 30 ch ;
}
. founder-signoff-name {
margin : 0 ;
color : oklch ( 0.24 0.02 136 );
font-family : var ( -- font - head );
font-size : clamp ( 20 px , 2 vw , 24 px );
font-weight : 700 ;
letter-spacing : -0.03 em ;
line-height : 1.1 ;
}
. founder-signoff-line {
margin : 0 ;
color : var ( -- text - subtle );
font-size : 14 px ;
line-height : 1.55 ;
}
2026-05-15 01:28:10 +12:00
@ media ( hover : hover ) {
2026-05-18 09:43:29 +12:00
. founder-media-card : hover . founder-portrait {
transform : scale ( 1.02 );
}
. founder-portrait {
transition : transform 0.6 s cubic-bezier ( 0.22 , 1 , 0.36 , 1 );
}
2026-05-15 01:28:10 +12:00
. founder-contact-note : hover {
2026-05-18 09:43:29 +12:00
color : var ( -- gw - green );
2026-05-15 01:28:10 +12:00
transform : translateY ( -1 px );
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
}
2026-05-13 20:44:01 +12:00
2026-05-15 01:28:10 +12:00
@ media ( max-width : 768px ) {
. founder-inner {
padding : 0 var ( -- space - container - x - mobile );
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-note {
2026-05-18 09:43:29 +12:00
padding : 26 px 22 px 24 px ;
2026-05-15 01:28:10 +12:00
border-radius : 24 px ;
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-heading {
margin : 0 0 22 px ;
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-body p {
font-size : var ( -- body - copy - size - mobile );
line-height : 1.7 ;
2026-05-13 20:44:01 +12:00
}
2026-05-18 09:43:29 +12:00
. founder-media-card {
border-radius : 24 px ;
width : 132 px ;
}
. founder-trust-strip {
margin-bottom : 24 px ;
padding-top : 16 px ;
}
. founder-trust-list {
display : grid ;
gap : 8 px ;
}
. founder-trust-list li {
font-size : 13 px ;
}
2026-05-15 01:28:10 +12:00
. founder-contact-note {
display : flex ;
width : 100 % ;
font-size : 13 px ;
padding : 11 px 14 px ;
text-align : center ;
2026-05-13 20:44:01 +12:00
}
2026-05-15 01:28:10 +12:00
. founder-cta {
2026-05-13 20:44:01 +12:00
width : 100 % ;
justify-content : center ;
}
2026-05-18 09:43:29 +12:00
. founder-signoff {
align-items : start ;
flex-direction : column ;
margin-top : 28 px ;
padding-top : 20 px ;
}
. founder-signoff-copy {
max-width : none ;
}
2026-05-13 20:44:01 +12:00
}
</ style >