Mojo Stylesby Mojo Layers

StylesLustre

Style 18 of 19 · salon and after hours

Lustre

The salon chair as a website: a fan of hair-colour swatches that opens on a rivet, a service menu where every service shows how long it takes, a chair board of free times, Gloock headlines with a gloss, and one copper rose on warm cream.

PolishedWarmUnhurried

Best for

  • Hair salons
  • Colourists
  • Bespoke tailors
  • Paint and colour studios
  • Interior designers
Gloock · Plus Jakarta Sans
Lustre template home page: a large high-contrast serif headline ending in copper rose, beside a fan of seven hair-colour swatches from platinum to espresso on a rivet, on warm cream
Lustre template on a phone

STYLE.md ·

How Lustre works. Every rule, written down.

The salon chair as a website: a fan of hair-colour swatches that opens on a rivet, a service menu where every service shows how long it takes, a chair board of stylists' free times, a gift card with a sheen, Gloock headlines and one copper rose on warm cream.

Polished · warm · unhurried

Best for

  • Hair salons and colourists: services with lengths and from-prices, stylists by level, free chairs, gift cards, patch tests and a plain-words policy
  • Anyone who sells by swatch and by appointment: bespoke tailors (Ashby & Cole, a cloth fan), paint and colour studios (Kiln & Co., a paint chip fan), interior designers, florists with seasonal palettes, nail and beauty bars (see Lustre's siblings as they arrive)
  • Audiences: people choosing a look, who want to know how long it takes, what it costs and who'll do it

Less suited to: clinical or regulated services (Remedy, Candour, Cairn); information-first catalogues (Catalogue, Signal); anything loud (Marquee).

Personality and voice

Polished and warm, like a good stylist at the consultation: honest about what's possible, clear about time and price, never pushy.

  • Headlines: "Colour that catches the light." · "Every service, timed." · "Pick a chair, pick a time." · "Give a good hair day."
  • Buttons: "Book a chair" · "Services and prices" · "Continue to booking" · "Send a gift card"
  • Microcopy: "Prices are from: your stylist confirms after a quick consultation." · "Tap a swatch to see it." · "Move or cancel free with a day's notice."

Colour

Token Salon (light) After hours (dark) Role
--paper #f7f1ea #17110e Warm cream; espresso at night
--card #fffcf8 #211915 Cards, forms, the chair board
--well #efe6dc #1c1512 Alternate sections, bar tracks
--line #e0d4c6 #3a2d26 Hairlines
--ink / --ink-2 #2a1d17 / #4e3e35 #f6ece2 / #dccbbd Text
--muted #6e5d52 #b09d8f Labels
--rose #9b3b2e #f0a08f The one accent: buttons, links, the lit phrase, time bars
--champagne #c79a62 #e9c7a0 Glows, the rivet, bar tips (decoration only in Salon mode)
--hair-1…6 platinum #efe3c8, honey #d4ad6d, copper #b5532b, chestnut #7a4127, espresso #3a2418, rose gold #d99aa0 same The swatch fan and stylists' faces

Measured contrast (WCAG): ink on paper 14.6:1 · muted on paper 5.6:1 (on well 5.1:1) · rose on paper 6.1:1 (on well 5.6:1, on its soft fill 5.4:1) · white on rose 6.9:1. After hours: ink 16.0:1 · muted 7.2:1 (on card 6.6:1) · rose 9.0:1 · text on rose 8.7:1 · champagne on card 10.8:1. The top line is cream on espresso in both modes (14:1).

Typography

  • Display: Gloock 400: high-contrast, glossy, editorial.
  • Body and labels: Plus Jakarta Sans 400–600; labels in 600 caps with wide tracking.
Token Size Use
--fs-h1 clamp(46px, 6.4vw, 96px) Page headline
--fs-h2 clamp(34px, 4vw, 58px) Section headline
--fs-h3 22px Card titles
--fs-lead clamp(18px, 1.35vw, 21px) Intro paragraphs
--fs-body 17px Body
--fs-label 11.5px, caps, 0.16em tracking Eyebrows after a thin rose rule (CL·01)

The signature move: the lit phrase is copper rose, and a gloss runs across it every few seconds, like light on a fresh blow-dry.

Layout

  • 1220px wrap, gutter max(20px, 4vw). An espresso top line for this week's note; a sticky header with an underline that sweeps in.
  • Hero: copy left, the swatch fan right on a champagne glow. Then the service menu, the chair board, the gift card, visit facts with the policy, and an espresso closing card.

Shape

  • Soft and polished: --r-s 6px, --r-m 14px, --r-l 26px, pill buttons and time chips.
  • Hair swatches are tall, rounded at the tip, with a tag at the root and fine strands; cloth swatches are squared with a twill; paint chips are flat with a fold.
  • The brand mark is a fan of three swatches.

Motion language

  • The swatch fan opens on its rivet when it comes into view (900ms, a little overshoot, 60ms apart). Hover or focus lifts a swatch; tapping one raises it, rings it in rose and names it in the caption.
  • The gloss runs across the lit phrase every six seconds, and across the gift card.
  • Time bars grow to length (1.1s) when the menu comes into view.
  • The gift card's amount bumps when you change it. Reveals: 18px rise and fade, 700ms. The phone menu unrolls.
  • Motion switch in the footer ([data-motion-toggle], html.calm, remembered as site-motion, default from prefers-reduced-motion). Calm shows the fan open, the bars full and no gloss.
  • After hours switch ([data-theme-toggle]), remembered as site-theme; theme-color follows.

Imagery and illustration

The swatches are the picture. Real salon photography works when it's warm, close and natural (hands, hair, light), never stock smiles. Before-and-after photos only with the client's written permission and no editing.

Signature components

  • .fan[data-fan][data-spread] (.cloth, .chips) › .fan-deck › button.swatch[data-name][data-note] (style="--c: …", .light) › span; .fan-rivet; figcaption.fan-caption › [data-fan-name] + [data-fan-note].
  • .svc-list[data-svc][data-max] › .svc › div > h3 + p, .dur[style="--m:45"] (text + i), .price > small + amount.
  • .chairs[data-chairs][data-out] › .chair[data-stylist][data-level] › .chair-head (.face, b, small) + .times > button[data-time][data-day] (disabled = taken); .chair-out.
  • [data-gift] › .giftcard (.gc-brand, .gc-amt[data-gift-amt], .gc-foot) + button[data-amount].
  • .topline, .card, .facts, .notice, .faq, .licence, .close-card (--close-em).

Multi-page kit

  • Phone menu: .menu-btn[aria-controls] opens .site-menu (links with data-no); Escape, outside click and links close it; Tab stays inside while open.
  • Current page: aria-current="page" (the rose underline stays).
  • Inner pages: .page-head, .crumbs, a .tag and a smaller .h1.
  • Fields: .field, .fields, .field-wide, fieldset.field-set, .check, .form-card, [aria-invalid="true"]; form[data-template].
  • Tiles: .choices › label.choice > input + span > b + small. Segmented control: .seg (button[aria-pressed] with data-filter/data-value, or label > input + text); filters work on [data-tags], including .svc.
  • Gate: [data-gate] with button[data-show="panel-id"].
  • Slider, switch, tables, layout: input.range, .switch[role=switch] (fires switch with detail.on), .table / .table.stack, .r, .grid-2.lean.
  • Events and helpers: swatch (detail.name), chair (detail.stylist, level, day, time); Lustre.refresh(root) wires a chair board you've drawn yourself.

Salons: what we build in

  • Times and prices on every service, with "from" prices and a line saying the stylist confirms after a consultation.
  • Patch tests for colour: hair dyes can cause allergic reactions, so colour bookings offer a free skin test at least 48 hours before (and booking moves the first day out to match).
  • A plain policy: notice to move or cancel, deposits for long appointments, how they're refunded.
  • Gift cards with their terms on the card (when they expire, what for). In Australia, gift cards bought since 1 November 2019 must be redeemable for at least three years, show the expiry date prominently (or say there isn't one), and carry no fees after purchase; Juniper Row prints the real expiry date on the card.

These notes are design guidance, not legal advice.

Do and don't

  • Do show how long a service takes, not just its price.
  • Do show taken times as taken, not hidden.
  • Do keep the fan to five to eight swatches, each with a real name.
  • Don't use champagne for text in Salon mode.
  • Don't promise a result from a photo.
  • Don't hide deposits or fees until checkout.

Accessibility

AA contrast throughout (measured above). Skip link and a 3px focus ring. Each swatch is a real button with aria-pressed and a caption that's announced politely; the fan is a labelled group. Time bars carry their length as text. Chair times are buttons, taken ones disabled and struck through. Forms label every field, mark errors with aria-invalid and say what's missing in an alert. Tables stack on phones. Responsive to 360px; tested with motion on and off, in Salon and After hours.

How to make it yours

Dial Range
Accent Copper rose (default), juniper plum (Juniper Row), midnight navy (Ashby & Cole), terracotta (Kiln & Co.); set --rose, --rose-2, --rose-soft (and --on-rose at night) and --close-em
The fan Hair (default), cloth (.fan.cloth), paint chips (.fan.chips); your own colours and names
The menu Minutes (default) or weeks; data-max sets the longest bar
The board Stylists, tailors, consultants: anyone with a diary
Not negotiable Gloock with the glossy lit phrase, the swatch fan, time bars on the menu, a board of real free times, the gift card with its terms, and the Motion switch

Start with Lustre

Your business, in Lustre. Fixed price, your content.

We set your logo, palette and words within Lustre's rules and build the site. Prices in AUD, no GST added, 50% upfront and 50% on delivery.

Industry templates in Lustre

Pricing and FAQOpen the live templateWant something bespoke instead?

The other eighteen

Dark · WebGL lightAurora

A living light field behind frosted glass.

Light and dark · interactiveSignal.

Precision you can see: a paper page around a dark instrument.

Light and dark · product motionStrata

A night band of moving print-layer lines over calm surfaces.

Light and dark · showroomFolio

A quiet showroom where the work is the hero.

Paper · night runRiso

Spot inks that overprint, sliding into register.

Light and evening · editorialAtelier

Quiet luxury, set like a lookbook.

Colour blocks · kinetic typeMarquee

Kinetic type on full-bleed colour blocks.

Light and dusk · physicsPebble

Soft clay pebbles you can flick, for brands that look after people.

Light and after hours · labelsRemedy

The care of a well-run dispensary: labels that print, packs that count out.

Bench and night shift · evidenceAssay

Corporate science: a chromatogram that runs, a batch that releases.

Day and night freight · logisticsDispatch

Clinical logistics: a parcel that rides its tracker, a label that slaps on.

Day clinic and night shift · telehealthVigil

Telehealth with a lamp left on: the clinic's day as a clock, every free time lit.

Case notes and after hours · disclosureCandour

A clinic that shows its working: a record that writes itself, a ledger that says who pays.

Day and night board · split-flapTableau

The menu board: rows that clatter into place, price tickets and one brass accent.

Reading room and night stacks · filedCatalogue

Information, filed: index cards in a drawer, pulled to the front one at a time.

Day issue and night issue · officialCharter

The official document, made friendly: a record that fills itself in under a foil seal.

Birch and polar night · steadyCairn

Care built stone by stone: a cairn that stacks itself and a year with the visits marked.

Daylight and evening · elegantBlush

The makeup case, opened: a compact that flips up to pans you can tap, and a morning planned backwards.

Custom · from $2,500Yours?

A look nobody else has, designed from scratch.