DESIGN.md inspired by Emirates
Custom-serif luxury — Emirates red on light grey, gold accents, Fly Better editorial calm.
Compare to…
- bg
#f6f6f6 - surface
#f6f6f6 - text AAA · 19.4
#000000 - brand AA · 4.8
#d71921 - on-brand
#ffffff - border AAA · 19.4
#000000
- step-0 0px
- step-1 4px
- step-2 8px
- step-3 12px
- step-4 16px
- step-5 24px
- step-6 32px
- step-7 48px
- step-8 64px
- step-9 96px
- step-10 128px
- micro
2px - sm
3px - md
8px - lg
12px - xl
16px - pill
9999px
Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.
- background → bg
- foreground → text
- primary → brand
- primary-foreground → on-brand
- accent → —
- muted → —
- border → border
- ring → —
theme.extend block for tailwind.config.js
:root { --bg, --text, --brand, … } you can paste anywhere
W3C Design Tokens Community Group format
Importable into Figma → Variables → Import
---
name: Emirates
tagline: 'Custom-serif luxury — Emirates red on light grey, gold accents, Fly Better editorial calm.'
updated_at: 2026-05-28T22:15:51.961Z
published_at: 2026-05-28T22:15:51.961Z
author: webdesignhot
source_url: https://www.emirates.com
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [saas]
tags: [light, premium, serif, travel, airline, gold]
preview_swatch: ['#f6f6f6', '#d71921', '#fef8d5']
related: []
description: 'Emirates runs the most quietly luxurious surface in commercial aviation — a soft light-grey canvas (`#f6f6f6`) rather than stark white, so full-bleed cabin and destination photography reads as warm and gallery-lit rather than clinical. The whole system pivots on a single voltage of the unmistakable **Emirates red** (`#d71921`) that paints every primary CTA, the wordmark, the Skywards accents, and the active-state markers, balanced against an ink-and-greys neutral ramp (`#000000` headlines / `#333333` UI ink) and warmed by **gold-cream accents** (`#fef8d5`) on premium-cabin and loyalty surfaces. Display headlines render in Emirates'' **custom serif** — `EmiratesSB-Bold` (the audit caught `Times`, which is only the unloaded fallback before the brand webfont swaps in) — pairing a Gulf-luxury broadsheet gravity against a clean `HelveticaNeue` UI sans for forms, fares, and navigation. Buttons round at a restrained 3px, cards at 8–12px, and the layout is deliberately spacious and photography-led: generous whitespace, large editorial imagery, and the premium-editorial register of the **Fly Better** campaign throughout. The result is a surface that feels like a printed in-flight magazine rendered for the web — luxurious, calm, and confidently understated, where the red is the only loud note and everything else breathes.'
# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
background: bg
foreground: text
primary: brand
primary-foreground: on-brand
border: border
colors:
bg: '#f6f6f6'
surface: '#f6f6f6'
text: '#000000'
brand: '#d71921'
on-brand: '#ffffff'
border: '#000000'
typography:
display:
family: 'EmiratesSB-Bold, Georgia, "Times New Roman", Times, serif'
weights: [600, 700]
body:
family: 'HelveticaNeue, "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif'
weights: [200, 400, 500, 700]
mono:
family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'
weights: [400, 500]
scale:
display-hero: { size: 64, weight: 700, lineHeight: 1.05, tracking: '-0.02em', family: display }
display-lg: { size: 48, weight: 700, lineHeight: 1.08, tracking: '-0.015em', family: display }
h1: { size: 36, weight: 700, lineHeight: 1.12, tracking: '-0.01em', family: display }
h2: { size: 28, weight: 600, lineHeight: 1.2, tracking: '-0.005em', family: display }
h3: { size: 22, weight: 600, lineHeight: 1.25, tracking: '0', family: display }
h4: { size: 18, weight: 700, lineHeight: 1.3, tracking: '0', family: body }
body-lg: { size: 18, weight: 400, lineHeight: 1.6, tracking: '0', family: body }
body: { size: 16, weight: 400, lineHeight: 1.6, tracking: '0', family: body }
body-sm: { size: 14, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
label: { size: 13, weight: 500, lineHeight: 1.4, tracking: '0.01em', family: body }
caption: { size: 12, weight: 400, lineHeight: 1.4, tracking: '0.02em', family: body }
overline: { size: 11, weight: 700, lineHeight: 1.3, tracking: '0.08em', family: body, transform: uppercase }
radius:
micro: 2
sm: 3
md: 8
lg: 12
xl: 16
pill: 9999
spacing:
base: 4
scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]
layout:
page-width: 1280
prose-width: 720
header-height: 64
motion:
ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
ease-out-soft: 'cubic-bezier(0.0, 0, 0.2, 1)'
duration-fast: 150
duration-standard: 240
duration-slow: 360
reduced-motion: 'respects prefers-reduced-motion: reduce — transforms suppressed, opacity-only'
breakpoints:
mobile: 640
tablet: 1024
desktop: 1280
wide: 1536
shadows:
ambient: 'rgba(0,0,0,0.04) 0 1px 2px'
card: 'rgba(0,0,0,0.08) 0 2px 8px'
hover: 'rgba(0,0,0,0.12) 0 8px 24px'
dropdown: 'rgba(0,0,0,0.16) 0 6px 20px, rgba(0,0,0,0.04) 0 0 0 1px'
modal: 'rgba(0,0,0,0.2) 0 16px 48px'
components:
button-primary:
bg: '#d71921'
color: '#ffffff'
radius: 3
padding: '14px 22px'
height: 48
font: h4
use: 'Search flights, Book now, Continue — the single red voltage moment in the funnel.'
button-primary-hover:
bg: '#b8141b'
color: '#ffffff'
radius: 3
use: 'Hover deepens the Emirates red.'
button-secondary:
bg: 'transparent'
color: '#d71921'
border: '1px solid #d71921'
radius: 3
padding: '13px 21px'
height: 48
use: 'Manage booking, Learn more — outline red over the grey canvas.'
button-ghost:
bg: 'transparent'
color: '#333333'
border: '1px solid #d8d8d8'
radius: 3
padding: '13px 21px'
use: 'Tertiary / neutral actions on light surfaces.'
button-text:
bg: 'transparent'
color: '#d71921'
use: '"View all", "See details" — underlined-on-hover text link in brand red.'
card:
bg: '#ffffff'
color: '#333333'
radius: 12
border: '1px solid #e7e7e7'
padding: 24
use: 'Destination / offer / fare cards — white-on-grey lift, photography-led.'
card-hover:
bg: '#ffffff'
radius: 12
shadow: 'rgba(0,0,0,0.12) 0 8px 24px'
use: 'Hover lifts the card with a soft ambient shadow, image subtly scales within its clip.'
input:
bg: '#ffffff'
color: '#333333'
border: '1px solid #d8d8d8'
radius: 3
padding: '12px 14px'
height: 48
focus: 'border thickens to 2px Emirates red (#d71921), faint red focus ring'
use: 'Search-widget fields, login, contact forms.'
badge:
bg: '#fef8d5'
color: '#8a6d00'
radius: 2
padding: '3px 8px'
font: overline
use: 'Premium-cabin / Skywards tier marker — gold-cream ground, deep-gold text.'
badge-deal:
bg: '#d71921'
color: '#ffffff'
radius: 2
padding: '3px 8px'
font: overline
use: '"Special fare" / "Limited offer" — red urgency flag on offer cards.'
nav-link:
bg: 'transparent'
color: '#333333'
underline: 'red 2px underline grows from center on hover/active'
use: 'Top-nav items (Plan and book, Experience, Skywards, Help).'
accessibility:
contrast-text-on-bg: 19.6 # #000000 on #f6f6f6 — AAA
contrast-ink-on-bg: 11.6 # #333333 on #f6f6f6 — AAA
contrast-white-on-brand: 4.8 # #ffffff on #d71921 — AA body / AAA large
contrast-brand-on-bg: 4.4 # #d71921 on #f6f6f6 — AA large / AA UI components
contrast-muted-on-bg: 4.6 # #666666 on #f6f6f6 — AA body
focus-ring: '2px solid #d71921 + 2px outline-offset — brand-red ring on the light canvas'
reduced-motion-honored: true
touch-target-min: 48
keyboard-nav: 'Skip-link first; search widget Tab From → To → Dates → Passengers → Search; nav left → right.'
dark-mode: null # Light-only public web. Emirates is engineered around a warm light-grey canvas with full-bleed photography; no public dark variant.
---
## 1. Visual Theme & Atmosphere
Emirates is the quiet-luxury end of the travel-marketplace spectrum — where Booking sells and Airbnb whispers, Emirates curates. The base canvas is not stark white but a soft, warm **light grey** (`#f6f6f6`), and that single decision sets the entire mood. Pure white reads as clinical, utilitarian, transactional; the light-grey floor reads as a gallery wall, a printed page, a premium in-flight magazine. Against it, the full-bleed cabin photography, destination plates, and Skywards lifestyle imagery glow rather than glare. The grey is the frame; the photography is the art.
The whole system pivots on a single voltage: the unmistakable **Emirates red** (`#d71921`). It is used with luxury-brand discipline — never as a wash, never as a band, almost never as a surface larger than a button. It paints the primary CTA ("Search flights", "Book now"), the wordmark, the active nav underline, the Skywards accents, and the occasional urgency flag. Everywhere else the system runs on a restrained neutral ramp: near-black headlines (`#000000`), a slightly softer UI ink (`#333333`), and a graded family of greys for metadata, borders, and disabled states. The red is the only loud note in an otherwise hushed composition, which is precisely what gives it power.
Type is where Emirates declares its premium register most clearly. Display headlines render in the brand's **custom serif** — `EmiratesSB-Bold` — a Gulf-luxury broadsheet face with the gravity of a printed masthead. (A naive CSS audit catches `Times`, but that is only the system fallback that paints for a few hundred milliseconds before the brand webfont swaps in; the real face is the bespoke Emirates serif, and the entry is authored to that intent.) The serif headlines are paired against a clean `HelveticaNeue` UI sans for everything functional: fare tables, the search widget, form fields, navigation, and fine print. This serif-display / sans-UI pairing is the typographic signature — editorial gravitas up top, Swiss legibility in the working parts.
The shape language is **soft but restrained**. Buttons round at a tight 3px — enough to feel considered, never so much as to read consumer-warm or playful. Cards round at 8–12px, image plates clip cleanly, and the only true pill in the system is the occasional filter or carousel-dot control. Nothing is sharp-cornered and nothing is bubbly; the geometry sits in the same understated middle register as the colour. Warmed by **gold-cream accents** (`#fef8d5`) on premium-cabin and loyalty surfaces, the palette gains a single hint of warmth that keeps the red from feeling corporate and signals the airline's premium tiers without shouting.
The atmosphere, in a phrase, is **luxurious editorial calm**. The layout is spacious and photography-led — generous vertical rhythm between sections, large imagery given room to breathe, and the premium-editorial voice of the **Fly Better** campaign carried throughout. Where a low-cost carrier crams fares and upsells above the fold, Emirates gives a single hero a full viewport, lets a destination photo run edge to edge, and trusts the user to scroll. It is a surface that feels printed and curated rather than engineered for conversion density — and that restraint is the brand.
**Key Characteristics:**
- Warm light-grey canvas (`#f6f6f6`), never stark white — the gallery-wall frame for full-bleed photography
- Single red voltage (`#d71921`) used with luxury discipline: CTAs, wordmark, active states only
- Custom serif display (`EmiratesSB-Bold`) for editorial gravity; `HelveticaNeue` sans for all UI
- Gold-cream accents (`#fef8d5`) reserved for premium-cabin and Skywards loyalty surfaces
- Restrained shape language: 3px buttons, 8–12px cards, soft never bubbly
- Spacious, photography-led layout with generous whitespace and large hero imagery
- Premium-editorial register — the "Fly Better" voice — calm, confident, understated
- Neutral ink ramp (black → `#333333` → greys) does all the non-brand work; red carries the brand
- Serif-display / sans-UI pairing as the core typographic signature
- Photography is the colour; the chrome stays quiet so the imagery stays loud
## 2. Color Palette & Roles
### Canvas & Surface
- **Canvas** (`#f6f6f6`): the default page floor for every public page — a warm light grey, not white. The single most important brand decision; pure white would read clinical.
- **Surface / Card** (`#ffffff`): cards and elevated panels lift to true white against the grey canvas, creating separation without a border or heavy shadow.
- **Surface Soft** (`#efefef`): alt rows, disabled fields, secondary fills — one step below canvas.
- **Surface Cream** (`#fef8d5`): the gold-cream premium tint — Skywards bands, premium-cabin callouts, tier markers.
### Text / Ink
- **Headline Ink** (`#000000`): near-pure black, reserved for serif display headlines where maximum gravity is wanted.
- **UI Ink** (`#333333`): the dominant working-text colour — body copy, fare tables, nav labels, form values. Softer than black, easier on dense UI.
- **Muted** (`#666666`): secondary metadata, sub-labels, helper text, captions.
- **Soft / Disabled** (`#999999`): placeholders, disabled control text, faint legends.
- **On-Brand** (`#ffffff`): white text on the red CTA and any red surface.
### Brand
- **Emirates Red** (`#d71921`): the brand colour and the system's only voltage. Primary CTA fill, wordmark, active nav underline, urgency flags, Skywards red accents.
- **Red Hover** (`#b8141b`): hover/active deepening of the brand red on interactive surfaces.
- **Red Deep** (`#8d0203`): error/danger text and the deepest red used in validation and the wordmark on light surfaces.
### Accent (Gold)
- **Gold-Cream** (`#fef8d5`): the soft premium tint — surface ground for tier badges, loyalty bands, premium-cabin callouts.
- **Gold Text** (`#8a6d00`): the deep-gold ink that sits on the cream surface — used for "First", "Business", "Platinum" labels.
- **Bronze** (`#af5541`): a warm terracotta-bronze used sparingly on illustrative loyalty graphics and premium accents.
### Interactive
- **Link** (`#d71921`): inline text links default to brand red, underlined on hover.
- **Link Hover** (`#b8141b`): hover deepens.
- **Focus Ring** (`#d71921`): a 2px red ring with offset — the focus indicator reuses the brand on the light canvas.
- **Selected** (`#fef8d5` fill / `#d71921` marker — active tabs, selected dates, chosen fares).
### Borders
- **Hairline** (`#e7e7e7`): the default 1px card and divider border.
- **Border Strong** (`#d8d8d8`): input outlines, control borders, ghost-button edges.
- **Divider** (`#dddddd`): section dividers and table rules.
### Shadow Colors
Shadows stay neutral-black-tinted and soft — Emirates favours diffuse ambient lift over crisp drop shadows, in keeping with the gallery-calm aesthetic.
- `rgba(0,0,0,0.04) 0 1px 2px` — flat ambient
- `rgba(0,0,0,0.08) 0 2px 8px` — card resting
- `rgba(0,0,0,0.12) 0 8px 24px` — card hover lift
- `rgba(0,0,0,0.2) 0 16px 48px` — modal
### Semantic
- **Success** (`#1a7a3c` on `#e8f5ec`): confirmation green — "Booking confirmed", "Seat selected".
- **Warning** (`#8a6d00` on `#fef8d5`): advisory — reuses the gold ramp for soft cautions ("Fare changes apply").
- **Danger** (`#8d0203` on `#f9e6e9`): validation error red, on a soft red tint. Distinct from brand red — deeper, used only for errors.
- **Info** (`#406dc0` on `#f0f4ff`): informational notices (schedule changes, currency). Muted blue, used rarely so it never competes with the red.
## 3. Typography Rules
### Font Family
**Display (custom serif)**: `EmiratesSB-Bold` — the bespoke Emirates serif, a Gulf-luxury broadsheet face used for hero headlines and section titles. Fallback chain: `Georgia, "Times New Roman", Times, serif`. A CSS audit of the live site catches `Times` because it is the last-resort fallback that paints during the brief window before the brand webfont loads — the *intended and rendered* face is the custom Emirates serif. The companion display family on some marketing surfaces is `Emirates-Bold` / `EmiratesSM`, and a condensed display face, `Heroic-Medium`, appears on campaign overlays.
**UI / Body (sans)**: `HelveticaNeue` — `HelveticaNeue, "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif`, with `HelveticaNeue-Light` (weight 200) for large light labels. Everything functional — the search widget, fare tables, navigation, forms, fine print — runs in this clean Swiss sans. The serif/sans split is deliberate: editorial gravity up top, transactional legibility in the working parts.
**Mono companion**: not used in the marketing surface. Monospace is reserved for booking-reference and PNR codes where fixed-width column alignment matters.
**Webfont strategy**: the custom serif and `Emirates-Bold` faces are loaded as brand webfonts with `Georgia`/`Times` as the FOUT fallback. Headlines may flash in the serif fallback for a beat on first paint; the system tolerates this because the fallback is itself a serif and the layout metrics are close.
### Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|------|------|------|--------|-------------|----------------|-------|
| display-hero | EmiratesSB-Bold (serif) | 64 | 700 | 1.05 | -0.02em | Homepage hero ("Fly Better") |
| display-lg | EmiratesSB-Bold (serif) | 48 | 700 | 1.08 | -0.015em | Campaign / landing headlines |
| h1 | EmiratesSB-Bold (serif) | 36 | 700 | 1.12 | -0.01em | Page titles |
| h2 | EmiratesSB-Bold (serif) | 28 | 600 | 1.20 | -0.005em | Section heads ("Where to next") |
| h3 | EmiratesSB-Bold (serif) | 22 | 600 | 1.25 | 0 | Card titles, sub-sections |
| h4 | HelveticaNeue (sans) | 18 | 700 | 1.30 | 0 | UI titles, widget labels ("Search flights") |
| body-lg | HelveticaNeue (sans) | 18 | 400 | 1.60 | 0 | Lead paragraphs, editorial intros |
| body | HelveticaNeue (sans) | 16 | 400 | 1.60 | 0 | Default running text |
| body-sm | HelveticaNeue (sans) | 14 | 400 | 1.55 | 0 | Card meta, fare details, secondary copy |
| label | HelveticaNeue (sans) | 13 | 500 | 1.40 | 0.01em | Form field labels, tab labels |
| caption | HelveticaNeue (sans) | 12 | 400 | 1.40 | 0.02em | Captions, fine print, helper text |
| overline | HelveticaNeue (sans) | 11 | 700 | 1.30 | 0.08em | Uppercase eyebrows, badge labels ("FIRST CLASS") |
| nav-link | HelveticaNeue (sans) | 15 | 500 | 1.00 | 0 | Top-nav items |
| button | HelveticaNeue (sans) | 16 | 700 | 1.00 | 0.01em | CTA labels |
| price | HelveticaNeue (sans) | 24 | 700 | 1.00 | -0.01em | Fare display (tnum) |
| price-from | HelveticaNeue-Light (sans) | 13 | 200 | 1.40 | 0 | "from" prefix above fare |
### Principles
- **Serif up top, sans in the working parts.** Display tiers (hero → h3) are the custom serif for editorial gravity; everything functional (h4 and below) is `HelveticaNeue`. Never invert — a sans hero loses the premium register, a serif fare table loses legibility.
- **Headlines breathe at tight tracking.** Serif display runs negative tracking (-0.02em on hero) so the broadsheet weight feels set rather than spaced. UI sans sits at 0 or faintly positive.
- **Line height is generous, not dense.** Body at 1.6, leads at 1.6 — Emirates spaces its copy like an editorial spread, the opposite of a dense booking funnel. The whitespace is the luxury.
- **Weight does the heavy lifting in UI.** The sans ramp leans on the 200 / 400 / 500 / 700 spread; `HelveticaNeue-Light` (200) is used at large sizes for an airy, premium feel ("from", current-location labels).
- **Uppercase only on overlines and badges.** With 0.08em tracking, reserved for eyebrows and tier markers — never on body or buttons.
- **Tabular numerals on fares.** Prices, fare comparisons, and Skywards-mile counts render with `tnum` so columns align in fare tables.
- **Black for headlines, `#333` for UI.** The near-black headline ink is reserved for serif display; functional text steps down to `#333333` to soften the dense working surfaces.
## 4. Component Stylings
### Buttons
**`button-primary`** — Emirates red (`#d71921`) fill, white text at 16px / 700, **3px radius**, ~14×22px padding, 48px height. The single red voltage moment in the funnel: "Search flights", "Book now", "Continue". Hover deepens to `#b8141b`. Used sparingly — typically one primary per view.
**`button-secondary`** — Transparent fill, Emirates-red text, 1px red outline, 3px radius, 48px height. "Manage booking", "Learn more". The outline-red treatment over the grey canvas — present but quieter than the filled primary.
**`button-ghost`** — Transparent fill, `#333333` text, 1px `#d8d8d8` border, 3px radius. Neutral/tertiary actions where red would be too loud. Hover darkens the border and ink.
**`button-text`** — Plain red text, no surface, no border. Underlined on hover. "View all destinations", "See fare details", "Read more" — the lightest interactive weight.
All buttons share the **3px radius** — Emirates' signature restraint. Never pill, never sharp; the tight radius reads "considered" without consumer warmth.
### Cards
**`destination-card`** — The system's workhorse. White surface on the grey canvas, 12px radius, 1px `#e7e7e7` hairline, 24px padding. A full-bleed destination photo clips to the top (12px 12px 0 0), city name in serif `h3`, fare in `price` with a `price-from` prefix, and a `button-text` "Explore" link. Hover lifts with the soft ambient shadow and the image scales subtly within its clip.
**`offer-card`** — Promotional card with a larger photo plate and optional red `badge-deal` flag top-left. Serif headline, body-sm description, secondary outline CTA. Used in the "Special offers" carousel.
**`fare-card`** — Cabin/fare-class comparison card (Economy / Premium Economy / Business / First). White surface, 8px radius; premium tiers (Business, First) carry a gold-cream (`#fef8d5`) header band and a gold `badge`. The selected fare gets a 2px red border.
**`skywards-card`** — Loyalty card on the grey canvas with a gold-cream tint or bronze illustrative graphic. Tier label in gold `badge`, miles balance in tabular `price` type.
### Badges, Tags, Pills
**`badge`** (premium / tier) — Gold-cream (`#fef8d5`) ground, deep-gold (`#8a6d00`) text, 2px radius, 3×8px padding, 11px / 700 uppercase. "FIRST", "BUSINESS", "PLATINUM" — the loyalty and premium-cabin markers.
**`badge-deal`** — Emirates-red fill, white text, 2px radius. "SPECIAL FARE", "LIMITED OFFER" — the only place red appears as a small surface other than the CTA. Fires on offer-card images.
**`status-pill`** — Pill-shaped (9999px), hairline border, `#333` text. Carousel position dots and filter chips — the rare true-pill geometry, reserved for repeatedly-toggled controls.
### Inputs / Forms
**`text-input`** — White surface, 1px `#d8d8d8` border, 3px radius, 48px height, 12×14px padding, `#333` value text. Label above in `label` (13px / 500). On focus, the border thickens to 2px Emirates red with a faint red focus ring — the brand colour reused as the focus signal.
**`search-widget`** — Emirates' most iconic component. The flight-search panel sits as a white card lifted off the grey canvas (12px radius, ambient shadow), divided into tabbed segments (Flight / Flight + Hotel / Manage), then field rows: From, To (with a swap control), Dates, Passengers + Class. Each field is a 48px input; the whole panel terminates in a full-width or right-anchored red `button-primary` "Search flights". The widget is the one place the system tolerates density — everything else breathes.
**`select` / `dropdown`** — Matches `text-input` metrics; the open menu lifts on the dropdown shadow with a 1px hairline ring, items at 16px / 400, hover row tints to `#f6f6f6`, selected row carries a red check.
### Navigation
**`top-nav`** — White or grey ground, 64px tall, wordmark (Emirates serif-script) flush left in red, primary nav centred-left (Plan and book, Experience, Skywards, Help), utilities flush right (region/language, login, search icon). Nav items in `nav-link` (15px / 500 `#333`); the active/hover item grows a 2px red underline from center.
**`mega-menu`** — Full-width panel that drops below the nav on hover/focus, white surface, organised into columns with serif column heads and sans link lists, often with a photographic promo tile on the right. Generous internal padding (32–48px).
**`footer`** — Light-grey ground, multi-column link grid with serif column heads, region selector, app-store badges, social row, and legal fine print in `caption` muted. Collapses to accordion on mobile.
## 5. Layout Principles
### Spacing System
- Base unit: **4px**
- Scale: `0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128`
- Section padding (vertical): **64–96px** for marketing bands, **48px** for content sections — generous, editorial, the opposite of a dense funnel. The whitespace *is* the luxury signal.
- Card internal padding: 24px standard, 32px on feature cards
- Gutters: 24px between cards in a grid, 16px on dense fare rows, 32px between major content blocks
### Grid & Container
- Max content width: **1280px** centred, with comfortable side gutters that grow at wide breakpoints
- Marketing pages: full-bleed photographic heroes that break the container, with text and CTAs constrained to the 1280px column
- Destination grids: 3-up at desktop, 2-up at tablet, 1-up at mobile, 24px gutters
- Fare comparison: 4-column cabin-class grid (Economy / Premium / Business / First) that becomes a horizontal scroll on mobile
- Prose / editorial content: constrained to ~720px for comfortable reading measure
### Whitespace Philosophy
Whitespace is the brand's primary luxury cue. Where a budget carrier minimises empty space to maximise upsells above the fold, Emirates gives a single hero a full viewport, lets destination photography run edge to edge, and stacks sections with 64–96px of vertical breathing room. The grey canvas between white cards reads as deliberate negative space, not emptiness. The rule: when in doubt, add space — the surface should feel curated, never crammed.
### Section Cadence
The page alternates between **full-bleed photographic bands** (edge-to-edge cabin or destination imagery with overlaid serif headline + single CTA) and **carded content sections** (white cards floating on the grey canvas — destinations, offers, Skywards). The red appears only as CTAs and small accents within this cadence; it is never a section background. The rhythm — photo band, breathe, card grid, breathe, photo band — is what makes the site feel like a printed editorial spread.
## 6. Shapes & Radius Scale
| Tier | Value | Use |
|------|-------|-----|
| Micro | 2px | Badges, tier markers, deal flags |
| Standard | 3px | Buttons, inputs, selects — Emirates' signature restrained corner |
| Comfortable | 8px | Fare cards, small panels, image thumbnails |
| Relaxed | 12px | Destination/offer cards, the search widget, image plates |
| Large | 16px | Feature callouts, hero overlay cards |
| Pill | 9999px | Carousel dots, filter chips, status pills — repeatedly-toggled controls only |
The defining choice is the **3px button radius** — tighter than the 8px most consumer brands use, looser than a hard square. It signals "considered, premium, restrained" rather than "warm, friendly, playful." Cards step up to 8–12px so photography clips softly, and image plates that meet card content use compound radii (`12px 12px 0 0`) to flush the photo to the body beneath. Pill geometry is rationed to controls the user toggles repeatedly — it never appears on buttons or cards, which would push the system toward the consumer-warm register Emirates deliberately avoids.
## 7. Depth & Elevation
| Level | Treatment | Use |
|-------|-----------|-----|
| 0 — Flat | no shadow | Canvas, full-bleed photo bands, footer, nav (~80% of surfaces) |
| 1 — Resting card | `rgba(0,0,0,0.04) 0 1px 2px, rgba(0,0,0,0.08) 0 2px 8px` | Destination/offer/fare cards at rest, the search widget |
| 2 — Hover lift | `rgba(0,0,0,0.12) 0 8px 24px` | Cards on hover, mega-menu and dropdown panels |
| 3 — Modal | `rgba(0,0,0,0.2) 0 16px 48px` | Dialogs (date picker, passenger selector, login) |
| 4 — Scrim | `rgba(0,0,0,0.5)` ground | Global modal backdrop |
### Shadow Philosophy
Emirates favours **soft, diffuse, neutral-black-tinted** shadows over crisp drop shadows — the elevation should feel like a print plate lifted off a page, not a UI chip popped above a surface. The resting card shadow is gentle (8% / 2px / 8px blur); hover lifts to a wider, slightly deeper ambient shadow (12% / 8px / 24px blur) that reads as "this is interactive" without jumping. The white-card-on-grey-canvas contrast does much of the separation work, so shadows can stay subtle — the grey floor already gives every white card a clear edge.
There are no progressive Material-style elevation tiers. The model is essentially three steps: flat (most of the page), resting card, hover/menu lift, plus the modal step. The system trusts the canvas-to-surface contrast, the soft shadows, and the generous whitespace to communicate layering — never harsh depth.
## 8. Interaction & Motion
### Easing
- **Standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — hover lifts, colour swaps, underline grows, hairline transitions
- **Emphasized**: `cubic-bezier(0.2, 0, 0, 1)` — modal entry, mega-menu drop, search-widget tab switch
- **Out-soft**: `cubic-bezier(0.0, 0, 0.2, 1)` — carousel slide, date-picker month flip, image cross-fade
### Durations
| Bucket | Value | Use |
|--------|-------|-----|
| Fast | 150ms | Hover colour swaps, nav underline grow, button press, focus ring |
| Standard | 240ms | Card hover lift, dropdown open, image scale-in-clip |
| Slow | 360ms | Mega-menu drop, carousel slide, full-bleed hero cross-fade, page transitions |
### Per-Component Recipes
- **Primary CTA hover**: background `#d71921` → `#b8141b` over 150ms standard; subtle 1px translate-up optional, suppressed under reduced motion.
- **Card hover**: shadow tier 1 → 2 over 240ms standard, and the clipped photo scales `1.0 → 1.04` over 360ms out-soft — a slow, luxurious image breath inside the card frame.
- **Nav underline**: a 2px red underline grows from center (`scaleX 0 → 1`) over 150ms standard on hover/active.
- **Search-widget tab switch**: active tab indicator slides over 240ms emphasized; panel content cross-fades 150ms.
- **Mega-menu**: drops with `translateY(-8px) opacity(0)` → `translateY(0) opacity(1)` over 360ms emphasized; closes faster (200ms) on mouse-leave.
- **Modal enter**: scrim fades over 200ms ease-out, dialog `translateY(12px) opacity(0)` → settled over 240ms emphasized.
- **Carousel**: destination/offer slides translate over 360ms out-soft with the dots updating instantly.
### Page Transitions
Marketing pages favour soft cross-fades on full-bleed hero imagery and gentle scroll-reveal of carded sections (fade + 12px rise as they enter the viewport). The booking funnel itself stays restrained — content swaps with a quick 200ms fade rather than slides, keeping the transactional path fast. Motion is editorial flourish on marketing surfaces, near-invisible utility in the funnel.
### Reduced Motion
Respects `prefers-reduced-motion: reduce`. All transforms suppress: the card-image scale-in-clip is disabled, the CTA translate-up is removed, scroll-reveal becomes instant, and the carousel cross-fades instead of sliding. Only opacity transitions remain. Because the system is already low-motion and editorial, reduced-motion mode looks nearly identical to the default.
## 9. Accessibility & A11y
### Contrast Pairs
| Pair | Ratio | Level |
|------|-------|-------|
| #000000 headline on #f6f6f6 canvas | 19.6 | AAA |
| #333333 UI ink on #f6f6f6 canvas | 11.6 | AAA |
| #ffffff on #d71921 brand red | 4.8 | AA body / AAA large |
| #d71921 brand red on #f6f6f6 canvas | 4.4 | AA large / AA UI components |
| #666666 muted on #f6f6f6 canvas | 4.6 | AA body |
| #8a6d00 gold text on #fef8d5 cream | 5.6 | AA body |
| #8d0203 danger on #f9e6e9 soft red | 8.9 | AAA |
Note: the brand red on the light canvas clears AA for large text and UI components but sits just under AA for small body text — so red is used for CTAs, large accents, and links (underlined), never for small body copy, where `#333333` carries the load.
### Focus Indicators
Focus ring is **2px solid Emirates red (`#d71921`)** with a 2px outline-offset — the brand colour reused as the focus signal on the light canvas. It is high-contrast against both the grey canvas and white cards. Inputs additionally thicken their border to 2px red on focus. The funnel is form-heavy (dates, passengers, payment), so a clearly visible brand-coloured ring is intentional.
### ARIA Patterns
- **Search widget**: `role="search"` on the panel; the From/To/Dates/Passengers controls are buttons that open `role="dialog"` overlays (airport autocomplete, calendar, passenger stepper).
- **Tabs** (Flight / Flight + Hotel / Manage): `role="tablist"` with `aria-selected`; panels `role="tabpanel"` with `aria-labelledby`.
- **Date picker**: `role="application"` with `aria-label="Select departure and return dates"`; day cells `role="gridcell"` with `aria-selected` and full `aria-label` ("Tuesday 14 May, departure").
- **Cards**: each destination card is a single `<a>` with a verbose `aria-label` ("Dubai, fares from US$520, Explore destination").
- **Mega-menu**: `aria-expanded` on the trigger; focus moves into the panel on open; Esc closes and returns focus.
- **Skip link**: the first focusable element ("Skip to the main content") — the one CTA the seed audit caught — visible on focus.
### Keyboard Navigation
- Skip link first, then logo → primary nav (left → right) → utilities → search.
- Search widget: Tab From → To → Dates → Passengers/Class → Search button.
- Date picker: arrow keys navigate days, Enter selects, Esc closes.
- Mega-menu: Enter/Space opens, arrow keys move within columns, Esc closes.
- Carousels: arrow keys move slides; dots are focusable buttons.
### Screen Reader Hints
Emirates uses visible verb-led labels rather than icon-only controls — every CTA names its outcome ("Search flights", "Manage booking"). The few icon-only controls (search toggle, swap From/To, carousel arrows) carry explicit `aria-label`s. Fare figures pair the number with a screen-reader-friendly currency/period ("from 520 US dollars per person").
### Reduced Motion
All transitions degrade to opacity-only under `prefers-reduced-motion: reduce`: card-image scale disabled, scroll-reveal instant, carousel cross-fades, CTA translate removed.
## 10. Responsive Behavior
### Breakpoints
| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <640px | Nav collapses to logo + hamburger; search widget stacks fields full-width vertically with a full-width red CTA; destination grid 1-up; fare comparison becomes horizontal scroll; footer becomes accordion |
| Tablet | 640–1024px | Condensed nav; search widget 2-row layout; destination grid 2-up; mega-menu becomes a drill-in panel |
| Desktop | 1024–1280px | Full nav with mega-menus; search widget single-row; destination grid 3-up; fare comparison 4-column |
| Wide | >1280px | Content caps at 1280px; side gutters grow; full-bleed photo bands extend edge-to-edge beyond the container |
### Touch Targets
- Primary CTAs: minimum 48×48px
- Search-widget fields: 48px tall tap zones
- Nav / utility icons: 44×44px minimum
- Date-picker day cells: 44×44px on touch (larger than the desktop 36px)
- Carousel dots/arrows: 40×40px tap zones
### Collapsing Strategy
- Top nav collapses to a hamburger drawer below 640px; mega-menus become drill-in sub-panels.
- The search widget reflows from a single horizontal row to a vertical stack of full-width fields, with the red Search button spanning full width at the bottom.
- Destination/offer grids reflow 3-up → 2-up → 1-up.
- The fare-comparison grid (4 cabin classes) becomes a horizontal scroll-snap carousel on mobile, one cabin card per viewport.
- The footer link grid collapses into tap-to-expand accordion sections.
### Image Behavior
Full-bleed hero and destination photography uses `object-fit: cover` and serves art-directed crops per breakpoint (`<picture>` with mobile-portrait vs desktop-landscape sources). Destination-card images clip to the card's top radius with `aspect-ratio` locked (16/9 desktop, 4/3 mobile). Images lazy-load below the fold with a low-res placeholder so the editorial grey canvas never flashes empty.
### Container Queries
Destination and fare cards use container queries so the same card component adapts when placed in a 3-up grid versus a full-width hero slot — the card's headline scales, the fare label switches from inline to stacked, and the CTA grows from text-link to outline button as its container widens.
## 11. Content & Voice
### Tone
Premium-editorial and confidently understated — the **"Fly Better"** register. Emirates speaks like a curated travel magazine rather than a fare aggregator: aspirational but not breathless, warm but never chatty, premium without being exclusionary. Headlines evoke the destination or the experience ("Discover Dubai", "Fly Better", "The world is closer than you think") and let the photography carry the emotion. The voice trusts the reader to be a discerning traveller, not a bargain-hunter being pushed through a funnel.
### Microcopy Patterns
- **Button verbs**: "Search flights", "Book now", "Manage booking", "Explore", "Discover", "Learn more" — outcome-named and inviting, never "Submit" or "Click here".
- **Fare framing**: "from US$520" with the soft "from" prefix above the figure — understated rather than shouting a discount.
- **Helper copy**: instructive and calm — "Add up to 9 passengers", "Select your travel dates", "Choose your cabin".
- **Error recipe**: `[What happened] + [How to fix]`, polite — "Please select a return date, or choose One way."
- **Confirmation**: warm and brief — "Your booking is confirmed. We look forward to welcoming you on board."
### Empty States
- Empty Skywards activity: "No recent activity yet. Start earning Miles on your next flight." — invitational, never blunt.
- No flights found: "We couldn't find flights for those dates. Try adjusting your dates or nearby airports." — names the cause, offers two concrete remedies.
- Empty saved trips: "You haven't saved any trips yet. Tap the heart on any destination to keep it here."
### CTA Verb Conventions
- Primary: **"Search flights"** (entry), **"Book now"** (offer), **"Continue"** (funnel step), **"Confirm booking"** (final).
- Secondary: **"Manage booking"**, **"Learn more"**, **"Explore"**, **"Discover"**.
- Tertiary text: **"View all"**, **"See details"**, **"Read more"**.
- Avoided: "Buy", "Submit", "Click here", aggressive scarcity language — the premium register stays calm.
## 12. Dark Mode & Theming
**Light-only on the public web.** Emirates is engineered around a warm light-grey canvas (`#f6f6f6`) that exists specifically to make full-bleed cabin and destination photography glow — the gallery-wall metaphor only works on a light floor. The brand has no public dark variant, and the reasons are aesthetic and structural: the editorial photography is colour-graded for a light surround, the gold-cream premium accents read as warm only against light, and the white-card-on-grey-canvas elevation model would invert awkwardly on a dark ground.
If a dark theme were ever derived, the disciplined path would be: canvas → a deep neutral charcoal (not pure black), surfaces → one step lighter, headline ink → off-white, the Emirates red held *unchanged* on CTAs and accents (it carries enough luminance to work on dark), and the gold-cream swapped for a richer metallic gold to retain the premium signal. But this is hypothetical — the shipped system is light-only, and the entry documents the light surface as canonical.
The only fixed brand surfaces regardless of context are the red CTA and the red wordmark; everything else lives on the light canvas.
## 13. Lineage & Influences
Emirates' visual lineage runs through **luxury print editorial** more than through web travel UX. The serif-display / sans-UI pairing, the generous whitespace, the full-bleed photography given room to breathe, and the warm-grey-not-white canvas all descend from high-end magazine and lookbook design — the in-flight magazine rendered for the web. Where Booking and Expedia descend from dense commerce funnels, Emirates descends from *Condé Nast Traveller* and the printed airline brochure: photography is the hero, type is the frame, and the chrome stays quiet. The custom serif (`EmiratesSB-Bold`) is the most distinctive brand asset — a bespoke broadsheet face that gives the headlines the gravity of a printed masthead and separates Emirates from every system-font competitor.
The colour discipline — a single red voltage against a neutral ramp, warmed by gold — borrows from **luxury-brand identity systems** (the one-loud-note, everything-else-restrained logic of premium fashion and automotive branding) and from the airline's own Gulf-luxury positioning, where gold reads as premium-cabin and red as the flag-carrier brand. The restrained 3px corner and soft diffuse shadows align with **calm, editorial Swiss-influenced UI** rather than the bubbly consumer-warm aesthetic. What Emirates rejects: density-first funnels (it gives heroes a full viewport instead), pill buttons (too consumer-warm), multi-accent semantic colour systems (one red voltage does the brand work), harsh white canvases (the grey is deliberate), and dark mode (it would kill the photography).
**Influences:**
- Condé Nast Traveller — luxury travel-editorial photography-led layout, [cntraveller.com](https://www.cntraveller.com)
- Aesop — restrained, editorial, single-voltage luxury commerce surface, [aesop.com](https://www.aesop.com)
- Hermès — one-loud-note (orange) luxury brand colour discipline, [hermes.com](https://www.hermes.com)
- Apple — generous whitespace, full-bleed product photography, calm marketing cadence, [apple.com](https://www.apple.com)
- Helvetica / Neue Haas Grotesk — the Swiss sans ancestry of the HelveticaNeue UI stack, [fontsinuse.com/typefaces/4/helvetica](https://fontsinuse.com/typefaces/4/helvetica)
- Monocle — serif-display / sans-body editorial pairing for premium travel publishing, [monocle.com](https://www.monocle.com)
## 14. Do's and Don'ts
**Do**
- Start every surface on the warm light grey (`#f6f6f6`), never stark white — the grey is the brand frame.
- Use Emirates red (`#d71921`) as a single voltage — CTAs, wordmark, active states, links only.
- Set display headlines in the custom serif (`EmiratesSB-Bold`); keep all UI in `HelveticaNeue`.
- Reserve gold-cream (`#fef8d5`) for premium-cabin and Skywards loyalty surfaces — it signals tier.
- Round buttons and inputs at exactly 3px — the signature restrained corner.
- Give sections 64–96px of vertical breathing room — the whitespace is the luxury signal.
- Let full-bleed photography run edge-to-edge and lift white cards off the grey canvas.
- Lead CTAs with inviting outcome verbs ("Explore", "Discover", "Search flights").
- Use the brand red for focus rings — high contrast on the light canvas, intentional in a form-heavy funnel.
- Keep the search widget as the one dense moment; let everything else breathe.
**Don't**
- Don't use pure white as the page canvas — it reads clinical and breaks the gallery-calm mood.
- Don't render headlines in a sans — the custom serif is the premium register; a sans hero loses it.
- Don't use red for small body text — it sits just under AA at body size; `#333333` carries copy.
- Don't introduce a second brand colour — gold is an accent, not a second voltage; red stands alone.
- Don't use pill radius on buttons or cards — that's consumer-warm; Emirates is restrained-premium.
- Don't crowd the layout to fit more above the fold — density reads budget-carrier, not luxury.
- Don't use harsh crisp drop shadows — keep elevation soft and diffuse.
- Don't paint red as a section background or full band — it's a voltage, never a wash.
- Don't use aggressive scarcity microcopy ("Only 1 seat left!") — the voice stays calm and premium.
- Don't flash an empty white viewport while photography loads — hold the grey canvas with placeholders.
- Don't tighten body line-height below 1.6 — the editorial spacing is part of the luxury.
- Don't add dark mode — the photography and gold accents are graded for a light surround.
## 15. Agent Prompt Guide
### Quick Color Reference
```
Canvas (grey): #f6f6f6
Surface (white): #ffffff
Headline ink: #000000
UI ink: #333333
Muted: #666666
Emirates red: #d71921
Red hover: #b8141b
Red deep / danger: #8d0203
Gold-cream: #fef8d5
Gold text: #8a6d00
Hairline border: #e7e7e7
Border strong: #d8d8d8
```
### Example Component Prompts
- "Create an Emirates-style hero: a full-bleed destination photograph with a soft dark gradient at the bottom-left, overlaid with a custom-serif headline ('Fly Better') at ~64px / 700 in white, a one-line lead in HelveticaNeue 18px, and a single Emirates-red (#d71921) CTA 'Search flights' at 3px radius, 48px height. The hero sits on a warm light-grey (#f6f6f6) page canvas with 96px of breathing room beneath."
- "Design a destination card: white surface lifted off a #f6f6f6 canvas, 12px radius, 1px #e7e7e7 hairline, a 16:9 photo clipped to the top (12px 12px 0 0), city name in a custom serif at 22px / 600, fare beneath as a light 'from' label (13px / 200) above '$520' in 24px / 700 tabular HelveticaNeue, and a red text-link 'Explore'. On hover, the card lifts on a soft ambient shadow and the photo scales to 1.04 over 360ms."
- "Build the Emirates flight-search widget: a white card on the grey canvas (12px radius, soft shadow), a tab row (Flight / Flight + Hotel / Manage), then a single row of 48px fields — From, a circular swap control, To, Dates, Passengers + Class — terminating in a full-width-on-mobile / right-anchored red 'Search flights' button at 3px radius. Field focus thickens the border to 2px #d71921 with a faint red ring."
- "Create a fare-comparison grid: four cabin-class cards (Economy / Premium Economy / Business / First) at 8px radius on the grey canvas. The two premium cards carry a gold-cream (#fef8d5) header band and a gold 'PREMIUM' badge (11px / 700 uppercase, #8a6d00 text). The selected card gets a 2px Emirates-red border. Fares render in tabular numerals."
- "Design a premium tier badge: gold-cream (#fef8d5) ground, deep-gold (#8a6d00) text, 2px radius, 3×8px padding, 11px / 700 uppercase letter-spaced 0.08em ('BUSINESS', 'PLATINUM')."
- "Build a primary button: Emirates red (#d71921) fill, white 16px / 700 label, 3px radius, 14×22px padding, 48px height. Hover deepens to #b8141b. Use one per view — it's the system's only red voltage."
### Iteration Guide
1. **Start on warm grey, not white.** `#f6f6f6` is the system — it makes photography glow and reads as gallery-calm. If your canvas is pure white, you've lost the brand on the first decision.
2. **Red is a single voltage.** It belongs on the CTA, the wordmark, links, active states, and small deal flags — nowhere else. If red is a background band or appears more than a few times per view, dial it back.
3. **Serif headlines, sans everything else.** Display tiers are the custom Emirates serif; the search widget, fares, nav, and forms are HelveticaNeue. Inverting either kills the register.
4. **Buttons round at 3px, never pill.** The tight corner is the restraint signal. Pill geometry reads consumer-warm — wrong brand.
5. **Add whitespace.** 64–96px between sections, 1.6 line-height on body, large imagery with room. If it feels airy, you're close; if it feels efficient, you've over-packed it.
6. **Gold means premium.** Reserve `#fef8d5` / `#8a6d00` for cabin-class and Skywards surfaces — it's how the system signals tier without a second loud colour.
7. **Photography is the colour.** Let full-bleed images carry the emotion; keep the chrome quiet (grey canvas, white cards, soft shadows) so the imagery stays the loudest thing on screen.
8. **Keep motion editorial and soft.** Slow image scale-in-clip on hover, gentle scroll-reveal, cross-fades — no snappy bounces. The luxury is in the calm.
---
*Theme-toggle audit: score=0, signals=[skip-link only]. Brand red #d71921 + gold accents supplied from brief; live probe confirmed bg #f6f6f6, ink #000000/#333333, CTA red #d71921, custom serif (EmiratesSB-Bold, Times = fallback only).*
1. Visual Theme & Atmosphere
Emirates is the quiet-luxury end of the travel-marketplace spectrum — where Booking sells and Airbnb whispers, Emirates curates. The base canvas is not stark white but a soft, warm light grey (#f6f6f6), and that single decision sets the entire mood. Pure white reads as clinical, utilitarian, transactional; the light-grey floor reads as a gallery wall, a printed page, a premium in-flight magazine. Against it, the full-bleed cabin photography, destination plates, and Skywards lifestyle imagery glow rather than glare. The grey is the frame; the photography is the art.
The whole system pivots on a single voltage: the unmistakable Emirates red (#d71921). It is used with luxury-brand discipline — never as a wash, never as a band, almost never as a surface larger than a button. It paints the primary CTA (“Search flights”, “Book now”), the wordmark, the active nav underline, the Skywards accents, and the occasional urgency flag. Everywhere else the system runs on a restrained neutral ramp: near-black headlines (#000000), a slightly softer UI ink (#333333), and a graded family of greys for metadata, borders, and disabled states. The red is the only loud note in an otherwise hushed composition, which is precisely what gives it power.
Type is where Emirates declares its premium register most clearly. Display headlines render in the brand’s custom serif — EmiratesSB-Bold — a Gulf-luxury broadsheet face with the gravity of a printed masthead. (A naive CSS audit catches Times, but that is only the system fallback that paints for a few hundred milliseconds before the brand webfont swaps in; the real face is the bespoke Emirates serif, and the entry is authored to that intent.) The serif headlines are paired against a clean HelveticaNeue UI sans for everything functional: fare tables, the search widget, form fields, navigation, and fine print. This serif-display / sans-UI pairing is the typographic signature — editorial gravitas up top, Swiss legibility in the working parts.
The shape language is soft but restrained. Buttons round at a tight 3px — enough to feel considered, never so much as to read consumer-warm or playful. Cards round at 8–12px, image plates clip cleanly, and the only true pill in the system is the occasional filter or carousel-dot control. Nothing is sharp-cornered and nothing is bubbly; the geometry sits in the same understated middle register as the colour. Warmed by gold-cream accents (#fef8d5) on premium-cabin and loyalty surfaces, the palette gains a single hint of warmth that keeps the red from feeling corporate and signals the airline’s premium tiers without shouting.
The atmosphere, in a phrase, is luxurious editorial calm. The layout is spacious and photography-led — generous vertical rhythm between sections, large imagery given room to breathe, and the premium-editorial voice of the Fly Better campaign carried throughout. Where a low-cost carrier crams fares and upsells above the fold, Emirates gives a single hero a full viewport, lets a destination photo run edge to edge, and trusts the user to scroll. It is a surface that feels printed and curated rather than engineered for conversion density — and that restraint is the brand.
Key Characteristics:
- Warm light-grey canvas (
#f6f6f6), never stark white — the gallery-wall frame for full-bleed photography - Single red voltage (
#d71921) used with luxury discipline: CTAs, wordmark, active states only - Custom serif display (
EmiratesSB-Bold) for editorial gravity;HelveticaNeuesans for all UI - Gold-cream accents (
#fef8d5) reserved for premium-cabin and Skywards loyalty surfaces - Restrained shape language: 3px buttons, 8–12px cards, soft never bubbly
- Spacious, photography-led layout with generous whitespace and large hero imagery
- Premium-editorial register — the “Fly Better” voice — calm, confident, understated
- Neutral ink ramp (black →
#333333→ greys) does all the non-brand work; red carries the brand - Serif-display / sans-UI pairing as the core typographic signature
- Photography is the colour; the chrome stays quiet so the imagery stays loud
2. Color Palette & Roles
Canvas & Surface
- Canvas (
#f6f6f6): the default page floor for every public page — a warm light grey, not white. The single most important brand decision; pure white would read clinical. - Surface / Card (
#ffffff): cards and elevated panels lift to true white against the grey canvas, creating separation without a border or heavy shadow. - Surface Soft (
#efefef): alt rows, disabled fields, secondary fills — one step below canvas. - Surface Cream (
#fef8d5): the gold-cream premium tint — Skywards bands, premium-cabin callouts, tier markers.
Text / Ink
- Headline Ink (
#000000): near-pure black, reserved for serif display headlines where maximum gravity is wanted. - UI Ink (
#333333): the dominant working-text colour — body copy, fare tables, nav labels, form values. Softer than black, easier on dense UI. - Muted (
#666666): secondary metadata, sub-labels, helper text, captions. - Soft / Disabled (
#999999): placeholders, disabled control text, faint legends. - On-Brand (
#ffffff): white text on the red CTA and any red surface.
Brand
- Emirates Red (
#d71921): the brand colour and the system’s only voltage. Primary CTA fill, wordmark, active nav underline, urgency flags, Skywards red accents. - Red Hover (
#b8141b): hover/active deepening of the brand red on interactive surfaces. - Red Deep (
#8d0203): error/danger text and the deepest red used in validation and the wordmark on light surfaces.
Accent (Gold)
- Gold-Cream (
#fef8d5): the soft premium tint — surface ground for tier badges, loyalty bands, premium-cabin callouts. - Gold Text (
#8a6d00): the deep-gold ink that sits on the cream surface — used for “First”, “Business”, “Platinum” labels. - Bronze (
#af5541): a warm terracotta-bronze used sparingly on illustrative loyalty graphics and premium accents.
Interactive
- Link (
#d71921): inline text links default to brand red, underlined on hover. - Link Hover (
#b8141b): hover deepens. - Focus Ring (
#d71921): a 2px red ring with offset — the focus indicator reuses the brand on the light canvas. - Selected (
#fef8d5fill /#d71921marker — active tabs, selected dates, chosen fares).
Borders
- Hairline (
#e7e7e7): the default 1px card and divider border. - Border Strong (
#d8d8d8): input outlines, control borders, ghost-button edges. - Divider (
#dddddd): section dividers and table rules.
Shadow Colors
Shadows stay neutral-black-tinted and soft — Emirates favours diffuse ambient lift over crisp drop shadows, in keeping with the gallery-calm aesthetic.
rgba(0,0,0,0.04) 0 1px 2px— flat ambientrgba(0,0,0,0.08) 0 2px 8px— card restingrgba(0,0,0,0.12) 0 8px 24px— card hover liftrgba(0,0,0,0.2) 0 16px 48px— modal
Semantic
- Success (
#1a7a3con#e8f5ec): confirmation green — “Booking confirmed”, “Seat selected”. - Warning (
#8a6d00on#fef8d5): advisory — reuses the gold ramp for soft cautions (“Fare changes apply”). - Danger (
#8d0203on#f9e6e9): validation error red, on a soft red tint. Distinct from brand red — deeper, used only for errors. - Info (
#406dc0on#f0f4ff): informational notices (schedule changes, currency). Muted blue, used rarely so it never competes with the red.
3. Typography Rules
Font Family
Display (custom serif): EmiratesSB-Bold — the bespoke Emirates serif, a Gulf-luxury broadsheet face used for hero headlines and section titles. Fallback chain: Georgia, "Times New Roman", Times, serif. A CSS audit of the live site catches Times because it is the last-resort fallback that paints during the brief window before the brand webfont loads — the intended and rendered face is the custom Emirates serif. The companion display family on some marketing surfaces is Emirates-Bold / EmiratesSM, and a condensed display face, Heroic-Medium, appears on campaign overlays.
UI / Body (sans): HelveticaNeue — HelveticaNeue, "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif, with HelveticaNeue-Light (weight 200) for large light labels. Everything functional — the search widget, fare tables, navigation, forms, fine print — runs in this clean Swiss sans. The serif/sans split is deliberate: editorial gravity up top, transactional legibility in the working parts.
Mono companion: not used in the marketing surface. Monospace is reserved for booking-reference and PNR codes where fixed-width column alignment matters.
Webfont strategy: the custom serif and Emirates-Bold faces are loaded as brand webfonts with Georgia/Times as the FOUT fallback. Headlines may flash in the serif fallback for a beat on first paint; the system tolerates this because the fallback is itself a serif and the layout metrics are close.
Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| display-hero | EmiratesSB-Bold (serif) | 64 | 700 | 1.05 | -0.02em | Homepage hero (“Fly Better”) |
| display-lg | EmiratesSB-Bold (serif) | 48 | 700 | 1.08 | -0.015em | Campaign / landing headlines |
| h1 | EmiratesSB-Bold (serif) | 36 | 700 | 1.12 | -0.01em | Page titles |
| h2 | EmiratesSB-Bold (serif) | 28 | 600 | 1.20 | -0.005em | Section heads (“Where to next”) |
| h3 | EmiratesSB-Bold (serif) | 22 | 600 | 1.25 | 0 | Card titles, sub-sections |
| h4 | HelveticaNeue (sans) | 18 | 700 | 1.30 | 0 | UI titles, widget labels (“Search flights”) |
| body-lg | HelveticaNeue (sans) | 18 | 400 | 1.60 | 0 | Lead paragraphs, editorial intros |
| body | HelveticaNeue (sans) | 16 | 400 | 1.60 | 0 | Default running text |
| body-sm | HelveticaNeue (sans) | 14 | 400 | 1.55 | 0 | Card meta, fare details, secondary copy |
| label | HelveticaNeue (sans) | 13 | 500 | 1.40 | 0.01em | Form field labels, tab labels |
| caption | HelveticaNeue (sans) | 12 | 400 | 1.40 | 0.02em | Captions, fine print, helper text |
| overline | HelveticaNeue (sans) | 11 | 700 | 1.30 | 0.08em | Uppercase eyebrows, badge labels (“FIRST CLASS”) |
| nav-link | HelveticaNeue (sans) | 15 | 500 | 1.00 | 0 | Top-nav items |
| button | HelveticaNeue (sans) | 16 | 700 | 1.00 | 0.01em | CTA labels |
| price | HelveticaNeue (sans) | 24 | 700 | 1.00 | -0.01em | Fare display (tnum) |
| price-from | HelveticaNeue-Light (sans) | 13 | 200 | 1.40 | 0 | ”from” prefix above fare |
Principles
- Serif up top, sans in the working parts. Display tiers (hero → h3) are the custom serif for editorial gravity; everything functional (h4 and below) is
HelveticaNeue. Never invert — a sans hero loses the premium register, a serif fare table loses legibility. - Headlines breathe at tight tracking. Serif display runs negative tracking (-0.02em on hero) so the broadsheet weight feels set rather than spaced. UI sans sits at 0 or faintly positive.
- Line height is generous, not dense. Body at 1.6, leads at 1.6 — Emirates spaces its copy like an editorial spread, the opposite of a dense booking funnel. The whitespace is the luxury.
- Weight does the heavy lifting in UI. The sans ramp leans on the 200 / 400 / 500 / 700 spread;
HelveticaNeue-Light(200) is used at large sizes for an airy, premium feel (“from”, current-location labels). - Uppercase only on overlines and badges. With 0.08em tracking, reserved for eyebrows and tier markers — never on body or buttons.
- Tabular numerals on fares. Prices, fare comparisons, and Skywards-mile counts render with
tnumso columns align in fare tables. - Black for headlines,
#333for UI. The near-black headline ink is reserved for serif display; functional text steps down to#333333to soften the dense working surfaces.
4. Component Stylings
Buttons
button-primary — Emirates red (#d71921) fill, white text at 16px / 700, 3px radius, ~14×22px padding, 48px height. The single red voltage moment in the funnel: “Search flights”, “Book now”, “Continue”. Hover deepens to #b8141b. Used sparingly — typically one primary per view.
button-secondary — Transparent fill, Emirates-red text, 1px red outline, 3px radius, 48px height. “Manage booking”, “Learn more”. The outline-red treatment over the grey canvas — present but quieter than the filled primary.
button-ghost — Transparent fill, #333333 text, 1px #d8d8d8 border, 3px radius. Neutral/tertiary actions where red would be too loud. Hover darkens the border and ink.
button-text — Plain red text, no surface, no border. Underlined on hover. “View all destinations”, “See fare details”, “Read more” — the lightest interactive weight.
All buttons share the 3px radius — Emirates’ signature restraint. Never pill, never sharp; the tight radius reads “considered” without consumer warmth.
Cards
destination-card — The system’s workhorse. White surface on the grey canvas, 12px radius, 1px #e7e7e7 hairline, 24px padding. A full-bleed destination photo clips to the top (12px 12px 0 0), city name in serif h3, fare in price with a price-from prefix, and a button-text “Explore” link. Hover lifts with the soft ambient shadow and the image scales subtly within its clip.
offer-card — Promotional card with a larger photo plate and optional red badge-deal flag top-left. Serif headline, body-sm description, secondary outline CTA. Used in the “Special offers” carousel.
fare-card — Cabin/fare-class comparison card (Economy / Premium Economy / Business / First). White surface, 8px radius; premium tiers (Business, First) carry a gold-cream (#fef8d5) header band and a gold badge. The selected fare gets a 2px red border.
skywards-card — Loyalty card on the grey canvas with a gold-cream tint or bronze illustrative graphic. Tier label in gold badge, miles balance in tabular price type.
Badges, Tags, Pills
badge (premium / tier) — Gold-cream (#fef8d5) ground, deep-gold (#8a6d00) text, 2px radius, 3×8px padding, 11px / 700 uppercase. “FIRST”, “BUSINESS”, “PLATINUM” — the loyalty and premium-cabin markers.
badge-deal — Emirates-red fill, white text, 2px radius. “SPECIAL FARE”, “LIMITED OFFER” — the only place red appears as a small surface other than the CTA. Fires on offer-card images.
status-pill — Pill-shaped (9999px), hairline border, #333 text. Carousel position dots and filter chips — the rare true-pill geometry, reserved for repeatedly-toggled controls.
Inputs / Forms
text-input — White surface, 1px #d8d8d8 border, 3px radius, 48px height, 12×14px padding, #333 value text. Label above in label (13px / 500). On focus, the border thickens to 2px Emirates red with a faint red focus ring — the brand colour reused as the focus signal.
search-widget — Emirates’ most iconic component. The flight-search panel sits as a white card lifted off the grey canvas (12px radius, ambient shadow), divided into tabbed segments (Flight / Flight + Hotel / Manage), then field rows: From, To (with a swap control), Dates, Passengers + Class. Each field is a 48px input; the whole panel terminates in a full-width or right-anchored red button-primary “Search flights”. The widget is the one place the system tolerates density — everything else breathes.
select / dropdown — Matches text-input metrics; the open menu lifts on the dropdown shadow with a 1px hairline ring, items at 16px / 400, hover row tints to #f6f6f6, selected row carries a red check.
Navigation
top-nav — White or grey ground, 64px tall, wordmark (Emirates serif-script) flush left in red, primary nav centred-left (Plan and book, Experience, Skywards, Help), utilities flush right (region/language, login, search icon). Nav items in nav-link (15px / 500 #333); the active/hover item grows a 2px red underline from center.
mega-menu — Full-width panel that drops below the nav on hover/focus, white surface, organised into columns with serif column heads and sans link lists, often with a photographic promo tile on the right. Generous internal padding (32–48px).
footer — Light-grey ground, multi-column link grid with serif column heads, region selector, app-store badges, social row, and legal fine print in caption muted. Collapses to accordion on mobile.
5. Layout Principles
Spacing System
- Base unit: 4px
- Scale:
0 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128 - Section padding (vertical): 64–96px for marketing bands, 48px for content sections — generous, editorial, the opposite of a dense funnel. The whitespace is the luxury signal.
- Card internal padding: 24px standard, 32px on feature cards
- Gutters: 24px between cards in a grid, 16px on dense fare rows, 32px between major content blocks
Grid & Container
- Max content width: 1280px centred, with comfortable side gutters that grow at wide breakpoints
- Marketing pages: full-bleed photographic heroes that break the container, with text and CTAs constrained to the 1280px column
- Destination grids: 3-up at desktop, 2-up at tablet, 1-up at mobile, 24px gutters
- Fare comparison: 4-column cabin-class grid (Economy / Premium / Business / First) that becomes a horizontal scroll on mobile
- Prose / editorial content: constrained to ~720px for comfortable reading measure
Whitespace Philosophy
Whitespace is the brand’s primary luxury cue. Where a budget carrier minimises empty space to maximise upsells above the fold, Emirates gives a single hero a full viewport, lets destination photography run edge to edge, and stacks sections with 64–96px of vertical breathing room. The grey canvas between white cards reads as deliberate negative space, not emptiness. The rule: when in doubt, add space — the surface should feel curated, never crammed.
Section Cadence
The page alternates between full-bleed photographic bands (edge-to-edge cabin or destination imagery with overlaid serif headline + single CTA) and carded content sections (white cards floating on the grey canvas — destinations, offers, Skywards). The red appears only as CTAs and small accents within this cadence; it is never a section background. The rhythm — photo band, breathe, card grid, breathe, photo band — is what makes the site feel like a printed editorial spread.
6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| Micro | 2px | Badges, tier markers, deal flags |
| Standard | 3px | Buttons, inputs, selects — Emirates’ signature restrained corner |
| Comfortable | 8px | Fare cards, small panels, image thumbnails |
| Relaxed | 12px | Destination/offer cards, the search widget, image plates |
| Large | 16px | Feature callouts, hero overlay cards |
| Pill | 9999px | Carousel dots, filter chips, status pills — repeatedly-toggled controls only |
The defining choice is the 3px button radius — tighter than the 8px most consumer brands use, looser than a hard square. It signals “considered, premium, restrained” rather than “warm, friendly, playful.” Cards step up to 8–12px so photography clips softly, and image plates that meet card content use compound radii (12px 12px 0 0) to flush the photo to the body beneath. Pill geometry is rationed to controls the user toggles repeatedly — it never appears on buttons or cards, which would push the system toward the consumer-warm register Emirates deliberately avoids.
7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 — Flat | no shadow | Canvas, full-bleed photo bands, footer, nav (~80% of surfaces) |
| 1 — Resting card | rgba(0,0,0,0.04) 0 1px 2px, rgba(0,0,0,0.08) 0 2px 8px | Destination/offer/fare cards at rest, the search widget |
| 2 — Hover lift | rgba(0,0,0,0.12) 0 8px 24px | Cards on hover, mega-menu and dropdown panels |
| 3 — Modal | rgba(0,0,0,0.2) 0 16px 48px | Dialogs (date picker, passenger selector, login) |
| 4 — Scrim | rgba(0,0,0,0.5) ground | Global modal backdrop |
Shadow Philosophy
Emirates favours soft, diffuse, neutral-black-tinted shadows over crisp drop shadows — the elevation should feel like a print plate lifted off a page, not a UI chip popped above a surface. The resting card shadow is gentle (8% / 2px / 8px blur); hover lifts to a wider, slightly deeper ambient shadow (12% / 8px / 24px blur) that reads as “this is interactive” without jumping. The white-card-on-grey-canvas contrast does much of the separation work, so shadows can stay subtle — the grey floor already gives every white card a clear edge.
There are no progressive Material-style elevation tiers. The model is essentially three steps: flat (most of the page), resting card, hover/menu lift, plus the modal step. The system trusts the canvas-to-surface contrast, the soft shadows, and the generous whitespace to communicate layering — never harsh depth.
8. Interaction & Motion
Easing
- Standard:
cubic-bezier(0.4, 0, 0.2, 1)— hover lifts, colour swaps, underline grows, hairline transitions - Emphasized:
cubic-bezier(0.2, 0, 0, 1)— modal entry, mega-menu drop, search-widget tab switch - Out-soft:
cubic-bezier(0.0, 0, 0.2, 1)— carousel slide, date-picker month flip, image cross-fade
Durations
| Bucket | Value | Use |
|---|---|---|
| Fast | 150ms | Hover colour swaps, nav underline grow, button press, focus ring |
| Standard | 240ms | Card hover lift, dropdown open, image scale-in-clip |
| Slow | 360ms | Mega-menu drop, carousel slide, full-bleed hero cross-fade, page transitions |
Per-Component Recipes
- Primary CTA hover: background
#d71921→#b8141bover 150ms standard; subtle 1px translate-up optional, suppressed under reduced motion. - Card hover: shadow tier 1 → 2 over 240ms standard, and the clipped photo scales
1.0 → 1.04over 360ms out-soft — a slow, luxurious image breath inside the card frame. - Nav underline: a 2px red underline grows from center (
scaleX 0 → 1) over 150ms standard on hover/active. - Search-widget tab switch: active tab indicator slides over 240ms emphasized; panel content cross-fades 150ms.
- Mega-menu: drops with
translateY(-8px) opacity(0)→translateY(0) opacity(1)over 360ms emphasized; closes faster (200ms) on mouse-leave. - Modal enter: scrim fades over 200ms ease-out, dialog
translateY(12px) opacity(0)→ settled over 240ms emphasized. - Carousel: destination/offer slides translate over 360ms out-soft with the dots updating instantly.
Page Transitions
Marketing pages favour soft cross-fades on full-bleed hero imagery and gentle scroll-reveal of carded sections (fade + 12px rise as they enter the viewport). The booking funnel itself stays restrained — content swaps with a quick 200ms fade rather than slides, keeping the transactional path fast. Motion is editorial flourish on marketing surfaces, near-invisible utility in the funnel.
Reduced Motion
Respects prefers-reduced-motion: reduce. All transforms suppress: the card-image scale-in-clip is disabled, the CTA translate-up is removed, scroll-reveal becomes instant, and the carousel cross-fades instead of sliding. Only opacity transitions remain. Because the system is already low-motion and editorial, reduced-motion mode looks nearly identical to the default.
9. Accessibility & A11y
Contrast Pairs
| Pair | Ratio | Level |
|---|---|---|
| #000000 headline on #f6f6f6 canvas | 19.6 | AAA |
| #333333 UI ink on #f6f6f6 canvas | 11.6 | AAA |
| #ffffff on #d71921 brand red | 4.8 | AA body / AAA large |
| #d71921 brand red on #f6f6f6 canvas | 4.4 | AA large / AA UI components |
| #666666 muted on #f6f6f6 canvas | 4.6 | AA body |
| #8a6d00 gold text on #fef8d5 cream | 5.6 | AA body |
| #8d0203 danger on #f9e6e9 soft red | 8.9 | AAA |
Note: the brand red on the light canvas clears AA for large text and UI components but sits just under AA for small body text — so red is used for CTAs, large accents, and links (underlined), never for small body copy, where #333333 carries the load.
Focus Indicators
Focus ring is 2px solid Emirates red (#d71921) with a 2px outline-offset — the brand colour reused as the focus signal on the light canvas. It is high-contrast against both the grey canvas and white cards. Inputs additionally thicken their border to 2px red on focus. The funnel is form-heavy (dates, passengers, payment), so a clearly visible brand-coloured ring is intentional.
ARIA Patterns
- Search widget:
role="search"on the panel; the From/To/Dates/Passengers controls are buttons that openrole="dialog"overlays (airport autocomplete, calendar, passenger stepper). - Tabs (Flight / Flight + Hotel / Manage):
role="tablist"witharia-selected; panelsrole="tabpanel"witharia-labelledby. - Date picker:
role="application"witharia-label="Select departure and return dates"; day cellsrole="gridcell"witharia-selectedand fullaria-label(“Tuesday 14 May, departure”). - Cards: each destination card is a single
<a>with a verbosearia-label(“Dubai, fares from US$520, Explore destination”). - Mega-menu:
aria-expandedon the trigger; focus moves into the panel on open; Esc closes and returns focus. - Skip link: the first focusable element (“Skip to the main content”) — the one CTA the seed audit caught — visible on focus.
Keyboard Navigation
- Skip link first, then logo → primary nav (left → right) → utilities → search.
- Search widget: Tab From → To → Dates → Passengers/Class → Search button.
- Date picker: arrow keys navigate days, Enter selects, Esc closes.
- Mega-menu: Enter/Space opens, arrow keys move within columns, Esc closes.
- Carousels: arrow keys move slides; dots are focusable buttons.
Screen Reader Hints
Emirates uses visible verb-led labels rather than icon-only controls — every CTA names its outcome (“Search flights”, “Manage booking”). The few icon-only controls (search toggle, swap From/To, carousel arrows) carry explicit aria-labels. Fare figures pair the number with a screen-reader-friendly currency/period (“from 520 US dollars per person”).
Reduced Motion
All transitions degrade to opacity-only under prefers-reduced-motion: reduce: card-image scale disabled, scroll-reveal instant, carousel cross-fades, CTA translate removed.
10. Responsive Behavior
Breakpoints
| Name | Width | Key Changes |
|---|---|---|
| Mobile | <640px | Nav collapses to logo + hamburger; search widget stacks fields full-width vertically with a full-width red CTA; destination grid 1-up; fare comparison becomes horizontal scroll; footer becomes accordion |
| Tablet | 640–1024px | Condensed nav; search widget 2-row layout; destination grid 2-up; mega-menu becomes a drill-in panel |
| Desktop | 1024–1280px | Full nav with mega-menus; search widget single-row; destination grid 3-up; fare comparison 4-column |
| Wide | >1280px | Content caps at 1280px; side gutters grow; full-bleed photo bands extend edge-to-edge beyond the container |
Touch Targets
- Primary CTAs: minimum 48×48px
- Search-widget fields: 48px tall tap zones
- Nav / utility icons: 44×44px minimum
- Date-picker day cells: 44×44px on touch (larger than the desktop 36px)
- Carousel dots/arrows: 40×40px tap zones
Collapsing Strategy
- Top nav collapses to a hamburger drawer below 640px; mega-menus become drill-in sub-panels.
- The search widget reflows from a single horizontal row to a vertical stack of full-width fields, with the red Search button spanning full width at the bottom.
- Destination/offer grids reflow 3-up → 2-up → 1-up.
- The fare-comparison grid (4 cabin classes) becomes a horizontal scroll-snap carousel on mobile, one cabin card per viewport.
- The footer link grid collapses into tap-to-expand accordion sections.
Image Behavior
Full-bleed hero and destination photography uses object-fit: cover and serves art-directed crops per breakpoint (<picture> with mobile-portrait vs desktop-landscape sources). Destination-card images clip to the card’s top radius with aspect-ratio locked (16/9 desktop, 4/3 mobile). Images lazy-load below the fold with a low-res placeholder so the editorial grey canvas never flashes empty.
Container Queries
Destination and fare cards use container queries so the same card component adapts when placed in a 3-up grid versus a full-width hero slot — the card’s headline scales, the fare label switches from inline to stacked, and the CTA grows from text-link to outline button as its container widens.
11. Content & Voice
Tone
Premium-editorial and confidently understated — the “Fly Better” register. Emirates speaks like a curated travel magazine rather than a fare aggregator: aspirational but not breathless, warm but never chatty, premium without being exclusionary. Headlines evoke the destination or the experience (“Discover Dubai”, “Fly Better”, “The world is closer than you think”) and let the photography carry the emotion. The voice trusts the reader to be a discerning traveller, not a bargain-hunter being pushed through a funnel.
Microcopy Patterns
- Button verbs: “Search flights”, “Book now”, “Manage booking”, “Explore”, “Discover”, “Learn more” — outcome-named and inviting, never “Submit” or “Click here”.
- Fare framing: “from US$520” with the soft “from” prefix above the figure — understated rather than shouting a discount.
- Helper copy: instructive and calm — “Add up to 9 passengers”, “Select your travel dates”, “Choose your cabin”.
- Error recipe:
[What happened] + [How to fix], polite — “Please select a return date, or choose One way.” - Confirmation: warm and brief — “Your booking is confirmed. We look forward to welcoming you on board.”
Empty States
- Empty Skywards activity: “No recent activity yet. Start earning Miles on your next flight.” — invitational, never blunt.
- No flights found: “We couldn’t find flights for those dates. Try adjusting your dates or nearby airports.” — names the cause, offers two concrete remedies.
- Empty saved trips: “You haven’t saved any trips yet. Tap the heart on any destination to keep it here.”
CTA Verb Conventions
- Primary: “Search flights” (entry), “Book now” (offer), “Continue” (funnel step), “Confirm booking” (final).
- Secondary: “Manage booking”, “Learn more”, “Explore”, “Discover”.
- Tertiary text: “View all”, “See details”, “Read more”.
- Avoided: “Buy”, “Submit”, “Click here”, aggressive scarcity language — the premium register stays calm.
12. Dark Mode & Theming
Light-only on the public web. Emirates is engineered around a warm light-grey canvas (#f6f6f6) that exists specifically to make full-bleed cabin and destination photography glow — the gallery-wall metaphor only works on a light floor. The brand has no public dark variant, and the reasons are aesthetic and structural: the editorial photography is colour-graded for a light surround, the gold-cream premium accents read as warm only against light, and the white-card-on-grey-canvas elevation model would invert awkwardly on a dark ground.
If a dark theme were ever derived, the disciplined path would be: canvas → a deep neutral charcoal (not pure black), surfaces → one step lighter, headline ink → off-white, the Emirates red held unchanged on CTAs and accents (it carries enough luminance to work on dark), and the gold-cream swapped for a richer metallic gold to retain the premium signal. But this is hypothetical — the shipped system is light-only, and the entry documents the light surface as canonical.
The only fixed brand surfaces regardless of context are the red CTA and the red wordmark; everything else lives on the light canvas.
13. Lineage & Influences
Emirates’ visual lineage runs through luxury print editorial more than through web travel UX. The serif-display / sans-UI pairing, the generous whitespace, the full-bleed photography given room to breathe, and the warm-grey-not-white canvas all descend from high-end magazine and lookbook design — the in-flight magazine rendered for the web. Where Booking and Expedia descend from dense commerce funnels, Emirates descends from Condé Nast Traveller and the printed airline brochure: photography is the hero, type is the frame, and the chrome stays quiet. The custom serif (EmiratesSB-Bold) is the most distinctive brand asset — a bespoke broadsheet face that gives the headlines the gravity of a printed masthead and separates Emirates from every system-font competitor.
The colour discipline — a single red voltage against a neutral ramp, warmed by gold — borrows from luxury-brand identity systems (the one-loud-note, everything-else-restrained logic of premium fashion and automotive branding) and from the airline’s own Gulf-luxury positioning, where gold reads as premium-cabin and red as the flag-carrier brand. The restrained 3px corner and soft diffuse shadows align with calm, editorial Swiss-influenced UI rather than the bubbly consumer-warm aesthetic. What Emirates rejects: density-first funnels (it gives heroes a full viewport instead), pill buttons (too consumer-warm), multi-accent semantic colour systems (one red voltage does the brand work), harsh white canvases (the grey is deliberate), and dark mode (it would kill the photography).
Influences:
- Condé Nast Traveller — luxury travel-editorial photography-led layout, cntraveller.com
- Aesop — restrained, editorial, single-voltage luxury commerce surface, aesop.com
- Hermès — one-loud-note (orange) luxury brand colour discipline, hermes.com
- Apple — generous whitespace, full-bleed product photography, calm marketing cadence, apple.com
- Helvetica / Neue Haas Grotesk — the Swiss sans ancestry of the HelveticaNeue UI stack, fontsinuse.com/typefaces/4/helvetica
- Monocle — serif-display / sans-body editorial pairing for premium travel publishing, monocle.com
14. Do’s and Don’ts
Do
- Start every surface on the warm light grey (
#f6f6f6), never stark white — the grey is the brand frame. - Use Emirates red (
#d71921) as a single voltage — CTAs, wordmark, active states, links only. - Set display headlines in the custom serif (
EmiratesSB-Bold); keep all UI inHelveticaNeue. - Reserve gold-cream (
#fef8d5) for premium-cabin and Skywards loyalty surfaces — it signals tier. - Round buttons and inputs at exactly 3px — the signature restrained corner.
- Give sections 64–96px of vertical breathing room — the whitespace is the luxury signal.
- Let full-bleed photography run edge-to-edge and lift white cards off the grey canvas.
- Lead CTAs with inviting outcome verbs (“Explore”, “Discover”, “Search flights”).
- Use the brand red for focus rings — high contrast on the light canvas, intentional in a form-heavy funnel.
- Keep the search widget as the one dense moment; let everything else breathe.
Don’t
- Don’t use pure white as the page canvas — it reads clinical and breaks the gallery-calm mood.
- Don’t render headlines in a sans — the custom serif is the premium register; a sans hero loses it.
- Don’t use red for small body text — it sits just under AA at body size;
#333333carries copy. - Don’t introduce a second brand colour — gold is an accent, not a second voltage; red stands alone.
- Don’t use pill radius on buttons or cards — that’s consumer-warm; Emirates is restrained-premium.
- Don’t crowd the layout to fit more above the fold — density reads budget-carrier, not luxury.
- Don’t use harsh crisp drop shadows — keep elevation soft and diffuse.
- Don’t paint red as a section background or full band — it’s a voltage, never a wash.
- Don’t use aggressive scarcity microcopy (“Only 1 seat left!”) — the voice stays calm and premium.
- Don’t flash an empty white viewport while photography loads — hold the grey canvas with placeholders.
- Don’t tighten body line-height below 1.6 — the editorial spacing is part of the luxury.
- Don’t add dark mode — the photography and gold accents are graded for a light surround.
15. Agent Prompt Guide
Quick Color Reference
Canvas (grey): #f6f6f6
Surface (white): #ffffff
Headline ink: #000000
UI ink: #333333
Muted: #666666
Emirates red: #d71921
Red hover: #b8141b
Red deep / danger: #8d0203
Gold-cream: #fef8d5
Gold text: #8a6d00
Hairline border: #e7e7e7
Border strong: #d8d8d8
Example Component Prompts
- “Create an Emirates-style hero: a full-bleed destination photograph with a soft dark gradient at the bottom-left, overlaid with a custom-serif headline (‘Fly Better’) at ~64px / 700 in white, a one-line lead in HelveticaNeue 18px, and a single Emirates-red (#d71921) CTA ‘Search flights’ at 3px radius, 48px height. The hero sits on a warm light-grey (#f6f6f6) page canvas with 96px of breathing room beneath.”
- “Design a destination card: white surface lifted off a #f6f6f6 canvas, 12px radius, 1px #e7e7e7 hairline, a 16:9 photo clipped to the top (12px 12px 0 0), city name in a custom serif at 22px / 600, fare beneath as a light ‘from’ label (13px / 200) above ‘$520’ in 24px / 700 tabular HelveticaNeue, and a red text-link ‘Explore’. On hover, the card lifts on a soft ambient shadow and the photo scales to 1.04 over 360ms.”
- “Build the Emirates flight-search widget: a white card on the grey canvas (12px radius, soft shadow), a tab row (Flight / Flight + Hotel / Manage), then a single row of 48px fields — From, a circular swap control, To, Dates, Passengers + Class — terminating in a full-width-on-mobile / right-anchored red ‘Search flights’ button at 3px radius. Field focus thickens the border to 2px #d71921 with a faint red ring.”
- “Create a fare-comparison grid: four cabin-class cards (Economy / Premium Economy / Business / First) at 8px radius on the grey canvas. The two premium cards carry a gold-cream (#fef8d5) header band and a gold ‘PREMIUM’ badge (11px / 700 uppercase, #8a6d00 text). The selected card gets a 2px Emirates-red border. Fares render in tabular numerals.”
- “Design a premium tier badge: gold-cream (#fef8d5) ground, deep-gold (#8a6d00) text, 2px radius, 3×8px padding, 11px / 700 uppercase letter-spaced 0.08em (‘BUSINESS’, ‘PLATINUM’).”
- “Build a primary button: Emirates red (#d71921) fill, white 16px / 700 label, 3px radius, 14×22px padding, 48px height. Hover deepens to #b8141b. Use one per view — it’s the system’s only red voltage.”
Iteration Guide
- Start on warm grey, not white.
#f6f6f6is the system — it makes photography glow and reads as gallery-calm. If your canvas is pure white, you’ve lost the brand on the first decision. - Red is a single voltage. It belongs on the CTA, the wordmark, links, active states, and small deal flags — nowhere else. If red is a background band or appears more than a few times per view, dial it back.
- Serif headlines, sans everything else. Display tiers are the custom Emirates serif; the search widget, fares, nav, and forms are HelveticaNeue. Inverting either kills the register.
- Buttons round at 3px, never pill. The tight corner is the restraint signal. Pill geometry reads consumer-warm — wrong brand.
- Add whitespace. 64–96px between sections, 1.6 line-height on body, large imagery with room. If it feels airy, you’re close; if it feels efficient, you’ve over-packed it.
- Gold means premium. Reserve
#fef8d5/#8a6d00for cabin-class and Skywards surfaces — it’s how the system signals tier without a second loud colour. - Photography is the colour. Let full-bleed images carry the emotion; keep the chrome quiet (grey canvas, white cards, soft shadows) so the imagery stays the loudest thing on screen.
- Keep motion editorial and soft. Slow image scale-in-clip on hover, gentle scroll-reveal, cross-fades — no snappy bounces. The luxury is in the calm.
Theme-toggle audit: score=0, signals=[skip-link only]. Brand red #d71921 + gold accents supplied from brief; live probe confirmed bg #f6f6f6, ink #000000/#333333, CTA red #d71921, custom serif (EmiratesSB-Bold, Times = fallback only).
Drop emirates into your project, then ship the actual sections in an afternoon.
npx @webdesignhot/design-md add emirates npx agentkit init --design emirates