Skip to main content

Alliance Française de Bloemfontein

Design system

Every token, class and pattern used to build this site. Build pages from these — if something you need is missing, the pattern library has a gap and should be extended rather than styled one-off.

Brand colours

The Alliance Française network contract. Identical on Johannesburg, Potchefstroom and Gaborone — never re-valued per branch. Pick these by name from any colour control.

Alliance Red --alliance-red · #DA002E
Alliance Blue --alliance-blue · #01365D
Red Dark --alliance-red-600 · hover
Blue Dark --alliance-blue-700 · hover
Blue Deep --alliance-blue-deep · footers

Neutrals

Text, hairlines and backgrounds. Body copy uses Body Text; secondary copy uses Muted.

Ink --ink · headings
Body Text --text
Muted --muted · meta
Hairline --line · borders
Mist --mist · alt sections
Background --bg

Spacing scale

A 4pt scale. Use these for every margin, padding and gap — never a loose pixel value. This is what keeps vertical rhythm consistent across pages built by different people.

--sp-1 · 4px
--sp-2 · 8px
--sp-3 · 12px
--sp-4 · 16px
--sp-5 · 24px · card padding, mobile section gap
--sp-6 · 32px · default grid gap
--sp-7 · 48px · phone section padding
--sp-8 · 64px · split gap, tablet section padding
--sp-9 · 96px · default section padding
--sp-10 · 128px

Type scale

Poppins throughout, PT Serif reserved for display pull-quotes. Use the Heading element with a tag set — never a styled div.

Heading LG — 56px

Heading MD — 42px

Heading SM — 32px

Text XL — 24px

Text LG — 20px

Text Base — 17px · body copy

Text SM — 15px

Text XS — 13px · eyebrows and meta

PT Serif — display and pull-quotes only

Layout classes

Put a wrap inside every section to get the 1200px content column and responsive side padding. The grids collapse on their own at phone width.

section + wrap + grid-3 — card grid, auto-fits at 280px

A1

Beginner French

Complete beginners. Two terms.

Find out more
A2

Elementary French

Building on the basics.

Find out more
B1

Intermediate French

Real-life fluency.

Find out more

grid-2 — two equal columns, stacks at 767px

Callout

Blue left rule. For notes and asides.

Callout red

Same block, red rule. For deadlines and required reading.

split — media beside copy, centred, wider gap

Our centre

Learn French in Bloemfontein

The split class pairs media with copy and stacks cleanly on mobile. Add split-reverse to put the image on the other side — it un-reverses itself once stacked, so the image never ends up below its own caption.

Image or media

Brand elements

Small brand details used across the site. Reach for a native element first — these cover the cases where none fits.

badge

A1 DELF New

CEFR levels, categories and short labels.

link-arrow

Browse every course

Inline forward link. Turns red on hover.

tick-list

Accredited DELF/DALF examination centre Native-speaking teachers Small class sizes

For prose. Prefer the Checkmark List element where you need icon control.

State modifiers

Modifiers adjust an existing block. They never introduce a new component.

is-center

Centred section head

Combine with prose-center to centre a measure-limited paragraph.

is-dark

Blue band

Use is-light on children to flip text white.

How to build a page

1. Start with a Section container. Add the section or section-mist class to alternate backgrounds down the page.

2. Put a wrap container inside it. Everything else goes in there.

3. Insert a Component from the library — Hero, Course Card Grid, CTA Band, Team Grid. Fill in the labelled fields in the right-hand panel.

4. For one-off content use real elements: Heading, Text, Button, Image, Icon Box, Accordion. Set colours and fonts from the named swatches.

5. Check the phone breakpoint before publishing.

You should never need to write CSS. If a layout you need is not here, that is a gap in the library — ask for it to be added rather than styling one element by hand. That is what keeps every branch site consistent.

Built with Oxygen