Keres Style guide

Style guide

Every shared component of the Keres website and platform, on a single page. If something looks off here, it is off everywhere. Source: design-system/src — tokens in tokens.css, Tailwind names in tailwind.preset.js.

Colours

Semantic tokens only. Use the Tailwind name (bg-surface, text-muted, border-line); never a raw hex in a component.

Surfaces & lines

canvas
#010101 · page

sunken
#111 · panels

inactive
#141414 · idle

surface
#1a1a1a · cards

surface-hover
#262626

brand
#55442d · fills

line
#55442d · borders

edge
#2a2a2a · hairlines

Text & brand

fg
#f8f0e6 · body

soft
#e1c499 · strong

muted
#a3a3a3 · meta

subtle
#777 · hints

primary
#e19e5b · accent

primary-hover
#ebb075

ink
#1a1208 · on bright

Feedback

success
#48c78e

danger
#c62836

danger-text
#f5848f · on dark

warning
#f0a030

info
#3e8ed0

Board

tile-dark

tile-light

tile-stroke

piece-light

piece-dark

Typography

Three families: Carolingia (font-display: logo, hero, big numbers), RomanSerif (font-title: headings) and the sans stack (font-sans: body, UI).

h1 · hero / landing title (bare element)

Keres

.page-title + .page-subtitle · page heading in the platform

Lobby

Find an opponent or invite a friend.

h2 → h5 · RomanSerif (bare elements, used in content)

Heading 2

Heading 3

Heading 4

Heading 5

.card__title · .eyebrow · .stat__value

Card title

Eyebrow label

1 842

Body, links, emphasis

Body copy in the cream fg colour with a link, some strong text, small text and muted meta text. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore.

  • List item one
  • List item two

.intro — centred italic lead used on the rules page.

Shape & elevation

rounded-sm
rounded-md
rounded-lg
rounded-full
shadow-raised
shadow-modal
shadow-cta

Buttons

Pill-shaped by default. .btn + one variant; add .btn--sm / .btn--lg for size. Replaces Bulma .button.is-rounded.is-*.

Variants

Sizes

With icon · icon only · links

Link as button

States

Stacked preset buttons (lobby) — aria-pressed drives the selected look, no class toggling

Joined group · full width · modal close

Forms

The Symfony form theme maps onto these classes (form_row → .field, form_label → .label, form_errors → .help--danger).

Shown on your profile and in games.

This value is not a valid email address.

Checkboxes
Radios
Input group (search)
Date range
to
Progress

Composition · lobby “new seek” form

New game

Format

Pick a preset or tune the time control below.

Cards & stats

Card

Default surface for grouped content (Bulma .box).

Interactive card

Border lights up on hover.

Statistics

Wins

128

Losses

94

Draws

12

Win rate 54.7% over 234 finished games

Magnus Online

@magnus · Member since March 2026

Tags

Solid

DefaultPrimaryBrandWhiteLightSuccessDangerInfoWarning

Soft (tinted)

Your turnWin 12Loss 3In progressDraw

Sizes · square

SmallDefaultLargeSquare

Alerts, callouts & modals

Your settings have been saved.
Invalid credentials. Reset your password.
Maintenance is scheduled for Sunday 02:00 UTC.
Your correspondence game is about to time out.
You are playing as a guest — sign in or create an account to keep your games.
Dismissible alert

Callouts (rules page)

A stack may only move one tile per turn unless it contains a Knight.
Warning: capturing a King ends the game immediately.

Modal

Empty state · spinner

You have no games in progress.

Sticky in the app (static here so several can be shown). Resize below 1024px to see the burger menu. The notification panel is shown open.

Signed out

Signed in, notification panel open

Tabs

Pill tabs

Side menu (settings / admin)

Pagination — datagrid

Pagination — simple (page X of Y)

Language switcher

EnglishFrançais

Tables & lists

Table (hover) in a card, scrolls horizontally on small screens

Open seeks (4)

PlayerTime controlModeColour
Ada (1612)3+2RatedRandom
Linus (1540)10+5CasualWhite
You1+0RatedRandom
Grace24hRatedBlackUnavailable

Admin datagrid: toolbar, status tags, actions

1 248 results
#PlayersResultRated
4821WAda vs BLinus1-0Rated
4820Engine L3 vs Grace½-½Casual
4819 DeletedMagnus vs AdaIn progressRated

Game rows · friends · announcements · notifications

WMagnusvsBEngine L3
Rated3+2

Your turn12 min remainingLast move Oct 10, 2026, 5:32 PM

Resume
WAdavsBGuest

You wonFinished Oct 9, 2026, 9:10 PM

View

Friends

  • Ada @adaOnline
  • Linus @linusRequest sent
  • No pending requests.

Announcements

  • Tournament weekend

    Join the first bot tournament on Saturday.

  • New board theme

    Settings → Board lets you toggle coordinates and threats.

Show 2 moreShow less
  • Welcome

    The platform is now open.

Game screen

The full game page (player cards, board, moves panel, three container-query layouts, fullscreen) has its own page with a viewport simulator: open the Game view lab →. Below, its building blocks in isolation.

Player card (slim row layout; becomes a tall column card ≥ 94rem)

M
MagnusWhite1842+12
02:58
+2
Engine L3Black1650?−8
02:41

Clock states

05:00
02:58
00:09

Status banner (one state at a time)

Opponent's turn
Your turn
You won by checkmate
You lost on time
Draw by agreement
Game aborted

Evaluation bar (white ahead · black ahead · flipped · pending)

+2.1
−1.6
+2.1

Icon buttons, game buttons, switches

Moves list + navigation

Moves

  1. 1.
  2. 2.

Option badges · feedback banner

Rated3+2Real time

Pieces & rules

Piece icons (CSS mask, 3 tints)

Piece cards (rules page)

Knight (N)
Knight moves

Moves in an L shape.
Can jump over pieces.

Rook (R)
(moveset image)

Any distance orthogonally.

Movement table

11
11
N
11
11

Hero & sections

Keres

A new abstract strategy game of stacking and tactics.

Play now

The concept

Two armies, one board, and pieces that can carry each other. Stack, unstack and outmanoeuvre your opponent.

Read the rules
Starting position

Collector's edition

Lightbox: click the board image above to open it.

Prose (legal pages, Markdown)

Privacy policy

We collect the minimum data necessary to run the service. Contact us for any GDPR request.

  • Account data
  • Game history
Your games belong to you.

Error page

404

Page not found

The tile you are looking for is empty.

Page layouts

Realistic compositions to check that everything sits together. Layout uses plain Tailwind grid utilities; Bulma's columns / level have no equivalent component.

Settings (menu + form)

Profile

Visible to other players.

Login

Sign in

Choose a provider to continue.

Continue with Google Continue with Discord

Dashboard

Dashboard

WMagnusvsBAda

Your turn23 h remaining

Resume
WLinusvsBMagnus

Opponent's turn

Resume

Statistics

Wins

128

Losses

94

Draws

12


Announcements

  • Tournament weekend

    Join us on Saturday.

Admin dashboard

Total players

1 248

Connected (5 min)

37

Finished games

9 402

Stale games (24h+)

5