Matchday Design System
A console-style game-detail and storefront design system. Dark-first surfaces, a deep blue brand color paired with a high-emphasis orange commerce CTA, a thoughtful dual-mode token system, and component patterns built around hero artwork, edition tiles, and persistent purchase intent.
Brand Summary
Colors
Two role layers: a structural light/dark scaffold paired with intent layers (brand, commerce, status). Tokens map cleanly to CSS variables and Tailwind.
Brand
Commerce
Page & Surfaces
Text
Status
Gradients
Typography
A neutral geometric sans for body and a heavier display cut for hero titles. Source uses a proprietary sans; Inter is the recommended free implementation. Bebas Neue stays available for promotional callouts.
Font Families
| Role | Family | Usage |
|---|---|---|
| Primary | Inter, system-ui, -apple-system, sans-serif | All body, UI labels, buttons, navigation. |
| Display | 'Mont', 'Inter', system-ui, sans-serif | Hero titles, large promo headlines. |
| Condensed | 'Inter Tight', 'Inter', system-ui, sans-serif | Tight callouts, edition platform stacks. |
| Accent | 'Bebas Neue', 'Inter', sans-serif | Promotional badges and event callouts. |
Inter as the closest free analog and reserve Mont for hero displays.Type Scale
Weights
| Weight | Value | Use |
|---|---|---|
| Light | 300 | Section headings (e.g. "Editions:") on dark surfaces |
| Regular | 400 | Body, descriptions |
| Medium | 500 | Nav links, supporting metadata |
| Semibold | 600 | Buttons, interactive labels, H3–H6 |
| Bold | 700 | Edition titles, prices, table headers |
| Extrabold | 800 | Hero display, page H1 |
Spacing
A logarithmic scale with two anchors — 16px (page) and 24px (component). Container padding ramps from 16px (mobile) to 80px (desktop).
Spacing Scale
Layout Constants
| Constant | Value | Notes |
|---|---|---|
| Container max-width | 1440px | Hard cap on storefront / detail pages |
| Container padding (desktop) | 80px | Side gutter on > 1280px |
| Container padding (tablet) | 32px | 768–1279px |
| Container padding (mobile) | 16px | < 768px |
| Top nav height | 64px | Sticky, blurred background |
| Tab nav height | 56px | Sticky directly below top nav |
| Combined nav offset | 105px | scroll-margin-top for in-page anchors |
| Grid columns | 12 | 16px gutter |
Borders & Radii
A 5-step radius scale. Buttons are pills; cards and modals use a generous 16px; tiny chips/inputs use 4–8px.
Shadows
Two stacks: a soft light-mode set for storefront cards, and a deep dark-mode set for hover/elevation under hero overlays.
Light-mode
Dark-mode
Motion
Two easings carry the system: standard for state changes, emphasized for entrances and slide animations. Durations stay short — 200ms is the default.
| Token | Value | When |
|---|---|---|
--duration-quick | 120ms | Hover, focus, micro-state |
--duration-base | 200ms | Default for buttons, links, color transitions |
--duration-slow | 320ms | Sticky show/hide, modal open |
--ease-standard | cubic-bezier(0.4, 0, 0.2, 1) | Color, opacity, padding |
--ease-emphasized | cubic-bezier(0.2, 0, 0, 1) | Entrances, slides, modal in/out |
Buttons
Pill-shaped buttons. Brand blue for primary actions; commerce orange reserved for purchase intent; outlined ghost for secondary; circular icon buttons for wishlist / share.
Primary & Commerce
| Variant | Background | Color | Border | Radius | Padding | Weight |
|---|---|---|---|---|---|---|
| Primary (Blue) | #0072CE | #FFFFFF | — | 999px | 12px 24px | 600 |
| Commerce (Orange) | #D63D00 | #FFFFFF | 1px #D53B00 | 999px | 12px 24px | 700 |
| Secondary Ghost (Dark) | transparent | #FFFFFF | 1px rgba(255,255,255,0.3) | 999px | 12px 24px | 600 |
| Icon Circle | transparent | #FFFFFF | 1px rgba(255,255,255,0.3) | 50% | — | — |
States
Sizes
Inputs & Forms
Inputs default to a 4px corner radius — distinct from the pill buttons. Light variants pair with white surfaces; dark variants use translucent fills over dark surfaces.
Light Surface
Dark Surface
Badges & Callouts
Small status pills for subscription inclusion, sale percentage, free-tier flags, and platform availability.
Game Hero
Full-bleed background art on the right; left-aligned title stack, rating, included-with badge, price, and primary purchase CTA. Headline uses the display font at 49–61px.
Step onto the pitch
| Spec | Value |
|---|---|
| Min height | 560px desktop · 360px mobile |
| Padding | 120px 80px 64px desktop |
| Title font | Mont/Inter 800 · 49–61px |
| Overlay | linear-gradient(90deg, #121314 0%, rgba(18,19,20,0.6) 40%, transparent 80%) |
| Primary CTA | Commerce orange · pill · 12×24 |
Edition Cards
Edition browser tile. 16:9 art block on top, platform stack, edition title, feature bullets, price block, and primary action with a circular wishlist button. Cards live in a 2x2 grid that collapses to a horizontal swipe carousel under 768px.
- Base game
- 5,000 in-game points
- Pre-order bonus pack
- Trial play access
- Limited features
- Sample roster
- Base game
- 6,000 in-game points
- Career boost pack
- Cosmetic content
- Base game
- Legends roster pack
- Career season starter
- Cosmetic kit bundle
Sticky Purchase Bar
A persistent bottom bar that appears after scrolling past the hero. It carries the title, edition, price, and the primary commerce action — keeping purchase intent in reach without re-entering the hero.
Feature Tiles
Three-up benefits row beneath the editions browser. Square media on top, title, supporting copy. Clean, scannable, no card chrome.
A deeper season management experience with new manager events, recruitment dynamics, and rotation tools.
Crowd reactions, broadcast lighting, and live atmosphere captured from real-world venues.
Dribble responsiveness, shooting variety, and pace differences tuned through community feedback.
Promo Dock
A slim dismissible card pinned to the lower-left of the viewport. Encourages sign-in / cross-sell without occluding the hero.
Survey Card
Inline feedback prompt rendered on a white surface inside an otherwise dark page. The prompt + 5-point scale + textarea + submit pattern is reused on every detail page.
Tailwind Mapping
The paired design-system.json ships a complete tailwind.theme.extend block plus a set of componentRecipes. Use these as the source of truth — do not fall back to default Tailwind tokens.
Consume the JSON
// tailwind.config.ts import type { Config } from 'tailwindcss'; import tokens from './design-system.json'; export default { content: ['./src/**/*.{ts,tsx}'], theme: { extend: tokens.tailwind.theme.extend }, } satisfies Config;
Component Recipes (excerpt)
| Recipe | Class chain |
|---|---|
btnPrimary | inline-flex items-center justify-center rounded-pill bg-brand px-6 py-3 font-semibold text-white hover:bg-brand-hover active:bg-brand-active |
btnCommerce | inline-flex items-center justify-center rounded-pill bg-commerce px-6 py-3 font-bold text-white border border-commerce-border hover:bg-commerce-hover |
btnSecondary | rounded-pill border border-white/30 bg-transparent px-6 py-3 font-semibold text-white hover:border-white/60 hover:bg-white/5 |
iconBtn | inline-flex h-11 w-11 items-center justify-center rounded-circle border border-white/30 text-white hover:border-white hover:bg-white/10 |
navBar | sticky top-0 z-40 flex h-16 items-center bg-page-dark/85 px-6 backdrop-blur-nav border-b border-white/5 text-white |
tabNav | sticky top-16 z-30 flex h-14 items-center gap-7 bg-page-dark/95 px-6 border-b border-white/8 text-base font-semibold text-fog-secondary |
hero | relative isolate flex min-h-[560px] items-end overflow-hidden bg-page-dark px-11 pt-30 pb-10 text-white |
heroTitle | font-display text-5xl font-extrabold leading-none tracking-tight text-white |
editionCard | group flex flex-col overflow-hidden rounded-md border border-white/5 bg-surface-card text-white hover:shadow-high-dark |
promoDock | fixed bottom-4 left-4 z-50 flex w-[260px] items-center gap-3 rounded-sm bg-white/95 p-3 text-ink shadow-promo |
stickyPurchaseBar | sticky bottom-0 z-40 flex items-center gap-6 border-t border-white/8 bg-page-dark/95 px-6 py-3 text-white backdrop-blur-nav shadow-sticky |
Token Quick Reference
| Tailwind | Value | Maps to |
|---|---|---|
bg-brand | #0072CE | Primary blue |
bg-commerce | #D63D00 | Purchase CTA |
bg-page-dark | #121314 | Page background |
bg-surface-card | #1F2024 | Edition tiles, modals |
text-fog-secondary | #B2B2B2 | Supporting text on dark |
rounded-pill | 999px | Buttons |
rounded-md | 16px | Cards, hero |
shadow-promo | 0 5 15 / 0.35 | Promo dock |
shadow-sticky | 0 4 12 / 0.35 | Sticky bars |
backdrop-blur-nav | 16px | Top nav, sticky bars |