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
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

Descriptive alt text

Usage

<img src="/assets/images/example.jpg" alt="Descriptive alt text" class="responsive-img">
  • Always provide descriptive alt text for accessibility.
  • .responsive-img sets max-width: 100%; height: auto; for flexible sizing.

Image Grid

Use the .image-grid class to display multiple images in a responsive grid layout.

Example

Alt 1 Alt 2 Alt 3

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-grid are capped at max-width: 200px to 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-wrapper keeps the video at a 16:9 aspect ratio and scales to fit the container.
  • Always set a descriptive title on the <iframe> for accessibility.

Accessibility Notes

  • Use meaningful alt text for all images.
  • Use descriptive title attributes 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.