Design System · v1.0 · April 2026

A coastal calm,
built for booking.

Rent Your Holiday Home is a UK platform for listing and booking holiday cottages. This system gives the product its own quiet voice — modern, premium, distinctly British — and a complete component library to build on. Soft seaside blues, warm honeyed sun, and a calm, grown-up grid.

Audience
Web · iOS · Android
Density
Comfortable · Editorial
Tone
Trusted · Relaxed · Aspirational
Status
Production-ready
01 · Foundations

Principles

Five rules we hold ourselves to. They sit above any individual screen, and every component below should be measurable against them.

01

Property first, chrome second.

Imagery and place names lead. Controls and meta retreat into neutrals so the home is what catches the eye.

02

Calm by default, warm on demand.

Blues carry the structural weight. Yellow is reserved for moments that should feel inviting — saving, booking, success.

03

Trust shows up quietly.

Quality and ranking signals are subtle marks, never loud badges. We never shout at the user about value.

04

Editorial, not corporate.

Property descriptions read like a good travel column. Headlines have rhythm; spacing has air. Copy is plain English.

05

One system, two surfaces.

Tokens, type and components are tuned to scale from a desktop search grid to a 360px phone — same vocabulary, different cadence.

06

Accessible without apology.

WCAG AA on all functional pairs. Hit targets ≥ 44 px on mobile. Focus rings visible — they belong on every interactive surface.

02 · Foundations

Colour

Two core hues, two supporting hues, a warm neutral spine, and a measured set of semantics. The full palette is built from oklch-stable ramps so each step has even visual weight. Yellow stays a reserved accent — never a wallpaper.

Primary · Coastal Blue

50#F2F7F9
100#E4EEF2
200#C9DCE4
300#A2C5D2
400#6FA9BD
500#3A8FA8
600#2C8198
700#1F6A80
800#134E60
900#0C3B49
950#072530

Where: primary buttons (700/800), nav, links, focus rings, headlines on light surfaces. Use 500 as the brand mid for marketing surfaces; 100/200 as quiet card and chip backgrounds. Avoid 300 and 400 for body text — they can drift below AA on warm sand.

Brand Accent · Honeyed Sun

50#FCF6E8
100#F9ECD4
200#F4DEB9
300#EDCD92
400#E5BB6A
500#D9A441
600#C49339
700#A98030
800#8A6622
900#6E4F18
950#4A350C

Where: reserved accent. Featured CTA on a hero (500), price-rise highlights, ‘saved to wishlist’ confirmations, seasonal/quality marks (100 background + 800 text). Never as a body-text colour, and never as a flat fill across a screen.

Supporting · Sage & Terracotta

sage 100#E5EBE2
sage 300#BFCBB9
sage 500#8A9E83
sage 700#5C6F58
terra 100#F2DFD2
terra 300#DDA38A
terra 500#B86A48
terra 700#8B4A2F

Sage is the quiet supporting hue — coastal grass, calm map fills, ‘pet friendly’ amenity tags. Terracotta is the warmer balancer — illustration accents, host-side surfaces, regional tags for Cornwall/Devon copy. Both are restricted to one or two appearances per screen.

Neutrals · Sand & Ink

paper#FFFFFF
sand 50#FBF7EE
sand 100#F4EFE4
sand 200#ECE5D5
sand 300#DDD3BD
ink 300#A39C8E
ink 500#6E6857
ink 700#3D3A33
ink 900#1B1A16

Sand 50 is the page canvas — warmer than off-white, never beige. Sand 100/200 separate cards from page; sand 300 is the standard hairline. Ink 700 is body copy (never pure black); ink 900 is reserved for headlines and emphasis. Ink 300 is the quietest readable text — tertiary meta only.

Semantic

Success

#3F8A61 · #DCEBE2

Booking confirmed, request approved, listing published. Pair 700 ink on 100 surface.
Error

#B14545 · #F2DADA

Failed payment, validation, blocked dates. Use sparingly — always with action and remedy.
Warning

#C28A2C · #F6E6C5

Hold expiring, pending moderation, near-capacity. Distinct from yellow-accent — duller, ochre.
Info

#3A7AA0 · #DCE9F1

Tips, neutral system messages, host announcements. Drawn from the blue family but desaturated.

Accessibility & contrast

All combinations below are checked against WCAG 2.2 AA on the warm-sand canvas. Minimum 4.5:1 for body, 3:1 for ≥ 18px or bold ≥ 14px.

Foreground
Background
Ratio
AA
Ink 900 on Sand 50
#1B1A16 / #FBF7EE
16.4 : 1
PASS
Ink 700 on Sand 50
#3D3A33 / #FBF7EE
10.7 : 1
PASS
Blue 700 on Sand 50
#1F6A80 / #FBF7EE
5.6 : 1
PASS
White on Blue 700
#FFFFFF / #1F6A80
6.0 : 1
PASS
Ink 900 on Sun 500
#1B1A16 / #D9A441
9.4 : 1
PASS
White on Sun 500
#FFFFFF / #D9A441
2.4 : 1
FAIL · use Ink 900 on yellow surfaces instead
Ink 300 on Sand 50
#A39C8E / #FBF7EE
2.8 : 1
DECORATIVE only — never body text
03 · Foundations

Typography

A two-family pairing: Fraunces for editorial moments — listing headlines, property names, marketing — and Inter as the workhorse for UI, forms, dashboards. Fraunces gives us the gentle British warmth without going twee; Inter keeps everything else honest.

Display · Editorial
Aa Bb

Fraunces

Variable · 300 / 400 / 500 / 600 · -3% tracking on display

A modern soft-contrast serif with optical-size tuning. Used for property titles, section headlines, marketing pages, review attributions. Never set below 18px.

A B C D E a b c d e & 1 2 3 — “coastal”
UI · Workhorse
Aa Bb

Inter

Variable · 400 / 500 / 600 · -1% tracking under 18px

Our default for body, forms, navigation, badges, dashboards and all functional UI. High legibility at small sizes; tabular numerals for prices and dates.

A B C D E a b c d e & 1 2 3 — booking

Type scale (web · 16px base)

Display 2XL
Coastal escapes, by the week.
72 / 76 · -2.5%
Fraunces 400
Marketing hero only
Display XL
A whitewashed bothy in Skye.
56 / 60 · -2.5%
Fraunces 400
Property page hero
Display L
Wishlist · Suffolk & Norfolk
44 / 48 · -2%
Fraunces 500
Section heads
Heading 1
Three-bedroom barn, sea views
36 / 42 · -1.5%
Fraunces 500
Listing card hero, modal titles
Heading 2
What this place offers
28 / 34 · -1%
Fraunces 500
Page sub-sections
Heading 3
House rules & cancellation
22 / 30 · -0.5%
Inter 600
Card titles, form sections
Heading 4
Cancellation policy
18 / 26 · 0%
Inter 600
List headers, dashboard tiles
Body L
Tucked into the hills above the harbour, this stone cottage sleeps four.
17 / 28 · 0%
Inter 400
Editorial body, descriptions
Body
Available 12–19 May · 4 guests · £180 per night
15 / 24 · 0%
Inter 400
Default body, forms
Body S
Hosted by Margaret · joined 2019 · responds within 2 hrs
13 / 20 · 0%
Inter 400
Meta, secondary copy
Caption
Last updated 22 March
12 / 16 · +1%
Inter 500
Captions, footnotes
Overline
Featured this week
11 / 14 · +12%
Inter 600
Eyebrow labels, sectioning

Mobile adjustments

  • Display steps drop ~20% on viewports under 720 px (e.g. Display L 44 → 36, H1 36 → 28).
  • Body stays 15 px — never smaller, even on mobile. iOS/Android natural reading minimum.
  • Line lengths capped at 64ch for editorial body, 36ch for cards.
  • Use font-feature-settings: "ss01", "tnum" on prices to keep digits aligned.
04 · Foundations

Spacing & Radius

A 4 px base scale. Eight named steps for layout; the rest by ratio. Radius reads balanced — soft enough to feel coastal, sharp enough to feel grown-up.

Spacing scale

space-1
4 px
space-2
8 px
space-3
12 px
space-4
16 px
space-5
20 px
space-6
24 px
space-7
32 px
space-8
40 px
space-9
56 px
space-10
72 px

Radii

radius-xs · 4 px
tags
radius-sm · 6 px
small btn
radius-md · 10 px
inputs, btn
radius-lg · 14 px
cards, modal
radius-xl · 20 px
heros, panels
radius-pill
filters, chips

Grid & layout

  • Web: 12-col grid · 24 px gutters · 1280 px max content
  • Tablet: 8-col · 20 px gutters
  • Mobile: 4-col · 16 px gutters · 16 px page padding
  • Property listing cards are always 3-up at ≥ 1080 px, 2-up at ≥ 720 px, 1-up below.
  • Vertical rhythm between sections: space-9 on web, space-7 on mobile.
  • Touch targets: minimum 44 × 44 px, with 8 px clear of any neighbour.
05 · Foundations

Elevation

Three soft levels. Shadows are warm-tinted (slight ink-brown undertone) so they feel at home on sand, not the cool grey of a generic system.

shadow-1 · default cards, hairline elevation · 0 1px 3px rgba(27,26,22,.04)
shadow-2 · hover & popovers · 0 6px 14px rgba(27,26,22,.06)
shadow-3 · modals, sheets, command palettes
focus ring · 0 0 0 3px rgba(58,143,168,.28)
06 · Components

Buttons

Three intent levels — Primary, Secondary, Ghost — plus a reserved Sun variant for the brand’s warmest moments. Three sizes. Always pair with a clear verb.

Primary uses Blue 700 — calmer than Blue 500 to reduce visual stress. Sun is reserved for one moment per screen, max — typically the hero CTA on marketing surfaces or the “Book” action on a confirmation step.

Sizes

Mobile defaults to large (48 px) to meet 44 px hit-target with vertical padding. Icon-only buttons must always carry an aria-label.

07 · Components

Inputs & Filters

Forms feel calm, generous, and forgiving. Borders soften to blue on focus rather than darkening. The amenities filter is the workhorse of search — pills first, dropdowns second.

Search by region, town, or postcode.
That doesn’t look like a complete email.

Search bar (composite)

The composite search bar collapses to a single tappable “Where to?” pill on mobile, expanding into a full-screen sheet on tap.

Amenity filter pills

Active filter inverts to ink. Counts use tabular numerals so they never jitter on update.

08 · Components

Tags & Badges

Tags carry the small, persistent metadata of a listing — amenities, region, status. Quality marks read as a quiet honour, not a sales banner.

Amenity & region tags

Sea view Pet friendly Hot tub Log fire 3 bedrooms Cornwall · Padstow Last few dates · May

Quality & trust signals

Top rated · 4.92 Coastal collection Verified host Slow stay · 7+ nights

Quality signals never shout. The yellow gradient is gentle; copy is descriptive (“Top rated”, “Verified host”) rather than promotional (“BEST DEAL!”).

Status badges

Booking confirmed Hold expires in 2 hr Payment failed Awaiting host Draft listing
09 · Components

Property cards

The single most important component in the system. Three variants: Standard with price, Quality-marked with a subtle trust stamp, and Price hidden for partnered or enquiry-only listings — handled with grace, never as a void.

[ photo · Whitewash Cottage exterior ]

Whitewash Cottage

4.91

St Ives, Cornwall

4 guests· 2 beds· Sea view
From
£186 / night
Available May
Coastal Collection [ photo · The Old Boathouse, evening ]

The Old Boathouse

4.96

Salcombe, Devon

6 guests· 3 beds· Hot tub
From
£245 / night
Few dates left
[ photo · Skye bothy at dusk ]

Glen Brittle Bothy

4.88

Isle of Skye, Highlands

2 guests· 1 bed· Off-grid
Enquire for rates
Direct booking

Behaviour notes

  • Price hidden state replaces the price block with a calm “Enquire for rates” chip — same vertical weight, no empty space, never a strikethrough.
  • Wishlist heart sits top-right with a 92% white pill behind it for legibility on dark imagery. Saved state fills the heart in error-500 (it’s the warmest red we permit).
  • Quality stamps sit top-left when present and never coexist with a discount or “book now” banner.
  • Card hover: 4 px lift + shadow-2 on web; tap-down at 0.98 scale on mobile.
  • Image area uses a 4:3 aspect ratio. Carousels paginate with dots inside the image, anchored bottom-centre.
10 · Components

Wishlist interaction

Saving is the single most-used delight in the product. The interaction is fast, forgiving, and explicit — but never noisy. One tap, one confirmation, one undo.

default
hover
saved
Saved to ‘Cornwall, May’

Your wishlist now has 7 places. View · Undo

On save, a toast confirms the wishlist name and offers a one-tap Undo. Wishlists are titled by default with the destination + month — a quiet British touch (“Cornwall, May”).

11 · Components

Reviews

Reviews are editorial — generous line-height, real names, full stops. Three moderation states are visible to admins: approved, pending, and flagged. Guests only ever see approved.

EH
Eleanor H.
Stayed 3 nights · April 2026 · Whitewash Cottage

The cottage smells of the sea and old books. Margaret left a tin of shortbread and a hand-drawn map of the best coastal walks — we did three of them. Beds are firm in the good way; the kitchen had every pan you could want. We’ll be back in autumn for the storm-watching.

JR
James R.
Submitted 22 April · awaiting moderation
Pending

Lovely spot, easy parking, lots of room for a young family. One small thing — the stair gate was missing on arrival but the host sent one round within the hour…

AT
Anonymous traveller
Flagged by host · 2 community reports
Flagged · under review
Reason: contains contact details outside the platform

[ Review body hidden from public view pending moderation. Admins can expand to read the full text and decide on action. ]

13 · Components

Modals & Alerts

Modals are short. Alerts are useful. Both follow the same rule: lead with what just happened or what we need; end with a clear next action.

Request sent

We’ll let you know as soon as Margaret replies.

Heads up

This host accepts dogs but not cats. Add pet details before sending.

Hold expires in 2 hours

Confirm payment to keep your dates secured.

Payment couldn’t be completed

Your bank declined the charge. Try another card or contact your issuer.

14 · Practice

Mobile & touch

The mobile experience isn’t a smaller web page — it’s the same system tuned for thumbs.

Touch targets

  • Minimum 44 × 44 px (iOS HIG · Android Material).
  • Wishlist heart sits in a 34 px chip with 6 px clear from card edge — total 46 px reach zone.
  • Tab bar items: 56 px tall, with 6 px label gap.
  • Form inputs: 48 px tall on mobile, 44 px on web.

Spacing reflow

  • Section gaps: space-9space-7.
  • Page padding: 24 px → 16 px (with safe-area inset).
  • Cards span 100% with a 16 px outer gutter.
  • Headlines drop one step (Display L → H1).

Native conventions

  • iOS uses SF rounded numerals for prices via tnum + system fallback.
  • Bottom sheet modals on mobile (drag-to-dismiss) replace centred dialogs.
  • Pull-to-refresh on Explore and Wishlists, never on Trips.
  • Haptic light tap on save / unsave; medium on booking confirm.
15 · Practice

UX direction

Some product decisions don’t belong in a token file. These are the ones that quietly define the experience.

A

Hierarchy is image > place > price.

On any listing surface — search results, wishlist, property page — the photo leads, the place name is second, the rate is last. Never reverse this.

B

One CTA per surface.

A property page has one primary action: Request to book. Secondary verbs (save, share, contact) sit in ghost or secondary styles. Never two primary buttons on screen.

C

Minimal friction to save.

Wishlist save is one tap, no auth wall mid-browse. We capture identity later, when the user is committed (request to book or contact host).

D

Empty states are quiet, not cute.

No mascots. A short editorial line (“No saved places yet — try the coast.”) and a single CTA back to Explore.

E

British plain English.

“Request to book”, not “Reserve now”. “Holiday home”, not “rental property”. Dates are 12 May, not May 12. Currency is £, never USD by accident.

F

Trust signals are subtle, never loud.

Verified host, top-rated, coastal collection — all set in soft yellow chips. Never red urgency banners (“Only 1 left!”). The premium feel collapses the moment we panic-sell.