A GAIN-style certified draw (client-side crypto entropy), a 10,000-run Monte Carlo on a 6/49 game showing real expected-value behaviour, and a bilingual compression visualizer that turns the EN↔FR 60–72% rule into something you can see. Nothing is mocked. Everything runs in your tab.
Draws 7 unique numbers from 1–49 using crypto.getRandomValues, mixes with a simulated NIST-beacon salt, emits a reproducible audit hash. In production this runs inside an HSM with GLI-19 / GLI-33 certification.
Each run: pick 6 unique numbers from 1–49, draw 6 unique winners, count matches. Pays by a typical Canadian payout schedule (6=CA$5M pooled proxy, 5=CA$2500, 4=CA$50, 3=CA$10). Ticket CA$3.
Distribution of prize tiers (0 matches → 6 matches). The 0-match column dominates — that is the house edge rendered visually.
Loto-Québec and every bilingual Crown lottery lives with this asymmetry. Creative teams that assume parity ship layouts that truncate, wrap or push legal copy off-canvas. Toggle to see the same ticket rendered in both languages.
The production Studio pipeline enforces the compression rule at template level — you cannot ship a creative where FR overflows the EN bounding box, and cannot ship one where FR legal copy drops a mandatory regulator-required phrase.