title: “Design & colours” description: “How boulingua chooses a colour for each language, and why.” Link to heading

Every boulingua course shares one design system — the same navigation, the same typography, the same rhythm in light and dark. Within that frame each language carries one signature accent colour, so a course is recognisable at a glance without ever looking like a different product.

The rules Link to heading

A language’s accent must be:

  1. Flag-safe. The hue does not appear in that language’s national flag. Colour should signal which course you are in, not which country a language is spoken in — a language is not a nation, and several of these are spoken across many.
  2. At least 15° apart from every other accent on the OKLCH hue wheel, so two courses are never mistaken for each other.
  3. WCAG AA on white — 4.5:1 — because an accent is used for links and rules, not decoration.
  4. Not hub blue — #1A73E8 is reserved for this umbrella site and for anything that belongs to no single course.

Where the palette does not meet them yet Link to heading

These rules are the specification, and this section is measured from the same file the table below is printed from — so it cannot quietly stop being true.

Nothing. Every accent clears 4.5:1 on white and no two sit closer than 15° apart.

The palette Link to heading

18 languages.

CodeLanguageAccentHoverDarkDark hoverStatus
dafGerman■ #0C7F9E#006C89■ #80CDEA#AADDF1live
eflEnglish■ #06881B#007412■ #83E883#ADF0ABlive
fleFrench■ #5C8000#4E6D00■ #B8E474#CEEDA4live
aflArabic■ #5C16C0#4B00A4■ #967EE8#B6AAF1planned
cflChinese■ #382DC6#2D0EB1■ #7B8AE7#A4B2F0planned
eleSpanish■ #008283#006F6F■ #7BE6E6#A8EFEEplanned
gflGreek■ #C74B1F#B23700■ #E7977E#EFBAA9planned
ilsItalian■ #871EC1#7400AA■ #B97EE7#D0A9F0planned
jflJapanese■ #8C7208#796100■ #F3D77B#F8E5A7planned
lleLatin■ #C72238#B10027■ #E87F7E#F0AAA7planned
nsfNorwegian■ #787900#676700■ #DFE173#E9EBA3planned
nvtDutch■ #008558#00724A■ #61EAAC#9DF1C6planned
pfaPersian■ #9E6A00#885B00■ #F2C380#F8D8AAplanned
pflPolish■ #AA6322#975205■ #F0B486#F6CDAEplanned
plePortuguese■ #BA20C2#A400AC■ #DF7DE3#EBA8ECplanned
rkiRussian■ #008471#007160■ #6AE8CE#A1EFDDplanned
tflTurkish■ #C7236A#B10059■ #EB7D9F#F2A9BDplanned
uflUkrainian■ #CA209A#B30087■ #ED7CC3#F4A8D5planned

CEFR levels Link to heading

Independent of the accents and shared by every course, so a B1 badge means the same thing everywhere: A #4CAF50 · B #1A73E8 (hub blue) · C #8E24AA.

Where these come from Link to heading

This page is generated. The colours live in one file — design/tokens.yaml in the kit — from which the site CSS, the LaTeX material templates, the accent registry and this table are all built. Adding a nineteenth language is one entry there, not an edit in nineteen places.