Car Wash Website Prompt — Premium Auto Spa Design with CSS Water Droplet Animation & Service Packages for Lovable, Claude, Bolt and more

Deep navy & electric cyan premium car wash prompt. Space Grotesk 800 headlines, CSS water droplet animation, live wait time card, before/after comparison, and 3-tier service packages. 9 sections, full copy.

# Gleam Auto Spa — Car Wash Website Prompt ### websiteprompts.ai — Production-Ready for Lovable, Bolt, v0, Claude, Cursor --- ## 1. GOAL STATEMENT Build a full-featured premium car wash and auto detailing website for **Gleam Auto Spa** — a clean, precise, high-conversion single-page site in deep navy and electric cyan that communicates professional quality, drives online bookings, and upsells service packages. --- ## 2. TECH STACK - **React 18 + Vite 5 + TypeScript** - **Tailwind CSS v3** (JIT mode) - **Framer Motion** — import exclusively from `motion/react` - **shadcn/ui** — Card, Badge, Button components - **lucide-react** — icons (Check, ChevronRight, MapPin, Clock, Star, Phone, Droplets, Car, Zap, Shield) - **Google Fonts** — Space Grotesk + Inter --- ## 3. DESIGN SYSTEM Add this to your global CSS (`index.css` or `globals.css`): ```css :root { /* Core palette */ --color-navy: 8 24 40; /* #081828 — deep background */ --color-navy-mid: 12 34 56; /* #0c2238 — card backgrounds */ --color-navy-lift: 16 44 72; /* #102c48 — elevated surfaces */ --color-navy-light: 20 56 90; /* #14385a — borders/dividers */ --color-cyan: 0 180 204; /* #00b4cc — primary accent */ --color-cyan-bright: 0 210 240; /* #00d2f0 — hover states */ --color-cyan-pale: 0 180 204; /* same, used at low opacity */ --color-white: 240 248 255; /* #f0f8ff — primary text */ --color-white-muted: 180 210 230; /* #b4d2e6 — secondary text */ --color-white-faint: 100 140 170; /* #648caa — muted text */ /* Semantic tokens */ --bg-page: rgb(var(--color-navy)); --bg-card: rgb(var(--color-navy-mid)); --bg-card-hover: rgb(var(--color-navy-lift)); --text-primary: rgb(var(--color-white)); --text-secondary: rgb(var(--color-white-muted)); --text-muted: rgb(var(--color-white-faint)); --accent: rgb(var(--color-cyan)); --accent-hover: rgb(var(--color-cyan-bright)); --border-subtle: rgba(var(--color-cyan) / 0.12); --border-cyan: rgba(var(--color-cyan) / 0.5); } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { background-color: var(--bg-page); color: var(--text-primary); font-family: 'Inter', sans-serif; font-weight: 300; -webkit-font-smoothing: antialiased; } ``` --- ## 4. TYPOGRAPHY **Google Fonts import** — place in `<head>` or via `@import` at top of CSS: ```html <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=Space+Grotesk:wght@400;500;700;800&family=Inter:wght@300;400;500&display=swap" rel="stylesheet" /> ``` **Usage rules:** | Element | Font | Weight | Size | |---|---|---|---| | All `<h1>` | Space Grotesk | 800 | clamp(52px, 8vw, 140px) | | All `<h2>` | Space Grotesk | 800 | clamp(36px, 4.5vw, 72px) | | `<h3>` section subtitles | Space Grotesk | 700 | clamp(24px, 2.5vw, 40px) | | Body copy | Inter | 300 | 17px / 1.7 line-height | | Labels, tags, nav | Inter | 500 | 12–13px tracking-[0.08em] uppercase | | Prices | Space Grotesk | 800 | inherit size | | Stats numbers | Space Grotesk | 800 | clamp(56px, 8vw, 100px) | | Step numbers (bg) | Inter | 800 | 80px | | Watermark | Space Grotesk | 800 | clamp(200px, 30vw, 460px) | --- ## 5. VISUAL EFFECTS ### Effect 1 — Animated CSS Water Droplet (Signature Hero Element) A single animated water droplet falls from top to bottom of the hero content area, then splits into three smaller droplets that fan outward and fade. Pure CSS `@keyframes` — no JS. Runs on a 4-second interval loop. ```css /* Add to global CSS */ @keyframes droplet-fall { 0% { transform: translateY(0) scale(1); opacity: 0; } 5% { opacity: 0.8; } 80% { transform: translateY(280px) scale(1); opacity: 0.8; } 100% { transform: translateY(300px) scale(1); opacity: 0; } } @keyframes droplet-split-left { 0% { transform: translate(0, 0) scale(1); opacity: 0; } 10% { opacity: 0.6; } 100% { transform: translate(-28px, 30px) scale(0.5); opacity: 0; } } @keyframes droplet-split-center { 0% { transform: translate(0, 0) scale(1); opacity: 0; } 10% { opacity: 0.6; } 100% { transform: translate(0, 42px) scale(0.4); opacity: 0; } } @keyframes droplet-split-right { 0% { transform: translate(0, 0) scale(1); opacity: 0; } 10% { opacity: 0.6; } 100% { transform: translate(28px, 30px) scale(0.5); opacity: 0; } } .droplet-container { position: absolute; top: 60px; left: 50%; transform: translateX(-50%); width: 40px; pointer-events: none; animation: droplet-fall 4s ease-in infinite; } .droplet-main { width: 14px; height: 18px; background: rgb(0, 180, 204); border-radius: 50% 50% 50% 50% / 40% 40% 60% 60%; margin: 0 auto; opacity: 0.7; } .droplet-split-group { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); opacity: 0; animation: none; } /* Trigger split group at 80% of 4s = 3.2s */ .droplet-container:nth-child(1) .droplet-split-group { animation: droplet-split-center 0.8s ease-out 3.2s infinite; } ``` Full implementation in TSX: ```tsx // components/WaterDroplet.tsx export function WaterDroplet() { return ( <div className="absolute inset-0 overflow-hidden pointer-events-none" aria-hidden="true"> <div className="droplet-container"> <div className="droplet-main" /> </div> {/* Split droplets — absolutely positioned at impact point */} <div className="absolute pointer-events-none" style={{ top: "calc(60px + 300px)", left: "50%", transform: "translateX(-50%)" }}> <div style={{ position: "absolute", width: "8px", height: "10px", background: "rgb(0,180,204)", borderRadius: "50% 50% 50% 50% / 40% 40% 60% 60%", animation: "droplet-split-left 0.7s ease-out 3.18s infinite", opacity: 0, }} /> <div style={{ position: "absolute", width: "8px", height: "10px", background: "rgb(0,180,204)", borderRadius: "50% 50% 50% 50% / 40% 40% 60% 60%", animation: "droplet-split-center 0.7s ease-out 3.18s infinite", opacity: 0, }} /> <div style={{ position: "absolute", width: "8px", height: "10px", background: "rgb(0,180,204)", borderRadius: "50% 50% 50% 50% / 40% 40% 60% 60%", animation: "droplet-split-right 0.7s ease-out 3.18s infinite", opacity: 0, }} /> </div> </div> ); } ``` ### Effect 2 — Background Watermark Text Render "GLEAM" in Space Grotesk 800 at `clamp(200px, 30vw, 460px)`, cyan at 2.5% opacity, right side of the hero, partially off-screen. ```tsx <span aria-hidden="true" className="absolute top-1/2 right-0 -translate-y-1/2 select-none pointer-events-none font-space font-extrabold leading-none" style={{ fontSize: "clamp(200px, 30vw, 460px)", color: "rgba(0, 180, 204, 0.025)", transform: "translateY(-50%) translateX(18%)", lineHeight: 0.9, }} > GLEAM </span> ``` ### Effect 3 — Faded Step Numbers Behind How It Works Large Inter 800 numerals ("01", "02", "03") at 80px, cyan at 6% opacity, rendered absolutely behind each step card: ```tsx <div className="relative"> <span aria-hidden="true" className="absolute -top-6 -left-4 font-inter font-extrabold leading-none select-none pointer-events-none" style={{ fontSize: "80px", color: "rgba(0,180,204,0.06)", zIndex: 0 }} > {String(index + 1).padStart(2, "0")} </span> <div className="relative z-10">{/* step content */}</div> </div> ``` ### Effect 4 — Pulsing Cyan Dot (Wait Time Card) A continuously pulsing cyan dot indicating live status, using Framer Motion: ```tsx <motion.span className="inline-block rounded-full" style={{ width: "8px", height: "8px", background: "rgb(0,180,204)" }} animate={{ scale: [1, 1.6, 1], opacity: [1, 0.4, 1] }} transition={{ duration: 1.8, repeat: Infinity, ease: "easeInOut" }} /> ``` ### Effect 5 — Staggered Scale Entry for Service Cards Service package cards animate from scale 0.95 + opacity 0 → scale 1 + opacity 1 using Framer Motion stagger: ```tsx const containerVariants = { hidden: {}, visible: { transition: { staggerChildren: 0.12 } } }; const cardVariants = { hidden: { opacity: 0, scale: 0.95, y: 20 }, visible: { opacity: 1, scale: 1, y: 0, transition: { duration: 0.5, ease: [0.25, 0.1, 0.25, 1] } } }; ``` ### Effect 6 — Count-Up Stats on Scroll (Cyan Background) Same `useCountUp` hook as standard — triggers once via `useInView`, easeOutCubic over 1600ms, staggered 150ms per stat. Applied to the Trust Stats strip with cyan background. ```tsx function useCountUp(target: number, duration = 1600, delay = 0): number { const [count, setCount] = React.useState(0); React.useEffect(() => { const timeout = setTimeout(() => { const start = performance.now(); const step = (now: number) => { const progress = Math.min((now - start) / duration, 1); const eased = 1 - Math.pow(1 - progress, 3); setCount(Math.round(eased * target)); if (progress < 1) requestAnimationFrame(step); }; requestAnimationFrame(step); }, delay); return () => clearTimeout(timeout); }, [target, duration, delay]); return count; } ``` --- ## 6. COMPONENT BREAKDOWN --- ### SECTION 1 — NAVBAR **Layout:** Fixed top, `backdrop-blur-md`, background `rgba(8,24,40,0.88)`, border-bottom `rgba(0,180,204,0.12)`. Height: 72px desktop / 64px mobile. z-50. **Desktop structure (left → right):** ``` [Logo] [flex-1] [Nav links × 4] [gap-8] [CTA Button] ``` **Logo:** "GLEAM" in Space Grotesk 800, 24px, cyan. Followed by "AUTO SPA" in Inter 300, 14px, `var(--text-secondary)`, ml-1.5 aligned to baseline. Or render as one unit: `GLEAM AUTO SPA` with "GLEAM" in cyan and the rest in white-muted. **Nav links** (Inter 500, 13px, tracking-[0.07em], uppercase, white-muted, hover → cyan, transition 200ms): - Services - How It Works - Before & After - Membership **CTA Button:** "Book Now" — background cyan `rgb(0,180,204)`, text navy `rgb(8,24,40)`, Space Grotesk 700, 13px uppercase tracking-[0.07em], px-6 py-2.5, border-radius 0 (sharp), hover: `rgb(0,210,240)`, transition 200ms. Add lucide `ChevronRight` icon (size-4) inline after text. **Mobile:** Hamburger (lucide `Menu`, 22px, white). Drawer from right, full-height, navy background, links stacked, py-5 each. --- ### SECTION 2 — HERO **Container:** `relative min-h-screen overflow-hidden flex flex-col justify-center px-6 md:px-20` **Background image:** ```jsx {/* Image: Aerial overhead view of a luxury car being washed — deep navy vehicle with water cascading across the roof and bonnet, white soap suds creating abstract patterns on dark paint, high-contrast, studio-quality automotive photography, blue and white tones, precision and premium feel */} <img src="" alt="Premium car wash at Gleam Auto Spa" className="absolute inset-0 w-full h-full object-cover object-center" /> ``` **Gradient overlay:** ```tsx {/* Left-to-right dark overlay keeping right side more visible */} <div className="absolute inset-0 z-[1]" style={{ background: "linear-gradient(105deg, rgba(8,24,40,0.92) 0%, rgba(8,24,40,0.7) 45%, rgba(8,24,40,0.3) 100%)" }} /> {/* Bottom fade for any text overflow */} <div className="absolute bottom-0 left-0 right-0 h-32 z-[1]" style={{ background: "linear-gradient(to top, rgb(8,24,40), transparent)" }} /> ``` **Water droplet animation (z-[2]):** `<WaterDroplet />` — positioned over the left content area. **Content block (relative z-10, max-w-3xl):** ``` <p style={{ fontFamily: "Inter", fontWeight: 500, fontSize: "13px", letterSpacing: "0.08em", color: "rgb(0,180,204)", textTransform: "uppercase", marginBottom: "20px" }}> Premium Auto Care · Marlow, Berkshire </p> <h1 style={{ fontFamily: "Space Grotesk", fontWeight: 800, fontSize: "clamp(52px,8vw,140px)", color: "rgb(240,248,255)", lineHeight: 0.92, letterSpacing: "-0.02em" }}> YOUR CAR DESERVES BETTER. </h1> <p style={{ fontFamily: "Inter", fontWeight: 300, fontSize: "18px", lineHeight: "1.7", color: "rgb(180,210,230)", marginTop: "28px", maxWidth: "460px" }}> Professional car washing and detailing services with industry-leading products, zero shortcuts, and a guarantee you'll love the result. </p> [Button row, mt-10, flex gap-4 flex-wrap]: Button 1: "Book a Wash" — cyan bg, navy text, Space Grotesk 700, 14px uppercase, px-8 py-3.5, rounded-none Button 2: "View Packages" — transparent, border 1px solid rgba(0,180,204,0.5), cyan text, same sizing, hover border-cyan ``` **Floating "CURRENT WAIT TIME" card (absolute bottom-8 right-6 md:right-10, z-20):** ```tsx <motion.div initial={{ opacity: 0, scale: 0.9, y: 16 }} animate={{ opacity: 1, scale: 1, y: 0 }} transition={{ duration: 0.55, delay: 0.4, ease: [0.34, 1.56, 0.64, 1] }} style={{ background: "rgba(8,24,40,0.80)", backdropFilter: "blur(16px)", border: "1px solid rgba(0,180,204,0.25)", padding: "20px 24px", minWidth: "200px", }} > <div style={{ display: "flex", alignItems: "center", gap: "8px", marginBottom: "8px" }}> {/* Pulsing cyan dot */} <motion.span style={{ width: "8px", height: "8px", borderRadius: "50%", background: "rgb(0,180,204)", display: "inline-block" }} animate={{ scale: [1, 1.6, 1], opacity: [1, 0.4, 1] }} transition={{ duration: 1.8, repeat: Infinity, ease: "easeInOut" }} /> <span style={{ fontFamily: "Inter", fontWeight: 500, fontSize: "11px", letterSpacing: "0.08em", color: "rgb(0,180,204)", textTransform: "uppercase" }}> Current Wait Time </span> </div> <p style={{ fontFamily: "Space Grotesk", fontWeight: 800, fontSize: "36px", color: "rgb(240,248,255)", lineHeight: 1, marginBottom: "12px" }}> ~8 <span style={{ fontSize: "16px", fontWeight: 400, fontFamily: "Inter", color: "rgb(180,210,230)" }}>minutes</span> </p> <a href="#book" style={{ fontFamily: "Inter", fontWeight: 500, fontSize: "13px", color: "rgb(0,180,204)", textDecoration: "none", display: "flex", alignItems: "center", gap: "4px" }}> Book ahead → </a> </motion.div> ``` **Watermark:** "GLEAM" — `absolute top-1/2 right-0`, -translateY-1/2, Space Grotesk 800, `clamp(200px,30vw,460px)`, `rgba(0,180,204,0.025)`, `translateX(18%)`, z-[1], pointer-events-none select-none. --- ### SECTION 3 — SERVICE PACKAGES **Layout:** Background `var(--bg-page)` (navy), py-24, px-6 md:px-20. **Section header (centered, mb-16):** ``` Label: "CHOOSE YOUR SERVICE" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-4 H2: "Three Ways to Shine." — Space Grotesk 800 clamp(36px,4.5vw,72px) white Subline: "From a quick refresh to a full showroom finish — every wash uses professional-grade products." — Inter 300 17px white-muted mt-4 max-w-xl mx-auto text-center ``` **3 cards in `grid grid-cols-1 md:grid-cols-3 gap-0` — no gap, cards share borders:** Apply Framer Motion `variants` for stagger entry (scale 0.95→1, opacity 0→1, y 20→0, 500ms, stagger 120ms). **Card base styling:** ``` background: rgb(12,34,56) [navy-mid] border: 1px solid rgba(0,180,204,0.1) border-radius: 0 [sharp corners] padding: p-8 md:p-10 position: relative overflow: hidden on hover: border-color rgba(0,180,204,0.5), transition 300ms ``` **Card — EXPRESS:** ``` Top chip: "MOST POPULAR" — hidden on this card Price row: "£12" in Space Grotesk 800, clamp(48px,5vw,72px), cyan + "/wash" Inter 300 16px white-muted self-end mb-1 Name: "Express Wash" — Space Grotesk 700, 22px, white, mt-0 Tagline: "Clean, fast, done." — Inter 300, 14px, white-muted, mt-2 mb-6 Divider: 1px rgba(0,180,204,0.15) horizontal line Features list (mt-6, flex flex-col gap-3): ✓ Exterior hand wash ✓ Wheel clean & rinse ✓ Window wipe ✓ Air dry [Check icon: lucide Check, size-4, cyan, mr-3] [Feature text: Inter 300, 14px, white-muted] CTA button (mt-8): "Book Express" — border 1px solid rgba(0,180,204,0.4), cyan text, Inter 500 13px uppercase tracking-[0.07em], px-6 py-3, rounded-none, w-full, hover: bg-cyan text-navy ``` **Card — SIGNATURE (featured, middle):** ``` Top chip (absolute top-4 right-4): "MOST POPULAR" — cyan bg, navy text, Inter 500 10px uppercase tracking-[0.07em], px-3 py-1, rounded-none Background: rgb(16,44,72) [navy-lift, slightly elevated] Border: 1px solid rgba(0,180,204,0.35) Price: "£22" same styling as above Name: "Signature Wash" — Space Grotesk 700, 22px, white Tagline: "Our full exterior service." — Inter 300, 14px, white-muted, mt-2 mb-6 Features list: ✓ Full exterior hand wash ✓ Wheel & tyre clean ✓ Glass clean inside & out ✓ Door sill wipe ✓ Tyre dressing ✓ Hand dry with microfibre CTA button: "Book Signature" — solid cyan bg, navy text, hover bg-cyan-bright, w-full ``` **Card — FULL DETAIL:** ``` Price: "£45" same styling Name: "Full Detail" — Space Grotesk 700, 22px, white Tagline: "Showroom finish, guaranteed." — Inter 300, 14px, white-muted Features list: ✓ Everything in Signature ✓ Full interior vacuum ✓ Leather / fabric wipe ✓ Dashboard & console clean ✓ Air freshener ✓ Wax & paint sealant ✓ Ceramic coat option (+£35) CTA button: "Book Detail" — border style, same as Express ``` --- ### SECTION 4 — HOW IT WORKS **Layout:** Background `rgb(12,34,56)` (navy-mid), py-24, px-6 md:px-20. **Section header (centered, mb-20):** ``` Label: "THE PROCESS" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-4 H2: "Simple. Fast. Spotless." — Space Grotesk 800 clamp(36px,4.5vw,64px) white ``` **3 steps in `grid grid-cols-1 md:grid-cols-3 gap-12 md:gap-6`:** Each step — `relative`: ``` Background faded number (absolute -top-6 -left-4, z-0): "01" / "02" / "03" — Inter 800, 80px, rgba(0,180,204,0.06), pointer-events-none Step content (relative z-10): Icon circle: 52px × 52px, border 1px solid rgba(0,180,204,0.3), rounded-none, flex items-center justify-center mb-6 lucide icon (size-6, cyan stroke, strokeWidth 1.5) Step label: Inter 500, 11px, cyan, uppercase, tracking-[0.08em], mb-3 "STEP 01" / "STEP 02" / "STEP 03" Heading: Space Grotesk 700, 22px, white, mb-4 Body: Inter 300, 15px, white-muted, leading-[1.75] ``` **Step 1:** Icon: `Car` (lucide). Heading: "Drive In." Body: "Pull straight into one of our 12 bays — no appointment needed for Express or Signature washes. Just show up." **Step 2:** Icon: `Droplets` (lucide). Heading: "We Get to Work." Body: "Our trained team gets started immediately with pH-neutral shampoos, microfibre mitts, and professional tools. No brushes, no scratches." **Step 3:** Icon: `Zap` (lucide). Heading: "Drive Away Clean." Body: "Pick up your keys and go. Express washes take 12 minutes. Full Details are typically ready in 90 minutes." Entry animation per step: opacity 0→1, y 30→0, 600ms, stagger 150ms, easeOut, triggered once on scroll inView. --- ### SECTION 5 — BEFORE / AFTER **Layout:** Background `var(--bg-page)` (navy), py-24, px-6 md:px-20. **Section header (centered, mb-16):** ``` Label: "THE DIFFERENCE" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-4 H2: "See It for Yourself." — Space Grotesk 800 clamp(36px,4.5vw,64px) white ``` **Two-column comparison block:** `grid grid-cols-2 gap-0 relative max-w-4xl mx-auto` — the two panels sit side by side. A vertical cyan line (1px, full height of the grid, absolute center) separates them. ```tsx <div className="relative max-w-4xl mx-auto grid grid-cols-2"> {/* Vertical divider */} <div className="absolute top-0 bottom-0 left-1/2 -translate-x-1/2 z-10" style={{ width: "1px", background: "rgb(0,180,204)" }} /> {/* BEFORE panel */} <div className="relative overflow-hidden" style={{ aspectRatio: "4/3" }}> {/* Image: Dusty unwashed car — grey sedan with visible road grime, dust, and mud splatter across panels and windows, flat overcast lighting, realistic and unsatisfying, documentary photography */} <img src="" alt="Car before professional wash at Gleam Auto Spa" className="w-full h-full object-cover object-center" /> {/* Label chip */} <div className="absolute top-4 left-4 z-10" style={{ background: "rgba(8,24,40,0.85)", border: "1px solid rgba(255,255,255,0.15)", padding: "6px 14px" }}> <span style={{ fontFamily: "Inter", fontWeight: 500, fontSize: "11px", letterSpacing: "0.08em", color: "rgb(240,248,255)", textTransform: "uppercase" }}>BEFORE</span> </div> </div> {/* AFTER panel */} <div className="relative overflow-hidden" style={{ aspectRatio: "4/3" }}> {/* Image: Gleaming freshly-washed car — same grey sedan now spotless and reflective, droplets of water glistening on paint, bright clean studio lighting, high-contrast automotive photography, premium and satisfying */} <img src="" alt="Car after professional wash at Gleam Auto Spa" className="w-full h-full object-cover object-center" /> {/* Cyan overlay tint to reinforce "clean" feeling */} <div className="absolute inset-0" style={{ background: "rgba(0,180,204,0.04)" }} /> {/* Label chip */} <div className="absolute top-4 right-4 z-10" style={{ background: "rgb(0,180,204)", padding: "6px 14px" }}> <span style={{ fontFamily: "Inter", fontWeight: 500, fontSize: "11px", letterSpacing: "0.08em", color: "rgb(8,24,40)", textTransform: "uppercase" }}>AFTER</span> </div> </div> </div> ``` **Below the comparison (mt-12, text-center):** ``` P: "Every car gets the same care whether it's a hatchback or a supercar. That's the Gleam guarantee." — Inter 300 16px white-muted max-w-lg mx-auto CTA link: "Book Your Wash →" — Inter 500 14px cyan hover:underline ``` --- ### SECTION 6 — TRUST STATS (CYAN BACKGROUND) **Layout:** Full-width, background `rgb(0,180,204)` (cyan), py-20, px-6. **4 stats in `flex flex-row justify-center flex-wrap gap-16 md:gap-24`:** | Value | Label | |---|---| | 5,000 | "Cars Washed Monthly" | | 99 | "% Satisfaction Rate" | | 2018 | "Established" | | 12 | "Professional Bays" | **Per-stat:** ```tsx <div className="text-center"> <p className="font-space font-extrabold leading-none" style={{ fontSize: "clamp(56px,8vw,100px)", color: "rgb(8,24,40)", letterSpacing: "-0.02em" }} > {count}{suffix} </p> <p className="mt-3 font-inter font-medium text-xs uppercase tracking-[0.08em]" style={{ color: "rgba(8,24,40,0.65)" }}> {label} </p> </div> ``` Suffixes: "5,000+" has the "+" appended; "99" has "%" appended; "2018" and "12" bare numbers. Count-up: fires once on scroll inView, easeOutCubic 1600ms, stagger 0/150/300/450ms. For "2018" animate from 2000→2018 (not from 0). For "5,000" animate 0→5000 then display as "5,000+". Mobile: 2×2 grid, gap-10, py-14. --- ### SECTION 7 — ADD-ONS **Layout:** Background `rgb(12,34,56)` (navy-mid), py-20, px-6 md:px-20. **Section header (left-aligned, mb-10):** ``` Label: "EXTRA SERVICES" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-4 H2: "Upgrade Your Wash." — Space Grotesk 800 clamp(28px,3vw,52px) white P: "Add any of these to any package at checkout or on arrival." — Inter 300 16px white-muted mt-3 ``` **Horizontal scrolling chip row:** `overflow-x-auto flex gap-3 pb-3 scrollbar-hide mt-8` Each chip: ``` background: rgb(16,44,72) border: 1px solid rgba(0,180,204,0.2) padding: px-5 py-3 border-radius: 0 on hover: border-color rgba(0,180,204,0.6), bg-navy-lift flex-shrink: 0 ``` Inside each chip: ``` [service name — Inter 500 14px white] [price — Inter 500 14px cyan ml-3] ``` **Add-ons (7 chips):** - Interior Vacuum · +£8 - Tyre Shine · +£6 - Air Freshener · +£3 - Ceramic Coat · +£35 - Wax Polish · +£15 - Leather Conditioning · +£20 - Engine Bay Clean · +£25 Mobile: chips scroll horizontally, no wrapping. --- ### SECTION 8 — MONTHLY MEMBERSHIP CTA **Layout:** Full-width, background `var(--bg-page)` (navy), py-24, px-6 md:px-20. Max-w-4xl mx-auto. **Content block (centered):** ``` Label: "UNLIMITED WASHES" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-6 H2: "Wash More. Pay Less." — Space Grotesk 800 clamp(36px,5vw,80px) cyan P: "Our monthly membership gives you unlimited Signature Washes for one fixed monthly fee. Cancel any time, no contracts." — Inter 300 17px white-muted mt-6 mb-12 max-w-2xl mx-auto text-center ``` **3 membership tiers in `grid grid-cols-1 md:grid-cols-3 gap-6 mt-12`:** **BASIC — £19/mo:** ``` background: rgb(12,34,56), border 1px solid rgba(0,180,204,0.15), p-8, rounded-none Name: "Basic" — Space Grotesk 700, 18px, white, mb-2 Price: "£19" — Space Grotesk 800, 48px, white + "/mo" Inter 300 16px white-muted Features: Unlimited Express Washes · 10% off Add-Ons CTA: "Start Basic" — border cyan, cyan text, w-full, px-6 py-3, rounded-none, hover bg-cyan text-navy ``` **SIGNATURE — £29/mo (featured):** ``` background: rgb(0,180,204), p-8, rounded-none Name: "Signature" — Space Grotesk 700, 18px, navy, mb-2 "MOST VALUE" chip — navy bg, cyan text, 10px uppercase, px-3 py-1, absolute top-4 right-4 Price: "£29" — Space Grotesk 800, 48px, navy + "/mo" Inter 300 16px rgba(8,24,40,0.6) Features (navy text): Unlimited Signature Washes · 15% off Add-Ons · Priority Queue CTA: "Start Signature" — navy bg, white text, w-full, px-6 py-3, rounded-none, hover bg-navy-lift text-white ``` **DETAIL PASS — £49/mo:** ``` background: rgb(12,34,56), border 1px solid rgba(0,180,204,0.15), p-8 Name: "Detail Pass" — Space Grotesk 700, 18px, white Price: "£49" — same as Basic Features: 1× Full Detail/month · Unlimited Signature Washes · 20% off Add-Ons · Priority Queue · Free Air Freshener CTA: "Start Detail Pass" — border cyan, cyan text, same as Basic CTA ``` **Below tiers (mt-10, text-center):** ``` "No contracts. Cancel any time. Membership begins the day you sign up." — Inter 300 14px white-muted ``` --- ### SECTION 9 — FOOTER **Layout:** 3-column grid `grid-cols-1 md:grid-cols-3 gap-12`, background `rgb(6,18,30)` (deeper navy), border-top `1px solid rgba(0,180,204,0.1)`, pt-14 pb-10, px-6 md:px-20. **Column 1 — Brand:** ``` Logo: "GLEAM AUTO SPA" — Space Grotesk 800, 20px. "GLEAM" in cyan, "AUTO SPA" in white-muted Tagline: "Premium car washing and detailing in Marlow, Berkshire. Professional products, guaranteed results." — Inter 300 14px white-muted mt-4 max-w-xs leading-relaxed Social icons (mt-6, flex gap-4): Instagram, Facebook (lucide icons, size-5, white-muted, hover → cyan, transition 200ms) ``` **Column 2 — Location & Hours:** ``` Heading: "FIND US" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-4 Address (Inter 300 14px white-muted leading-loose): Gleam Auto Spa River Road Business Park Marlow, SL7 1QT Hours: Mon–Fri: 8:00am – 7:00pm Saturday: 8:00am – 6:00pm Sunday: 9:00am – 5:00pm Note: "Last car accepted 30 minutes before close" ``` **Column 3 — Quick Links:** ``` Heading: "QUICK LINKS" — Inter 500 11px cyan uppercase tracking-[0.08em] mb-4 Links (flex flex-col gap-3, Inter 300 14px white-muted hover:white transition 200ms): Services / How It Works / Add-Ons / Memberships / Book Now / Gift Vouchers / Contact Us ``` **Footer bar (mt-12, pt-8, border-top rgba(0,180,204,0.06)):** ``` flex justify-between flex-wrap gap-4 Left: "© 2024 Gleam Auto Spa. All rights reserved." — 12px, color rgba(100,140,170,0.7) Right: "Privacy Policy · Terms" — 12px, same color, hover white-muted ``` --- ## 7. ANIMATIONS — COMPLETE SPECIFICATION | Element | Initial | Final | Duration | Delay | Easing | Trigger | |---|---|---|---|---|---|---| | Navbar | opacity 0, y -12 | opacity 1, y 0 | 400ms | 0ms | easeOut | page load | | Hero label | opacity 0, y 12 | opacity 1, y 0 | 500ms | 100ms | easeOut | page load | | Hero h1 | opacity 0, y 40 | opacity 1, y 0 | 800ms | 250ms | [0.25,0.1,0.25,1] | page load | | Hero subline | opacity 0, y 24 | opacity 1, y 0 | 650ms | 500ms | easeOut | page load | | Hero buttons | opacity 0, y 16 | opacity 1, y 0 | 550ms | 700ms | easeOut | page load | | Wait time card | opacity 0, scale 0.9, y 16 | opacity 1, scale 1, y 0 | 550ms | 400ms | spring [0.34,1.56,0.64,1] | page load | | Pulsing dot | scale 1, opacity 1 | scale [1,1.6,1], opacity [1,0.4,1] | 1800ms | 0ms | easeInOut | infinite | | Water droplet | translateY 0, opacity 0 | translateY 300px, opacity [0,0.8,0] | 4000ms | 0ms | ease-in | infinite | | Droplet splits | at 3.2s mark | fan out + fade | 700ms | 3.18s | easeOut | triggered at 80% of fall | | Section headings | opacity 0, y 28 | opacity 1, y 0 | 650ms | 0ms | [0.25,0.1,0.25,1] | scroll inView once | | Service cards | opacity 0, scale 0.95, y 20 | opacity 1, scale 1, y 0 | 500ms | 120ms stagger | [0.25,0.1,0.25,1] | scroll inView | | Service card hover | border rgba(0,180,204,0.1) | border rgba(0,180,204,0.5) | 300ms | — | easeOut | hover | | How It Works steps | opacity 0, y 30 | opacity 1, y 0 | 600ms | 150ms stagger | easeOut | scroll inView | | Before/After panels | opacity 0, x ±30 | opacity 1, x 0 | 700ms | 0/200ms | easeOut | scroll inView | | Stats count-up | 0 | target | 1600ms | 0/150/300/450ms stagger | easeOutCubic | scroll inView once | | Add-on chips | opacity 0, x 20 | opacity 1, x 0 | 400ms | 50ms stagger | easeOut | scroll inView | | Membership cards | opacity 0, y 30 | opacity 1, y 0 | 600ms | 100ms stagger | easeOut | scroll inView | | Nav links | color white-muted | color cyan | 200ms | — | easeOut | hover | | CTA button | — | brightness +8% | 200ms | — | easeOut | hover | --- ## 8. RESPONSIVE DESIGN ### Desktop (≥1280px) - Container: max-w-7xl mx-auto px-6 md:px-12 lg:px-20 - Hero: min-h-screen, content center-aligned with max-w-3xl - Service Packages: 3-column grid, no gap - How It Works: 3-column grid - Before/After: 2-column side-by-side, max-w-4xl centered - Trust Stats: 4-column flex row - Membership: 3-column grid - Footer: 3-column grid ### Tablet (768px–1279px) - Service Packages: keep 3-column, reduce padding to p-6 - How It Works: keep 3-column - Before/After: 2-column, reduce aspect-ratio to 3/2 - Trust Stats: 2×2 grid - Membership: keep 3-column, reduce padding - Footer: keep 3-column, reduce gap ### Mobile (<768px) - Navbar: logo + hamburger, drawer from right - Hero: min-h-screen; wait time card moves to bottom-left, full-width style; water droplet animation disabled (hide via `hidden md:block`) - Service Packages: 1-column stack - How It Works: 1-column stack, background numbers smaller (48px) - Before/After: keep 2-column side-by-side, shorter aspect (1/1 square) - Trust Stats: 2×2 grid, stat number clamp floor 48px, py-12 - Add-ons: horizontal scroll (scrollbar-hide) - Membership: 1-column stack - Footer: 1-column stack, gap-10 --- ## 9. FULL COPY ### Brand & Core - **Name:** Gleam Auto Spa - **Tagline:** Your Car Deserves Better. - **Location:** River Road Business Park, Marlow, SL7 1QT, Berkshire - **Phone:** 01628 551 007 - **Email:** book@gleamautospa.co.uk ### Navigation Services · How It Works · Before & After · Membership · Book Now ### Hero - **Pre-headline:** Premium Auto Care · Marlow, Berkshire - **H1:** YOUR CAR DESERVES BETTER. - **Subline:** Professional car washing and detailing services with industry-leading products, zero shortcuts, and a guarantee you'll love the result. - **CTA 1:** Book a Wash - **CTA 2:** View Packages ### Wait Time Card - Status label: CURRENT WAIT TIME (with pulsing dot) - Value: ~8 minutes - Link: Book ahead → ### Service Packages - **Label:** CHOOSE YOUR SERVICE - **H2:** Three Ways to Shine. - **Subline:** From a quick refresh to a full showroom finish — every wash uses professional-grade products. - **Express:** £12 · "Clean, fast, done." · Book Express - **Signature:** £22 · "Our full exterior service." · Book Signature · MOST POPULAR chip - **Full Detail:** £45 · "Showroom finish, guaranteed." · Book Detail ### How It Works - **Label:** THE PROCESS - **H2:** Simple. Fast. Spotless. - Step 1: Drive In — "Pull straight into one of our 12 bays — no appointment needed for Express or Signature washes. Just show up." - Step 2: We Get to Work — "Our trained team gets started immediately with pH-neutral shampoos, microfibre mitts, and professional tools. No brushes, no scratches." - Step 3: Drive Away Clean — "Pick up your keys and go. Express washes take 12 minutes. Full Details are typically ready in 90 minutes." ### Before / After - **Label:** THE DIFFERENCE - **H2:** See It for Yourself. - Quote: "Every car gets the same care whether it's a hatchback or a supercar. That's the Gleam guarantee." - CTA: Book Your Wash → ### Trust Stats - 5,000+ · Cars Washed Monthly - 99% · Satisfaction Rate - Since 2018 · Established - 12 · Professional Bays ### Add-Ons - **Label:** EXTRA SERVICES - **H2:** Upgrade Your Wash. - **Subline:** Add any of these to any package at checkout or on arrival. - Interior Vacuum +£8 / Tyre Shine +£6 / Air Freshener +£3 / Ceramic Coat +£35 / Wax Polish +£15 / Leather Conditioning +£20 / Engine Bay Clean +£25 ### Membership - **Label:** UNLIMITED WASHES - **H2:** Wash More. Pay Less. - **Subline:** Our monthly membership gives you unlimited Signature Washes for one fixed monthly fee. Cancel any time, no contracts. - Basic £19/mo / Signature £29/mo — MOST VALUE / Detail Pass £49/mo - Footer note: No contracts. Cancel any time. Membership begins the day you sign up. ### Footer - **Tagline:** Premium car washing and detailing in Marlow, Berkshire. Professional products, guaranteed results. - **Copyright:** © 2024 Gleam Auto Spa. All rights reserved. - **Legal:** Privacy Policy · Terms --- ## 10. KEY DEPENDENCIES ```json { "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1", "motion": "^11.11.0", "tailwindcss": "^3.4.0", "lucide-react": "^0.460.0", "@shadcn/ui": "latest" }, "devDependencies": { "typescript": "^5.6.0", "vite": "^5.4.0", "@vitejs/plugin-react": "^4.3.0", "autoprefixer": "^10.4.20", "postcss": "^8.4.47" } } ``` **shadcn/ui components to install:** ```bash npx shadcn@latest add card badge button ``` **Tailwind `fontFamily` extension (`tailwind.config.ts`):** ```ts theme: { extend: { fontFamily: { space: ['"Space Grotesk"', 'sans-serif'], inter: ['Inter', 'sans-serif'], }, }, } ``` **Framer Motion import — always use this, never `framer-motion`:** ```tsx import { motion, useInView, useAnimation, AnimatePresence } from "motion/react"; ``` **Custom CSS `scrollbar-hide` utility:** ```css .scrollbar-hide::-webkit-scrollbar { display: none; } .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } ```

The generated results may vary

Categories

Categories

FAQ

Why does the deep navy and electric cyan palette work so well for a car wash business?

Navy communicates cleanliness, precision, and premium positioning — the same palette language used by luxury automotive brands. The cyan accent is a direct visual metaphor for water, freshness, and transformation. Together they create a striking contrast that feels modern and trustworthy without the generic blues of most car wash sites.

What sections are included in this prompt?

9 sections: (1) Fixed navbar with cyan Book Now CTA; (2) Hero with CSS water droplet animation and wait time card; (3) Three-tier service packages — Express £12, Signature £22, Full Detail £45; (4) How It Works; (5) Before/After panel; (6) Cyan Trust Stats strip; (7) Horizontal add-on chips row; (8) Monthly Membership CTA; (9) Three-column footer.

Which AI tools can use this prompt?

Works with Lovable, Bolt, v0, Claude (claude.ai), or Cursor. Tech stack: React + Vite + TypeScript + Tailwind CSS + Framer Motion + shadcn/ui. The CSS water droplet uses pure @keyframes — no third-party dependencies.

Can I customize the copy, branding, and colors?

Yes — "Gleam Auto Spa" and all pricing is in clearly-labelled copy blocks. Colors are CSS custom properties in :root. To adjust the water droplet speed, change the 4s duration in .droplet-container CSS.

Lovable-generated Gleam Auto Spa car wash site in deep navy and electric cyan

FAQ

Why does the deep navy and electric cyan palette work so well for a car wash business?

Navy communicates cleanliness, precision, and premium positioning — the same palette language used by luxury automotive brands. The cyan accent is a direct visual metaphor for water, freshness, and transformation. Together they create a striking contrast that feels modern and trustworthy without the generic blues of most car wash sites.

What sections are included in this prompt?

9 sections: (1) Fixed navbar with cyan Book Now CTA; (2) Hero with CSS water droplet animation and wait time card; (3) Three-tier service packages — Express £12, Signature £22, Full Detail £45; (4) How It Works; (5) Before/After panel; (6) Cyan Trust Stats strip; (7) Horizontal add-on chips row; (8) Monthly Membership CTA; (9) Three-column footer.

Which AI tools can use this prompt?

Works with Lovable, Bolt, v0, Claude (claude.ai), or Cursor. Tech stack: React + Vite + TypeScript + Tailwind CSS + Framer Motion + shadcn/ui. The CSS water droplet uses pure @keyframes — no third-party dependencies.

Can I customize the copy, branding, and colors?

Yes — "Gleam Auto Spa" and all pricing is in clearly-labelled copy blocks. Colors are CSS custom properties in :root. To adjust the water droplet speed, change the 4s duration in .droplet-container CSS.

Frequently asked questions

What is websiteprompts.ai?

websiteprompts.ai is a free library of AI website prompts. Each prompt is a ready-to-use text instruction that generates a complete website design when used with an AI website builder like Lovable, Claude, Bolt, v0, or similar tools.

How do I use these prompts?

Copy any prompt from websiteprompts.ai, open your AI website builder of choice — Lovable, Bolt, v0, Claude, ChatGPT, or any other tool — paste the prompt, and let the AI generate your website. No coding or design experience needed.

Are the prompts free?

Yes — every prompt on websiteprompts.ai is completely free. Copy and use them as many times as you like, for personal or commercial projects.

Which AI tools do the prompts work with?

The prompts are designed primarily for Lovable and Bolt, but they work with any AI tool that can generate websites — including v0, Claude, ChatGPT, Cursor, Framer AI, and others.

How often are new prompts added?

New prompts are added every day. The library is constantly growing with prompts for different industries, website types, and design styles.

Do I need any technical skills to use these prompts?

No technical skills required. Copy the prompt, paste it into any AI website builder, and the AI handles the rest. websiteprompts.ai is built for anyone who wants a professional website without writing code.

Frequently asked questions

What is websiteprompts.ai?

websiteprompts.ai is a free library of AI website prompts. Each prompt is a ready-to-use text instruction that generates a complete website design when used with an AI website builder like Lovable, Claude, Bolt, v0, or similar tools.

How do I use these prompts?

Copy any prompt from websiteprompts.ai, open your AI website builder of choice — Lovable, Bolt, v0, Claude, ChatGPT, or any other tool — paste the prompt, and let the AI generate your website. No coding or design experience needed.

Are the prompts free?

Yes — every prompt on websiteprompts.ai is completely free. Copy and use them as many times as you like, for personal or commercial projects.

Which AI tools do the prompts work with?

The prompts are designed primarily for Lovable and Bolt, but they work with any AI tool that can generate websites — including v0, Claude, ChatGPT, Cursor, Framer AI, and others.

How often are new prompts added?

New prompts are added every day. The library is constantly growing with prompts for different industries, website types, and design styles.

Do I need any technical skills to use these prompts?

No technical skills required. Copy the prompt, paste it into any AI website builder, and the AI handles the rest. websiteprompts.ai is built for anyone who wants a professional website without writing code.

Frequently asked questions

What is websiteprompts.ai?

websiteprompts.ai is a free library of AI website prompts. Each prompt is a ready-to-use text instruction that generates a complete website design when used with an AI website builder like Lovable, Claude, Bolt, v0, or similar tools.

How do I use these prompts?

Copy any prompt from websiteprompts.ai, open your AI website builder of choice — Lovable, Bolt, v0, Claude, ChatGPT, or any other tool — paste the prompt, and let the AI generate your website. No coding or design experience needed.

Are the prompts free?

Yes — every prompt on websiteprompts.ai is completely free. Copy and use them as many times as you like, for personal or commercial projects.

Which AI tools do the prompts work with?

The prompts are designed primarily for Lovable and Bolt, but they work with any AI tool that can generate websites — including v0, Claude, ChatGPT, Cursor, Framer AI, and others.

How often are new prompts added?

New prompts are added every day. The library is constantly growing with prompts for different industries, website types, and design styles.

Do I need any technical skills to use these prompts?

No technical skills required. Copy the prompt, paste it into any AI website builder, and the AI handles the rest. websiteprompts.ai is built for anyone who wants a professional website without writing code.

Get new AI website prompts every week — straight to your inbox.

Every Friday we drop a fresh batch of AI website prompts and tips to help you build better websites faster.

Join 1,000+ AI enthusiasts

liquid metallic gradient

Get new AI website prompts every week — straight to your inbox.

Every Friday we drop a fresh batch of AI website prompts and tips to help you build better websites faster.

Join 1,000+ AI enthusiasts

liquid metallic gradient

Get new AI website prompts every week — straight to your inbox.

Every Friday we drop a fresh batch of AI website prompts and tips to help you build better websites faster.

Join 1,000+ AI enthusiasts