Skip to content
FLICKED Docs

Reference

Design system

The visual language for everything FLICKED ships: the website, the launcher, the dashboard, and these docs. Dark, neutral, lots of space, and one accent.

The website is the reference implementation, and its tokens live in website/app/globals.css. This site uses the same tokens.

Principles#

Clean and quiet

Dark, neutral, lots of space. The calm of a Valve product page, not a gaming RGB setup.

One accent

Orange is the only saturated colour. If everything is orange, nothing is.

The product is the picture

Show real UI (scoreboards, queues, server status) instead of decoration. No stock art, no abstract 3D.

Plain words, and honest

Anyone should understand a label without CS jargon. FLICKED is alpha: say so, and never fake numbers.

Tried and removed#

These looked "cool" and made the product feel cheap. Do not bring them back: laser beams and glowing blobs behind content, custom crosshair cursors, text scramble effects, italic or skewed headings and buttons, animated counters, spotlight-on-hover cards, floating collage hero layouts, and em dashes in copy.

Colour#

Dark only. There is no light theme.

Neutrals#

bg

#0c0c0d

surface

#131315

elevated

#19191c

foreground

#ffffff

muted

#b4b4b8 · body

subtle

#8d8d93 · captions

faint

#5a5a60 · decor only

Accent and status#

primary

#f65600

primary-light

#ff7a33 · text

slate

#7d8aa0 · other team

warning

#e0b341 · pending

  • primary is sampled from the logo: primary buttons, active states, live dots, progress fills, highlighted heading words.
  • primary-light is for orange text on dark: links, positive deltas, the focus ring.
  • Text on an orange button is near-black #0c0c0d (5.8:1), never white (3.4:1).

Contrast#

Text colouron bgon surfaceon elevated
foreground19.618.617.5
muted9.59.08.5
subtle5.95.65.3
primary-light7.57.16.8
primary5.85.55.2
slate5.65.35.0
faint2.92.72.6

faint fails WCAG for text and is for decoration only: dividers, disabled states, placeholder glyphs.

Typography#

Display · Barlow Condensed 700

Everything a pug night needs. Nothing rented.

Headings only. Uppercase, upright, tight line height.

UI and body · Inter

Card title, sentence case

Body text is muted, with lines kept under about sixty characters.

Data · JetBrains Mono

13 – 9 · 1,482

Numbers, IDs, logs, labels

  • Headings are two beats: a statement in white, then a short payoff in primary.
  • The FLICKED wordmark is the only italic text anywhere, matching the logo's slant.
  • Numbers that update or line up use font-variant-numeric: tabular-nums.
NameSizeStyle
Heroclamp(3.1rem, 8.5vw, 6rem)Display, line-height 0.92
Section headingclamp(2.4rem, 4.6vw, 3.7rem)Display, line-height 0.95
Card title18pxInter 600, -0.01em
Body large16.5 to 17pxInter 400, line-height 1.65
Body14.5pxInter 400, muted
Label (eyebrow)12pxMono 500, uppercase, .12em, subtle

Layout and shape#

Base unit 4px. Common steps: 8, 12, 16, 24, 28, 40, 56, 64, 96. Content max-width 1400px, card padding 28px, 14px between cards.

4 · tags

6 · buttons

8 · wells

10 · tiles

12 · cards

999 · dots

Depth comes from surface colour and borders, not glow. Shadows are black and soft; coloured shadows and glows are off-brand.

PlaneBackgroundBorderShadow
0 · pagebgnonenone
1 · cardsurfacergba(255,255,255,.08)none
2 · raisedelevatedrgba(255,255,255,.10)0 20px 60px rgba(0,0,0,.5)

Components#

Buttons#

Primary is primary fill with near-black text, hover #ff6414. Outline is transparent with a .14 border, .28 on hover. 42px tall, 6px radius. One primary button per view.

Status, tags and progress#

Live Starting Finished de_mirage

Status is always a dot plus a word, never colour alone. Progress bars are 4px tall on a .08 track.

Cards#

surface background, 12px radius, .08 border. Inside: a 40px icon tile with an orange tint, an 18px title, one sentence, and a small labelled picture of the feature. Hover only brightens the border: no lifts, no glows.

Icons and motion#

  • Icons are line icons on a 24px grid with a 1.7px stroke, round caps and joins, no fill. Lucide matches. 20px in a 40px tile; 16px in buttons.
  • Motion is quiet and never needed to understand the UI: 150 to 250ms for state changes, easing cubic-bezier(.22,.61,.36,1), and prefers-reduced-motion always respected.

Writing#

  • Plain language. "Damage per round", not "ADR". "Match replays", not "Demos".
  • When a CS term is the right word, keep it and explain it once nearby.
  • No em dashes. Use a full stop, comma or colon.
  • Sentence case for buttons and labels: "Get started", "Report an issue".
  • Be upfront about alpha status and missing features.

The launcher#

The launcher renders web UI, so the tokens apply directly, at tool density: section padding drops to 24 to 32px and headings to the h3 size or smaller. A dark custom titlebar with a .06 hairline, a left sidebar with 36px nav items, and one orange action on screen ("Find match", "Accept", "Connect"). The match found dialog is the one place a bigger moment is fine: a plane-2 dialog with the countdown and ten player slots, filled orange when accepted.

Tokens#

Tailwind v4 · @theme
@theme {
  --color-bg: #0c0c0d;
  --color-surface: #131315;
  --color-elevated: #19191c;
  --color-foreground: #ffffff;
  --color-muted: #b4b4b8;
  --color-subtle: #8d8d93;
  --color-faint: #5a5a60;
  --color-primary: #f65600;
  --color-primary-light: #ff7a33;
  --color-slate: #7d8aa0;
  --shadow-plane2: 0 20px 60px rgba(0, 0, 0, 0.5);
}
CSS custom properties
:root {
  --line-soft: rgba(255, 255, 255, 0.05);
  --line: rgba(255, 255, 255, 0.08);
  --line-strong: rgba(255, 255, 255, 0.14);

  --radius-control: 6px;
  --radius-well: 8px;
  --radius-tile: 10px;
  --radius-card: 12px;

  --ease: cubic-bezier(.22, .61, .36, 1);

  --font-display: "Barlow Condensed", system-ui, sans-serif;
  --font-sans: "Inter", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
}

Brand assets#

The FLICKED logo: an orange slanted F with a player silhouette
FLICKED

The logo (assests/icon.png) is an orange slanted F with a player silhouette. Do not recolour, outline or rotate it; minimum 20px tall. The wordmark is Barlow Condensed 700 italic, white, 23px next to a 30px logo.

Esc
↑↓ navigate ↵ open