diff --git a/docs/leaderboard.md b/docs/leaderboard.md
index e67fe8c..1259a21 100644
--- a/docs/leaderboard.md
+++ b/docs/leaderboard.md
@@ -35,6 +35,13 @@ History pagination retains the selection and return link. Map links preserve
the selected ranking metric. A player without qualifying matches in a selection
can still view their lifetime profile and choose another scope.
+On phones, per-map records and match history use compact cards with the map,
+game, highest round and kills up front. Expand **All stats and record runs**
+or **More match stats** for the remaining counters and source evidence. Desktop
+profiles retain the complete tables; both views use the same history filters
+and pagination. History dates say **First observed**, since a missing start
+report can make the first recorded observation later than the actual game start.
+
Highest-round, best-game-kill and highest-score records link to the completed
match that earned them on the leaderboard and in lifetime/per-map profile stats.
Each source shows its map, game, completion time, server, and whether the match
diff --git a/src/lib/ui/components/PlayerMapCards.svelte b/src/lib/ui/components/PlayerMapCards.svelte
new file mode 100644
index 0000000..dbe40ab
--- /dev/null
+++ b/src/lib/ui/components/PlayerMapCards.svelte
@@ -0,0 +1,66 @@
+
+
+
+ {#each maps as map (`${map.game}:${map.key}`)}
+
+
+