Short, honest notes from building Probably Stolen. Including the parts that did not work.
A ledger, not a canvas
The first prototype drew the counter on a canvas. It looked fine and played badly: text wrapping, focus rings, and scrolling stock lists all had to be rebuilt by hand, and a screen reader saw one large rectangle.
The rebuild is DOM and CSS. A customer card, seven buttons, a stock list. It is less impressive in a screenshot and much better with a keyboard.
Tells, and why the game never lies
Hidden information is only fair if the player can learn it. The Aug has five tells, two visual and two behavioural plus one bureaucratic, and one of them is always visible. That is why a mismatched uniform is a warning and not a conviction.
The one exception is the weapon. Drawing is a guess with a price attached, and the price is printed on the button before you commit.
Five languages in a static build
The game strings are a flat key catalog, one file per language, typed against the English master so a missing key fails the build instead of shipping an empty button.
Each page inlines only its own catalog, so a Russian player downloads Russian strings and nothing else. Switching language reloads the page and the run resumes from the same save.
Renaming the whole thing
Late in the build the project stopped calling itself after the game it was inspired by. Probably Stolen, credits, Aug, Security, Reputation, Buyout, Rent, the landlord: a full naming pass, five languages, one save migration.
The lesson is boring and correct: write the naming rules down before the first string, not after the four hundredth.