Build Plan — league-of-agents.ai dazzles: the plain arena site transforms — smooth animated visuals, a League of Agents hero video in matching light and dark variants, and an awe-inspiring experience that shows what Claude Code can turn a site into

slug: league-of-agents-ai-dazzles-the-plain-arena-site-t · status: exported · from frame: league-of-agents-ai-dazzles-the-plain-arena-site-t

league-of-agents.ai dazzles: the plain arena site transforms — smooth animated visuals, a League of Agents hero video in matching light and dark variants, and an awe-inspiring experience that shows what Claude Code can turn a site into

Tasks

t1 — Renegotiate the performance budget contract first: new explicit ceilings (CSS bytes, first-party JS bytes, asset weight) written into leaguesite/web/theme.py's docstring contract and tests/testwebthemebudget.py

t2 — Theme token plumbing for the manual toggle: tokens keyed off :root[data-theme=dark] with prefers-color-scheme fallback for system, in league_site/web/theme.py

t3 — Header theme toggle + first-party /site.js + pre-paint snippet: three-state toggle (light/dark/system) in the shell header, localStorage persistence, tiny inline head script applying data-theme before first paint; /site.js served like /theme.css (new module, e.g. league_site/web/scripts.py)

t4 — Motion system in theme.css: entrance reveals, hover/focus micro-interactions, view-transition smoothness — transform/opacity keyframes only, every motion rule inside @media (prefers-reduced-motion: no-preference)

t5 — The hero: a theme-native animated League of Agents arena scene (inline SVG/CSS driven by var(--accent)/var(--bg)/var(--text)) embedded above the fold on the landing page only — agents advance and clash on a grid, score pulses, accent flares

t6 — Raw-surface byte-identity + no-external-origin proof: tests asserting *.md, /llms.txt, /front are untouched by the dazzle layer, and emitted HTML/CSS/JS reference no third-party origins

t7 — Accessibility hardening: test asserting the stylesheet guards all motion behind prefers-reduced-motion; toggle keyboard-operable with a visible focus ring and an accessible name/state

t8 — Ship gate (ops, main session): deploy, then Lighthouse >=90 perf / >=95 a11y on the live landing in both schemes (desktop+mobile), zero-third-party network-panel check, walkthrough screenshots of /, /docs, /leaderboard, /about in both schemes attached to the PR; diff review confirms no framework/build step and the match viewer untouched (c16), honoring the open-rewrite decision (c18)

t9 — Link integrity proof: server-side crawl test asserting zero broken links across all shelled pages (nav, footer, in-content)

Risks