Build guide · Generative Assets
A fictional tyre and wheel-alignment workshop in Wangara, built as a conversion-first landing page for the tyre trade — the wave's one dark site. One job: a fitted per-corner quote enquiry. One signature: a Sidewall Decoder that turns the cryptic string on your tyre into a size, a shape, and an honest price.
Chalkline sells the two moments a tyre shop earns trust: the chalk mark that says the wheel is balanced, and the alignment printout that proves the car is straight. The audience is a commuter told "you need two soon", a ute on 18s before a long run north, anyone squinting at 205/55R16 wondering what it means and what it costs. So the page teaches the sidewall first and prices it second — step the size until it matches your tyre, watch the wall re-mark itself, and the card prices your rim band in three tiers with fitting, balancing, a new valve and disposal already inside the number.
The art direction is the workshop after close: asphalt-dark ground, the fitter's chalk doing the annotating, wet-road blue in the tread grooves. Motorsport-adjacent numerals, honest suburban prices.
The wave's only dark site, argued from the subject: tyres are black, chalk is what the trade writes with, and blue is the wet road the tread is designed for. Chalk and blue are mark-and-line colours only — body text always uses the headlight-white ink.
Ink/line discipline on the dark ground: muted copy uses #A9AEB6 (8:1) and quiet captions #83888F (5:1); the blue is a stroke colour, with its own lifted text token for links — the accent never carries small type.
205/55R16 — SAIRA CONDENSED
Manrope carries the body copy — sturdy, legible, no drama. Saira Condensed does the display work: tall motorsport numerals, so the size code itself becomes the typography.
textPath.The tyre is a single inline SVG drawn to scale from the size arithmetic: overall diameter = rim inches × 25.4 mm + twice the sidewall height (width × profile). Stepping any control rebuilds the geometry — a three-quarter view built from a sampled silhouette hull (back-left half-ellipse, top and bottom bridges, face-right half-ellipse — sampled polylines, so no SVG arc-flag ambiguity), lateral tread grooves cut dark across the band, two circumferential grooves in wet-road blue, and a five-spoke rim whose radius tracks the rim stepper. A 185/70R15 visibly balloons; a 265/40R19 goes rubber-band. The size marking rides a circular textPath on the sidewall — the size across the top, TUBELESS RADIAL upside-down along the bottom arc, the way a real mould reads — and the chalk balance tick sits by the shoulder.
Every size step bumps an animation token in the handler before the state swap (the W25 stale-closure rule), then the wheel spins ~30° settling over 450 ms, the three chalk underlines re-draw with a dash animation (stroke hidden until drawn length > 0), and the ledger re-prices from the rim-band table. First draw gets the slow entrance (staggered tread bars, 780 ms callouts); every subsequent step redraws snappy at 420 ms. At rest the width callout carries a slow chalk pulse with a 0.55 opacity floor, so the signature is visibly alive at any capture instant. Reduced motion renders everything settled — callouts drawn, no spin, no pulse. State probe: window.__tyreshop exposes size, tier, alignment, the computed figures and a settled flag.
Width and profile change the tyre; the band prices the rim — and the card says exactly that, with brand pricing confirmed on quote. Per corner, fitted (fitting, balancing, new valve and disposal included in every figure):
| Rim band | Budget | Mid-range | Premium | Set of 4, mid + $99 alignment |
|---|---|---|---|---|
| 15″ | $109 | $149 | $199 | $695 |
| 16″ (rest state) | $119 | $165 | $225 | $759 |
| 17″ | $135 | $189 | $259 | $855 |
| 18″ | $155 | $215 | $299 | $959 |
| 19″ | $175 | $245 | $339 | $1,079 |
The demo ships only honest WebPage/CreativeWork schema naming it a demonstration — fictional structured data in a real index is dishonest markup. A live build for a real workshop would ship the precise schema.org subtype with real NAP, geo, hours and a review feed:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TireShop",
"name": "Chalkline Tyre & Alignment",
"description": "Tyres supplied and fitted per corner, wheel balancing
and laser wheel alignment in Wangara, Perth.",
"url": "https://chalklinetyres.com.au",
"telephone": "+61 8 XXXX XXXX",
"address": {
"@type": "PostalAddress",
"streetAddress": "Unit X, XX Example St",
"addressLocality": "Wangara",
"addressRegion": "WA",
"postalCode": "6065",
"addressCountry": "AU"
},
"geo": { "@type": "GeoCoordinates", "latitude": -31.793, "longitude": 115.826 },
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "07:30", "closes": "17:00" },
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday", "opens": "08:00", "closes": "12:30" }
],
"priceRange": "$45–$1,455",
"areaServed": ["Wangara","Joondalup","Wanneroo","Madeley","Darch","Landsdale"],
"review": {
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"author": { "@type": "Person", "name": "Real Customer" },
"reviewBody": "Sourced from the workshop's live Google reviews feed."
}
}
</script>TireShop is schema.org's exact Store subtype for the trade — the vocabulary uses the US spelling, so a careful Australian build keeps the token as-is and writes "tyre" everywhere humans read. Review markup only ever wraps the shop's real, attributable reviews.
pattern hazards.