← back to Ventura Dog Walking
public/index.html
353 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Surf City Strolls — Dog Walking in Ventura, CA</title>
<meta name="description" content="Friendly, reliable dog walking along the Ventura coast. Beach strolls, midday walks, and adventure hikes. Bonded, insured, and local. Book your pup's first walk today.">
<meta property="og:title" content="Surf City Strolls — Ventura Dog Walking">
<meta property="og:description" content="Beach strolls, midday walks & adventure hikes for Ventura pups. Bonded, insured, local.">
<meta property="og:type" content="website">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;1,9..144,500&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root{
--ocean:#1f5e72; /* deep ventura teal */
--ocean-deep:#143d4a;
--surf:#5fb3c4; /* light surf */
--sand:#f4ede0; /* warm sand */
--sand-deep:#e6d8c3;
--sunset:#e8895a; /* sunset coral */
--sunset-deep:#d2683a;
--ink:#1c2a2f;
--muted:#5a6a70;
--white:#ffffff;
--serif:'Fraunces',Georgia,serif;
--sans:'Inter',system-ui,sans-serif;
--shadow:0 18px 50px -22px rgba(20,61,74,.45);
--radius:18px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:var(--sand);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--sans);font-weight:600;font-size:1rem;
padding:.9rem 1.6rem;border-radius:999px;border:none;cursor:pointer;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}
.btn:hover{transform:translateY(-2px)}
.btn-primary{background:var(--sunset);color:#fff;box-shadow:0 10px 24px -10px var(--sunset-deep)}
.btn-primary:hover{background:var(--sunset-deep)}
.btn-ghost{background:rgba(255,255,255,.14);color:#fff;border:1.5px solid rgba(255,255,255,.5);backdrop-filter:blur(4px)}
.btn-ghost:hover{background:rgba(255,255,255,.24)}
.eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.18em;font-size:.78rem;font-weight:600;color:var(--sunset-deep)}
/* ---------- header ---------- */
header{position:absolute;top:0;left:0;right:0;z-index:10}
.nav{display:flex;align-items:center;justify-content:space-between;padding:22px 0}
.brand{font-family:var(--serif);font-weight:600;font-size:1.45rem;color:#fff;display:flex;align-items:center;gap:.55rem;letter-spacing:-.01em}
.brand .paw{font-size:1.5rem}
.nav-links{display:flex;gap:2rem;align-items:center}
.nav-links a{color:rgba(255,255,255,.92);text-decoration:none;font-weight:500;font-size:.96rem}
.nav-links a:hover{color:#fff}
.nav-links .btn{padding:.65rem 1.25rem}
@media(max-width:760px){.nav-links a:not(.btn){display:none}}
/* ---------- hero ---------- */
.hero{position:relative;min-height:92vh;display:flex;align-items:center;
background:linear-gradient(180deg,rgba(20,61,74,.55) 0%,rgba(20,61,74,.35) 45%,rgba(31,94,114,.72) 100%),
radial-gradient(120% 90% at 70% 10%,#7fc6d4 0%,#2f7d92 38%,#143d4a 100%);
overflow:hidden}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:120px;
background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath fill='%23f4ede0' d='M0 64l60 8c60 8 180 24 300 21.3C480 90 600 64 720 58.7 840 53 960 69 1080 74.7c120 5.3 240 .3 300-2.7l60-3V120H0z'/%3E%3C/svg%3E") no-repeat center/cover}
.hero-sun{position:absolute;top:14%;right:12%;width:160px;height:160px;border-radius:50%;
background:radial-gradient(circle,#ffe4b8 0%,#ffcf8a 55%,rgba(255,207,138,0) 72%);filter:blur(2px);opacity:.85}
.hero-inner{position:relative;z-index:2;color:#fff;max-width:680px;padding:90px 0 120px}
.hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(2.6rem,6vw,4.5rem);line-height:1.04;letter-spacing:-.02em;margin:.6rem 0 1.1rem;text-shadow:0 2px 30px rgba(0,0,0,.25)}
.hero h1 em{font-style:italic;color:#ffd9a3}
.hero p.lede{font-size:clamp(1.05rem,2.2vw,1.3rem);color:rgba(255,255,255,.94);max-width:540px;margin-bottom:2rem}
.hero-cta{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
.trust{display:flex;gap:1.6rem;margin-top:2.4rem;flex-wrap:wrap}
.trust span{display:flex;align-items:center;gap:.45rem;font-size:.9rem;color:rgba(255,255,255,.9);font-weight:500}
/* ---------- pricing ---------- */
.section{padding:88px 0}
.section-head{text-align:center;max-width:620px;margin:0 auto 56px}
.section-head h2{font-family:var(--serif);font-weight:600;font-size:clamp(2rem,4vw,2.9rem);line-height:1.1;margin:.5rem 0 .8rem;letter-spacing:-.02em}
.section-head p{color:var(--muted);font-size:1.08rem}
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:880px){.tiers{grid-template-columns:1fr;max-width:420px;margin:0 auto}}
.tier{background:#fff;border-radius:var(--radius);padding:34px 30px;box-shadow:var(--shadow);
border:1.5px solid var(--sand-deep);display:flex;flex-direction:column;position:relative;transition:transform .2s ease}
.tier:hover{transform:translateY(-6px)}
.tier.featured{border-color:var(--sunset);box-shadow:0 26px 60px -24px rgba(210,104,58,.5)}
.tier .badge{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--sunset);color:#fff;
font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;padding:.32rem 1rem;border-radius:999px}
.tier .ico{font-size:2rem}
.tier h3{font-family:var(--serif);font-weight:600;font-size:1.5rem;margin:.6rem 0 .2rem}
.tier .blurb{color:var(--muted);font-size:.95rem;min-height:42px}
.price{display:flex;align-items:baseline;gap:.3rem;margin:1.1rem 0 .2rem}
.price .amt{font-family:var(--serif);font-weight:600;font-size:2.7rem;color:var(--ocean)}
.price .per{color:var(--muted);font-size:.95rem}
.tier ul{list-style:none;margin:1.4rem 0 1.8rem;display:flex;flex-direction:column;gap:.7rem}
.tier li{display:flex;gap:.6rem;font-size:.96rem;align-items:flex-start}
.tier li .chk{color:var(--surf);font-weight:700;flex-shrink:0}
.tier .btn{margin-top:auto;justify-content:center;width:100%}
.tier:not(.featured) .btn-primary{background:var(--ocean)}
.tier:not(.featured) .btn-primary:hover{background:var(--ocean-deep)}
/* ---------- booking ---------- */
.book{background:linear-gradient(160deg,var(--ocean) 0%,var(--ocean-deep) 100%);color:#fff}
.book-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:center}
@media(max-width:860px){.book-grid{grid-template-columns:1fr;gap:36px}}
.book h2{font-family:var(--serif);font-weight:600;font-size:clamp(2rem,4vw,2.8rem);line-height:1.1;letter-spacing:-.02em;margin-bottom:1rem}
.book .eyebrow{color:#ffd9a3}
.book p.sub{color:rgba(255,255,255,.86);font-size:1.05rem;margin-bottom:1.6rem;max-width:420px}
.book .perk{display:flex;gap:.7rem;align-items:center;margin:.7rem 0;font-size:.98rem;color:rgba(255,255,255,.92)}
.book .perk .dot{width:8px;height:8px;border-radius:50%;background:var(--sunset);flex-shrink:0}
.form-card{background:#fff;border-radius:22px;padding:34px 32px;box-shadow:0 30px 60px -20px rgba(0,0,0,.4);color:var(--ink)}
.form-card h3{font-family:var(--serif);font-weight:600;font-size:1.4rem;margin-bottom:.3rem}
.form-card .small{color:var(--muted);font-size:.9rem;margin-bottom:1.4rem}
.field{margin-bottom:1rem}
.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.35rem;color:var(--ink)}
.field input,.field select,.field textarea{width:100%;font-family:var(--sans);font-size:1rem;padding:.8rem .9rem;
border:1.5px solid var(--sand-deep);border-radius:11px;background:var(--sand);transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--surf);box-shadow:0 0 0 3px rgba(95,179,196,.25);background:#fff}
.field textarea{resize:vertical;min-height:74px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:430px){.row2{grid-template-columns:1fr}}
.form-card .btn-primary{width:100%;justify-content:center;margin-top:.5rem;font-size:1.05rem;padding:1rem}
.form-note{text-align:center;font-size:.8rem;color:var(--muted);margin-top:.9rem}
.success{display:none;text-align:center;padding:18px 6px}
.success.show{display:block;animation:pop .4s ease}
@keyframes pop{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.success .big{font-size:3rem}
.success h3{font-family:var(--serif);font-size:1.6rem;margin:.4rem 0}
.success p{color:var(--muted)}
/* ---------- footer ---------- */
footer{background:var(--ocean-deep);color:rgba(255,255,255,.78);padding:48px 0 36px;text-align:center}
footer .brand{justify-content:center;margin-bottom:.8rem}
footer .flinks{display:flex;gap:1.6rem;justify-content:center;flex-wrap:wrap;margin:1rem 0;font-size:.92rem}
footer a{color:rgba(255,255,255,.82);text-decoration:none}
footer a:hover{color:#fff}
footer .fine{font-size:.82rem;color:rgba(255,255,255,.5);margin-top:1.2rem}
</style>
</head>
<body>
<header>
<div class="wrap nav">
<div class="brand"><span class="paw">🐾</span> Surf City Strolls</div>
<nav class="nav-links">
<a href="#pricing">Pricing</a>
<a href="#book">How it works</a>
<a href="#book" class="btn btn-primary">Book a walk</a>
</nav>
</div>
</header>
<!-- ============ HERO ============ -->
<section class="hero">
<div class="hero-sun"></div>
<div class="wrap hero-inner">
<span class="eyebrow" style="color:#ffd9a3">Ventura, California 🌊</span>
<h1>Happy tails along the <em>Ventura coast</em>.</h1>
<p class="lede">Friendly, reliable dog walking from the Promenade to the foothills. Beach strolls, midday breaks, and adventure hikes — so your pup gets the day they deserve while you're busy.</p>
<div class="hero-cta">
<a href="#book" class="btn btn-primary">Book your first walk →</a>
<a href="#pricing" class="btn btn-ghost">See pricing</a>
</div>
<div class="trust">
<span>✓ Bonded & insured</span>
<span>✓ Leashed & GPS-tracked</span>
<span>✓ Photo update every walk</span>
</div>
</div>
</section>
<!-- ============ PRICING ============ -->
<section class="section" id="pricing">
<div class="wrap">
<div class="section-head">
<span class="eyebrow">Simple, honest pricing</span>
<h2>Pick the stroll that fits your pup</h2>
<p>No memberships, no lock-ins. Pay per walk, or save with a weekly bundle. Every walk ends with a photo and a quick note home.</p>
</div>
<div class="tiers">
<div class="tier">
<div class="ico">☀️</div>
<h3>Quick Stroll</h3>
<p class="blurb">A brisk 30-minute neighborhood walk to stretch the legs and do their business.</p>
<div class="price"><span class="amt">$22</span><span class="per">/ walk</span></div>
<ul>
<li><span class="chk">✓</span> 30 minutes, solo or with a sibling pup</li>
<li><span class="chk">✓</span> Fresh water & paw wipe-down</li>
<li><span class="chk">✓</span> Photo + note after every walk</li>
<li><span class="chk">✓</span> Within 3 mi of downtown Ventura</li>
</ul>
<a href="#book" class="btn btn-primary" data-tier="Quick Stroll">Book Quick Stroll</a>
</div>
<div class="tier featured">
<div class="badge">Most popular</div>
<div class="ico">🌊</div>
<h3>Beach Day</h3>
<p class="blurb">A 60-minute coastal adventure along the sand and Promenade. Pure tail-wagging joy.</p>
<div class="price"><span class="amt">$36</span><span class="per">/ walk</span></div>
<ul>
<li><span class="chk">✓</span> 60 minutes of beach + Promenade time</li>
<li><span class="chk">✓</span> GPS-tracked route map sent to you</li>
<li><span class="chk">✓</span> Rinse-off & towel dry after sandy paws</li>
<li><span class="chk">✓</span> Priority same-day booking</li>
<li><span class="chk">✓</span> Photo + note after every walk</li>
</ul>
<a href="#book" class="btn btn-primary" data-tier="Beach Day">Book Beach Day</a>
</div>
<div class="tier">
<div class="ico">🥾</div>
<h3>Trail Blazer</h3>
<p class="blurb">A 90-minute foothill hike (Arroyo Verde / Grant Park) for high-energy dogs who need a real workout.</p>
<div class="price"><span class="amt">$52</span><span class="per">/ walk</span></div>
<ul>
<li><span class="chk">✓</span> 90 minutes on Ventura's best trails</li>
<li><span class="chk">✓</span> Door-to-door pickup & drop-off</li>
<li><span class="chk">✓</span> Trail snacks & cooldown included</li>
<li><span class="chk">✓</span> GPS route map + action photos</li>
<li><span class="chk">✓</span> Best value at 5+ walks/week</li>
</ul>
<a href="#book" class="btn btn-primary" data-tier="Trail Blazer">Book Trail Blazer</a>
</div>
</div>
</div>
</section>
<!-- ============ BOOKING ============ -->
<section class="section book" id="book">
<div class="wrap book-grid">
<div>
<span class="eyebrow">Let's meet your pup</span>
<h2>Book a free meet-&-greet</h2>
<p class="sub">Tell me a little about your dog and when you'd like to start. I'll text you back within a few hours to set up a free 15-minute hello — no commitment.</p>
<div class="perk"><span class="dot"></span> Born & raised in Ventura — I know every good sniff spot</div>
<div class="perk"><span class="dot"></span> One walker, never a rotating crew of strangers</div>
<div class="perk"><span class="dot"></span> Flexible cancellations up to 12 hours ahead</div>
<div class="perk"><span class="dot"></span> Serving Ventura, Pierpont, Midtown & the Avenue</div>
</div>
<div class="form-card">
<form id="bookingForm" novalidate>
<h3>Request a walk</h3>
<p class="small">Fields marked * are required.</p>
<div class="row2">
<div class="field">
<label for="name">Your name *</label>
<input type="text" id="name" name="name" required autocomplete="name" placeholder="Jamie R.">
</div>
<div class="field">
<label for="dog">Dog's name *</label>
<input type="text" id="dog" name="dog" required placeholder="Biscuit">
</div>
</div>
<div class="row2">
<div class="field">
<label for="email">Email *</label>
<input type="email" id="email" name="email" required autocomplete="email" placeholder="you@email.com">
</div>
<div class="field">
<label for="phone">Phone (for text) *</label>
<input type="tel" id="phone" name="phone" required autocomplete="tel" placeholder="(805) 555-0123">
</div>
</div>
<div class="row2">
<div class="field">
<label for="tier">Walk type</label>
<select id="tier" name="tier">
<option value="Quick Stroll">Quick Stroll — $22</option>
<option value="Beach Day" selected>Beach Day — $36</option>
<option value="Trail Blazer">Trail Blazer — $52</option>
<option value="Not sure yet">Not sure yet — help me pick</option>
</select>
</div>
<div class="field">
<label for="start">Preferred start date</label>
<input type="date" id="start" name="start">
</div>
</div>
<div class="field">
<label for="notes">Anything I should know? (breed, energy, quirks)</label>
<textarea id="notes" name="notes" placeholder="Biscuit is a 2-yr-old golden, loves the water, a little shy with big dogs..."></textarea>
</div>
<button type="submit" class="btn btn-primary">Request my free meet & greet 🐾</button>
<p class="form-note">No payment now. I'll reach out personally to confirm.</p>
</form>
<div class="success" id="success">
<div class="big">🐶🎉</div>
<h3>Pawsome — request received!</h3>
<p id="successMsg">Thanks! I'll text you shortly to set up your free meet & greet.</p>
</div>
</div>
</div>
</section>
<!-- ============ FOOTER ============ -->
<footer>
<div class="wrap">
<div class="brand"><span class="paw">🐾</span> Surf City Strolls</div>
<p>Insured & bonded dog walking · Ventura, California</p>
<div class="flinks">
<a href="#pricing">Pricing</a>
<a href="#book">Book a walk</a>
<a href="mailto:hello@surfcitystrolls.com">hello@surfcitystrolls.com</a>
<a href="tel:+18055550123">(805) 555-0123</a>
</div>
<p class="fine">© <span id="yr"></span> Surf City Strolls. Hand-built for the Ventura coast. Sample landing page.</p>
</div>
</footer>
<script>
document.getElementById('yr').textContent = new Date().getFullYear();
// Pre-select the tier when a pricing CTA is clicked
document.querySelectorAll('[data-tier]').forEach(function(btn){
btn.addEventListener('click', function(){
var sel = document.getElementById('tier');
var t = btn.getAttribute('data-tier');
if (sel) for (var i=0;i<sel.options.length;i++){ if(sel.options[i].value===t){ sel.selectedIndex=i; break; } }
});
});
// Min start date = today
(function(){
var d=document.getElementById('start');
if(d){ var t=new Date(); var mm=String(t.getMonth()+1).padStart(2,'0'); var dd=String(t.getDate()).padStart(2,'0');
d.min=t.getFullYear()+'-'+mm+'-'+dd; }
})();
// Booking form — client-side validation + confirmation.
// NOTE: no live send is wired yet (no backend / email integration).
// See README "Wiring the form" before going live.
var form = document.getElementById('bookingForm');
form.addEventListener('submit', function(e){
e.preventDefault();
if(!form.checkValidity()){ form.reportValidity(); return; }
var name = document.getElementById('name').value.trim();
var dog = document.getElementById('dog').value.trim();
var tier = document.getElementById('tier').value;
form.style.display='none';
var s=document.getElementById('success');
document.getElementById('successMsg').innerHTML =
'Thanks, ' + (name||'friend') + '! I’ll text you shortly to set up ' +
(dog?('<strong>'+dog+'</strong>’s'):'your pup’s') +
' free meet & greet for the <strong>'+tier+'</strong> walk.';
s.classList.add('show');
s.scrollIntoView({behavior:'smooth',block:'center'});
});
</script>
</body>
</html>