diff --git a/packages/client/src/components/leaderboard.tsx b/packages/client/src/components/leaderboard.tsx
index f8383a7..b1482ee 100644
--- a/packages/client/src/components/leaderboard.tsx
+++ b/packages/client/src/components/leaderboard.tsx
@@ -28,6 +28,7 @@ export function Leaderboard({ entries, resultsEntered }: LeaderboardProps) {
P:{resultsEntered ? entry.predictionPoints : "?"}
J:{entry.juryPoints}
B:{entry.bingoPoints}
+ Q:{entry.quizPoints}
{entry.totalPoints}
@@ -39,6 +40,7 @@ export function Leaderboard({ entries, resultsEntered }: LeaderboardProps) {
P = Prediction points — 25 for correct winner, 10 each for 2nd/3rd, 15 for last place
J = Jury points — rate each act 1-12, earn up to 5 pts per round for matching the group consensus
B = Bingo points — 2 pts per tapped trope + 10 bonus for a full bingo line
+ Q = Quiz points — 5 easy, 10 medium, 15 hard
diff --git a/packages/client/src/routes/display.$roomCode.tsx b/packages/client/src/routes/display.$roomCode.tsx
index 8c8395f..5d8f019 100644
--- a/packages/client/src/routes/display.$roomCode.tsx
+++ b/packages/client/src/routes/display.$roomCode.tsx
@@ -6,6 +6,7 @@ import { PlayerList } from "@/components/player-list"
import { JuryDisplay } from "@/components/jury-display"
import { BingoDisplay } from "@/components/bingo-display"
import { Leaderboard } from "@/components/leaderboard"
+import { QuizDisplay } from "@/components/quiz-display"
import { RoomHeader } from "@/components/room-header"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
@@ -57,6 +58,9 @@ function DisplayView() {
{room.currentAct === "scoring" && gameState && (
Scoring
+ {gameState.currentQuizQuestion && (
+
+ )}
{gameState?.actualResults && (
diff --git a/packages/client/src/routes/host.$roomCode.tsx b/packages/client/src/routes/host.$roomCode.tsx
index 76ec738..af0ad1d 100644
--- a/packages/client/src/routes/host.$roomCode.tsx
+++ b/packages/client/src/routes/host.$roomCode.tsx
@@ -7,6 +7,8 @@ import { JuryHost } from "@/components/jury-host"
import { JuryVoting } from "@/components/jury-voting"
import { BingoCard } from "@/components/bingo-card"
import { ActualResultsForm } from "@/components/actual-results-form"
+import { QuizHost } from "@/components/quiz-host"
+import { QuizBuzzer } from "@/components/quiz-buzzer"
import { Leaderboard } from "@/components/leaderboard"
import { RoomHeader } from "@/components/room-header"
import { Button } from "@/components/ui/button"
@@ -117,6 +119,14 @@ function HostView() {
/>
)}
+ {gameState && room.currentAct === "scoring" && gameState.currentQuizQuestion && (
+ send({ type: "buzz" })}
+ />
+ )}
+
{gameState && (room.currentAct === "scoring" || room.currentAct === "ended") && (
)}
@@ -181,6 +191,14 @@ function HostView() {
onCloseVote={() => send({ type: "close_jury_vote" })}
/>
)}
+ {gameState && room.currentAct === "scoring" && (
+ send({ type: "start_quiz_question" })}
+ onJudge={(correct) => send({ type: "judge_quiz_answer", correct })}
+ onSkip={() => send({ type: "skip_quiz_question" })}
+ />
+ )}
{gameState && (room.currentAct === "scoring" || room.currentAct === "ended") && (
)}
+ {gameState && room.currentAct === "scoring" && gameState.currentQuizQuestion && (
+ send({ type: "buzz" })}
+ />
+ )}
+
{gameState && room.currentAct === "scoring" && (
)}