DESIGN.md · Analysis

RAWG

rawg.io · 28 Jul 2026 · 47 colors · Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif

RAWG

RAWG is the world's largest video game database and discovery platform, offering 500,000+ games across 50 platforms. The design system reflects a developer-first, data-rich aesthetic with high contrast and precision.

Colors

surface#151515
surface-dim#0e0e0e
surface-bright#202020
surface-container-lowest#111111
surface-container-low#161616
surface-container#181818
surface-container-high#1f1f1f
surface-container-highest#2a2a2a
on-surface#ffffff
on-surface-variant#b3b3b3
inverse-surface#ffffff
inverse-on-surface#151515
outline#666666
outline-variant#444444
surface-tint#3f873f
primary#3f873f
on-primary#ffffff
primary-container#2cb351
on-primary-container#ffffff
inverse-primary#63b649
secondary#005ff9
on-secondary#ffffff
secondary-container#0052d4
on-secondary-container#ffffff
tertiary#529f44
on-tertiary#ffffff
tertiary-container#6abf4b
on-tertiary-container#000000
error#ff4444
on-error#ffffff
error-container#cc0000
on-error-container#ffffff
primary-fixed#63b649
primary-fixed-dim#529f44
on-primary-fixed#000000
on-primary-fixed-variant#1a1a1a
secondary-fixed#0066ff
secondary-fixed-dim#004acc
on-secondary-fixed#ffffff
on-secondary-fixed-variant#ffffff
tertiary-fixed#7dd235
tertiary-fixed-dim#6abf4b
on-tertiary-fixed#000000
on-tertiary-fixed-variant#1a1a1a
background#151515
on-background#ffffff
surface-variant#2a2a2a

Typography

display
fontFamily: Inter · fontSize: 60px · fontWeight: 800 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: Inter · fontSize: 40px · fontWeight: 700 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: Inter · fontSize: 28px · fontWeight: 600 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: Inter · fontSize: 20px · fontWeight: 600 · lineHeight: 28px
body-lg
fontFamily: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif · fontSize: 18px · fontWeight: 400 · lineHeight: 28px
body-md
fontFamily: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, sans-serif · fontSize: 16px · fontWeight: 400 · lineHeight: 24px
label-md
fontFamily: Inter · fontSize: 14px · fontWeight: 500 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Inter · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

RAWG is a developer-centric video game database and API platform serving studios, publishers, and gaming enthusiasts with 500,000+ games across 50 platforms. The design system embodies 'Data-Driven Minimalism'—a philosophy that prioritizes information density and precision over decorative flourish. The aesthetic is deliberately austere: deep charcoal surfaces (#151515), high-contrast white text (#ffffff), and strategic accent greens (#3f873f, #2cb351) that signal actionable CTAs and data highlights. The UI evokes the clarity of a command-line interface married to modern web polish, creating an environment where complex gaming metadata feels navigable and trustworthy.

The brand voice is authoritative yet approachable: technical without being gatekeeping, confident without arrogance. Vocabulary leans toward precision ('database', 'API key', 'machine learning recommendations') paired with conversational warmth ('Learn what the RAWG games database API can do and build something cool with it'). The tone avoids hype; instead, it demonstrates capability through concrete numbers (500,000+ games, 50 platforms) and clear value propositions. Example sentence in brand voice: 'There are two types of companies: hoarders and givers. RAWG is the largest video game database and game discovery service. And we are gladly sharing our 500,000+ games, search, and machine learning recommendations with the world.'

Colors

The color system operates on a 'high-contrast, accent-driven' model designed for rapid information scanning and clear call-to-action hierarchy. Surface colors form a deep, near-black stack: surface (#151515) as the primary canvas, surface-dim (#0e0e0e) for recessed areas, and surface-container variants (#161616 to #2a2a2a) creating subtle depth without sacrificing legibility. All text defaults to on-surface (#ffffff) for maximum contrast (WCAG AAA compliant at 21:1 ratio). Primary accent green (#3f873f) is reserved exclusively for interactive elements—buttons, links, and focus states—ensuring users instantly recognize clickable regions. The secondary accent blue (#005ff9) provides a supporting highlight for secondary actions and data visualization. Tertiary green (#529f44, #6abf4b, #7dd235

Typography

The type system pairs Inter (geometric, modern, highly legible at small sizes) for UI labels, headlines, and data-dense contexts with system fonts (-apple-system, Segoe UI, Roboto) for body copy, ensuring optimal rendering across platforms. Display (60px, 800 weight, -0.04em tracking) anchors hero sections with maximum visual impact; headline-lg (40px, 700 weight) breaks major sections; body-lg (18px, 400 weight, 28px line-height) carries narrative copy with generous leading for readability over dark backgrounds. Label-md (14px, 500 weight) is applied to buttons and form labels with 0.01em tracking for precision. A critical treatment: apply text-shadow 0 2px 4px rgba(0, 0, 0, 0.3) to any small label (label-sm, 12px) overlaid on busy game imagery or gradient backgrounds to ensure legibility

Layout

The layout operates on a 12-column grid with a max-width of 1280px, using fluid margins at smaller breakpoints (gutter: 24px on desktop, 16px on tablet, 12px on mobile). The spacing scale is semantic: lg (40px) separates major sections (hero from feature blocks), md (24px) divides card content and form groups, sm (12px) creates breathing room within components. Container max-widths range from 960px to 1040px depending on content type, ensuring text never exceeds 75 characters per line for optimal reading. White-space is used aggressively—the hero section pairs a 60px headline with 28px body copy and 40px section separation, creating visual rest between information-dense blocks. The layout rhythm reflects the brand's data-first philosophy: generous margins around text, tight padding within

Elevation & Depth

Depth is conveyed through a three-tier shadow system and subtle background color shifts rather than dramatic layering. Level 1 (Base): surface (#151515) with no shadow, establishing the primary canvas. Level 2 (Standard Card/Hover): surface-container (#181818) with box-shadow 0 3px 8px rgba(0, 0, 0, 0.15), used for cards, dropdowns, and interactive elements. Level 3 (Elevated/Modal): surface-container-high (#1f1f1f) with box-shadow 0 8px 24px rgba(0, 0, 0, 0.25), reserved for modals, overlays, and primary CTAs. Buttons receive a subtle glow effect (box-shadow: 0 0 20px 0 hsla(0, 0%, 100%, 0.2)

Shapes

The shape philosophy is 'Precision-Driven Pragmatism'—rounded corners are used sparingly and purposefully, never decoratively. Buttons and primary CTAs use lg (1rem / 16px) border-radius, creating a modern, approachable feel while maintaining clarity. Cards and containers use md (0.75rem / 12px) for subtle softness without sacrificing data-dense layouts. Input fields and small UI elements use DEFAULT (0.5rem / 8px) for minimal visual weight. Badges and pills use full (9999px) for maximum roundness, signaling non-interactive status indicators. The rationale: larger radius values (lg, xl) are re

Components

Action Elements Buttons are the primary interaction mechanism and receive the most visual emphasis. button-primary uses primary green (#3f873f) with 48px height, 24px horizontal padding, and lg border-radius (16px). The glow effect (box-shadow: 0 0 20px 0 hsla(0, 0%, 100%, 0.2)) creates a subtle halo that reduces on hover to 0.1 opacity, signaling state change within 200ms. button-secondary uses a 2px white border on transparent background, maintaining equal visual weight for secondary actions. Both buttons use Inter label-md (14px, 500 weight) for consistency. Transition timing is 300ms for background-color and 200ms for box-shadow, creating responsive but not jarring feedback.

Containers & Surfaces Cards (card component) use surface-container (#181818) with md border-radius (12p

Do's and Don'ts

**Do**

  • Do use primary green (#3f873f) exclusively for CTAs, focus states, and interactive affordances—never for decorative elements or backgrounds.
  • Do maintain at least 21:1 contrast ratio (WCAG AAA) between text and background; test all color combinations on #151515 and #ffffff.
  • Do apply text-shadow 0 2px 4px rgba(0, 0, 0, 0.3) to small labels overlaid on game imagery or gradients to ensure legibility.
  • Do use Inter for all UI labels, buttons, and headlines; reserve system fonts for body copy to optimize rendering across platforms.
  • Do limit transitions to 200–300ms for button states and 300ms for card hover effects; avoid animations longer than 500ms unless explicitly interactive.
  • Do use the full spacing scale (xs, sm, md, lg, xl) consistently; never invent arbitrary spacing values outside the defined tokens.

**Don't**

  • Don't use primary green (#3f873f) for body text, backgrounds, or decorative elements—reserve it exclusively for interactive affordances.
  • Don't apply rounded corners larger than lg (16px) to data containers or cards; keep them visually efficient with md (12px) or DEFAULT (8px).
  • Don't use shadows darker than rgba(0, 0, 0, 0.25) or lighter than rgba(0, 0, 0, 0.06); the system uses only three defined elevation levels.
  • Don't introduce new accent colors outside the defined palette (primary green, secondary blue, tertiary green); the system is intentionally limited to maintain clarity.
  • Don't apply text-shadow to body copy or large headlines; reserve it only for small labels over complex backgrounds.
  • Don't use font weights outside the defined set (400, 500, 600, 700, 800); hierarchy is conveyed through size and spacing, not weight proliferation.