- lobby.$code.tsx: waiting room with live player list via lobby:state,
copyable lobby code, host Start Game button (disabled until 2+ players),
sends lobby:join on connect, lobby:leave on unmount
- game.$code.tsx: in-game view, sends game:ready on mount to get current
question, handles game:question/answer_result/finished messages,
reuses QuestionCard component, shows round results after each answer
- MultiplayerScoreScreen: final score screen sorted by score, highlights
winner(s) with crown, handles ties via winnerIds array, Play Again
navigates back to lobby, Leave goes to multiplayer landing
- GameRouteSearchSchema added to shared for typed lobbyId search param
without requiring Zod in apps/web