Concept A, approved. Drawn inside the game frame by the shared player shell (game-evolve/client/shell.css, on the shell's own element ids); this sheet is its spec.

Start card

The same for every game, and for games embedded on other sites. Title and one line, the name box (up to 32 characters, empty with a "Your name" hint), Play, and "Just watch" when the game can be watched. After a try that did not get in (full, too many watching, nobody playing, disconnected ...) the reason shows as an orange alert above the name box; while connecting or loading, a quiet line sits at the bottom.

Start · full room · connecting

Join the game

Snake

Pick a name and enter the grid.

Start

Join the game

Snake

Pick a name and enter the grid.

This game is full. Press Play to try again.

Full room (the alert)

Join the game

Snake

Pick a name and enter the grid.

Connecting…

Connecting (Play disabled, quiet line)

Private preview · embedded · expired link

Private

Preview

A private run of this exact build, only for you. The live game keeps serving players its own build, so nothing you do here reaches them.

Preview (no name box)

Snake

Embedded (smaller, no line)

Invitation

This invitation link has been used or has expired. Ask whoever shared it for a new one.

Expired link (title and line only)

Watching (over the running game)

Watching

Waiting for Mia…

Card 380px, --radius-xl, --color-surface on a 1px --color-surface-raised line, padding --space-6 (--space-5 on a phone, title 32) · eyebrow .cv-eyebrow · title Russo One 40, .04em · name box 48px on --color-surface-sunken · Play .cv-btn · Just watch .cv-btn--quiet · alert --color-in-progress at 12% with its dot · HUD pill on the 78% scrim with blur, live dot with its halo, picker 34px on --material-raised · waiting banner: neon dot.