Design system reference

Style Guide

Visual reference of colors, typography, components and patterns used across Turfobet.

Color Palette

Brand Colors

emerald-700
emerald-600
emerald-500
emerald-400
amber-500
amber-400
yellow-400
yellow-300
red-600
red-500

Surface hierarchy

page
panel
panel-header
inset
seam
seam-strong
light-page
light-panel
light-header

The page is the darkest plane. Panels lift one step, headers lift one more, and seams stay close to their surfaces. Use strong seams for controls and selected boundaries only.

Semantic Tokens

Primary
emerald-700
Secondary
amber-500
Accent
yellow-400
Destructive
red-600
Page
page canvas
Panel
content surface
Header
raised panel row
Inset
recessed region

Typography

Body — Inter

The quick brown fox jumps over the lazy dog

Weights 100–900, variable

Display — Lexend

The quick brown fox jumps over the lazy dog

Weights 700–900, branding

Mono — JetBrains Mono

const x = 42;

Weights 400–800, code

Heading Scale

text-6xl · font-extrabold · tracking-tight

Hero Heading

text-5xl · font-extrabold

Page Title

text-4xl · font-extrabold

Section Heading

text-2xl · font-bold

Subsection Title

text-xl · font-semibold
Card Title
text-lg · text-white/70

Subtitle or lead paragraph text used below hero headings.

text-base · text-white/60

Body text for general content, descriptions, and paragraphs across the application.

text-sm · text-white/50

Small text for captions, meta information, breadcrumbs and secondary labels.

Gradient Text Accent

Pronostics Hippiques

text-transparent bg-clip-text bg-linear-to-r from-yellow-300 to-amber-400

Buttons

Actions follow task hierarchy, not feature color. Use one solid primary action per decision area; supporting actions use inset or outline surfaces. Accent is for commerce or Challenge entry, quiet danger for reversible inline removal, and destructive only for the final irreversible confirmation.

Variants

Sizes

Usage

With Subtext

Badges

Badges are quiet metadata, not miniature buttons. Use a faint seam and inset fill for neutral labels, a low-opacity semantic tint for domain or status labels, and reserve stronger contrast for warnings and selected states. Prefer compact corners over pills unless the shape represents a count or live presence.

Component Variants

DefaultSecondaryDestructiveOutline

Custom Inline Badges

En directQuinté+GalopIREC5

Forms

Dark Theme Inputs

Standard Inputs

Ce champ est requis

Hero Patterns

ContentHero — Article Pages

Full-height hero for article/content pages (e.g. Quinté du Jour). Uses pt-16 pb-20 md:pt-24 md:pb-28.

Badge text

Article Title

Subtitle text with max-w-2xl constraint for comfortable reading.

Utility Hero — Browse Pages

Compact hero for utility pages (Courses, Résultats, Pronostics). Uses pt-10 pb-12 md:pt-14 md:pb-16 to keep content above the fold.

Programme des Courses

Shorter subtitle to keep things compact.

Race Desk UI

Race desk is the default product language: compact panels, dividers, terminal tags, tabular numbers and functional racing accents. Use glass only where an overlay genuinely needs it.

R1 C5

Prix de Vincennes

2850m · Trot attelé · 16 partants

14:50
départ
1Doha du Boulay4.2Base
8Espoir de Guez7.1Outsider
12Fée du Noyer12.5Risque
Parieur

Plan column

Flat plan surface with dividers, not a floating glass card.

19€/mois
Analyse IA des partants
Visuturf + Equidegraph
Historique course complet

Surfaces

`rounded-md`, 1px border, dividers, no default blur.

Commerce

Amber is reserved for CTA, value, promo and turfos emphasis.

Domain

Red carries Quinté+, Challenge, warning and destructive state.

Default Hover Surface

raceDeskHoverClass · transparent default, border reveal, panel-header hover fill

Segmented Controls

Card Patterns

Quinté+14h50

Prix de Vincennes

Vincennes — Trot Attelé

16 partants 2850m
Voir le pronostic
RésultatTerminé
1Doha du Boulay4.2
2Espoir de Guez7.1
3Fée du Noyer12.5

Taux de réussite

30 derniers jours

72%

+5% vs mois précédent

Limited Glass

Glass is limited to sticky navigation, modal backdrops and tiny overlays on imagery. Do not use it as the default panel, pricing or Salon shell.

Sticky navigation

panel/90 + backdrop-blur-md
bg-panel/90 backdrop-blur-md border-b border-seam

Image overlay

Image metadata
bg-black/35 backdrop-blur-sm on imagery only

Racing UI

Race Header

R1 — VincennesMardi 11 mars 2026
C5

Horse Rows

1Doha du BoulayJ. Abrivard4.2
2Espoir de GuezF. Nivard7.1
3Fée du NoyerB. Rochard12.5

Bet Families (BET_FAMILIES)

SimpleCoupléTrioTiercé2/4Quarté+Quinté+MultiMini MultiPick 5S4

Performance Graph

Bon Moyen Faible

Icon semantics (Lucide React)

Lucide remains the implementation set. Use icons for actions, status, navigation and recognizable objects. Do not add them to metric cards or section headings for decoration. Default size issize-4 (16px).

Use icons when recognition helps

Status
Close
Navigate
Calendar
Time
Place

Prefer terminal identifiers for domain context

R1C5Q+IAPRO

Identifiers carry race, course, product and plan meaning more directly than generic pictograms.

Spacing & Radius

Border Radius

rounded-sm
rounded-md
rounded-lg
rounded-xl
rounded-full

Shadows

shadow-xs
shadow-sm
shadow-md
shadow-lg
shadow-xl

Key Gradients

Hero overlay
Accent gradient
Turf button

Turfobet Design System — Internal reference