DesignMD Maker logo ← Home Report · Code analysis
F
Design System

FotMob - Football Live Scores

Design system extracted from https://www.fotmob.com/ on 2026-08-27 (code-based analysis).

Source · https://www.fotmob.com/ Engine · Code analysis Created · Aug 27, 2026 14:12 Cost · $0.0000
Detected Language

Design Style

gradient-rich / aurora
many gradient definitions
rounded / pill-heavy
many large radii & pills
technical / mono accents
monospace font in use
Palette

Colors

primary
#61DF6E
1.71 on white · 12.29 on black · 126° 66% 63%
secondary
#000000
21 on white · 1 on black · 0° 0% 0%
accent
#DD3636
4.51 on white · 4.66 on black · 0° 71% 54%
Token Roles 13 tokens
background
#FFFFFF · 21:1 vs black
surface
#F5F5F5 · 19.26:1 vs black
text-primary
#000000 · 21:1 vs white
text-secondary
#596470 · 6.03:1 vs white
border
#6D7782 · 4.55:1 vs white
on-primary
#000000 · 21:1 vs white
on-secondary
#FFFFFF · 21:1 vs black
on-accent
#FFFFFF · 21:1 vs black
surface-container-lowest
#FFFFFF · 21:1 vs black
surface-container-low
#FAFAFA · 20.12:1 vs black
surface-container
#F9F9F9 · 19.95:1 vs black
surface-container-high
#F5F5F5 · 19.26:1 vs black
surface-container-highest
#F1F1F1 · 18.59:1 vs black
Detected Palette 24 colors by frequency in source CSS
#000000
used 99× · 0° 0% 0%
#FFFFFF
used 22× · 0° 0% 100%
#61DF6E
used 15× · 126° 66% 63%
#222222
used 12× · 0° 0% 13%
#F5F5F5
used 11× · 0° 0% 96%
#DD3636
used 11× · 0° 71% 54%
#FF3939
used 6× · 0° 100% 61%
#00985F
used 4× · 158° 100% 30%
#596470
used 3× · 211° 11% 39%
#6D7782
used 3× · 211° 9% 47%
#F1F1F1
used 3× · 0° 0% 95%
#FAFAFA
used 2× · 0° 0% 98%
#CCCCCC
used 2× · 0° 0% 80%
#9F9F9F
used 2× · 0° 0% 62%
#717171
used 2× · 0° 0% 44%
#383838
used 2× · 0° 0% 22%
#8D9499
used 2× · 205° 6% 58%
#F08022
used 2× · 27° 87% 54%
#0F356E
used 2× · 216° 76% 25%
#5FFF94
used 2× · 140° 100% 69%
#E8E8E8
used 1× · 0° 0% 91%
#DEDEDE
used 1× · 0° 0% 87%
#EDEDED
used 1× · 0° 0% 93%
#EAEAEA
used 1× · 0° 0% 92%
Surface Treatments

Gradients

radial-gradient(50.46% 91.43%,#bcff8bcc 0,#55e3641a 100%)
radial-gradient(20% 130% at 23% -36%,#5fff9426 0,#f5f5f500 100%)
radial-gradient(250% 200% at -180%,#d6d6d6 0,#fafafa 100%)
radial-gradient(20% 130% at 23% -36%,#5fff9426 0,#25252500 100%)
radial-gradient(250% 200% at -180%,#444 0,#222 100%)
Type System

Typography

display
inherit
64px · 100 · LH 1 · LS -.06px
FotMob - Football Live Scores
headline-lg
inherit
32px · 100 · LH 1 · LS -.06px
FotMob - Football Live Scores
headline-md
inherit
25px · 100 · LH 1 · LS -.06px
FotMob - Football Live Scores
title-lg
inherit
22px · 100 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-lg
inherit
18px · 100 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-md
inherit
16px · 100 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
14px · 100 · LH 1.4 · LS 0.21px
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-sm
inherit
12px · 100 · LH 1.4 · LS 0.21px
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
__Inter_f367f3__walsheim_e6bd29var(--font-mono)var(--font-inter)var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji")var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace)var(--font-default)var(--font-walsheim)
Structure

Layout

Container
Section padding: · card padding:
Grid
12-column reference grid · gap
Spacing Scale
xs
2px
sm
8px
md
16px
lg
32px
detected
1px
detected
2px
detected
5px
detected
6px
detected
8px
detected
10px
detected
15px
detected
16px
detected
18px
detected
24px
Breakpoints
48rem80rem350px768px769px991px992px1280px
Geometry

Shapes

sm
2px
md
12px
lg
23px
pill
50%
r5
16px
r6
21px
r7
.25rem
r8
20px
Tokens in Context

Components

button-primary
fontWeight700
card
background{colors.surface}
border1px solid {colors.border}
radius23px
Animation

Motion

Keyframes 10 found
@keyframes pulse
50%{opacity:.5}
@keyframes animation-6iiy45
0%{-webkit-transform:translate(0px,0px);-moz-transform:translate(0px,0px);-ms-transform:translate(0px,0px);transform:translate(0px,0px);}30%{-webkit-transform:translate(10px,-30px);-moz-transform:translate(10px,-30px);-ms-transform:translate(10px,-30px);transform:translate(10px,-30px);}100%{-webkit-transform:translate(0px,0px);-moz-transform:translate(0px,0px);-ms-transform:translate(0px,0px);transform:translate(0px,0px);}
@keyframes spin
to{transform:rotate(1turn)}
@keyframes enter
0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}
@keyframes exit
to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}
@keyframes accordion-down
0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}
@keyframes accordion-up
0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}to{height:0}
@keyframes nprogress-spinner
0%{transform:rotate(0deg)}to{transform:rotate(1turn)}
@keyframes react-loading-skeleton
to{transform:translateX(100%)}
Applied Animations
none!importantpulse 1.5s infiniteanimation-6iiy45 10s ease-in-out infiniteenter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)var(--animate-pulse)var(--animate-spin)accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)react-placeholder-pulse 1.5s infinite
Easing Curves
cubic-bezier(0,0,.2,1)cubic-bezier(.4,0,.2,1)cubic-bezier(.4,0,.6,1)var(--tw-ease,var(--default-transition-timing-function))var(--ease-in-out)var(--ease-out)
Transitions
-webkit-transform 0.4s ease-in-outtransform 0.4s ease-in-outinset-inline-start 0.25s ease-in-outbottom 0.2s ease-inbottom 0.2s ease-out
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification — FotMob - Football Live Scores

FieldValue
Site / Projecthttps://www.fotmob.com/
Analyzed on2026-08-27
Analysis modeAutomated code extraction (no AI)

Overview

This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#DD3636). All type is set in __Inter_f367f3. Detected font weights: 100, 400, 500, 700. Detected style signatures: gradient-rich / aurora; rounded / pill-heavy; technical / mono accents.

Logo asset(s): https://www.fotmob.com/img/android-icon-192x192.png

Color System

Detected palette (by frequency)

HexRGBHSLCount
#0000000, 0, 00° 0% 0%99
#FFFFFF255, 255, 2550° 0% 100%22
#61DF6E97, 223, 110126° 66% 63%15
#22222234, 34, 340° 0% 13%12
#F5F5F5245, 245, 2450° 0% 96%11
#DD3636221, 54, 540° 71% 54%11
#FF3939255, 57, 570° 100% 61%6
#00985F0, 152, 95158° 100% 30%4
#59647089, 100, 112211° 11% 39%3
#6D7782109, 119, 130211° 9% 47%3
#F1F1F1241, 241, 2410° 0% 95%3
#FAFAFA250, 250, 2500° 0% 98%2
#CCCCCC204, 204, 2040° 0% 80%2
#9F9F9F159, 159, 1590° 0% 62%2
#717171113, 113, 1130° 0% 44%2
#38383856, 56, 560° 0% 22%2
#8D9499141, 148, 153205° 6% 58%2
#F08022240, 128, 3427° 87% 54%2
#0F356E15, 53, 110216° 76% 25%2
#5FFF9495, 255, 148140° 100% 69%2

Assigned roles

Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.

TokenHexRGBHSL
--color-primary#61DF6E97, 223, 110126° 66% 63%
--color-accent#DD3636221, 54, 540° 71% 54%
--color-background#FFFFFF255, 255, 2550° 0% 100%
--color-surface#F5F5F5245, 245, 2450° 0% 96%
--color-text-primary#0000000, 0, 00° 0% 0%
--color-secondary#0000000, 0, 00° 0% 0%
--color-text-secondary#59647089, 100, 112211° 11% 39%
--color-border#6D7782109, 119, 130211° 9% 47%
--color-on-primary#0000000, 0, 00° 0% 0%
--color-on-secondary#FFFFFF255, 255, 2550° 0% 100%
--color-on-accent#FFFFFF255, 255, 2550° 0% 100%

Surface ramp (derived from detected light neutrals)

TokenHex
--color-surface-container-lowest#FFFFFF
--color-surface-container-low#FAFAFA
--color-surface-container#F9F9F9
--color-surface-container-high#F5F5F5
--color-surface-container-highest#F1F1F1

Gradients

  • radial-gradient(50.46% 91.43%,#bcff8bcc 0,#55e3641a 100%)
  • radial-gradient(20% 130% at 23% -36%,#5fff9426 0,#f5f5f500 100%)
  • linear-gradient(90deg, 0, 100%)
  • radial-gradient(250% 200% at -180%,#d6d6d6 0,#fafafa 100%)
  • linear-gradient(0deg, 0, 100%),
  • radial-gradient(20% 130% at 23% -36%,#5fff9426 0,#25252500 100%)
  • radial-gradient(250% 200% at -180%,#444 0,#222 100%)
  • `linear-gradient(90deg, 0, 50%, 100%)

)`

> 4 additional gradient definitions were framework utility templates (unresolvable var(--tw-gradient-stops)) and were omitted.

Typography

Primary typeface: __Inter_f367f3 — stack: __Inter_f367f3

Font stacks (most used first)

  • __Inter_f367f3
  • __walsheim_e6bd29
  • var(--font-mono)
  • var(--font-inter)
  • var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji")
  • var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace)
  • var(--font-default)
  • var(--font-walsheim)
  • var(--font-mono)!important
  • __Inter_Fallback_f367f3

Derived type scale

TokenSize
display64px
headline-lg32px
headline-md25px
title-lg22px
body-lg18px
body-md16px
label-md14px
label-sm12px

Font sizes (by frequency)

SizeCount
14px14
19px6
12px6
16px5
13px5
10px3
32px3
18px2
9px2
22px2
15px2
64px2
25px1
1em1
17px1
8px1
11px1
20px1
56px1
48px1

Weights in use: 100, 400, 500, 700

Line heights (by frequency)

ValueCount
15
18px4
1.111
22px1
32px1
16px1
1.51
01
15px1
17px1

Letter spacing (by frequency)

ValueCount
0.21px5
-.06px1
-.08px1

Spacing

Derived spacing scale

TokenValue
xs2px
sm8px
md16px
lg32px

Raw values (by frequency)

ValueCount
16px18
32px8
24px5
6px5
10px4
40px3
48px2
15px2
8px2
2px2
5px1
18px1
1px1

Borders & Radius

Derived radius tokens

TokenValue
sm2px
md12px
lg23px
pill50%

Raw values (resolved, by frequency)

RadiusCount
16px10
04
1rem3
21px2
50%2
12px2
.25rem2
20px2
.375rem2
.75rem2
.125rem2
23px1

Layout

Container max-width: 768px

Grid columns (largest detected grid): 6

Breakpoints

  • 350px
  • 768px
  • 48rem
  • 769px
  • 991px
  • 992px
  • 1280px
  • 80rem

Animation & Motion

Transitions

  • -webkit-transform 0.4s ease-in-out
  • transform 0.4s ease-in-out
  • inset-inline-start 0.25s ease-in-out
  • bottom 0.2s ease-in
  • bottom 0.2s ease-out

Easing curves

  • cubic-bezier(0,0,.2,1)
  • cubic-bezier(.4,0,.2,1)
  • cubic-bezier(.4,0,.6,1)
  • cubic-bezier(.4,0,.2,1)
  • var(--tw-ease,var(--default-transition-timing-function))
  • var(--ease-in-out)
  • var(--ease-out)
  • ease-in-out

Keyframes

@keyframes pulse { 50%{opacity:.5} }
@keyframes animation-6iiy45 { 0%{-webkit-transform:translate(0px,0px);-moz-transform:translate(0px,0px);-ms-transform:translate(0px,0px);transform:translate(0px,0px);}30%{-webkit-transform:translate(10px,-30px);-moz-transform:translate(10px,-30px);-ms-transform:translate(10px,-30px);transform:translate(10px,-30px);}100%{-webkit-transform:translate(0px,0px);-moz-transform:translate(0px,0px);-ms-transform:translate(0px,0px);transform:translate(0px,0px);} }
@keyframes spin { to{transform:rotate(1turn)} }
@keyframes enter { 0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))} }
@keyframes exit { to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))} }
@keyframes accordion-down { 0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))} }
@keyframes accordion-up { 0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}to{height:0} }
@keyframes nprogress-spinner { 0%{transform:rotate(0deg)}to{transform:rotate(1turn)} }
@keyframes react-loading-skeleton { to{transform:translateX(100%)} }
@keyframes react-placeholder-pulse { 0%{opacity:.6}50%{opacity:1}to{opacity:.6} }

Animations

  • none!important
  • pulse 1.5s infinite
  • animation-6iiy45 10s ease-in-out infinite
  • enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)
  • var(--animate-pulse)
  • var(--animate-spin)
  • accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)
  • exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)
  • accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)
  • react-placeholder-pulse 1.5s infinite

Components

Extracted from the page's own interactive elements (classes → resolved CSS values).

button-primary — sample text: “About”

PropertyValue
fontWeight700

CTA labels found on page

  • Transfers
  • Matches
  • Leagues
  • News

Source Design Tokens (CSS custom properties)

:root {
  --font-inter: '__Inter_f367f3', '__Inter_Fallback_f367f3', sans-serif;
  --font-walsheim: '__walsheim_e6bd29', '__walsheim_Fallback_e6bd29', sans-serif;
  --font-cabinet-grotesk: '__cabinetGrotesk_c4944d', '__cabinetGrotesk_Fallback_c4944d', sans-serif;
  --space: 0;
  --z-index-nprogress: 3000;
  --font-mono: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  --color-amber-400: oklch(82.8% .189 84.429);
  --color-green-400: oklch(79.2% .209 151.711);
  --color-green-500: oklch(72.3% .219 149.579);
  --color-green-600: oklch(62.7% .194 149.214);
  --color-blue-400: oklch(70.7% .165 254.624);
  --color-blue-500: oklch(62.3% .214 259.815);
  --color-blue-600: oklch(54.6% .245 262.881);
  --color-gray-100: oklch(96.7% .003 264.542);
  --color-gray-200: oklch(92.8% .006 264.531);
  --color-gray-300: oklch(87.2% .01 258.338);
  --color-gray-400: oklch(70.7% .022 261.325);
  --color-gray-500: oklch(55.1% .027 264.364);
  --color-gray-600: oklch(44.6% .03 256.802);
  --color-gray-700: oklch(37.3% .034 259.733);
  --color-black: #000;
  --color-white: #fff;
  --spacing: .25rem;
  --container-xs: 20rem;
  --container-sm: 24rem;
  --container-md: 28rem;
  --container-lg: 32rem;
  --container-3xl: 48rem;
  --text-xs: .75rem;
  --text-xs--line-height: calc(1 / .75);
  --text-sm: .875rem;
  --text-sm--line-height: calc(1.25 / .875);
  --text-base: 1rem;
  --text-base--line-height: calc(1.5 / 1);
  --text-lg: 1.125rem;
  --text-lg--line-height: calc(1.75 / 1.125);
  --text-xl: 1.25rem;
  --text-xl--line-height: calc(1.75 / 1.25);
  --text-2xl: 1.5rem;
  --text-2xl--line-height: calc(2 / 1.5);
  --text-3xl: 1.875rem;
  --text-3xl--line-height: calc(2.25 / 1.875);
  --text-5xl: 3rem;
  --text-5xl--line-height: 1;
  --font-weight-light: 300;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --tracking-tight: -.025em;
  --tracking-wide: .025em;
  --tracking-wider: .05em;
  --tracking-widest: .1em;
  --leading-tight: 1.25;
  --leading-snug: 1.375;
  --leading-normal: 1.5;
  --leading-relaxed: 1.625;
  --radius-xs: .125rem;
  --radius-sm: .25rem;
  --radius-md: .375rem;
}

Do's and Don'ts

Do

  • Do reserve the accent #DD3636 for interactive highlights and key moments — it is used sparingly on the source page.
  • Do keep the canvas at #FFFFFF; surfaces should stay within the detected neutral ramp.
  • Do stick to the detected font weight(s): 100, 400, 500, 700.

Don't

  • Don't introduce colors outside the detected palette — every hue above was found in the source.
  • Don't add drop shadows; the source page relies on borders and surface shifts for depth, not elevation.

Design Tokens (copy-paste)

:root {
  --color-primary: #61DF6E;
  --color-accent: #DD3636;
  --color-background: #FFFFFF;
  --color-surface: #F5F5F5;
  --color-text-primary: #000000;
  --color-secondary: #000000;
  --color-text-secondary: #596470;
  --color-border: #6D7782;
  --color-on-primary: #000000;
  --color-on-secondary: #FFFFFF;
  --color-on-accent: #FFFFFF;
  --color-surface-container-lowest: #FFFFFF;
  --color-surface-container-low: #FAFAFA;
  --color-surface-container: #F9F9F9;
  --color-surface-container-high: #F5F5F5;
  --color-surface-container-highest: #F1F1F1;
  --font-sans: __Inter_f367f3;
  --font-size-display: 64px;
  --font-size-headline-lg: 32px;
  --font-size-headline-md: 25px;
  --font-size-title-lg: 22px;
  --font-size-body-lg: 18px;
  --font-size-body-md: 16px;
  --font-size-label-md: 14px;
  --font-size-label-sm: 12px;
  --radius-sm: 2px;
  --radius-md: 12px;
  --radius-lg: 23px;
  --radius-pill: 50%;
  --space-xs: 2px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 32px;
  --tracking-display: -.06px;
  --tracking-label: 0.21px;
  --container-max: 768px;
}