Skip to content
Top Trumps · Built on our ratings
Play the Game
Every player is a card, every stat is real. Duel the CPU, draft a roguelike deck, or chase a Higher / Lower streak — then take on today’s Daily Run (same hand for everyone) and climb the global leaderboard.
How to play
Daily Run Today's seeded roguelike — the same opponents and draws for everyone. Your best depth + streak feed the global leaderboard.
Gaffer's Run The roguelike: climb a ladder of CPUs, draft one of three cards after each win, lose a fight and the run's over.
Higher / Lower Endless streak — is the next card's stat higher or lower than this one? One wrong call ends it.
Quick Duel Classic Top Trumps — pick your card's strongest stat and beat the CPU's hidden card.
Build Your Hand Drag cards into the tray to assemble your own deck, then duel the exact hand you picked.
Today’s Daily Run leaderboard
Show code
statsEsc = window . statsEsc
gamesDate = { const d = new Date (); return d. getFullYear () + "-" + String (d. getMonth () + 1 ). padStart (2 , "0" ) + "-" + String (d. getDate ()). padStart (2 , "0" ) }
gamesBoards = {
const base = (window . WORKER_BASE_URL || "" ). replace (/ \/$ / , "" )
const board = async (sport) => {
if (! base) return null
try {
const r = await fetch (` ${ base} /api/run-score?sport= ${ sport} &day= ${ gamesDate} ` )
if (! r. ok ) { console . warn ("[run-score] HTTP " + r. status , await r. text (). catch (() => "" )); return null }
return (await r. json ()). scores || []
}
catch (e) { console . warn ("[games] board fetch failed:" , e); return null }
}
return { football : await board ("football" ), afl : await board ("afl" ) }
}
{
const panel = (label, href, scores) => {
const rows = (scores || []). slice (0 , 8 ). map ((s, i) =>
`<div class="gb-row"><span class="gb-rank"> ${ i + 1 } </span><span class="gb-name"> ${ statsEsc (s. name )} </span><span class="gb-depth"> ${ s. depth } /8</span></div>` ). join ("" )
const body = scores == null ? `<div class="gb-empty">Leaderboard offline</div>`
: (rows || `<div class="gb-empty">No runs yet today — <a href=" ${ href} ">be the first</a>.</div>` )
return `<div class="gb-panel"><div class="gb-head"><a href=" ${ href} "> ${ label} </a><span class="gb-day"> ${ gamesDate} </span></div> ${ body} </div>`
}
const div = document . createElement ("div" )
div. className = "games-boards"
div. innerHTML = panel ("Football" , "/football/cards.html" , gamesBoards. football ) + panel ("AFL" , "/afl/cards.html" , gamesBoards. afl )
return div
}
See the full leaderboard — all-time best & longest streaks →