Colours

The colour system is based on Google's M3 colour principle. Medical and Sports each have their own primary, accent and surface colours. Shared colours cover states like success, warning or error as well as neutral tones for UI elements. All colour combinations meet WCAG 2.1 AA contrast requirements — an international standard that ensures text and controls remain readable for people with reduced vision (4.5 : 1 for text, 3 : 1 for large text and UI components).

Medical

The Medical palette is built on a deep blue (#133e8f) as primary colour, conveying trust and professionalism. Cyan and yellow serve as accent families — each with a dark, medium and light variant plus a tint for background surfaces. Following M3's container principle, the tints (#d7ebf5, #fff3d7) provide subtle backgrounds that achieve AAA contrast values with the blue primary text.

Blue
colourMedicalBlue
Light Blue
colourMedicalLightBlue
Cyan
colourMedicalCyan
Cyan Dark
colourMedicalCyanDark
Cyan Light
colourMedicalCyanLight
Light Cyan Tint
colourMedicalCyanTint
Yellow
colourMedicalYellow
Yellow Dark
colourMedicalYellowDark
Yellow Light
colourMedicalYellowLight
Light Yellow Tint
colourMedicalYellowTint

Sports

The Sports palette uses a dark blue (#02263d) as its base with neon green as an energetic primary action colour. Grey-blue tones form neutral surfaces. The high-contrast combination of neon green on dark blue provides strong visibility and an active, dynamic appearance that clearly differentiates from the Medical sub-brand.

Dark Blue
colourSportsDarkBlue
Grey Blue
colourSportsGreyBlue
Grey Blue Dark
colourSportsGreyBlueDark
Grey Blue Light
colourSportsGreyBlueLight
Neon Green
colourSportsNeonGreen
Neon Green Dark
colourSportsNeonGreenDark
Neon Green Light
colourSportsNeonGreenLight

General / Utility

Brand-neutral colours shared by both sub-brands. Grey tones create text hierarchy and surface differentiation (following M3's on-surface / on-surface-variant principle), while semantic green/red pairs represent success and error states. The overlay colour (#00000099) is used for modal backgrounds and image overlays.

Dark Grey
colourGeneralDarkGrey
Grey
colourGeneralGrey
Light Grey
colourGeneralLightGrey
Very Light Grey
colourGeneralVeryLightGrey
White
colourGeneralWhite
Overlay Tint
colourGeneralOverlayTint
Correct
colourGeneralCorrect
Incorrect
colourGeneralIncorrect
Correct Light
colourGeneralCorrectLight
Incorrect Light
colourGeneralIncorrectLight

Typography

Two typefaces share the work: BF Headline Bold for large headings (H1–H4, uppercase) and Pangea Text by Christoph Koeberlin (Fontwerk) for smaller headings (H5–H6) and body text in Regular and SemiBold. The Text variant of Pangea is optimised for small font sizes — with wider letter spacing and more open forms.

Font sizes adapt across three screen widths (mobile, tablet, desktop). Headings appear in brand blue, body text in dark grey (#4c5466) — creating hierarchy and comfortable reading contrast.

BF Headline is based on DIN 1451 — a typeface created in 1931 for road signs and technical drawings, still one of the most widely used typefaces in Germany today. BF Headline takes its clear design language but rounds the letter endings — giving it a more modern, approachable feel. Drawn by Sheehan Sista, finalised by TypeMates, it is available licence-free as a proprietary development.

Display Headings — BFHeadline

H1 68px / Bold / Upper Mobile: 40px
MOTION IS LIFE
H2 58px / Bold / Upper Mobile: 36px
ANKLE OSTEOARTHRITIS
H3 40px / Bold / Upper Mobile: 32px
WHAT IS ANKLE OSTEOARTHRITIS?
H4 32px / Bold / Upper Mobile: 28px
DIAGNOSIS AND TREATMENT

Text Headings & Body — Pangea Text

H5 28px / SemiBold Mobile: 22px
Quick facts about this condition
H6 22px / SemiBold Mobile: 20px
Related symptoms and causes
Body L 19px / Regular & SemiBold
Ankle osteoarthritis is a condition in which the cartilage in the ankle joint gradually wears away, causing pain, stiffness, and reduced mobility. Early diagnosis and treatment can help manage symptoms effectively.
Body M 17px / Regular & SemiBold
The condition most commonly develops after an injury to the ankle, or as a result of wear and tear over time. Supports and braces can provide relief during everyday activities.
Body S 14px / Regular & SemiBold
Used for captions, footnotes, and secondary information throughout the interface.
Body XS 13px / Regular & SemiBold
Small labels, metadata, and supplementary details.
Body XXS 12px / Regular & SemiBold
Legal text, fine print, and micro-copy.

Responsive Type Scale

Style Font Weight Case 390px 1440px 1920px
H1BFHeadlineBoldUPPER40px68px82px
H2BFHeadlineBoldUPPER36px58px68px
H3BFHeadlineBoldUPPER32px40px48px
H4BFHeadlineBoldUPPER28px32px40px
H5Pangea TextSemiBoldOriginal22px28px36px
H6Pangea TextSemiBoldOriginal20px22px28px
Body LPangea TextRegular / SemiBoldOriginal—19px—
Body MPangea TextRegular / SemiBoldOriginal—17px—
Body SPangea TextRegular / SemiBoldOriginal—14px—
Body XSPangea TextRegular / SemiBoldOriginal—13px—
Body XXSPangea TextRegular / SemiBoldOriginal—12px—

Spacing & Layout

All spacing builds on a 4-unit scale (4, 8, 12, 16, 20, 24, 32, 40px) — creating consistent distances throughout the interface. Smaller values control spacing within components (e.g. padding inside a button), larger values the space between sections. Corner radii range from subtle (12px for input fields) to fully rounded (40px for pill buttons).

Inner Padding Scale

XS
4px
S
8px
M
16px
L
24px
XL
32px
XXL
40px

Component Padding

Desktop
96px
96px
Mobile
72px
72px

Border Radius

Small
12px
Medium
20px
Large
40px

Vertical Rhythm

Vertical spacing on article pages follows a two-tier principle: the gap between content elements within a section (e.g. heading, body text, image) is 32px. The gap between distinct sections (e.g. two consecutive topic blocks) is 48px. This system creates a clear visual structure and helps the reader intuitively recognise cohesion and separation.

Within a block
H3 Heading
32px
Body text paragraph
32px
Image
Between sections
Section A
48px
Section B
48px
Section C

Grid System

PropertyDesktopMobile
Gutter20px12px
Margin80px20px
1
2
3
4
5
6
7
8
9
10
11
12
12-column grid · 20px gutters · 80px margins

Effects

Shadows create depth and show which elements sit in the foreground. Three levels cover common cases: small for cards and hover states, medium for dropdowns and popovers, large for modal dialogues. Shadows use a darkened brand blue instead of pure black — this feels warmer and fits better into the colour palette.

Level 1
Level 2
Level 3
Level 4
LevelBox ShadowUsage
10 1px 3px rgba(0,0,0,0.06)Subtle card borders
20 4px 12px rgba(0,0,0,0.08)Default cards
30 8px 24px rgba(0,0,0,0.1)Hover / Elevated cards
40 16px 48px rgba(0,0,0,0.14)Modals & overlays

Buttons

Three levels create a clear hierarchy: Primary (filled) for main actions, Secondary (outline) for less prominent actions, Accent (cyan/yellow background) for calls to action that need to stand out. All buttons have a pill shape (40px radius) and meet contrast requirements for good readability.

Primary Buttons

Secondary / Outline Buttons

Accent Buttons

Sports Brand Buttons

Filter Chips

✓ Selected Option A Option B

CSS Specifications

Copy-ready CSS for each button variant. Click a tab to view code and live preview.

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: 'Pangea Text', sans-serif;
  font-size: 14px;
  font-weight: 600;
  padding: 12px 28px;
  border: 2px solid transparent;
  border-radius: 40px;
  cursor: pointer;
  transition: all 0.2s;
  white-space: nowrap;
}
Height: ~44px (auto)
Padding: 12px top/bottom, 28px left/right
Border-radius: 40px (pill shape)
Font: Pangea Text SemiBold 14px
Border: 2px solid transparent
Icon gap: 8px
Transition: all 0.2s ease
.btn--primary {
  background: #133e8f;   /* colourMedicalBlue */
  color: #ffffff;
}

.btn--primary:hover {
  background: #0f3275;   /* 10% darker */
}
Default
Hover
Background: #133e8f
Text: #ffffff
Hover BG: #0f3275
Contrast: 9.44:1 ✓ AAA
.btn--secondary {
  background: transparent;
  border: 1.5px solid #133e8f;
  color: #133e8f;
}

.btn--secondary:hover {
  background: #e5ecf4;   /* colourMedicalLightBlue */
}
Default
Hover
Background: transparent
Border: 1.5px solid #133e8f
Text: #133e8f
Hover BG: #e5ecf4
.btn--disabled {
  background: #e6e6e6;   /* colourGeneralLightGrey */
  color: #c2c2c2;        /* colourGeneralGrey */
  cursor: not-allowed;
}

/* No hover state — interaction is blocked */
Disabled
Background: #e6e6e6
Text: #c2c2c2
Cursor: not-allowed
Contrast: 1.43:1 (intentionally muted)
.btn--cyan {
  background: #d7ebf5;   /* colourMedicalCyanTint */
  color: #133e8f;        /* colourMedicalBlue */
}

.btn--cyan:hover {
  background: #20b9d6;   /* colourMedicalCyan */
  color: #133e8f;
}
Default
Hover
Background: #d7ebf5
Text: #133e8f
Hover BG: #20b9d6
Contrast: 8.09:1 ✓ AAA
.btn--yellow {
  background: #fcce59;   /* colourMedicalYellowLight */
  color: #133e8f;        /* colourMedicalBlue */
}

.btn--yellow:hover {
  background: #fbba00;   /* colourMedicalYellow */
  color: #133e8f;
}
Default
Hover
Background: #fcce59
Text: #133e8f
Hover BG: #fbba00
Contrast: 6.68:1 ✓ AA
/* Default */
.btn {
  padding: 12px 28px;
  font-size: 14px;
}

/* Small */
.btn--small {
  padding: 8px 20px;
  font-size: 13px;
}

/* Icon Only */
.btn--icon-only {
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: 50%;
}
Default
Small
Icon Only
Default: 12px 28px / 14px
Small: 8px 20px / 13px
Icon: 44×44px / round
.btn--sports-primary {
  background: #b9fd33;   /* colourSportsNeonGreen */
  color: #02263d;        /* colourSportsDarkBlue */
}

.btn--sports-secondary {
  background: transparent;
  border-color: #b3bec5; /* colourSportsGreyBlue */
  color: #02263d;
}
Primary
Outline (on dark)
Primary BG: #b9fd33
Primary Text: #02263d
Outline border: #b3bec5

Button Colour Matrix

Primary buttons adapt their colour to the active sub-brand theme:

BrandPrimary BGPrimary TextAccent
Medical #133e8f#ffffff #20b9d6
Sports #b9fd33#02263d #02263d

Inputs

Form fields have rounded corners (12px), consistent inner padding (14px) and show their state through the border colour: grey by default, brand blue on focus, green for success and red for error. A helper text below each field describes the state — so feedback does not rely on colour alone.

Text Input States

This field is required
Looks good!

Other Input Types

••••••••••••
🔍

Validation Pattern

✓ At least 8 characters
✓ Contains a number
✗ Contains a special character

Dark Background Variant

Selection

Checkboxes, radio buttons and toggles consistently use brand blue for the selected state and grey for unselected. Toggle switches show their state through a clear colour change between on and off. All controls have a minimum tap area of 44px, making them easy to use on mobile devices.

Checkboxes

Radio Buttons

Toggles

Off
On

Other

Supporting elements like badges, info tabs, tooltips and scrollbars. Badges use the brand colours for categorisation and status display. Info tabs mark content areas with an L-shaped frame. Tooltips appear dark on light for good readability. Scrollbars are visually aligned with the overall design.

Badges

Injuries Injuries Perfomance Perfomance
padding4px 8px
border-radius12px
font-size12px
font-weight600 (SemiBold)
line-height16px

Info-Tab

The info tab acts as a structuring design element in addition to the headline. It provides orientation comparable with a browser tab. Intended for short content such as product names, categories, conditions, or terms like "Competition". Use is optional — it works particularly well for highlighting sections like headers, newsletters or about areas.

Winter Season Winter Season
font-size14px
font-weight400 (Regular)
line-height1.2
letter-spacing0.85px
text-transformuppercase
padding7px 15px 0 0
margin-left12px
border-top1px solid
corner radius (::before)12px

Tooltip

Tristique vulputat ut montes donec senectus.

Custom Scrollbar

Hover state with interaction area

All Tokens

All design tokens at a glance — the named values for colours, spacing, font sizes etc. used in Figma and in code. Tokens ensure that design decisions are maintained in one place and arrive consistently everywhere: in Figma (via Tokens Studio) and in code (as CSS Custom Properties).

Colour Tokens

TokenCSS VariableValue
colourMedicalBlue--colour-medical-blue#133e8f
colourMedicalLightBlue--colour-medical-light-blue#e5ecf4
colourMedicalCyan--colour-medical-cyan#20b9d6
colourMedicalCyanDark--colour-medical-cyan-dark#178196
colourMedicalCyanLight--colour-medical-cyan-light#92e0ef
colourMedicalYellow--colour-medical-yellow#fbba00
colourMedicalYellowDark--colour-medical-yellow-dark#bc8c00
colourMedicalYellowLight--colour-medical-yellow-light#fcce59
colourMedicalYellowTint--colour-medical-yellow-tint#fff3d7
colourMedicalCyanTint--colour-medical-cyan-tint#d7ebf5
colourSportsDarkBlue--colour-sports-dark-blue#02263d
colourSportsGreyBlue--colour-sports-grey-blue#b3bec5
colourSportsGreyBlueDark--colour-sports-grey-blue-dark#586974
colourSportsGreyBlueLight--colour-sports-grey-blue-light#dce1e5
colourSportsNeonGreen--colour-sports-neon-green#b9fd33
colourSportsNeonGreenDark--colour-sports-neon-green-dark#4f6628
colourSportsNeonGreenLight--colour-sports-neon-green-light#cffc7a
colourGeneralDarkGrey--colour-general-dark-grey#45484F
colourGeneralGrey--colour-general-grey#c2c2c2
colourGeneralLightGrey--colour-general-light-grey#e6e6e6
colourGeneralVeryLightGrey--colour-general-very-light-grey#f0f0f0
colourGeneralWhite--colour-general-white#ffffff
colourGeneralOverlayTint--colour-general-overlay-tint#00000099
colourGeneralCorrect--colour-general-correct#05944f
colourGeneralIncorrect--colour-general-incorrect#e11900
colourGeneralCorrectLight--colour-general-correct-light#b4dfca
colourGeneralIncorrectLight--colour-general-incorrect-light#f5bab4

Spacing Tokens

TokenCSS VariableValue
spacingComponentPaddingDesktop--spacing-component-padding-desktop96px
spacingComponentPaddingMobile--spacing-component-padding-mobile72px
spacingInnerPaddingXS--spacing-inner-xs4px
spacingInnerPaddingS--spacing-inner-s8px
spacingInnerPaddingM--spacing-inner-m16px
spacingInnerPaddingL--spacing-inner-l24px
spacingInnerPaddingXL--spacing-inner-xl32px
spacingInnerPaddingXXL--spacing-inner-xxl40px
spacingRadiusRadiusLarge--radius-large40px
spacingRadiusRadiusMedium--radius-medium20px
spacingRadiusRadiusSmall--radius-small12px
spacingGridGutterDesktop--grid-gutter-desktop20px
spacingGridGutterMobile--grid-gutter-mobile12px
spacingGridMarginDesktop--grid-margin-desktop80px
spacingGridMarginMobile--grid-margin-mobile20px