Pub Quiz Platform

Design Specification — Project (cross-cutting)

Status Draft
Scope Project (cross-cutting)
Generated 2026-05-13
Source of truth .claude/context/knowledgebase/design-spec.md

This document captures the look and feel shared by all four apps — Quiz.Designer, Quiz.Host, Quiz.Client, and Quiz.Remote (see Applications). It is the canonical reference for cross-cutting requirement F-X-3 (shared design language). The brand-true treatment lands in the Beta phase; MVP and Alpha are visually utilitarian.

For the per-app inventory of menus, dialogs, panels, shortcuts, and where each surface leads, see UI Surfaces. The design tokens here are the palette every mockup pulls from.

The final product / brand name is deferred to the Beta phase — see open questions. Throughout this spec the apps are referred to by their engineering project names (Quiz.Designer, Quiz.Host, Quiz.Client, Quiz.Remote).

Brand identity

Mood

A pub quiz on a Saturday night, but televised. High contrast, vibrant gradients, neon-tube edges. The cartoon mascot keeps it from tipping into pure neon arcade — there is warmth and humour underneath the energy. Closer to a game-show set than a productivity app.

Color palette

Hex values sampled from the brand banner (branding.jpg) and locked. The swatches printed beside each hex value are rendered in the PDF.

Core hues

Token Hex Usage
color.magenta #FF009F Primary brand accent; logomark; key calls-to-action; "big reveal" highlights.
color.electric-blue #16B2EB Secondary brand accent; live-state indicators; secondary CTAs.
color.deep-purple #961EEF Transitional gradient stop; high-energy backgrounds; big-reveal stages.
color.white #FFFFFF Wordmark fill; primary text on dark backgrounds.
color.near-black #0F0B1A Text shadows; primary text on light backgrounds; neutral surfaces. The slight purple tint reads brand-consistent on dark surfaces.

Gradients

Brand gradient — linear, left → right, color.magentacolor.deep-purplecolor.electric-blue. The signature backdrop. Reserve for hero surfaces — Host session-running screens, Designer launch/hero, Client onboarding.

Subtle backdrop — the brand gradient with a low-poly facet texture overlay at low opacity. Adds depth on content-heavy surfaces without competing with content.

Neon / glow

Neon glow borders and accents are part of the language. Implement as outer glows (high blur, brand-coloured, additive blending) on framed surfaces, on headings during big reveals, and on active leaderboard rows. Use sparingly — neon everywhere reads as cluttered.

QUIZ NIGHT

Theming

The platform supports two layers of theming, both Beta scope:

  1. Studio operator-chrome theme designer host remote — calmer, professional, low-chroma chrome shared by Quiz.Designer, the Quiz.Host operator window, and Quiz.Remote. Each app ships a light and a dark variant; Designer defaults to light (long author sessions), Host operator and Remote default to dark (low-light venue rooms). The vibrant Showtime palette renders only inside each operator app's embedded canvas / audience-mirror region — never in chrome. Full Studio chrome tokens, brand-hue ration rules, and per-app component spec live in Design Specification — Studio. Only Quiz.Client and the Host's audience window ship the full Showtime palette during play.
  2. Per-quiz theme on Host / Client / Remote hostclientremote — the quiz manifest declares a theme that the Host, Client, and Remote render against during play. v1 supports an enum (e.g. dark, light, brand presets) at minimum; richer per-quiz custom palettes are possible Stretch — see Stretch. The default is the dark brand theme.

The Designer chrome theme and per-quiz theme are independent — an author might author in light theme but ship a dark-themed quiz.

Typography

Locked picks (final, not provisional):

Role Family Notes
Display / headings Bebas Neue Tall condensed sans matching the wordmark's character. Used uppercase, tight tracking, drop shadow on dark.
Numerals (scores, timers, countdowns) Bebas Neue The display face. Numbers carry a lot of meaning in a quiz — they earn impact.
Body / UI Inter Industry-standard geometric sans. Excellent at small sizes; pairs cleanly with Bebas Neue.
Mono (rare) JetBrains Mono Score readouts, codes, debug overlays.

The candidate samples that informed this pick are preserved below for reference; the locked faces above are what the apps render.

Display face — Bebas Neue (locked)

Family Headline sample Score sample
Bebas Neue (locked) QUIZ NIGHT TONIGHT 42

Body face — Inter (locked)

Family Body sample (12pt)
Inter (locked) A quick brown fox jumps over the lazy dog. Pub quizzes are a popular social format.

Mono face — JetBrains Mono (locked)

Family Mono sample
JetBrains Mono (locked) core.multiple-choice-input v1.0.0

Typographic rules

Visual motifs

Iconography and imagery

Motion

Sound design

A full audio language lands in Beta. Scope:

Licensing and music sourcing decisions for the Beta audio language belong to Beta-phase work, not this spec. The audio language is mixed for the venue: stings should cut through pub ambient noise without being intrusive.

Team identity client host

Each team has a visual identity bundled at join: name, colour (Beta), avatar (premade or captured photo, Alpha), and buzzer jingle (Alpha). The identity carries through every Host moment the team is featured in: leaderboard rows, big-reveal callouts, correct-answer pings, buzzer-win playback. Per-team photos render at a fixed circular crop at leaderboard-row scale and at a larger square crop on the join-screen team roster. Author-supplied premade avatars use the same crop frame so the leaderboard reads consistently whether a team chose their own photo or the bundled set.

Layout and spacing

The shared spacing scale and per-app layout primitives. Subsections marked *{app}* apply to that app specifically and appear in the per-app design-spec PDFs.

Spacing scale

8 px base — 4, 8, 16, 24, 32, 48, 64, 96. Use only these values across every app surface.

Host canvas host

Fixed virtual 1920×1080 (16:9) that scales to fit the connected display. Author places elements at absolute coordinates. Large type, generous spacing, readable from across a room. Information density low; visual impact high.

Client canvas client

Responsive layout — anchored regions and stacks rather than absolute coordinates — adapting across phone, tablet, portrait, and landscape. Primary actions in the thumb-reachable lower half. Tap targets ≥ 44×44 pt.

Designer chrome designer

Tablet/desktop layout outside the canvases. Master-detail panels, denser information density, designed for sustained authoring sessions. Renders against the Designer's chosen theme (light or dark — see Theming). The embedded preview surface inside the Designer renders Host and Client canvases identically to live play.

Remote panel remote

Phone-first layout. Top region: scaled-down mirror of the Host display (preserve aspect 16:9). Middle region: per-slide host-notes with comfortable line-height. Bottom region: control surface in the thumb-reachable area — advance / go-back, reveal triggers, lock toggle, timer override, scoring override. Action buttons at least 56×56 pt; primary action (advance) larger and visually distinct.

The dual-canvas split is load-bearing: a slide's Host face is a "TV show" composition; its Client face is a snug, one-handed phone composition. Author them as two distinct surfaces that share the slide's identity, not as one design squeezed into two viewports.

Voice and tone