Frozen browser source build
===========================
The build-web/src directory contains the exact prepared C++/SFML source mirrors
used by the shipped binary. build-web/game-assets contains the preload inputs.
Original sources, content inputs and preparation scripts are included alongside.

Install Emscripten 4.0.15 (scripts/setup-web-toolchain.sh pins emsdk), CMake 3.31.6,
and Python 3. The Lua/Poco and Emscripten port source inputs are included.
From the extracted source root:
  source dependencies-web/emsdk/emsdk_env.sh
  emcmake cmake -S web -B build-web/backend -DCMAKE_BUILD_TYPE=Release
  cmake --build build-web/backend --target arcade --parallel 4
Then copy frozen/modes.json to dist-web/modes.json, frozen/portraits to
 dist-web/portraits, and run python3 web/publish-bundle.py.
The public-release packaging adds source/notices links separately to entry HTML.
Absolute build paths and toolchain packaging can change binary hashes on rebuild;
the published manifest identifies the tested binary, not a reproducible-build claim.

Presentation successor packaging
===============================
The frozen gameplay bundle is retained byte-for-byte. To apply entry/credits
changes to the prior frozen release, run scripts/package-presentation-release.py
with --base (prior release directory) and --output (new release directory).
The previous candidate is required as a binary packaging input; the engine
source and original build instructions above remain complete in this archive.

Presentation successor packaging
===============================
The frozen gameplay bundle is retained byte-for-byte. To apply entry/credits
changes to the prior frozen release, run scripts/package-presentation-release.py
with --base (prior release directory) and --output (new release directory).
The previous candidate is required as a binary packaging input; the engine
source and original build instructions above remain complete in this archive.
