The three main-menu buttons, Daily Challenge, Duel a Friend, Duel the Computer, had looked identical since the [restructure](/posts/norwegian-done-properly) that gave the app a dedicated menu in the first place: same size, same shape, no visual reason to reach for one before another. The issue that opened on it put it plainly, that the menu looked like no one had bothered designing it, with a rough mockup attached as a direction, not a spec.

That distinction, direction rather than spec, decided how the fix got built. Rather than translating the mockup into code and iterating from there, four throwaway variants went up behind a `?variant=A|B|C|D` query string on the live menu route: a row with an accent divider, an accent bar paired with a header, a plain hero card with the duel pair below it, and a refined pass on that hero-and-pair shape. Each was reviewed in the browser as it actually rendered, not as a static mockup, and variant D won after feedback on variant C sent the icon badges from a fixed circular box to a squircle sized by its own padding, so a single calendar icon and a two-person duel icon both got room to sit comfortably.

Daily Challenge became a full-width hero card, flat accent tint, fully centered content. Duel a Friend and Duel the Computer sit as a centered pair underneath. Each mode draws its accent from tokens the app already had, rather than inventing new ones:

```typescript
const MODE_CARD_ACCENTS: Record<'daily' | 'pvp' | 'pve', string> = {
  daily: 'var(--color-starfruit)',
  pvp: 'var(--color-grape)',
  pve: 'var(--color-opponent-head)'
};
```

The Duel the Computer accent reuses the same orange the AI opponent's snake has worn since duel mode's first version, so the menu button now points at the same color the player is about to play against. The tint itself is `color-mix(in srgb, var(--accent) 22%, transparent)`, one line doing what would otherwise be three separate hardcoded colors per mode.

One thing came out rather than in: the page's own logo and intro line, sitting above the mode buttons, said nothing the fixed app toolbar directly above it didn't already say. Dropping it meant the page went straight from toolbar to buttons, and the intro copy, "type words to steer the snake," left the UI string files with no other caller to keep it around for.

The whole pass landed as a single commit against a single file, with the four discarded variants left in place on their own branch as a record of what didn't win and why, rather than deleted the moment the choice was made.