Build a production-quality multi-page website for Vicwest Roofing, a roofing business in Ballarat, VIC, Australia.
## Skip questions
Use Open Design web-prototype workflow. Do not ask question forms. All decisions are pre-supplied in this seed.
## Files in this seed (read in this order)
1. `brief-summary.md` — compact customer brief (executive · services · voice · brand · CTA · personas)
2. `DESIGN-HANDOFF.md` — per-page block plan + header + footer + hard rules
3. `site-architecture.json` — machine-readable per-page block list with copy briefs
4. `facts.json` — locked verifiable facts · use verbatim · do not paraphrase
5. `references/family-DESIGN.md` — visual language (typography · spacing · component patterns)
6. `references/BEST-PRACTICES.md` — AU local-trade conversion standards
7. `references/niche-spec.md` — roofing-specific licensing + forbidden phrases
8. `brand/brand-spec.json` + logo SVGs — colors + logo variants
9. `assets/*.jpg` — curated real photos (use these · do not invent image paths)
## Output
- 10 HTML files matching the page list in site-architecture.json (`index.html · roof-replacements.html · new-roofs.html · gutters.html · builders-commercial.html · projects.html · about.html · service-areas.html · contact.html · careers.html`)
- Each page uses the block list specified for that page in site-architecture.json — DO NOT add or remove blocks
- Block copy comes from the corresponding section of `brief-summary.md` and `facts.json`
- Header is identical across all pages (uses `brand/logo-light.svg`, nav with Services dropdown, primary CTA = phone, secondary CTA = Free Quote)
- Footer is identical across all pages (ABN legal sentence, full SEO suburb list, trust strip, social links)
- Mobile-first responsive; sticky bottom call/quote bar on mobile
- LocalBusiness JSON-LD in `
` (from facts.json)
## Hard rules (audit will fail otherwise · explicit verbatim checks)
CRITICAL · these EXACT strings MUST appear in the rendered HTML or the audit fails:
- Phone: `0403 554 592` · in tel-link form `tel:0403554592` · MUST appear in header AND hero AND footer AND a mid-page CTA
- Email: `info@vicwestroofing.com.au` · MUST appear in footer AND in the contact page · use a `mailto:info@vicwestroofing.com.au` link
- Business name: `Vicwest Roofing` · in header logo area AND footer AND `` of every page
- State licensing authority: `VBA` (Victorian Building Authority) · MUST appear in trust-bar OR about-body OR footer · use exact wording like "Licensed by the VBA" or "VBA registered"
- ABN: `69 622 718 361` · MUST appear in footer legal sentence
- Address: `Shed 3/31 Icon Dr, Delacombe VIC 3356` · MUST appear in footer and contact page
- City: `Ballarat` and state: `VIC` · must appear in every page title meta and at least once in body
Other hard rules:
- ZERO customer-visible internal language (no "demo", "mockup", "placeholder", "audit", "verified", "internal", "Resend", "hi@profitslocal.com")
- Use the 9 real photos in `assets/` — must reference at least one image per page hero / service section
- Phone CTA in hero AND in final-CTA section AND in header AND in footer (visible, tap-to-call)
- Quote form OR explicit form link in hero AND final-CTA section
- Email link (mailto:) MUST be present in footer and contact page
- At least 3 services rendered as scannable cards (use service_list from facts.json verbatim)
- Block accent color ONLY on primary CTAs and active links · never as a section background
- All testimonials must be verbatim from facts.json (do not paraphrase or shorten)
- Do not invent licence numbers, founding year, customer counts, or warranty terms beyond "10-year workmanship warranty"
- LocalBusiness JSON-LD schema in `` of every page · include name / phone / email / address / city / state / postal / `areaServed`
## Family aesthetic (read `references/family-DESIGN.md` for full)
- Family: `industrial-trade-credible` · industrial / trade-credible / no-luxury-real-estate styling
- Brand color: `#0F1115` (near-black) · accent `#C5A572` (muted gold)
- Strong roof geometry imagery · real Australian daylight · no stock-photo handshakes
## Pages overview (full detail in `site-architecture.json`)
- **/home** (9 blocks): hero · trust-bar · services-grid · why-us · proof-strip · gallery · service-areas · reviews · cta-band
- **/roof-replacements** (10 blocks): hero · spec-callout · process · product-spotlight · case-study · comparison-table · warranty-detail · reviews · faq · lead-form
- **/new-roofs** (7 blocks): hero · spec-callout · process · product-spotlight · case-study · faq · lead-form
- **/gutters** (6 blocks): hero · spec-callout · product-spotlight · gallery · faq · lead-form
- **/builders-commercial** (7 blocks): hero · stats-band · spec-callout · safety-insurance · proof-strip · faq · lead-form
- **/projects** (5 blocks): hero · gallery · before-after · case-study · cta-band
- **/about** (7 blocks): hero · about-body · team-grid · stats-band · about-timeline · safety-insurance · cta-band
- **/service-areas** (5 blocks): hero · service-areas · case-study · map-embed · cta-band
- **/contact** (5 blocks): hero · contact-form · process · map-embed · service-areas
- **/careers** (6 blocks): hero · team-grid · why-us · gallery · faq · contact-form
## PRODUCTION-GRADE PAGE STANDARDS (must meet ALL · audit will check)
Each HTML page must be a COMPLETE production page, not a sketch or wireframe:
- **Word count per page:** ≥ 600 words of real customer-facing copy (excluding nav/footer chrome). Hero block alone ≥ 80 words. Each service block ≥ 100 words.
- **Forms:** every page MUST contain at least 1 working `