Colours
Five brand-authorised colours from the IGrow Group Brand Guidelines v1 (Oct 2025). Every other colour in the system is a semantic alias or a documented derivation — never a new raw hex.
Brand paletteBrand guide p.16: use tints when additional chart colours are needed beyond the primary palette. Never use for UI chrome, text, or backgrounds.
Brand red (#B6364B) is for CTAs. These semantic colours are for status, alerts, and validation states — never conflate the two.
Typography
Single typeface: Montserrat, self-hosted at five weights. No external font requests.
Weight specimen — Montserrat--fw-light
Property investment made simple
--fw-regular
Property investment made simple
--fw-medium
Property investment made simple
--fw-semibold
Property investment made simple
--fw-bold
Property investment made simple
| Token | Value | Sample |
|---|---|---|
| --fs-12 | 0.75rem · 12px | The quick brown fox jumps over the lazy dog |
| --fs-14 | 0.875rem · 14px | The quick brown fox jumps over the lazy dog |
| --fs-16 | 1rem · 16px | The quick brown fox jumps over the lazy dog |
| --fs-18 | 1.125rem · 18px | The quick brown fox |
| --fs-20 | 1.25rem · 20px | The quick brown fox |
| --fs-24 | 1.5rem · 24px | The quick brown fox |
| --fs-28 | 1.75rem · 28px | The quick brown |
| --fs-32 | 2rem · 32px | The quick brown |
| --fs-40 | 2.5rem · 40px | Confidence |
| --fs-56 | 3.5rem · 56px | Grow |
| --fs-72 | 4.5rem · 72px | IGrow |
| Token | Range | Value |
|---|---|---|
| --fs-fluid-display | 40 → 72px | clamp(2.5rem, 1.5rem + 4vw, 4.5rem) |
| --fs-fluid-hero | 32 → 56px | clamp(2rem, 1.25rem + 3vw, 3.5rem) |
| --fs-fluid-h1 | 28 → 40px | clamp(1.75rem, 1rem + 2.5vw, 2.5rem) |
| --fs-fluid-h2 | 24 → 32px | clamp(1.5rem, 1rem + 1.8vw, 2rem) |
| --fs-fluid-h3 | 20 → 28px | clamp(1.25rem, 0.9rem + 1.2vw, 1.75rem) |
| --fs-fluid-lead | 17 → 20px | clamp(1.0625rem, 0.95rem + 0.4vw, 1.25rem) |
Spacing
4px base unit. Tokens --space-1 through --space-10. Always use spacing tokens — never arbitrary pixel values.
Elevation
Four shadow levels. Used to signal resting state, hover, and overlay depth. Hover over the cards to see the interactive shadow transition.
Border radii
Four radius tokens. Cards and inputs use --radius-lg. CTAs use --radius-pill. Never mix these with arbitrary values.
Pills, badges
Small components
Cards, inputs, modals
CTAs, tags
Motion
Purposeful, subtle, performant. Animate transform and opacity only — GPU-composited and safe on low-end Android. All tokens reduce automatically with prefers-reduced-motion.
| Token | Value | Use |
|---|---|---|
| --easing-standard | cubic-bezier(0.2, 0.8, 0.2, 1) | Hover, colour/shadow shifts |
| --easing-enter | cubic-bezier(0.0, 0.0, 0.2, 1) | Elements arriving — decelerates to rest |
| --easing-exit | cubic-bezier(0.4, 0.0, 1, 1) | Elements leaving — accelerates out |
| --duration-instant | 50ms | Checkbox, toggle, radio press |
| --duration-fast | 150ms | Hover colour/border shift, focus ring |
| --duration-base | 200ms | Card lift, button press, entrance animations |
| --duration-slow | 250ms | Modal enter, drawer slide, accordion |
Hover each card to see the character difference between the three curves. All move the same distance in the same time — only the easing changes.
--easing-standard
Fast out, smooth settle. General hover & component states.
--easing-enter
Decelerates to rest. Elements arriving on screen — cards, modals, panels.
--easing-exit
Accelerates out. Elements leaving screen — dismissed modals, removed toasts.
Four utility classes in components.css. All use --easing-enter and --duration-base. Pass --ig-delay as an inline property for stagger.
.ig-animate-fade-in
.ig-animate-fade-up
.ig-animate-scale-in
.ig-animate-slide-right
Use --ig-delay as an inline CSS custom property. Increment by 60ms per item; cap at 4–8 items.
Icons
The sprite at system/icons/sprite.svg contains icons from two libraries with distinct purposes. Always use the right library for the context. Full mapping in system/icons/lucide-list.md.
currentColor
Use for everything except brand/social marks
color on the parent, not the SVG
fill="currentColor", CC0
Use only in social link rows — never as UI icons
Brand marks are trademark-protected by their respective companies regardless of the CC0 licence. Use them only to link to the corresponding platform. Never alter their shape, apply brand gradients, or use them as decorative elements.
Bundled brand marks (4)#facebook
■ #0866FF
#instagram
■ #E4405F
#linkedin
■ #0A66C2
#whatsapp
■ #25D366
- Use in footer social link rows only
- Set
color: whiteon the parent (dark bg) - Provide
aria-labelon the<a>tag - Keep marks white —
currentColorinherits - Link to the actual platform profile
- Use brand marks as UI icons (use Lucide instead)
- Apply brand colours to the marks (no coloured logos)
- Alter the shape or add effects
- Use them decoratively without a link
- Mix Lucide social icons with Simple Icons marks