Foundation
Colours & Accent
White is the dominant background. Forest green and lime create emphasis and rhythm - not wallpaper. If in doubt, use white. Reach for colour only when you need to signal a transition or draw deliberate attention.
Core Palette
White
White
#FFFFFF
--color-white / bg-background
Primary page background. Default for all content sections.
Off-white
Off-white
#EEF2E3
--color-off-white / bg-secondary
Subtle warm tint. Differentiates adjacent light sections without adding weight.
Lime
Lime
#C8F169
--color-lime / bg-primary
Brand accent. CTAs, hover states, active indicators, logo container, eyebrows on dark.
Lime soft
Lime soft
#EBF8C2
--color-lime-soft / bg-accent
Lightest green tint. Card fills, highlight bands, tag backgrounds, quote cards.
Forest
Forest
#043F2E
--color-forest / bg-forest
Deep green. Hero, testimonial, footer, and sidebar. Anchoring contrast.
Forest mid
Forest mid
#0A5C3D
--color-forest-mid
Mid-tone forest. Card backgrounds inside dark sections, bento wrappers.
Primary heading text
Ink
#043F2E
--color-ink / text-foreground
Headings and primary body text on light backgrounds.
Secondary label text
Ink muted
#4A7A62
--color-ink-muted / text-muted-foreground
Secondary text: labels, captions, metadata, eyebrows on light sections.
1px border
Border
#D4E8C2
--color-border / border-border
Subtle borders on cards, inputs, and dividers on light backgrounds.
Status Colours
Danger, warning, and info sit outside the brand greens but share their warmth. Terracotta red, amber, and muted steel blue echo the organic palette without competing with lime. Use soft tints for backgrounds and the saturated tokens for text, borders, and icons.
Danger
Danger
#C44B47
--color-danger / text-danger
Errors, destructive actions, and required field markers. Earthy terracotta red that complements the greens.
Danger soft
Danger soft
#F5E0DE
--color-danger-soft / bg-danger-soft
Alert backgrounds, error banners, and validation callouts. Pair with text-danger on badges and compact labels.
Warning
Warning
#A8651A
--color-warning / text-warning
Caution states, pending actions, and non-blocking alerts. Warm amber, distinct from lime.
Warning soft
Warning soft
#F8ECDC
--color-warning-soft / bg-warning-soft
Warning bands and subtle highlights. Pair with text-warning on badges and compact labels.
Info
Info
#2D6A9F
--color-info / text-info
Informational states, neutral updates, and notification headings. Muted steel blue, distinct from brand greens.
Info soft
Info soft
#E0ECF5
--color-info-soft / bg-info-soft
Info banners, notification backgrounds, and callouts. Pair with text-info on badges and compact labels.
Semantic Tokens
CSS custom properties in globals.css map brand colours to shadcn/ui semantic roles. Use Tailwind utilities where possible.
--background--foreground--primary--primary-foreground--secondary--muted--muted-foreground--accent--accent-foreground--danger--danger-soft--warning--warning-soft--info--info-soft--destructive--border--ringSection Backgrounds
Four section types create page rhythm. Dark and accent sections appear at most 2–3 times per page. Never place two dark sections back-to-back.
Default section
Everything in one place
Body copy uses muted foreground on light sections and white at 70% opacity on dark.
Subtle section
Everything in one place
Body copy uses muted foreground on light sections and white at 70% opacity on dark.
Accent section
Everything in one place
Body copy uses muted foreground on light sections and white at 70% opacity on dark.
Dark section
Everything in one place
Body copy uses muted foreground on light sections and white at 70% opacity on dark.
Foreground Colours
Text colour always follows the background. Ink on light, white on dark. Lime is reserved for accents: eyebrows, links, and syntax, not body copy.
text-foreground / text-ink#043F2E
Headings, primary labels, and interactive text on white, off-white, and lime-soft backgrounds.
text-ink-muted / text-muted-foreground#4A7A62
Body copy, captions, metadata, and eyebrows on light sections.
text-white#FFFFFF
Headings and body on forest and forest-mid backgrounds. Never use ink on dark sections.
text-lime#C8F169
Eyebrow labels, links, and emphasis on dark sections. Code syntax highlights.
text-primary-foreground#043F2E
Text on lime-filled buttons and primary actions. Never white text on lime.
text-danger / text-destructive#C44B47
Error messages, destructive labels, and required asterisks on light backgrounds.
text-warning#A8651A
Caution labels and warning icons on light backgrounds. Use danger-soft or warning-soft fills behind copy.
text-info#2D6A9F
Informational labels and notification headings on light backgrounds. Use info-soft fills behind copy.
Accent Usage
Primary CTA: lime fill, ink text. One per section maximum.
Inline links use lime underlines on light backgrounds.
Focus ring uses lime via --ring.
What owners love
Eyebrow on dark sections
Status Usage
Levy payment failed
Soft danger background with ink body copy and terracotta heading.
AGM date not confirmed
Soft warning background with amber heading and ink-muted body for longer copy.
Owner portal update available
Soft info background with steel blue heading and ink-muted body for longer copy.
Required fields use required danger text. Pending items can use warning inline.
Cards & Surfaces
Bordered
Default card
On default or off-white sections. Subtle border, optional light shadow.
Accent
Lime-soft fill
Featured content, quote cards, highlight panels. No border.
Dark
Forest-mid fill
Inside dark sections and bento grids. White text, lime eyebrows.
Page Cadence
A typical landing page alternates light and dark to create rhythm without overwhelming colour. Dark sections anchor; accent bands energise.
Rules
- White is the default. Coloured sections are deliberate moments, not the baseline.
- Never use white text on lime buttons: always ink on lime.
- Never use ink text on forest backgrounds: always white or white at reduced opacity.
- Eyebrows: ink-muted on light sections, lime on dark sections.
- Borders on light surfaces use the green-tinted border token, not grey.
- No more than three dark sections per page. Never two dark sections in a row.
- Logo: forest letterforms on lime container (light bg), forest container with white letterforms (primary bg), or lime letterforms on forest container (dark bg). Container rotated 15°; letterforms upright.
- Danger, warning, and info are for status only. Never use them as section backgrounds or brand accents.
- Status backgrounds: danger-soft, warning-soft, or info-soft with saturated text (text-danger, text-warning, or text-info) on badges and compact labels. Longer callout body copy may use ink-muted.