This commit is contained in:
2026-05-18 09:43:29 +12:00
parent b950229003
commit 6ff970015f
189 changed files with 18603 additions and 2727 deletions
+281 -119
View File
@@ -6,6 +6,12 @@
export let founderStory: FounderStoryContent;
const founderTrustNotes = [
'The same friendly face at the door',
'Little groups, never a crowded van',
'Updates that help you relax while you are out'
];
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.',
@@ -19,154 +25,240 @@
<section id="promise" use:reveal={{ delay: 20 }} class="reveal-block">
<div class="founder-inner">
<article class="founder-note">
<span class="eyebrow founder-kicker">A note from Aless</span>
<h2 class="founder-heading">
<span class="founder-heading-main">Hi, Welcome to Goodwalk.</span>
</h2>
<div class="founder-body">
{#each founderStoryParagraphs as paragraph}
<p>{paragraph}</p>
{/each}
</div>
<div class="founder-signoff">
<div class="founder-avatar">
{#if founderStoryEnhanced}
<enhanced:img
class="founder-avatar-img"
src={founderStoryEnhanced}
alt={founderStory.imageAlt}
loading="lazy"
decoding="async"
/>
{:else}
<img
class="founder-avatar-img"
src={founderStory.imageUrl}
alt={founderStory.imageAlt}
loading="lazy"
decoding="async"
/>
{/if}
<div class="founder-intro">
<span class="eyebrow founder-kicker">A note from Aless</span>
<span class="founder-greeting">Hi, I'm Aless.</span>
</div>
<div class="founder-signoff-text">
<span class="founder-name">Aless</span>
<span class="founder-role">Goodwalk founder</span>
<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>
</div>
</div>
<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>
<div class="founder-body">
{#each founderStoryParagraphs as paragraph}
<p>{paragraph}</p>
{/each}
</div>
<a href={founderStory.cta.href} class="btn btn-green btn-with-arrow founder-cta">
{founderStory.cta.label}
<Icon name="fas fa-arrow-right" />
</a>
<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>
<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>
</article>
</div>
</section>
<style>
/* A quiet, letter-style sign-off — left-aligned, one clean panel, no ornament. */
#promise {
content-visibility: auto;
contain-intrinsic-size: 980px;
}
.founder-inner {
max-width: var(--max-w);
max-width: 880px;
margin: 0 auto;
padding: 0 50px;
}
.founder-media-card {
overflow: hidden;
width: min(100%, 168px);
border-radius: 24px;
background:
linear-gradient(180deg, oklch(0.97 0.02 100) 0%, oklch(0.93 0.03 102) 100%);
box-shadow: 0 16px 30px rgba(17, 20, 24, 0.08);
}
.founder-portrait {
display: block;
width: 100%;
aspect-ratio: 0.86;
object-fit: cover;
object-position: center 24%;
}
.founder-note {
max-width: 680px;
margin: 0 auto;
padding: 42px 52px 34px;
background: #fff;
border: 1px solid rgba(17, 20, 24, 0.08);
border-radius: 28px;
box-shadow: var(--shadow-panel-elevated);
padding: clamp(32px, 4vw, 48px);
background: var(--surface-panel);
border: 1px solid var(--border-soft);
border-radius: 34px;
box-shadow: 0 24px 60px rgba(17, 20, 24, 0.06);
}
.founder-intro {
display: grid;
gap: 8px;
margin-bottom: 18px;
}
.founder-kicker {
display: block;
letter-spacing: 0.14em;
display: inline-block;
color: var(--text-subtle);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.founder-greeting {
color: oklch(0.29 0.02 118);
font-family: var(--font-head);
font-size: clamp(22px, 2.5vw, 28px);
font-weight: 600;
letter-spacing: -0.03em;
line-height: 1.5;
}
.founder-heading {
margin: 0 0 26px;
display: grid;
gap: 8px;
margin: 0 0 24px;
}
.founder-heading-main {
display: block;
color: #0d1a0d;
color: oklch(0.23 0.02 136);
font-family: var(--font-head);
font-size: clamp(32px, 3.6vw, 46px);
font-weight: 800;
letter-spacing: -0.04em;
line-height: 1;
font-size: clamp(28px, 3.6vw, 42px);
font-weight: 700;
letter-spacing: -0.035em;
line-height: 1.02;
}
.founder-heading-sub {
display: block;
max-width: 28ch;
color: oklch(0.4 0.018 118);
font-size: clamp(16px, 1.8vw, 20px);
font-weight: 500;
line-height: 1.45;
}
.founder-trust-strip {
display: grid;
gap: 10px;
margin: 0 0 28px;
padding-top: 18px;
border-top: 1px solid var(--border-soft);
}
.founder-trust-label {
color: var(--text-subtle);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.founder-trust-list {
display: flex;
flex-wrap: wrap;
gap: 8px 14px;
margin: 0;
padding: 0;
list-style: none;
}
.founder-trust-list li {
position: relative;
padding-left: 14px;
color: oklch(0.35 0.017 118);
font-size: 14px;
font-weight: 600;
line-height: 1.5;
}
.founder-trust-list li::before {
content: '';
position: absolute;
top: 0.65em;
left: 0;
width: 6px;
height: 6px;
border-radius: 50%;
background: color-mix(in srgb, var(--gw-green) 72%, white);
}
.founder-body {
display: grid;
gap: 16px;
gap: 18px;
max-width: 67ch;
}
.founder-body p {
margin: 0;
color: #4c5056;
color: oklch(0.39 0.014 105);
font-size: var(--body-copy-size);
line-height: 1.75;
}
.founder-signoff {
display: flex;
align-items: center;
gap: 14px;
margin-top: 28px;
padding-top: 24px;
border-top: 1px solid rgba(17, 20, 24, 0.08);
}
.founder-avatar {
flex: 0 0 auto;
width: 58px;
height: 58px;
overflow: hidden;
border-radius: 50%;
background: #ede4d2;
box-shadow: inset 0 0 0 1px rgba(17, 20, 24, 0.07);
}
.founder-avatar-img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
object-position: center 20%;
}
.founder-signoff-text {
display: flex;
flex-direction: column;
gap: 2px;
}
.founder-name {
color: #0d1a0d;
.founder-closing {
margin: 24px 0 0;
color: oklch(0.24 0.018 136);
font-family: var(--font-head);
font-size: 16px;
font-weight: 700;
line-height: 1.2;
font-size: clamp(18px, 2vw, 22px);
font-weight: 600;
letter-spacing: -0.025em;
line-height: 1.25;
}
.founder-role {
color: var(--gray);
font-size: 13px;
line-height: 1.3;
.founder-closing strong {
color: var(--gw-green);
font-weight: 800;
}
.founder-cta {
.founder-actions {
display: grid;
gap: 18px;
justify-items: start;
margin-top: 28px;
}
@@ -174,17 +266,16 @@
display: inline-flex;
align-items: center;
gap: 10px;
margin-top: 20px;
padding: 12px 16px;
padding: 0;
border-radius: 18px;
background: rgba(33, 48, 33, 0.05);
box-shadow: inset 0 0 0 1px rgba(17, 20, 24, 0.06);
color: var(--gw-green);
color: oklch(0.33 0.018 118);
font-size: 14px;
font-weight: 600;
line-height: 1.5;
text-decoration: none;
transition: background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
transition:
color 0.18s ease,
transform 0.18s ease;
}
.founder-contact-wave {
@@ -194,18 +285,60 @@
width: 28px;
height: 28px;
border-radius: 50%;
background: #fff;
box-shadow: inset 0 0 0 1px rgba(17, 20, 24, 0.07);
background: var(--surface-panel-muted);
box-shadow: inset 0 0 0 1px var(--border-soft);
font-size: 16px;
flex: 0 0 auto;
}
.founder-cta {
margin-top: 2px;
}
.founder-signoff {
display: flex;
align-items: end;
justify-content: space-between;
gap: 22px;
margin-top: 34px;
padding-top: 24px;
border-top: 1px solid var(--border-soft);
}
.founder-signoff-copy {
display: grid;
gap: 6px;
max-width: 30ch;
}
.founder-signoff-name {
margin: 0;
color: oklch(0.24 0.02 136);
font-family: var(--font-head);
font-size: clamp(20px, 2vw, 24px);
font-weight: 700;
letter-spacing: -0.03em;
line-height: 1.1;
}
.founder-signoff-line {
margin: 0;
color: var(--text-subtle);
font-size: 14px;
line-height: 1.55;
}
@media (hover: hover) {
.founder-media-card:hover .founder-portrait {
transform: scale(1.02);
}
.founder-portrait {
transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.founder-contact-note:hover {
background: rgba(33, 48, 33, 0.08);
box-shadow:
inset 0 0 0 1px rgba(17, 20, 24, 0.08),
0 10px 22px rgba(17, 20, 24, 0.05);
color: var(--gw-green);
transform: translateY(-1px);
}
}
@@ -216,13 +349,12 @@
}
.founder-note {
padding: 26px 24px 24px;
padding: 26px 22px 24px;
border-radius: 24px;
}
.founder-heading {
margin: 0 0 22px;
text-align: center;
}
.founder-body p {
@@ -230,6 +362,25 @@
line-height: 1.7;
}
.founder-media-card {
border-radius: 24px;
width: 132px;
}
.founder-trust-strip {
margin-bottom: 24px;
padding-top: 16px;
}
.founder-trust-list {
display: grid;
gap: 8px;
}
.founder-trust-list li {
font-size: 13px;
}
.founder-contact-note {
display: flex;
width: 100%;
@@ -242,5 +393,16 @@
width: 100%;
justify-content: center;
}
.founder-signoff {
align-items: start;
flex-direction: column;
margin-top: 28px;
padding-top: 20px;
}
.founder-signoff-copy {
max-width: none;
}
}
</style>