Style Guide Basics
Basics
Breakpoints
Our responsive breakpoints help you target mobile, tablet, and desktop layouts.
| Device | Variable | Value | Example Use |
|---|---|---|---|
| π± Mobile | --bp-sm |
480px | @media (min-width: var(--bp-sm)) |
| π± Tablet | --bp-md |
768px | @media (min-width: var(--bp-md)) |
| π₯οΈ Desktop | --bp-lg |
1024px | @media (min-width: var(--bp-lg)) |
| π Nav | --bp-nav |
700px | @media (max-width: var(--bp-nav)) |
| π Table | --bp-table |
600px | @media (max-width: var(--bp-table)) |
Usage Example:
@media (min-width: var(--bp-md)) {
.card {
display: flex;
gap: 1.5rem;
}
}
Colour palette
Our brand palette with CSS variables, usage notes, and minimum contrast ratios.
Primary Brand
These colours are central to our brand identity.
| Swatch | Usage | CSS Variable | Hex |
|---|---|---|---|
| Primary colour, used for text and main elements of diagrams requiring colour | var(--color-primary) |
#204312 |
|
| Secondary colour, for accents and links | var(--color-secondary) |
#BDC7B9 |
|
| Tertiary colour, for supporting accents and diagrams | var(--color-tertiary) |
#607956 |
|
| Accent colour, used for highlights | var(--color-accent) |
#F4A261 |
|
| Background colour, used for page backgrounds | var(--color-background) |
#FBFBFB |
Link colours
| Swatch | Usage | CSS Variable | Hex |
|---|---|---|---|
| Link colour (default, unvisited) | var(--color-link) |
#175076 |
|
| Link hover colour | var(--color-link-hover) |
#1565a5 |
|
| Link clicked/active colour | var(--color-link-clicked) |
#4b3b6b |
Neutral Greys (for tables, nav etc)
| Swatch | Usage | CSS Variable | Hex |
|---|---|---|---|
| Grey 100 | var(--color-grey-100) |
#f9f9f9 |
|
| Grey 500 | var(--color-grey-500) |
#666666 |
|
| Grey 900 | var(--color-grey-900) |
#222222 |
|
| Border colour for tables and other UI elements | var(--color-grey-border) |
#ddd |
|
| Light grey for subtle dividers and backgrounds | var(--color-grey-light) |
#eee |
|
| Colour for separators, like in breadcrumbs | var(--color-grey-separator) |
#aaa |
Accessibility Notes
- Primary on Background (#204312 on #FBFBFB): Contrast ratio of 12.4:1 β exceeds both WCAG AA and AAA for all text sizes.
- Secondary on Background (#BDC7B9 on #FBFBFB): Contrast ratio of 4.54:1 β meets WCAG AA for normal text but not AAA. Suitable for most UI text and accents.
- Tertiary on Background (#607956 on #FBFBFB): Contrast ratio of 5.26:1 β meets WCAG AA for normal text and AAA for large text. Good for headings or secondary elements.
- Accent on Background (#F4A261 on #FBFBFB): Contrast ratio of 2.61:1 β fails WCAG AA. Only use for visual accents or large display text.
- Grey 900 on Grey 100 (#222222 on #f9f9f9): Contrast ratio of 17.4:1 β excellent. Exceeds AAA for all text.
- Grey 500 on Grey 100 (#666666 on #f9f9f9): Contrast ratio of 7.5:1 β exceeds AA and AAA. Suitable for body text and icons.
- Grey 100 on Grey 900 (#f9f9f9 on #222222): Contrast ratio of 17.4:1 β excellent. Use freely on dark backgrounds.
- Grey 100 on Grey 500 (#f9f9f9 on #666666): Contrast ratio of 2.7:1 β fails AA for body text. Avoid for long passages or critical information.
Images & Video
This section covers best practices and utility classes for handling images and embedding responsive videos.
Responsive Images
Use the .responsive-img class to ensure images scale to fit their container and remain sharp on all devices.
Example

Usage
<img src="/assets/images/example.jpg" alt="Descriptive alt text" class="responsive-img">
- Always provide descriptive
alttext for accessibility. .responsive-imgsetsmax-width: 100%; height: auto;for flexible sizing.
Image Grid
Use the .image-grid class to display multiple images in a responsive grid layout.
Example
Usage
<div class="image-grid">
<img src="/assets/images/example1.jpg" alt="Alt 1">
<img src="/assets/images/example2.jpg" alt="Alt 2">
<img src="/assets/images/example3.jpg" alt="Alt 3">
</div>
- Images will wrap and resize automatically.
- Use for galleries or sets of related images.
- Individual images inside
.image-gridare capped atmax-width: 200pxto maintain layout consistency.
Responsive Video Embeds
Wrap embedded videos (e.g., YouTube, Vimeo) in a .video-wrapper to maintain aspect ratio and responsiveness.
Example
Usage
<div class="video-wrapper">
<iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="Example video" allowfullscreen></iframe>
</div>
.video-wrapperkeeps the video at a 16:9 aspect ratio and scales to fit the container.- Always set a descriptive
titleon the<iframe>for accessibility.
Accessibility Notes
- Use meaningful
alttext for all images. - Use descriptive
titleattributes for embedded videos. - Ensure images and videos have sufficient contrast and are not essential for understanding content unless described elsewhere.
Media Card Aspect Ratio
The .media-card class maintains a consistent aspect ratio for image blocks (typically 3:2). Useful for grid-aligned image previews or media components.
Example
<figure class="media-card">
<img src="/assets/images/example.jpg" alt="Alt text">
</figure>
CSS
.media-card {
aspect-ratio: 3 / 2;
}
- Helps align content in photo grids or cards visually.