Live sports board
The home screen (/live). Every live and upcoming game, grouped by league, with the
score and one-click prices for the game’s main market. Main workflow: watch several
games, click to trade, dock up to four ladders beside the board.
Content
- Games: live and today’s upcoming games across US majors, soccer, tennis, esports and others.
- Main market per game: the moneyline (winner) market. Three-way for soccer (home,
draw, away). If a game has no moneyline, its highest-volume market. Other markets are
one click away (
+12link → market view). - Per outcome line: team, score, Sell (best bid) and Buy (best ask) buttons, your pending-order dot, your position and P&L.
- Per game: clock, period, possession, live state, in-play delay chip, pre-game wipe warning.
- Sorting inside a league: live games first (by start time), then upcoming (by start time). Reorders are deferred while the list is in use (interactions.md).
- League order: most live games first, then alphabetical.
Desktop (content area 1376 px with no ladders; 448 px with four)
[ellipsis] appears on hover or focus of the game block and opens the game’s menu.
Re-post 3 takes the place of Wipe after the start wipe.
Columns (left-anchored, widths in steps)
Columns are left-anchored, and every column except Game state and Team has a fixed width. Game state and Team take the board’s free width in two steps (below and from a 960 px board), so a name never truncates while its row has room (“Nothing is clipped”). The step changes only when the board width crosses 960 px, which happens when a ladder is docked or closed, never while the pointer rests on a price. Space left over sits at the right end. When the board is too narrow for a column, the column hides, starting from the right:+N, Vol, P&L, Position.
- Every dot, icon, chip, badge and number in a line is
shrink-0: only the team name may shrink. Scores, clocks, prices, sizes and P&L reserve their widest value. - Sell and Buy sit 8 px apart; the same 8 px separates Buy from Pending.
--foreground square after the team name marks an outcome you hold (tooltip: size and
P&L), and the docked ladder headers show the full position. The square is positioned
absolutely and takes no width from the name.
Rows
- Outcome line height
--row-h(36 px). A two-outcome game is 72 px, three-outcome 108. 1 px--borderbetween games. - Hover:
--accenton the whole game block. - Keyboard row cursor: 2 px
--ringbar on the left edge of the current outcome line. - League header: 32 px, sticky under the panel header, heading text, collapse chevron, the column labels (caption) aligned to the columns, and a stale pill when that league’s sports feed is stale.
Interactions
The docked ladders appear to the right of the board (app-shell.md). A docked outcome’s
line gets a 2 px
--foreground bar on the right edge of the Buy button column, so you
can see which rows are docked.
States
Mobile (390 × 844)
- Cards are 358 px wide (16 px margins),
--card,--radius-lg, 12 px inner padding. - Outcome line: 44 px. Logo 20, name (body; short team names; takes the free width and truncates only when it is full), score 28 px, then Sell and Buy price buttons (76 × 44, two-line) right-aligned.
- One gap per group: the Sell/Buy buttons of all outcome lines form one grid with a 4 px gap across and 4 px down. Outcome lines therefore sit 4 px apart.
- Card header: game state on the left; your P&L, pending-order dot and the
[ellipsis]menu button (44 × 44 hit, always visible on touch) on the right. The delay text and wipe warning also sit here; on a card the warning readsOrders cancel at start, since touch has no tooltip. None of them shrinks; the header never truncates the clock. - Footer shows only when you hold a position or have orders in the game.