STYLE.md ·
How Plumbline works. Every rule, written down.
Home builders and renovators, as a website. It has four pieces:
- An estimator. Project type, size, finish level and site costs (a sloping block, demolition, bushfire construction) turned into a likely range, the price per square metre, a band on a scale, and each part listed, with a plain note on provisional sums.
- A payment schedule. The deposit and every stage payment worked out from the estimate, as a bar and a list. Slide the deposit past the legal limit and it turns red and says why; past the insurance threshold, it says the certificate comes before any payment.
- A build timeline. Every stage in weeks as a chart, a start month, and an allowance for weather, adding up to a handover month.
- A warranty clock. Enter the day the work was finished and see how long each statutory warranty has left, as bars and dates.
The type is Sofia Sans Condensed, Sofia Sans and Cousine, on concrete paper with ink, one plan blue and a hi-vis lime for fills. A plumb bob is the mark.
Exact · upfront · dependable
Best for
- Home builders and renovators. It's written to the NSW Home Building Act's rules on deposits, insurance, cooling off, stage payments and warranties, and the examples to Victoria's and Queensland's deposit limits (see "Builders: what we build in").
- Anyone who quotes a project, takes stage payments and builds over weeks:
- bathroom and kitchen renovators (Tile & Timber: estimate by room, Victoria's 5% deposit limit, the job week by week)
- pool builders (Deep End: estimate by pool type, Queensland's 5% limit, dig to swim)
- landscapers, granny flats, decks and pergolas, shopfitters
- Audiences: first home builders working out a budget, renovators comparing quotes, and anyone burnt by a "from" price before.
Less suited to: a one-day trade call-out (Signal), a removalist (Crate), or a developer selling finished apartments.
Personality and voice
Exact and plain-spoken, the site supervisor who writes everything down.
- Headlines: "Built right, to the millimetre." · "Pay as it's built, not before." · "Slab to keys, week by week."
- Buttons: "Estimate my build" · "When you pay" · "Book a site visit"
- Microcopy:
- "$638,000 to $792,000 · $2,900 to $3,600 per m² all in"
- "Over 10%: the deposit can't be more than 10% of the contract price, and anything above it may not be covered by insurance."
- "Major defects · 6 years: 4 years, 6 months left, to 19 Apr 2031"
- Words to avoid: "from $199,990" without the block, "fully insured" without saying what by, "we'll sort it out later" about variations, and "start next week, pay today".
Colour
| Token | Daylight (light) | Site lights (dark) | Role |
|---|---|---|---|
--paper |
#f0efeb |
#101215 |
Page |
--card |
#ffffff |
#181b20 |
Estimator, payments, timeline, warranty |
--well |
#e6e4de |
#13161a |
Alternate sections |
--line |
#d3d0c8 |
#2b3038 |
Hairlines and grid |
--ink / --ink-2 |
#16191d / #363b42 |
#eef0f2 / #cdd2d8 |
Text |
--muted |
#5a6068 |
#9aa1aa |
Meta |
--plan |
#1e4f9c |
#9dbcf5 |
The one accent: buttons, links, dimension lines, the timeline, the warranty clock |
--vis |
#c8e24a |
#d4ec5c |
Fills only: the plumb bob, the estimate band, the deposit, weather days; text on it is ink |
--vis-ink |
#4d5e05 |
#d4ec5c |
Hi-vis as text |
--ok |
#2a6b3c |
#7fd39a |
Covered and done |
--alert |
#b3261e |
#ff9a90 |
Invalid fields and a deposit over the limit |
Measured contrast (WCAG).
- Daylight:
- ink on paper 15.3:1
- muted on paper 5.5:1 (5.0:1 on well)
- plan on paper 6.9:1 (6.2:1 on well, 6.5:1 on its soft fill, 7.9:1 on card), white on plan 7.9:1
- ink on hi-vis 12.1:1; hi-vis text 6.3:1 (7.2:1 on card)
- ok 5.6:1, alert 5.7:1
- Site lights:
- ink 16.4:1
- muted 7.2:1 (6.6:1 on card)
- plan 9.8:1, text on plan 9.0:1, plan on its soft fill 8.2:1
- hi-vis 14.3:1, ink on hi-vis 13.4:1
- Closing card: text 14.8:1, hi-vis em 11.6:1, ink on its hi-vis button 12.1:1.
- Example dials: terracotta (Tile & Timber), aqua (Deep End) and sandstone bronze (Keystone) all meet AA, light and dark, and so does each closing card.
Typography
- Display: Sofia Sans Condensed, 600–900, uppercase. Headlines, totals, the handover month.
- Body: Sofia Sans, 400–800. Reading, forms, buttons.
- Mono: Cousine, 400 and 700. Sizes, rates, dollars, dates.
| Token | Size | Use |
|---|---|---|
--fs-h1 |
clamp(50px, 7vw, 108px) | Page headline, uppercase |
--fs-h2 |
clamp(36px, 4.4vw, 64px) | Section headline, uppercase |
--fs-h3 |
22px | Card titles |
--fs-lead |
clamp(17.5px, 1.35vw, 20.5px) | Intro paragraphs |
--fs-body |
17px | Body |
The signature move: the lit words turn plan blue and a dimension line is drawn under them, ticked at both ends like a drawing.
Layout
- Frame: a 1200px wrap with a
max(20px, 4vw)gutter. An ink top line with a hi-vis label for the licence; a sticky header with the plumb bob; a blueprint grid fading in behind the hero. - Hero: copy on the left; the estimator on the right.
- Then: the payment schedule beside the rules that protect you; the build timeline; the warranty clock beside your cover; questions; and a blueprint-navy closing card with a plumb bob that swings to rest.
Shape
- Crisp:
--r-s3px,--r-m6px,--r-l10px. - Grids and dimension lines: blueprint grids behind the hero, page heads and closing card; the timeline's track is ruled in months.
- The mark: a plumb bob on its line. Page heads carry a hi-vis set square.
Motion language
- Estimator: the range slides in and the band moves along the scale.
- Payments: the bar's segments resize as the deposit changes.
- Timeline: bars slide to their new weeks; the handover month slides in.
- Warranty: the bars fill to how much of each warranty has gone.
- Elsewhere: the dimension line draws under the headline, the plumb bob swings to rest, sections reveal with a 14px rise over 650ms, and the phone menu drops in.
- Motion switch in the footer (
[data-motion-toggle],html.calm, remembered assite-motion, with the default fromprefers-reduced-motion). Calm stops the line, the swing and every slide. - Site lights switch (
[data-theme-toggle]), remembered assite-theme;theme-colorfollows.
Imagery and illustration
Your own builds at every stage (slab, frame, lock-up, handover) with the clients' permission, and your own team on site in their gear. The template draws grids and dimension lines so nothing is borrowed. No display-home renders passed off as finished builds, and no invented reviews.
Signature components
- Estimator:
.estimate[data-estimate]containingscript[data-est-data](typesas key tolabel,min,max,step,defandratesper finish as low and high per square metre;unit;scale),button[data-type],input[data-size]with[data-size-out],fieldset.finishesradios,input[data-extra](data-lo,data-hi, optionaldata-for-types),[data-est-range],[data-est-per],.est-band iand[data-est-lines]. - Payment schedule:
.payments[data-payments]withdata-for(the estimator) andscript[data-pay-data](stagesas label, share and note;depositMax;insureFrom;price; optionaloverTextanddepositNote), containinginput[data-deposit],[data-pay-price],[data-pay-bar],[data-pay-rows],[data-pay-warn]and[data-pay-insure]. - Build timeline:
.buildline[data-buildline]withscript[data-bl-data](stagesas label and weeks;startIn), containingselect[data-start](filled with the next 12 months),input[data-weather],[data-bl-rows],[data-bl-finish]and[data-bl-sub]. - Warranty clock:
.warranty[data-warranty]withscript[data-wt-data](periodsas label, years and note), containinginput[type=date][data-done]and[data-wt-rows]. - Supporting pieces:
.plan-pair,.card,.facts(--ncolumns, or.stack),.notice,.side-box,.checks,.faq,.close-card(--close-bg,--close-em).
Multi-page kit
- Phone menu:
.menu-btn[aria-controls]opens.site-menu. Escape, an outside click or choosing a link closes it, and Tab stays inside while it's open. - Current page:
aria-current="page", shown as a plan-soft pill. - Inner pages:
.page-head(a blueprint grid and a set square),.crumbs, a.tagand a smaller.h1. - Fields:
.field,.fields,.field-wide,fieldset.field-set,.check,.form-card,[aria-invalid="true"];form[data-template]. - Tiles, segmented control, gate, slider, switch, tables:
.choices,.seg,[data-gate],input.range,.switch[role=switch],.table. - Events:
estimate(low, high, mid, type, size, finish),payments(deposit, ok, price),timeline(weeks, finish),warranty(done). - Helper:
Plumbline.refresh(root), andPlumbline.last, the latest detail of each event, for scripts that load afterwards.
Builders: what we build in
We checked these for Australian builders in October 2026:
- Deposits. In NSW the deposit can't be more than 10% of the contract price, and amounts above it may not be recoverable under home building compensation cover. In Victoria and Queensland it's 5% on work of $20,000 or more (10% below that in Victoria; in Queensland, 10% from $3,301 to $19,999 and 20% up to $3,300). The payment schedule enforces whichever limit you set and says why.
- Insurance before money. NSW home building compensation cover applies to contracts of $20,000 or more, and the builder can't ask for payment until it's in place and the certificate is given. In Victoria, domestic building insurance and its certificate come before any money for work over $16,000.
- Payments by stage. Progress payments should match the work done: stages like base, frame, lock-up and fixing, each inspected, never ahead. The schedule is built from stages, not dates.
- Cooling off, variations and provisional sums. NSW contracts over $20,000 have a five-business-day cooling-off period; variations are in writing and priced before work starts; provisional sums are listed with their allowance.
- Statutory warranties. In NSW, 6 years for major defects and 2 years for everything else, from completion. The warranty clock counts them.
- No card surcharges. Surcharging on eftpos, Mastercard and Visa ended on 1 October 2026.
These notes are design guidance, not legal advice.
Do and don't
- Do give a range with what's in it, not a "from" price.
- Do tie every payment to a finished, inspected stage.
- Do put the licence number and insurance on every page.
- Don't take a deposit over the limit, or any money before the insurance certificate.
- Don't use display-home photos as if they were finished builds.
- Don't put text on hi-vis in anything but ink.
Accessibility
- AA contrast throughout (measured above), a skip link and a 3px focus ring.
- Estimator: project types are a segmented control, size a labelled slider with its value, finishes a radio group with descriptions, extras labelled checkboxes; the range is announced.
- Payments: a labelled deposit slider; stages as a list with shares and amounts in words and numbers; the over-limit warning is a status message.
- Timeline: a labelled start month and weather slider; stages and weeks as a list beside the bars; the handover month is announced.
- Warranty: a labelled date field; each warranty's time left in words, beside its bar.
- Forms: labelled fields, errors listed in an alert, linked to and marked on each field.
- Testing: responsive to 360px, and tested with motion on and off, in Daylight and Site lights.
How to make it yours
| Dial | Range |
|---|---|
| Accent | Plan blue (default), terracotta (Tile & Timber), aqua (Deep End), sandstone bronze (Keystone). Set --plan, --plan-2, --plan-soft, --focus (plus --on-plan at night), --close-bg and --close-em. |
| Estimator | Your project types, rates per square metre by finish, and the site costs you see most. |
| Payments | Your stages and shares, and your state's deposit limit and insurance threshold. |
| Timeline | Your stage durations and the weather your area usually loses. |
| Warranty | Your state's statutory warranty periods. |
| Not negotiable | Ranges not "from" prices, the deposit limit, insurance before money, payments by stage, the licence number, no card surcharges, and the Motion switch. |



