DESIGN.md · Analysis

Flashscore

flashscore.com · 22 Jul 2026 · 47 colors · LivesportFinderLatin, Adjusted Arial Fallback, Arial, sans-serif

Flashscore

A global sports live-scoring platform delivering real-time football results, match data, and multi-sport coverage across 1000+ leagues. The design system prioritizes rapid information scanning, high-contrast status indicators, and a data-dense but navigable interface.

Colors

surface#eeeeee
surface-dim#d8d8d8
surface-bright#ffffff
surface-container-lowest#c1c1c1
surface-container-low#d8d8d8
surface-container#eeeeee
surface-container-high#f5f5f5
surface-container-highest#ffffff
on-surface#001e28
on-surface-variant#555e61
inverse-surface#001e28
inverse-on-surface#eeeeee
outline#999999
outline-variant#c8cdcd
surface-tint#ff0046
primary#ff0046
on-primary#ffffff
primary-container#ffb3c1
on-primary-container#660018
inverse-primary#ff6b8a
secondary#001e28
on-secondary#ffffff
secondary-container#0f2d37
on-secondary-container#c8cdcd
tertiary#14dc4b
on-tertiary#001e28
tertiary-container#b3f5c1
on-tertiary-container#003d14
error#dc0000
on-error#ffffff
error-container#ffb3b3
on-error-container#660000
primary-fixed#ffb3c1
primary-fixed-dim#ff6b8a
on-primary-fixed#660018
on-primary-fixed-variant#990033
secondary-fixed#0f2d37
secondary-fixed-dim#001e28
on-secondary-fixed#ffffff
on-secondary-fixed-variant#c8cdcd
tertiary-fixed#14dc4b
tertiary-fixed-dim#00a833
on-tertiary-fixed#001e28
on-tertiary-fixed-variant#003d14
background#eeeeee
on-background#001e28
surface-variant#c8cdcd

Typography

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

Design guidance

Overview

Flashscore is a global real-time sports data platform delivering live match scores, results, and comprehensive league coverage across 1000+ football competitions and multiple sports. The design system embodies a "Data-Centric Pragmatism" aesthetic: information density balanced with rapid visual scanning, where every pixel serves to reduce cognitive load for sports enthusiasts, analysts, and casual fans seeking instant match intelligence. The interface prioritizes contrast, status clarity, and hierarchical information layering—users should locate live scores, team standings, and match schedules within 1–2 seconds of page load.

The brand voice is authoritative yet accessible: factual, rapid-fire, and never speculative. Tone examples: "Manchester City 3–1 Liverpool, 87' — Haaland hat-trick" or "Champions League: 14 matches live now." The personality avoids hype; instead, it delivers precision. Every color choice—from the vivid magenta primary (#ff0046) to the deep navy secondary (#001e28)—serves functional contrast, not decoration. The system uses a compact 13px base font size with tight line-height (16px) to maximize data density without sacrificing legibility.

Colors

The Flashscore color system is built on a high-contrast, data-optimized foundation. **Primary (#ff0046)** is a vivid magenta used exclusively for call-to-action buttons ("Sign up", "Claim $50"), active tab underlines, and live-match indicators; it commands immediate attention against the neutral surface. **Secondary (#001e28)** is a deep navy-black, the dominant header and sidebar background, providing visual anchoring and reducing eye strain during extended browsing. **Tertiary (#14dc4b)** is a bright lime-green reserved for positive status indicators ("Live", "Win", "Goal") and success states; it creates instant semantic recognition. **Error (#dc0000)** is a pure red for loss states, red cards, and critical alerts.

The surface stack uses a light gray foundation (#eeeeee as surface, #fff

Typography

The typography system uses LivesportFinderLatin (a custom sports-optimized typeface) with Adjusted Arial Fallback as the primary stack, ensuring consistent rendering across browsers and devices. Display (60px, 700 weight, -0.04em letter-spacing) is reserved for page titles and hero headlines; Headline-lg (40px, 600 weight) for section headers; Headline-md (28px, 600 weight) for subsection titles. Body-md (16px, 400 weight, 24px line-height) is the default paragraph text, optimized for 13px rendered size on the live scores table. Label-md (14px, 600 weight) is used for tab labels, button text, and metadata; Label-sm (12px, 500 weight) for timestamps, league abbreviations, and tertiary information. All text over busy backgrounds (match cards, live-score rows) should apply text-shadow: 0 1px

Layout

Flashscore uses a 12-column fluid grid with a max-width of 1280px, allowing responsive scaling from mobile (single column) to desktop (multi-column league tables). The page rhythm is driven by a semantic spacing scale: unit (8px), sm (12px), md (24px), lg (40px), xl (64px). Section separation uses lg spacing (40px) between major content blocks (header, pinned leagues, match tables, footer); card padding uses md (24px) for breathing room around data. The gutter (24px) is applied to left/right margins on the main container, creating consistent edge whitespace. Live-score rows use sm (12px) vertical padding to pack data density while maintaining touch-target height (44px minimum). The container max-width of 1280px prevents line-length from exceeding 120 characters on body text, supporting rap

Elevation & Depth

Depth in Flashscore is conveyed through subtle shadows and layering, not through color shifts or glassmorphism. Level 1 (Base): the light gray surface (#eeeeee) with no shadow, representing the page background. Level 2 (Standard Card): box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), applied to match cards, league items, and modal overlays; this creates a gentle lift without visual heaviness. Level 3 (Elevated/Hover): box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1), used when cards are hovered or modals are in focus, signaling interactivity. The header bar (#001e28) uses no shadow, anchoring the top of

Shapes

The shape philosophy is "Functional Minimalism"—rounded corners are used sparingly and purposefully to signal interactivity without introducing visual noise. Buttons use 4px border-radius (DEFAULT), a subtle softening that distinguishes them from sharp data tables while maintaining a technical aesthetic. Cards and containers use 8px (md) or 12px (lg) for larger surfaces like match cards and league panels, creating visual grouping without excessive rounding. Input fields use 50% border-radius (full) to create pill-shaped search boxes, a convention users instantly recognize. Tab underlines and a

Components

Action Elements Buttons are the primary interaction pattern. **Button-primary** uses #ff0046 background, white text, 12px vertical / 24px horizontal padding, 44px height, and 700 font-weight; on hover, the background shifts to #ff1a5c with a 150ms transition. **Button-secondary** mirrors the primary structure but uses #001e28 background, white text, and shifts to #003d52 on hover. **Button-tertiary** (outline style) has a transparent background, #ff0046 text, 1px border in primary color, and a hover state with rgba(255, 0, 70, 0.08) background fill. All buttons use label-md typography (14px, 600 weight) and 4px border-radius. Focus state: all buttons receive a 3px outline in primary color with 2px offset, meeting WCAG AA standards.

Containers & Surfaces **Card** component has #eee

Do's and Don'ts

**Do**

  • Do use primary (#ff0046) exclusively for CTAs, active states, and live indicators—never for body text or neutral UI elements.
  • Do maintain 16:1 contrast ratio between text and background; test all color combinations with WCAG AA standards in mind.
  • Do apply 4px border-radius to buttons and 8px to cards; avoid excessive rounding (>12px) which dilutes the data-forward aesthetic.
  • Do use label-md (14px, 600 weight) for all button text and tab labels; consistency in typography weight signals hierarchy.
  • Do apply box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15) to cards and 0 7px 14px rgba(50, 50, 93, 0.1) on hover; these specific values maintain the subtle elevation system.
  • Do use LivesportFinderLatin as the primary typeface; it is optimized for sports data and numbers.
  • Do implement 200ms ease-in-out transitions for all hover and focus state changes; this timing feels responsive without appearing laggy.
  • Do reserve tertiary (#14dc4b) for positive status indicators (Live, Win, Goal); never use it for neutral or negative states.

**Don't**

  • Don't use primary color (#ff0046) for backgrounds of large content areas; it should accent, not dominate.
  • Don't apply border-radius >12px to any component; the system uses sharp (0px) for data, soft (4–8px) for interaction, and pill (50%) for inputs only.
  • Don't mix typefaces; LivesportFinderLatin + Arial Fallback is the only approved stack. System fonts (system-ui, -apple-system) are not permitted.
  • Don't use shadows >14px blur radius or opacity >15%; heavy shadows conflict with the data-centric aesthetic and reduce perceived information density.
  • Don't apply text-shadow to body copy on light backgrounds; reserve it only for text over busy match-card backgrounds.
  • Don't use secondary (#001e28) for text on light backgrounds; it creates insufficient contrast. Use #001e28 only for headers, sidebars, and dark-background text.
  • Don't create custom color tokens outside the defined palette; all new colors must be derived from the Material 3 surface/role stack.
  • Don't animate transitions faster than 150ms or slower than 300ms; this range maintains perceived responsiveness without feeling sluggish or jarring.