DESIGN.md · Analysis

Flightradar24

flightradar24.com · 25 Aug 2026 · 47 colors · Open Sans

Flightradar24

Real-time flight tracking platform that transforms live aviation data into an intuitive, data-rich visual experience. Serves aviation enthusiasts, professionals, and casual travelers seeking precise, up-to-the-minute flight information.

Colors

surface#f8f8f8
surface-dim#e9e9e9
surface-bright#ffffff
surface-container-lowest#f0f0f0
surface-container-low#f5f5f5
surface-container#fafafa
surface-container-high#e5e5e5
surface-container-highest#d1d0d0
on-surface#303030
on-surface-variant#a4a1a1
inverse-surface#222121
inverse-on-surface#f8f8f8
outline#a3a3a3
outline-variant#d0d0d0
surface-tint#64bef1
primary#64bef1
on-primary#ffffff
primary-container#e0f2f9
on-primary-container#1a4d5f
inverse-primary#327db6
secondary#f8c023
on-secondary#303030
secondary-container#fde8a8
on-secondary-container#5a4a00
tertiary#ff3e5f
on-tertiary#ffffff
tertiary-container#ffd8e7
on-tertiary-container#5a1a2a
error#d73737
on-error#ffffff
error-container#f9dedc
on-error-container#410e0b
primary-fixed#d0e8f5
primary-fixed-dim#a8d4e8
on-primary-fixed#003d52
on-primary-fixed-variant#1a4d5f
secondary-fixed#fde8a8
secondary-fixed-dim#f5d87d
on-secondary-fixed#3a2a00
on-secondary-fixed-variant#5a4a00
tertiary-fixed#ffd8e7
tertiary-fixed-dim#ffb3cc
on-tertiary-fixed#3a0a1a
on-tertiary-fixed-variant#5a1a2a
background#ffffff
on-background#303030
surface-variant#e5e5e5

Typography

display
fontFamily: Open Sans · fontSize: 60px · fontWeight: 700 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: Open Sans · fontSize: 40px · fontWeight: 600 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: Open Sans · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: Open Sans · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0em
body-lg
fontFamily: Open Sans · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0.01em
body-md
fontFamily: Open Sans · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0.01em
label-md
fontFamily: Open Sans · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Open Sans · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

Flightradar24 is a real-time aviation tracking platform that transforms complex flight data into an accessible, intuitive visual experience. The design system embraces 'Data-Driven Minimalism'—a philosophy that prioritizes clarity and precision while maintaining visual warmth through strategic color accents. The brand serves aviation enthusiasts, professionals, and casual travelers who demand accuracy and responsiveness. The UI evokes a sense of control and transparency: users feel empowered to explore live flight information with confidence, never overwhelmed by technical complexity.

The brand voice is precise, authoritative yet approachable, and never sensationalist. Flightradar24 communicates in concrete facts: flight numbers, altitudes, arrival times, and aircraft types. Example sentence in brand voice: 'Flight BA287 departed London Heathrow at 14:32 UTC, currently cruising at 35,000 feet with an estimated arrival in New York at 17:18 local time.' The vocabulary is technical but accessible, avoiding jargon without sacrificing accuracy.

Colors

The color system balances a neutral, professional foundation with strategic accent colors that guide user attention and convey status. Primary (#64bef1) is a cool, confident cyan used exclusively for interactive elements—buttons, links, focus states, and data highlights on the live map. This color appears frequently but never dominates; it acts as a visual anchor that users learn to associate with actionable elements. Secondary (#f8c023) is a warm, energetic gold that highlights premium features, special offers, and calls-to-action for subscription upgrades; it appears less frequently but with high visual impact. Tertiary (#ff3e5f) is a vibrant coral-red reserved for alerts, errors, and critical status indicators—drawing immediate attention when aircraft are in distress or data is anomalou

Typography

The type system uses Open Sans exclusively, a humanist sans-serif that conveys both technical precision and approachability. Display (60px, 700 weight, -0.04em tracking) anchors hero sections and major page titles; headline-lg (40px, 600 weight) introduces key sections like 'Flight tracker map' or 'Premium features'; headline-md (28px, 600 weight) breaks content into digestible chunks. Body-lg (18px, 400 weight, 28px line-height) carries descriptive copy and feature explanations; body-md (16px, 400 weight, 24px line-height) is the workhorse for form labels, list items, and inline data. Label-md (14px, 600 weight, 0.01em tracking) marks buttons, badges, and UI controls; label-sm (12px, 500 weight, 0.02em tracking) annotates secondary information and timestamps. Instruction: apply text-shado

Layout

The layout system uses a 12-column grid with a 1280px maximum container width, maintaining a 24px gutter between columns on desktop and 12px on tablet. The page rhythm follows a 'content-first' approach: the live flight map occupies the dominant visual real estate (typically 60–70% of viewport width), while supporting panels (search, filters, premium prompts) occupy the remaining space in a flexible sidebar. White-space is used strategically: lg spacing (40px) separates major sections (hero, feature blocks, footer), md spacing (24px) groups related content (card stacks, form groups), and sm spacing (12px) provides breathing room within components (button padding, list item margins). Container max-width is enforced at 1280px to prevent line-length from exceeding 80 characters in body text,

Elevation & Depth

Depth is conveyed through a restrained shadow system that avoids visual heaviness while maintaining clear layer hierarchy. Level 1 (Base): flat surfaces with no shadow—the live map background and primary content areas. Level 2 (Raised): cards, input fields, and secondary containers use elevation.md (0 3px 8px rgba(0, 0, 0, 0.15))—a soft, close shadow that suggests the element sits slightly above the base. Level 3 (Floating): modals, dropdowns, and popovers use elevation.lg (0 8px 24px rgba(0, 0, 0, 0.12))—a larger, more diffuse shadow that creates clear separation from background content. Hove

Shapes

The shape philosophy is 'Functional Softness'—rounded corners are used to humanize technical interfaces without sacrificing clarity or precision. Buttons use full radius (9999px) to signal strong affordance and create a friendly, approachable CTA aesthetic; this applies to all primary, secondary, and tertiary button variants. Cards and containers use lg radius (1rem / 16px) for a balanced, modern appearance that feels neither too sharp nor too organic. Input fields and form controls use DEFAULT radius (0.5rem / 8px)—slightly rounded to distinguish them from sharp browser defaults while maintai

Components

Action Elements Buttons are the primary interaction mechanism and must signal affordance clearly. Button-primary uses {colors.primary} (#64bef1) background with white text, 40px height, 6px 16px padding, and full radius. On hover, the background transitions to {colors.inverse-primary} (#327db6) over 200ms, darkening the cyan to indicate state change. Button-secondary uses a dark semi-transparent background (rgba(57, 57, 57, 0.9)) for secondary actions like 'Log in' or 'Learn more'; on hover, it darkens further to rgba(48, 48, 48, 1). Button-tertiary is transparent with a 1px primary-colored border, used for low-priority actions; on hover, it fills with {colors.primary-container} (#e0f2f9) to maintain visual hierarchy without overwhelming the interface. All buttons use {typography.label

Do's and Don'ts

**Do**

  • Do use {colors.primary} (#64bef1) exclusively for interactive elements—buttons, links, focus states, and map highlights—to create a consistent, learnable interaction model.
  • Do apply {elevation.md} (0 3px 8px rgba(0, 0, 0, 0.15)) to cards and {elevation.lg} (0 8px 24px rgba(0, 0, 0, 0.12)) to modals; never mix shadow styles or use custom values.
  • Do maintain 24px gutters between grid columns on desktop and 12px on tablet; use {spacing.md} (24px) to separate major sections and {spacing.sm} (12px) within components.
  • Do use Open Sans at 600 weight for all interactive labels (buttons, chips, form labels) and 400 weight for passive information (body text, descriptions, timestamps).
  • Do transition all interactive state changes (hover, focus, active) over 150–200ms using ease-in-out timing; never apply instant state changes.
  • Do use {rounded.full} (9999px) on all buttons and badges to signal affordance; use {rounded.lg} (16px) on cards and modals; use {rounded.DEFAULT} (8px) on input fields.
  • Do apply text-shadow 0 1px 2px rgba(0, 0, 0, 0.1) to label-sm elements overlaid on the live map to ensure readability against variable backgrounds.
  • Do reserve {colors.tertiary} (#ff3e5f) for error states and critical alerts only; never use it for general UI elements.

**Don't**

  • Don't use colors outside the defined palette—no custom hex values, no arbitrary grays, no off-brand accents. Every color must reference a token.
  • Don't apply shadows to text elements or use text-shadow for decorative purposes; reserve shadows for surface elevation only.
  • Don't hardcode padding, margins, or spacing values; always use {spacing.xs}, {spacing.sm}, {spacing.md}, {spacing.lg}, or {spacing.xl}.
  • Don't mix rounded-corner styles within a single component family—all buttons use {rounded.full}, all cards use {rounded.lg}, all inputs use {rounded.DEFAULT}.
  • Don't use {colors.secondary} (#f8c023) for general UI elements; reserve it exclusively for premium feature prompts and subscription upgrade calls-to-action.
  • Don't apply focus states using outline: 2px solid; use the glow pattern (0 0 0 3px rgba(100, 190, 241, 0.1)) for consistency.
  • Don't exceed 1280px container max-width; never allow line-length to exceed 80 characters in body text.
  • Don't use opacity or transparency to create depth; use the elevation shadow system instead for clear, predictable layer hierarchy.