Ryanair Brand Design System Deep Dive
1. Brand Overview
Ryanair’s visual language is exactly what you’d expect from Europe’s biggest low-cost airline: unapologetically functional, high-contrast, and driven by the primary brand colors — deep blue and bright yellow. There’s no attempt at luxurious minimalism here. This is about speed, clarity, and making the booking process as frictionless as possible.
When you land on the Ryanair homepage, you’re hit with bold, saturated colors. That deep primary blue (#073590) screams brand recognition — it’s been part of Ryanair’s identity for decades. Paired with the almost golden yellow (#f1c933), it’s unmistakable. This isn’t a “soft” aesthetic — it’s punchy and utilitarian. The palette is chosen for maximum visibility, both in digital contexts and physical signage.
Typography is equally direct. They’ve locked in on Roboto, a utilitarian sans-serif that plays well across languages and weights, and makes sense given the airline’s pan-European audience. There’s a lot of uppercase in headings, reinforcing urgency and clarity — “BOOK NOW” rather than “Book now.” This isn’t about storytelling; it’s about instructing.
Spacing is tight. Most elements ride the 8px grid, but you’ll see lots of small increments (2px, 4px) used in buttons and form controls. This keeps the UI compact — important when your primary audience is working on mobile and needs speed over elegance.
Ryanair’s design system is engineered for functional clarity. It’s not trying to win design awards; it’s trying to move tickets. And it does that by sticking to a disciplined, high-contrast palette, predictable typography, and straightforward component styling. If you’re designing for them, you need to embrace that utilitarian ethos — clarity first, aesthetics second.
2. Color System
2.1 Primary Colors
The hero color here is Primary Blue: #073590. This is used across key actions, headers, and brand reinforcement elements. It’s dark enough to anchor the design but saturated enough to pop against white and yellow. Psychologically, blue signals trust — perfect for a brand asking you to hand over payment details.
The secondary brand-defining color is Main Yellow: #f1c933. This appears heavily in primary buttons and callouts. Yellow carries urgency and optimism — it draws attention without the aggressiveness of red.
Competitor comparison: EasyJet uses orange, Wizz Air uses magenta, Lufthansa uses navy + yellow. Ryanair’s palette is similar to Lufthansa’s but more saturated and less corporate — it’s designed for high visibility.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Black | #000000 | Text, icons | Body text, high-contrast elements |
| White | #ffffff | Background, text | Page background, text on dark |
| Grey Dark | #6c7079 | Secondary text | Placeholders, muted labels |
| Primary Blue | #073590 | Brand, actions | Headers, CTAs |
| Grey Deep | #2e2e2e | Alt text | Footer text |
| Grey Light | #f4f4f4 | Background | Section backgrounds |
| Blue Medium | #0d49c0 | Accent | Links, hover states |
| Blue Mid | #1460b4 | Accent | Links, subtle actions |
| Black 30% | #101010 (30% opacity) | Overlay | Button focus states |
| Blue Hover | #005fcc | Interactive | Hover/focus states |
| Blue Hover Light | #166bc8 | Interactive | Hover/focus states |
| Yellow | #f1c933 | Primary CTA | Buttons, highlights |
2.3 Color Relationships
Primary Blue (#073590) + White (#ffffff) has excellent contrast (WCAG AAA). Yellow (#f1c933) on Blue is still readable but skirts close to minimum AA contrast for small text — they keep it for large button labels.
Grey Dark (#6c7079) on White is around 5:1 contrast — fine for secondary text. The greys are consistent — no random warm/cool shifts.
No dark mode here. The palette is designed for light backgrounds only.
2.4 Usage Guide
- Primary Blue for headers, CTAs, focus outlines.
- Yellow only for primary action backgrounds — never for text (low contrast).
- Greys for text hierarchy — darker for body, lighter for placeholders.
- Avoid using Blue Medium (
#0d49c0) and Blue Mid (#1460b4) together — they’re too close in value; it confuses hierarchy. - Keep white space clean — don’t throw yellow on white unless it’s a button.
3. Typography
3.1 Font Families
Everything is Roboto. No fallbacks listed, but standard would be Roboto, sans-serif. No variable fonts. No custom licensing — safe for web.
Roboto is a workhorse: neutral, legible, and widely supported. It’s a good choice for a multilingual airline site.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| heading-1 | Roboto | 24px | 700 | 1.17 |
| heading-1 uppercase | Roboto | 22px | 700 | 0.95 |
| heading-1 | Roboto | 20px | 700 | 1.10 |
| link bold | Roboto | 16px | 700 | 1.25 |
| link regular | Roboto | 16px | 400 | 1.30 |
| heading-1 | Roboto | 16px | 400 | 1.30 |
| button | Roboto | 16px | 400 | 1.25 |
| heading-1 uppercase | Roboto | 16px | 700 | — |
| heading-1 uppercase | Roboto | 16px | 400 | — |
| button | Roboto | 16px | 700 | 1.00 |
| heading-1 | Roboto | 16px | 700 | 1.00 |
| button | Roboto | 14px | 700 | 1.43 |
| caption | Roboto | 14px | 400 | 1.43 |
| caption bold | Roboto | 14px | 700 | 1.30 |
| link | Roboto | 14px | 400 | 1.30 |
| button | Roboto | 13.33px | 400 | — |
| caption uppercase bold | Roboto | 13.33px | 700 | — |
| caption uppercase | Roboto | 13.33px | 400 | — |
| caption | Roboto | 13.33px | 400 | — |
| caption | Roboto | 12px | 400 | 1.33 |
| button | Roboto | 12px | 400 | 1.17 |
| caption bold | Roboto | 12px | 700 | 1.30 |
| caption | Roboto | 12px | 400 | 1.30 |
| link | Roboto | 12px | 400 | 1.33 |
3.3 Hierarchy
They use size variation aggressively — H1s range from 24px down to 16px uppercase for smaller contexts. Buttons are mostly 14px bold — comfortable tap targets on mobile. Captions drop to 12px and sometimes uppercase for emphasis.
Hierarchy is reinforced by weight and transform — uppercase headings stand out even at smaller sizes. The type system is lean — one font family, multiple weights, consistent line heights. This keeps the UI predictable.
4. Spacing & Layout
4.1 Spacing Scale
Base scale is 8px, but they use micro-increments (1px, 2px, 3px) liberally.
| px | rem | count |
|---|---|---|
| 1px | 0.06rem | 8 |
| 2px | 0.13rem | 16 |
| 3px | 0.19rem | 4 |
| 4px | 0.25rem | 27 |
| 5px | 0.31rem | 4 |
| 6px | 0.38rem | 4 |
| 8px | 0.50rem | 20 |
| 10px | 0.63rem | 17 |
| 12px | 0.75rem | 18 |
| 14px | 0.88rem | 9 |
| 16px | 1.00rem | 8 |
| 18px | 1.13rem | 1 |
| 20px | 1.25rem | 5 |
| 21px | 1.31rem | 8 |
| 22px | 1.38rem | 1 |
| 24px | 1.50rem | 4 |
| 32px | 2.00rem | 12 |
| 55px | 3.44rem | 1 |
| 75px | 4.69rem | 4 |
| 361.906px | 22.62rem | 4 |
The 361.906px spacing is odd — likely a carousel offset or hero image padding.
4.2 Layout
No explicit breakpoints extracted. Layout is likely fluid with mobile-first design, stacking components vertically and using tight gutters (8–12px) for mobile, larger (24–32px) on desktop.
5. Visual Elements
Border Radius
| Value | Count | Usage |
|---|---|---|
| 0px 4px 4px 0px | 2 | Buttons/div |
| 0px 44px 44px 0px | 1 | Carousel back |
| 2px 0px 0px 2px | 1 | Span |
| 2px | 17 | Bookings, route map |
| 3px 0px 0px 3px | 1 | Widget |
| 4px | 18 | Buttons, inputs |
| 4px 0px 0px 4px | 1 | Button |
| 16px | 2 | Buttons |
| 36px | 4 | Cards |
| 44px 0px 0px 44px | 1 | Carousel forward |
| 50% | 1 | Icon |
They mix small radii (2px, 4px) for utilitarian controls with larger (36px) for cards — the big ones feel almost pill-like.
Shadows
They do use shadows — mostly subtle:
rgba(0, 0, 0, 0.05) 0px 2px 4px 0px— soft elevationrgba(0, 0, 0, 0.3) 2px 1px 5px 0px— more pronounced- Rare heavy:
rgba(0, 0, 0, 0.6) 0px 12px 24px 0px
No neon glows or colored shadows — purely functional depth cues.
Borders
1px solid borders are common — blue (#1976db) for interactive, grey (#e0e1e3) for separators. Dashed grey for secondary UI.
6. Components
6.1 Buttons
Primary CTA
Default:
- Background:
#f1c933 - Color:
#073590 - Padding:
0px 16px - Radius: 16px
- Border: none
- Font: 14px, 700
Hover: Color changes to yellow (same as bg, odd choice).
Focus: Blue glow (#a2c4e9).
Outline Button
Background: transparent
Color: #1976db
Border: 1px solid #1976db
Padding: 12px 24px
Radius: 4px
Font: 16px, bold.
Filter Button
Background: white 10% opacity
Color: white
Border: 1px solid white
Padding: 8px 0px 8px 8px
Radius: 4px
Opacity: 0.5.
6.2 Links
Multiple link colors:
- Blue (
#166bc8) bold - White (
#ffffff) regular - Blue Mid (
#1460b4) regular - Primary Blue (
#073590) regular - Grey (
#6c7079) regular - Yellow (
#f1c933) regular
All have underline on hover.
6.3 Forms
Text inputs: transparent bg, black text, no border. Focus: light blue border.
Email inputs: white bg, grey text, 1px solid grey border (#c3c7cc), radius 4px, padding 14px 8px 12px. Focus: #166bc8 border.
6.4 Cards
Cards have 36px radius and 4px white border. Shadows are subtle.
7. Design Tokens
:root {
/* Colors */
--color-black: #000000;
--color-white: #ffffff;
--color-grey-dark: #6c7079;
--color-primary-blue: #073590;
--color-grey-deep: #2e2e2e;
--color-grey-light: #f4f4f4;
--color-blue-medium: #0d49c0;
--color-blue-mid: #1460b4;
--color-black-30: #101010;
--color-blue-hover: #005fcc;
--color-blue-hover-light: #166bc8;
--color-yellow: #f1c933;
/* Typography */
--font-primary: 'Roboto', sans-serif;
/* Spacing */
--space-1: 1px;
--space-2: 2px;
--space-3: 3px;
--space-4: 4px;
--space-5: 5px;
--space-6: 6px;
--space-8: 8px;
--space-10: 10px;
--space-12: 12px;
--space-14: 14px;
--space-16: 16px;
--space-18: 18px;
--space-20: 20px;
--space-21: 21px;
--space-22: 22px;
--space-24: 24px;
--space-32: 32px;
--space-55: 55px;
--space-75: 75px;
--space-361: 361.906px;
/* Border Radius */
--radius-sm: 2px;
--radius-md: 4px;
--radius-lg: 16px;
--radius-xl: 36px;
--radius-full: 50%;
/* Shadows */
--shadow-soft: rgba(0,0,0,0.05) 0px 2px 4px 0px;
--shadow-medium: rgba(0,0,0,0.3) 2px 1px 5px 0px;
--shadow-heavy: rgba(0,0,0,0.6) 0px 12px 24px 0px;
}8. AI Coding Assistant Prompt
# Ryanair Design System Specification
You are a Ryanair design expert. Build UIs matching their visual language exactly.
## Brand Context
Ryanair's design is functional, high-contrast, and utilitarian. It focuses on clarity, speed, and strong brand recognition through deep blue and bright yellow. Typography is direct and sans-serif; spacing is tight and consistent.
## Color Palette
- Black: #000000 — Body text, icons
- White: #ffffff — Background, text on dark
- Grey Dark: #6c7079 — Secondary text, placeholders
- Primary Blue: #073590 — Headers, CTAs, brand anchors
- Grey Deep: #2e2e2e — Footer text
- Grey Light: #f4f4f4 — Section backgrounds
- Blue Medium: #0d49c0 — Accent links, hover states
- Blue Mid: #1460b4 — Secondary links
- Black 30%: #101010 — Overlays, subtle borders
- Blue Hover: #005fcc — Hover/focus states
- Blue Hover Light: #166bc8 — Hover/focus states
- Yellow: #f1c933 — Primary CTA backgrounds
## Typography
Font family: 'Roboto', sans-serif
| Element | Size | Weight | Line Height | Use For |
|---------|------|--------|-------------|---------|
| H1 | 24px | 700 | 1.17 | Page titles |
| H1 uppercase | 22px | 700 | 0.95 | Headlines |
| H1 | 20px | 700 | 1.10 | Section headings |
| Link bold | 16px | 700 | 1.25 | Navigation |
| Link regular | 16px | 400 | 1.30 | Secondary links |
| Button | 14px | 700 | 1.43 | Primary buttons |
| Caption | 12px | 400 | 1.33 | Secondary labels |
## Spacing & Grid
Base: 8px grid. Values: 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 24, 32, 55, 75, 361.906px.
## Border Radius
- None: 0px — Tables
- sm: 2px — Small controls
- md: 4px — Inputs, buttons
- lg: 16px — Primary buttons
- xl: 36px — Cards
- full: 50% — Icons
## Shadows & Depth
- Soft: rgba(0,0,0,0.05) 0px 2px 4px
- Medium: rgba(0,0,0,0.3) 2px 1px 5px
- Heavy: rgba(0,0,0,0.6) 0px 12px 24px
## Component Specifications
### Primary Button
Default:
```css
background: #f1c933;
color: #073590;
padding: 0px 16px;
border-radius: 16px;
font-weight: 700;
font-size: 14px;
border: none;Hover: color: #f1c933;
Focus: blue glow #a2c4e9.
Outline Button
background: transparent;
color: #1976db;
border: 1px solid #1976db;
padding: 12px 24px;
border-radius: 4px;
font-weight: 700;
font-size: 16px;Input Field
border: 1px solid #c3c7cc;
border-radius: 4px;
padding: 14px 8px 12px;
font-size: 14px;
background: transparent;
color: #6c7079;Focus: border-color #166bc8.
Card
background: #ffffff;
border-radius: 36px;
border: 4px solid #ffffff;
box-shadow: rgba(0,0,0,0.05) 0px 2px 4px;Layout & Responsive Rules
- Content padding: 8–32px depending on device
- Grid gap: multiples of 8px
Interaction Rules
- Transition: 150ms ease for state changes
- Focus: clear outline or glow
DO
- Use only palette colors
- Maintain 8px grid
- Keep typography Roboto
- Use uppercase for key headings
- Keep borders 1px solid where specified
DON'T
- Invent new colors
- Mix rounded and sharp corners
- Overuse shadows
- Reduce contrast below WCAG AA
Code Examples
Primary Button:
.btn-primary {
background: #f1c933;
color: #073590;
padding: 0 16px;
border-radius: 16px;
font-weight: 700;
font-size: 14px;
border: none;
transition: color 150ms ease;
}
.btn-primary:hover { color: #f1c933; }
.btn-primary:focus { box-shadow: 0 0 .5rem .1875rem #a2c4e9; }Outline Button:
.btn-outline {
background: transparent;
color: #1976db;
border: 1px solid #1976db;
padding: 12px 24px;
border-radius: 4px;
font-weight: 700;
font-size: 16px;
}Input:
.input-email {
border: 1px solid #c3c7cc;
border-radius: 4px;
padding: 14px 8px 12px;
font-size: 14px;
color: #6c7079;
}
.input-email:focus {
border-color: #166bc8;
outline: none;
}
---
## 9. Summary
**TL;DR** — Ryanair’s design is built on deep blue, bright yellow, and no-nonsense typography. Tight spacing and clear hierarchy keep the interface functional and fast. Use the palette and type rules exactly — clarity trumps creativity here.
**Brand Keywords**:
- high-contrast-utilitarian
- budget-airline-functional
- bold-blue-yellow
- speed-over-style