Show description
Wicked Edges by David - Mobile Knife & Saw Sharpening
Wicked Edges by David - Mobile Knife & Saw Sharpening
Wicked Edges by David
Services
About
Why Us
Get a Quote
Razor Sharp, Right at Your Door.
Mobile knife & saw blade sharpening for Escondido, North County, and all of San Diego.
Schedule Your Service
Sharpening for Every Edge
From your kitchen to your workshop, I bring precision sharpening to you.
Kitchen & Culinary
Restore your chef's knives, serrated blades, and paring knives to better-than-new sharpness. Perfect for home cooks and professional chefs.
German & Japanese Knives
Serrated & Bread Knives
Scissors & Garden Shears
Workshop & Saws
My key differentiator! Don't throw away dull blades. I service carbide-tipped saw blades for woodworkers and contractors.
Circular Saw Blades
Table Saw & Miter Blades
And More! (Ask about your tool)
Hi, I'm David.
I'm not just a sharpener; I'm a craftsman. What started as a passion for cooking (and frustration with dull knives) grew into a full-blown obsession with creating the perfect edge.
Based right here in Escondido, I launched Wicked Edges to serve my North County neighbors. I was tired of seeing people throw away good tools, so I invested in a professional mobile rig to bring world-class sharpening to you.
Whether you're a chef at a top San Diego restaurant or a woodworker in your garage, I treat your tools with the respect they deserve. When I'm not in the van, you'll find me surfing at Swami's or grilling in my backyard.
Let's get your tools sharp →
Why Choose Wicked Edges?
There's a difference between "sharp" and "wicked sharp."
Precision System
I use a state-of-the-art **Wicked Edge** precision system. This isn't a simple grinder. It guarantees a perfect, repeatable angle for a stronger, longer-lasting edge.
Ultimate Convenience
Don't waste time driving to a shop. My fully-equipped mobile van comes to your home, restaurant, or workshop. Pure convenience.
Local & Reliable
I'm your Escondido neighbor, not a faceless mail-in service. I stand by my work with a 100% satisfaction guarantee.…
Wicked Edges by David - Mobile Knife & Saw Sharpening
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wicked Edges by David - Mobile Knife & Saw Sharpening</title>
<!-- Load Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Load Inter font from Google Fonts -->
<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=Inter:wght@400;500;700;800&display=swap" rel="stylesheet">
<!-- Configure Tailwind to use Inter font and custom colors -->
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
colors: {
'brand-blue': {
'700': '#0d3e80', // Deep San Diego Navy
'500': '#1e5a9c',
'100': '#e7f0ff',
},
'brand-orange': {
'500': '#ff9900', // Vibrant Sunset Orange
'600': '#f58a00',
},
},
},
},
}
</script>
<style>
/* Small helper CSS for smoothness */
html {
scroll-behavior: smooth;
}
.hero-bg {
/* Creates the gradient overlay on the hero image */
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.3)), var(--bg-image);
background-size: cover;
background-position: center;
}
.section-title {
@apply text-3xl md:text-4xl font-extrabold text-brand-blue-700 mb-4;
}
.section-subtitle {
@apply text-lg md:text-xl text-slate-600 mb-12 max-w-2xl mx-auto;
}
/* * ANIMATION STYLES
* We use these classes to hide elements until they are in view.
*/
.animate-on-scroll {
opacity: 0;
transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}
.fade-in-up {
transform: translateY(40px);
}
.slide-in-left {
transform: translateX(-50px);
}
.slide-in-right {
transform: translateX(50px);
}
/* This class is added by JavaScript when the element is visible */
.is-visible {
opacity: 1;
transform: none;
}
</style>
</head>
<body class="bg-slate-50 font-sans antialiased overflow-x-hidden"> <!-- Prevent horizontal scroll from animations -->
<!-- Header & Navigation -->
<header class="bg-white/90 backdrop-blur-md shadow-sm sticky top-0 z-50">
<nav class="container mx-auto px-6 py-4 flex justify-between items-center">
<a href="#" class="text-2xl font-extrabold text-brand-blue-700">
Wicked Edges <span class="text-brand-orange-500">by David</span>
</a>
<div class="hidden md:flex space-x-6 items-center">
<a href="#services" class="text-slate-600 hover:text-brand-orange-500 transition duration-300">Services</a>
<a href="#about" class="text-slate-600 hover:text-brand-orange-500 transition duration-300">About</a>
<a href="#why-us" class="text-slate-600 hover:text-brand-orange-500 transition duration-300">Why Us</a>
<a href="#contact" class="bg-brand-orange-500 text-white px-5 py-2 rounded-full font-bold hover:bg-brand-orange-600 transition duration-300 shadow-sm">
Get a Quote
</a>
</div>
<!-- Mobile Menu Button (optional) -->
<div class="md:hidden">
<button class="text-brand-blue-700">
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
</svg>
</button>
</div>
</nav>
</header>
<main>
<!-- Hero Section -->
<section
class="hero-bg text-white relative"
style="--bg-image: url('https://placehold.co/1920x1080/0d3e80/ffffff?text=Stunning+photo+of+mobile+sharpening+van+at+San+Diego+sunset');"
>
<div class="container mx-auto px-6 py-32 md:py-48 relative z-10">
<div class="max-w-2xl">
<h1 class="text-4xl md:text-6xl font-extrabold mb-4 leading-tight animate-on-scroll fade-in-up">
Razor Sharp, Right at Your Door.
</h1>
<p class="text-xl md:text-2xl mb-8 font-light text-slate-200 animate-on-scroll fade-in-up" style="transition-delay: 150ms;">
Mobile knife & saw blade sharpening for Escondido, North County, and all of San Diego.
</p>
<a href="#contact" class="bg-brand-orange-500 text-white px-8 py-4 rounded-full text-lg font-bold hover:bg-brand-orange-600 transition duration-300 shadow-lg transform hover:scale-105 animate-on-scroll fade-in-up" style="transition-delay: 300ms;">
Schedule Your Service
</a>
</div>
</div>
</section>
<!-- Services Section -->
<section id="services" class="py-24 bg-white">
<div class="container mx-auto px-6 text-center">
<h2 class="section-title animate-on-scroll fade-in-up">Sharpening for Every Edge</h2>
<p class="section-subtitle animate-on-scroll fade-in-up" style="transition-delay: 150ms;">
From your kitchen to your workshop, I bring precision sharpening to you.
</p>
<div class="grid md:grid-cols-2 gap-8 max-w-4xl mx-auto">
<!-- Service 1: Knives -->
<div class="bg-slate-50 rounded-2xl shadow-lg overflow-hidden transform hover:scale-[1.02] transition duration-500 ease-in-out animate-on-scroll slide-in-left">
<img src="https://placehold.co/600x400/e7f0ff/0d3e80?text=Macro+photo+of+gleaming+sharp+chef+knives+on+cutting+board" alt="Kitchen Knife Sharpening" class="w-full h-64 object-cover">
<div class="p-8">
<h3 class="text-2xl font-bold text-brand-blue-700 mb-3">Kitchen & Culinary</h3>
<p class="text-slate-600 mb-6">
Restore your chef's knives, serrated blades, and paring knives to better-than-new sharpness. Perfect for home cooks and professional chefs.
</p>
<ul class="text-left text-slate-600 space-y-2">
<li class="flex items-center"><svg class="w-5 h-5 text-brand-orange-500 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>German & Japanese Knives</li>
<li class="flex items-center"><svg class="w-5 h-5 text-brand-orange-500 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>Serrated & Bread Knives</li>
<li class="flex items-center"><svg class="w-5 h-5 text-brand-orange-500 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>Scissors & Garden Shears</li>
</ul>
</div>
</div>
<!-- Service 2: Saws (The Differentiator) -->
<div class="bg-slate-50 rounded-2xl shadow-lg overflow-hidden transform hover:scale-[1.02] transition duration-500 ease-in-out animate-on-scroll slide-in-right">
<img src="https://placehold.co/600x400/0d3e80/ffffff?text=Professional+photo+of+clean+circular+saw+blade+in+workshop" alt="Saw Blade Sharpening" class="w-full h-64 object-cover">
<div class="p-8">
<h3 class="text-2xl font-bold text-brand-blue-700 mb-3">Workshop & Saws</h3>
<p class="text-slate-600 mb-6">
My key differentiator! Don't throw away dull blades. I service carbide-tipped saw blades for woodworkers and contractors.
</p>
<ul class="text-left text-slate-600 space-y-2">
<li class="flex items-center"><svg class="w-5 h-5 text-brand-orange-500 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>Circular Saw Blades</li>
<li class="flex items-center"><svg class="w-5 h-5 text-brand-orange-500 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>Table Saw & Miter Blades</li>
<li class="flex items-center"><svg class="w-5 h-5 text-brand-orange-500 mr-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>And More! (Ask about your tool)</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- About Section -->
<section id="about" class="py-24 bg-slate-50">
<div class="container mx-auto px-6">
<div class="grid md:grid-cols-2 gap-12 items-center">
<div class="rounded-2xl shadow-xl overflow-hidden animate-on-scroll slide-in-left">
<img src="https://placehold.co/600x700/f0f0f0/333333?text=Professional+portrait+of+David+in+his+blue+apron+in+front+of+his+van" alt="David, owner of Wicked Edges" class="w-full h-full object-cover">
</div>
<div class="animate-on-scroll slide-in-right">
<h2 class="section-title text-left">Hi, I'm David.</h2>
<p class="text-xl text-slate-600 mb-6">
I'm not just a sharpener; I'm a craftsman. What started as a passion for cooking (and frustration with dull knives) grew into a full-blown obsession with creating the perfect edge.
</p>
<p class="text-slate-600 mb-4">
Based right here in Escondido, I launched Wicked Edges to serve my North County neighbors. I was tired of seeing people throw away good tools, so I invested in a professional mobile rig to bring world-class sharpening to you.
</p>
<p class="text-slate-600 mb-8">
Whether you're a chef at a top San Diego restaurant or a woodworker in your garage, I treat your tools with the respect they deserve. When I'm not in the van, you'll find me surfing at Swami's or grilling in my backyard.
</p>
<a href="#contact" class="text-brand-orange-600 font-bold text-lg hover:text-brand-orange-500 transition duration-300">
Let's get your tools sharp →
</a>
</div>
</div>
</div>
</section>
<!-- Why Choose Us Section -->
<section id="why-us" class="py-24 bg-brand-blue-100">
<div class="container mx-auto px-6 text-center">
<h2 class="section-title animate-on-scroll fade-in-up">Why Choose Wicked Edges?</h2>
<p class="section-subtitle animate-on-scroll fade-in-up" style="transition-delay: 150ms;">
There's a difference between "sharp" and "wicked sharp."
</p>
<div class="grid md:grid-cols-3 gap-8">
<!-- Feature 1 -->
<div class="bg-white p-8 rounded-2xl shadow-lg text-center animate-on-scroll fade-in-up" style="transition-delay: 300ms;">
<div class="flex items-center justify-center h-20 w-20 mx-auto mb-6 rounded-full bg-brand-orange-500 text-white">
<svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 19v-8.93a2 2 0 01.89-1.664l7-4.666a2 2 0 012.22 0l7 4.666A2 2 0 0121 10.07V19M3 19a2 2 0 002 2h14a2 2 0 002-2M3 19l6.75-4.5M21 19l-6.75-4.5M12 19V9.75M9 19V12.75M15 19V12.75" />
</svg>
</div>
<h3 class="text-2xl font-bold text-brand-blue-700 mb-3">Precision System</h3>
<p class="text-slate-600">
I use a state-of-the-art **Wicked Edge** precision system. This isn't a simple grinder. It guarantees a perfect, repeatable angle for a stronger, longer-lasting edge.
</p>
</div>
<!-- Feature 2 -->
<div class="bg-white p-8 rounded-2xl shadow-lg text-center animate-on-scroll fade-in-up" style="transition-delay: 450ms;">
<div class="flex items-center justify-center h-20 w-20 mx-auto mb-6 rounded-full bg-brand-blue-700 text-white">
<svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path d="M9 17a2 2 0 11-4 0 2 2 0 014 0zM19 17a2 2 0 11-4 0 2 2 0 014 0z" />
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16V6a1 1 0 00-1-1H4a1 1 0 00-1 1v10l2 2h8a1 1 0 001-1zM3 11h10M13 6h8l-4 10h-6" />
</svg>
</div>
<h3 class="text-2xl font-bold text-brand-blue-700 mb-3">Ultimate Convenience</h3>
<p class="text-slate-600">
Don't waste time driving to a shop. My fully-equipped mobile van comes to your home, restaurant, or workshop. Pure convenience.
</p>
</div>
<!-- Feature 3 -->
<div class="bg-white p-8 rounded-2xl shadow-lg text-center animate-on-scroll fade-in-up" style="transition-delay: 600ms;">
<div class="flex items-center justify-center h-20 w-20 mx-auto mb-6 rounded-full bg-brand-orange-500 text-white">
<svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" />
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z" />
</svg>
</div>
<h3 class="text-2xl font-bold text-brand-blue-700 mb-3">Local & Reliable</h3>
<p class="text-slate-600">
I'm your Escondido neighbor, not a faceless mail-in service. I stand by my work with a 100% satisfaction guarantee. If you're not happy, I'll make it right.
</p>
</div>
</div>
</div>
</section>
<!-- Testimonials Section -->
<section id="testimonials" class="py-24 bg-white">
<div class="container mx-auto px-6 text-center">
<h2 class="section-title animate-on-scroll fade-in-up">What My Customers Say</h2>
<p class="section-subtitle animate-on-scroll fade-in-up" style="transition-delay: 150ms;">
Real feedback from San Diego locals.
</p>
<div class="grid md:grid-cols-3 gap-8">
<div class="bg-slate-50 p-8 rounded-2xl shadow-lg border border-slate-200 relative animate-on-scroll fade-in-up" style="transition-delay: 300ms;">
<svg class="absolute top-6 left-6 w-10 h-10 text-brand-orange-500/30" fill="currentColor" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M6 21.6c0 1.8 1.5 3.3 3.3 3.3h3.2V28H9.3C4.2 28 0 23.8 0 18.7c0-4.6 3.1-8.6 7.2-9.9C8.1 7.2 9 5.8 9 4c0-2.2 1.8-4 4-4s4 1.8 4 4c0 1.9-1 3.5-2.5 4.1C18.6 9.3 22 13.5 22 18.7c0 1.2-.2 2.3-.6 3.3H19c.4-1 .6-2.1.6-3.3 0-3.5-2-6.6-4.9-8.1C14 10.2 13.1 9.8 12 9.8c-1.1 0-2 .4-2.7 1-.1 0-.1.1-.2.1.2-.7.3-1.3.3-2C9.4 6.8 10.6 5 12 5c.4 0 .7.1.9.4.1.1.2.2.2.3.1.2.2.4.2.6.1.5.1 1 0 1.5-.1.3-.2.6-.4.8-.2.2-.5.4-.8.5-.4.1-.8.2-1.2.2-1 0-1.8.6-2 1.5-.1.3-.1.7-.1 1 0 .2 0 .4.1.5.1.1.2.2.3.4.5.6 1.2 1 1.9 1 .1 0 .1 0 .2.1.2 0 .3.1.5.1s.4.1.5.1c.3 0 .7.1 1 .1 3.8 0 7 3.1 7 7 0 1.1-.3 2.1-.7 3h3.2c.4-1 .7-2 .7-3.1 0-5.1-4.1-9.3-9.3-9.3h-.2C14 13.2 12.8 12 11.1 12H6.2c-.1 0-.2.1-.2.1 0 .1-.1.1-.1.2v9.3z"></path></svg>
<p class="text-slate-600 italic mb-6 pt-8 z-10 relative">"David is a true artist. My 10-year-old Wüsthof feels brand new. I didn't realize how dull it was until I used it after he sharpened it. Amazing!"</p>
<p class="font-bold text-brand-blue-700">- Chef Maria R., La Jolla</p>
</div>
<div class="bg-slate-50 p-8 rounded-2xl shadow-lg border border-slate-200 relative animate-on-scroll fade-in-up" style="transition-delay: 450ms;">
<svg class="absolute top-6 left-6 w-10 h-10 text-brand-orange-500/30" fill="currentColor" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M6 21.6c0 1.8 1.5 3.3 3.3 3.3h3.2V28H9.3C4.2 28 0 23.8 0 18.7c0-4.6 3.1-8.6 7.2-9.9C8.1 7.2 9 5.8 9 4c0-2.2 1.8-4 4-4s4 1.8 4 4c0 1.9-1 3.5-2.5 4.1C18.6 9.3 22 13.5 22 18.7c0 1.2-.2 2.3-.6 3.3H19c.4-1 .6-2.1.6-3.3 0-3.5-2-6.6-4.9-8.1C14 10.2 13.1 9.8 12 9.8c-1.1 0-2 .4-2.7 1-.1 0-.1.1-.2.1.2-.7.3-1.3.3-2C9.4 6.8 10.6 5 12 5c.4 0 .7.1.9.4.1.1.2.2.2.3.1.2.2.4.2.6.1.5.1 1 0 1.5-.1.3-.2.6-.4.8-.2.2-.5.4-.8.5-.4.1-.8.2-1.2.2-1 0-1.8.6-2 1.5-.1.3-.1.7-.1 1 0 .2 0 .4.1.5.1.1.2.2.3.4.5.6 1.2 1 1.9 1 .1 0 .1 0 .2.1.2 0 .3.1.5.1s.4.1.5.1c.3 0 .7.1 1 .1 3.8 0 7 3.1 7 7 0 1.1-.3 2.1-.7 3h3.2c.4-1 .7-2 .7-3.1 0-5.1-4.1-9.3-9.3-9.3h-.2C14 13.2 12.8 12 11.1 12H6.2c-.1 0-.2.1-.2.1 0 .1-.1.1-.1.2v9.3z"></path></svg>
<p class="text-slate-600 italic mb-6 pt-8 z-10 relative">"I'm so glad I found David! He came to my workshop in Escondido and sharpened all my table saw blades. He saved me hundreds on replacements. Fast and professional."</p>
<p class="font-bold text-brand-blue-700">- Mike T., Escondido</p>
</div>
<div class="bg-slate-50 p-8 rounded-2xl shadow-lg border border-slate-200 relative animate-on-scroll fade-in-up" style="transition-delay: 600ms;">
<svg class="absolute top-6 left-6 w-10 h-10 text-brand-orange-500/30" fill="currentColor" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M6 21.6c0 1.8 1.5 3.3 3.3 3.3h3.2V28H9.3C4.2 28 0 23.8 0 18.7c0-4.6 3.1-8.6 7.2-9.9C8.1 7.2 9 5.8 9 4c0-2.2 1.8-4 4-4s4 1.8 4 4c0 1.9-1 3.5-2.5 4.1C18.6 9.3 22 13.5 22 18.7c0 1.2-.2 2.3-.6 3.3H19c.4-1 .6-2.1.6-3.3 0-3.5-2-6.6-4.9-8.1C14 10.2 13.1 9.8 12 9.8c-1.1 0-2 .4-2.7 1-.1 0-.1.1-.2.1.2-.7.3-1.3.3-2C9.4 6.8 10.6 5 12 5c.4 0 .7.1.9.4.1.1.2.2.2.3.1.2.2.4.2.6.1.5.1 1 0 1.5-.1.3-.2.6-.4.8-.2.2-.5.4-.8.5-.4.1-.8.2-1.2.2-1 0-1.8.6-2 1.5-.1.3-.1.7-.1 1 0 .2 0 .4.1.5.1.1.2.2.3.4.5.6 1.2 1 1.9 1 .1 0 .1 0 .2.1.2 0 .3.1.5.1s.4.1.5.1c.3 0 .7.1 1 .1 3.8 0 7 3.1 7 7 0 1.1-.3 2.1-.7 3h3.2c.4-1 .7-2 .7-3.1 0-5.1-4.1-9.3-9.3-9.3h-.2C14 13.2 12.8 12 11.1 12H6.2c-.1 0-.2.1-.2.1 0 .1-.1.1-.1.2v9.3z"></path></svg>
<p class="text-slate-600 italic mb-6 pt-8 z-10 relative">"The convenience is unbeatable. David sharpened our whole knife block right in the driveway while I worked from home. Will be a repeat customer for life."</p>
<p class="font-bold text-brand-blue-700">- Sarah K., North County</p>
</div>
</div>
</div>
</section>
<!-- Contact / CTA Section -->
<section id="contact" class="py-24 bg-brand-blue-700 text-white">
<div class="container mx-auto px-6 text-center animate-on-scroll fade-in-up">
<h2 class="text-3xl md:text-4xl font-extrabold mb-4">
Ready to Feel the Difference?
</h2>
<p class="text-lg md:text-xl text-slate-200 mb-8 max-w-2xl mx-auto">
Get a no-obligation quote or schedule your mobile service today. Text a photo of your knives or blades for the fastest quote!
</p>
<div class="flex flex-col md:flex-row justify-center items-center space-y-4 md:space-y-0 md:space-x-6">
<a href="tel:555-555-5555" class="bg-brand-orange-500 text-white px-8 py-4 rounded-full text-lg font-bold hover:bg-brand-orange-600 transition duration-300 shadow-lg transform hover:scale-105 w-full md:w-auto">
Call or Text: (555) 555-5555
</a>
<a href="mailto:david@wickededges.com" class="bg-white text-brand-blue-700 px-8 py-4 rounded-full text-lg font-bold hover:bg-slate-100 transition duration-300 shadow-lg transform hover:scale-105 w-full md:w-auto">
Email: david@wickededges.com
</a>
</div>
</div>
</section>
</main>
<!-- Footer -->
<footer class="bg-slate-800 text-slate-400 py-16">
<div class="container mx-auto px-6">
<div class="grid md:grid-cols-3 gap-8">
<div>
<h4 class="text-white text-xl font-bold mb-4">
Wicked Edges <span class="text-brand-orange-500">by David</span>
</h4>
<p class="mb-4">
Mobile sharpening, based in Escondido, CA.
</V>
<p>© 2025 Wicked Edges by David. All rights reserved.</p>
</div>
<div>
<h5 class="text-white font-bold tracking-wide uppercase mb-4">Quick Links</h5>
<ul class="space-y-2">
<li><a href="#services" class="hover:text-brand-orange-500 transition duration-300">Services</a></li>
<li><a href="#about" class="hover:text-brand-orange-500 transition duration-300">About David</a></li>
<li><a href="#why-us" class="hover:text-brand-orange-500 transition duration-300">Why Choose Us</a></li>
<li><a href="#contact" class="hover:text-brand-orange-500 transition duration-300">Get a Quote</a></li>
</ul>
</div>
<div>
<h5 class="text-white font-bold tracking-wide uppercase mb-4">Service Area</h5>
<p class="mb-2">Proudly serving all of San Diego County, including:</p>
<ul class="space-y-1 text-sm">
<li>Escondido & San Marcos</li>
<li>Carlsbad & Oceanside</li>
<li>La Jolla & Del Mar</li>
<li>Downtown & Greater San Diego</li>
</ul>
</div>
</div>
</div>
</footer>
<!--
* ANIMATION SCRIPT
* This script watches for elements with the 'animate-on-scroll' class
* and adds the 'is-visible' class when they enter the viewport.
-->
<script>
document.addEventListener('DOMContentLoaded', () => {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
observer.unobserve(entry.target); // Optional: Stop observing after it's visible
}
});
}, {
threshold: 0.1 // Trigger when 10% of the element is visible
});
// Find all elements to animate
const elementsToAnimate = document.querySelectorAll('.animate-on-scroll');
elementsToAnimate.forEach(el => {
observer.observe(el);
});
// A fallback to make sure elements already in view are visible on load (e.g., hero text)
// We use a small timeout to let the page render
setTimeout(() => {
elementsToAnimate.forEach(el => {
const rect = el.getBoundingClientRect();
if (rect.top <= window.innerHeight && rect.bottom >= 0) {
el.classList.add('is-visible');
observer.unobserve(el);
}
});
}, 100);
});
</script>
</body>
</html>