Sample screen — calibration values
ANTIDOTE
Carrier status
10050 30
100%
Vitality at admission
Infection −7.5
Day 1 grace +7.5
Net today 0.0
From day 2
−7.5  / 24h
100% → critical 30%
9.3 days
The gauge is a vitality, not a balance. Below 30% the earn rate drops sharply — a low gauge costs income, never capital. With a P3 mask the decay falls to −6.0 and the threshold moves out to ~11.7 days.
The loop
Walk
Every site costs energy · 4 in reserve, 1 back every 4h
Craft
3 materials + 3 solvent → one dose, vitality +12 pts
Gear up
Gear moves the dial from survival to progress
Admission
01
Identity
Google or email · no extension, no seed phrase
02
Home screen
Full screen, no browser bar
03
Entry
Day 1 starts at admission
Before you enter
Free entry. No deposit, no purchase, nothing to buy.
What you earn without depositing stays sealed: it grows, it never leaves. Only what you deposit yourself can ever come back out — and that is for later, never today.
The reward pool is announced on Monday, before the week, never tallied after the fact. Ballpark at launch — working assumption, ~100 players with ~20 depositors: ~$14 per depositor in a normal week, $3.40 in a dead week. No floor, ever.
It comes from game revenue and buys back ANTIDOTE on the market — never from player deposits, and we never mint tokens to pay it.
It is a game with a small yield attached, not a yield product with a game attached.
Simulation — no SDK wired in

This selector only pushes a snapshot into render(), exactly the way AntidoteWallet.onChange would. The four contract <script> tags sit commented out at the bottom of the file, in the right order, ready to switch on.