<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>30 second car valuation</title>
<style>
:root { --green:#16a34a; --bg:#f6f7f9; --text:#0f172a; --muted:#64748b; --card:#ffffff; --border:#e2e8f0; }
* { box-sizing:border-box; }
body {
margin:0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
background: var(--bg); color: var(--text);
}
header {
background:#fff; border-bottom:1px solid var(--border);
}
.nav {
max-width: 980px; margin:0 auto; padding:14px 18px;
display:flex; align-items:center; justify-content:space-between;
}
.brand { font-weight:800; letter-spacing:-0.02em; }
.pill {
font-size:12px; color:var(--muted); border:1px solid var(--border); padding:6px 10px; border-radius:999px;
background:#fff;
}
main { max-width: 980px; margin:0 auto; padding:34px 18px 50px; }
.wrap {
display:grid; grid-template-columns: 1.2fr 0.8fr; gap:22px; align-items:start;
}
@media (max-width: 820px) { .wrap { grid-template-columns: 1fr; } }
.card {
background:var(--card); border:1px solid var(--border); border-radius:18px;
padding:26px; box-shadow: 0 10px 25px rgba(2,6,23,0.05);
}
h1 { margin:0 0 10px; font-size: clamp(28px, 3.2vw, 44px); letter-spacing:-0.03em; }
h1 span { color: var(--green); }
p.lead { margin:0 0 18px; color: var(--muted); font-size:16px; line-height:1.5; }
.field { margin: 14px 0; }
label { display:block; font-size:13px; color:var(--muted); margin-bottom:7px; }
.input {
width:100%; padding:16px 14px; border-radius:14px; border:1px solid var(--border);
font-size:18px; outline:none; background:#fff;
}
.input:focus { border-color: rgba(22,163,74,.5); box-shadow: 0 0 0 4px rgba(22,163,74,.12); }
.regRow { display:flex; gap:10px; }
.flag {
display:flex; align-items:center; justify-content:center;
width:54px; min-width:54px; border-radius:14px; border:1px solid var(--border);
background: linear-gradient(180deg,#0b4aa6,#0b4aa6);
color:#fff; font-weight:800; letter-spacing:0.02em;
}
.btn {
width:100%; margin-top:14px; padding:15px 14px;
border:none; border-radius:14px; background: var(--green); color:#fff;
font-weight:800; font-size:16px; cursor:pointer;
}
.btn:disabled { opacity:.65; cursor:not-allowed; }
.fineprint { margin-top:10px; font-size:12px; color:var(--muted); line-height:1.4; }
.trust {
display:flex; gap:10px; align-items:center; margin-top:18px; padding-top:18px; border-top:1px dashed var(--border);
color:var(--muted); font-size:13px;
}
.stars { letter-spacing:1px; color:#16a34a; font-weight:900; }
.side h3 { margin:0 0 10px; font-size:16px; }
.side ul { margin:0; padding-left:18px; color:var(--muted); }
.side li { margin:8px 0; }
.status {
margin-top:14px; padding:12px 14px; border-radius:14px; border:1px solid var(--border);
background:#fff; color:var(--muted); font-size:13px; display:none;
}
.status.show { display:block; }
.ok { color: #166534; }
.err { color: #991b1b; }
</style>
</head>
<body>
<header>
<div class="nav">
<div class="brand">Your Dealership</div>
<div class="pill">Instant valuation • UK-wide</div>
</div>
</header>
<main>
<div class="wrap">
<div class="card">
<h1><span>30 second</span> car valuation</h1>
<p class="lead">Enter your reg and mileage to get an instant estimated offer, subject to inspection.</p>
<form id="valuationForm">
<div class="field">
<label for="reg">Registration number</label>
<div class="regRow">
<div class="flag">UK</div>
<input class="input" id="reg" name="reg" placeholder="Enter your reg" autocomplete="off" required />
</div>
</div>
<div class="field">
<label for="mileage">Mileage</label>
<input class="input" id="mileage" name="mileage" placeholder="e.g. 32,000" inputmode="numeric" required />
</div>
<button class="btn" id="submitBtn" type="submit">Get my car valuation</button>
<div class="fineprint">We’ll check DVLA vehicle details and compare against current market listings. No obligation.</div>
<div class="status" id="statusBox"></div>
</form>
<div class="trust">
<div class="stars">★★★★★</div>
<div><strong>Excellent</strong> • Quick valuations • Friendly buyers</div>
</div>
</div>
<div class="card side">
<h3>How it works</h3>
<ul>
<li>We decode your car details using DVLA.</li>
<li>We compare against similar live UK listings.</li>
<li>We send an offer range subject to inspection.</li>
</ul>
<div class="trust" style="border-top:1px solid var(--border); padding-top:14px; margin-top:14px;">
<div class="pill">No hidden fees</div>
<div class="pill">Fast response</div>
<div class="pill">Local buyer</div>
</div>
</div>
</div>
</main>
<script>
const https://hook.eu2.make.com/14frgilbadfwxawzjwwq0vwxvstmshf4";
const form = document.getElementById("valuationForm");
const regInput = document.getElementById("reg");
const mileageInput = document.getElementById("mileage");
const btn = document.getElementById("submitBtn");
const statusBox = document.getElementById("statusBox");
function showStatus(msg, type) {
statusBox.textContent = msg;
statusBox.classList.add("show");
statusBox.classList.remove("ok", "err");
if (type) statusBox.classList.add(type);
}
// Auto-format reg: uppercase + remove extra spaces
regInput.addEventListener("input", () => {
regInput.value = regInput.value.toUpperCase().replace(/\s+/g, " ").trim();
});
// Allow commas in mileage but send clean number
function cleanMileage(v) {
return v.replace(/[^0-9]/g, "");
}
form.addEventListener("submit", async (e) => {
e.preventDefault();
const reg = regInput.value.replace(/\s/g, "").toUpperCase();
const mileageRaw = mileageInput.value;
const mileage = cleanMileage(mileageRaw);
if (!reg || reg.length < 4) {
showStatus("Please enter a valid UK registration.", "err");
return;
}
if (!mileage || Number(mileage) < 0) {
showStatus("Please enter a valid mileage.", "err");
return;
}
btn.disabled = true;
btn.textContent = "Checking vehicle details…";
showStatus("Submitting…", null);
try {
const res = await fetch(WEBHOOK_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
reg,
mileage: Number(mileage),
source: "valuation_page",
submitted_at: new Date().toISOString()
})
});
if (!res.ok) throw new Error("Webhook error: " + res.status);
btn.textContent = "Submitted!";
showStatus("Thanks — we’re analysing the market and will email your valuation shortly.", "ok");
form.reset();
} catch (err) {
console.error(err);
btn.disabled = false;
btn.textContent = "Get my car valuation";
showStatus("Something went wrong. Please try again in a moment.", "err");
}
});
</script>
</body>
</html>