// Single source of truth for the game board's fixed pixel sizes. // // The board deliberately uses fixed px (not rem) so it stays pixel-precise and // scales as one unit via `useFitScale` (desktop) — see index.css for why the // board opts out of the global rem type lever. These constants keep those px // values in one place instead of scattered as inline literals across the board // components (Standings / GameTable / …). // // PlayerCircle derives its own font/padding as ratios of the `size` it gets, so // its internal ratios stay local to that component; only the per-seat `size` // inputs live here. /** Player-circle diameter per seat, by viewport. */ export const SEAT_SIZE = { desktop: { top: 64, side: 64, me: 70 }, mobile: { top: 52, side: 48, me: 60 }, } as const; /** Score list (Standings) type sizes. */ export const STANDINGS_FONT = { desktop: { head: 12, idx: 13, cell: 18, dot: 18, sigma: 18, total: 20 }, mobile: { head: 11, idx: 9, cell: 16, dot: 13, sigma: 15, total: 18 }, } as const; /** Header / score totals row (GameTable). The value size differs between the * compact desktop header and the mobile header. */ export const TOTALS_FONT = { label: 12, valueDesktop: 18, valueMobile: 17, } as const; /** Guess (tip) picker buttons (GuessControls): round button diameter + label * size, in px — kept fixed like the rest of the board (not rem Tailwind classes) * so they don't drift with the global font-size lever. */ export const GUESS_BUTTON = { desktop: { size: 48, font: 22 }, mobile: { size: 40, font: 18 }, } as const;