// First-visit case brief: a one-card overlay on the board that tells a new player // everything they need — who's dead/wronged, and what to do about it. Shown once per // case per browser; the full dossier stays one tap away. import { useState } from 'preact/hooks' import { useGame } from '../store' import { hasSeen, markSeen } from '../tips' import { Btn, Chip, Panel } from './components' export function CaseBriefOverlay() { const g = useGame() const c = g.case const key = `brief:${c.id}` const [show, setShow] = useState(() => !hasSeen(key)) if (!show) return null const done = () => { markSeen(key) setShow(false) window.dispatchEvent(new Event('cz-brief-done')) } return (
One of them is lying. Question the suspects, present evidence, and make the accusation.