HOLLIN SCROLL-SCRUB KIT  (Vynce Digital, free to use, MIT)
=========================================================

What is in here
  index.html        a working page: open it through any local server (see below) and scroll
  scrub.js          the whole technique, ~90 lines, no libraries
  frames/           60 sample frames from the Hollin render (360 x 640) so it runs straight away
  render/hollin.py  the exact Blender script behind vynce-hollin.pages.dev (Cycles, fully procedural)
  encode.sh         turns a PNG sequence into the two WebP tiers the page loads
  PROMPT.md         the brief we gave our AI build agent, reusable for your own product

Run it
  cd into this folder, then:  python3 -m http.server 8000   and open http://localhost:8000
  (fetch() needs http, so double-clicking index.html will not load the frames)

Make it yours, same day
  1. Get a sequence. Any image sequence works: a Blender/Cinema 4D/Unreal render, a product turntable shot
     on a phone (export every frame), even a time-lapse. 150-400 frames. Keep the camera move slow: the
     page crossfades neighbouring frames, so small steps between frames read as smooth video.
  2. Encode:  ./encode.sh path/to/pngs  ->  frames/hi (1080 wide) + frames/lo (720 wide)
  3. In index.html set count to your frame count and point url() at frames/lo (or pick hi on big screens).
  4. Drive your copy from onProgress(t): t runs 0..1 with the scroll. Counters, colours, chapter text,
     all from that one number, so nothing ever drifts out of sync.

Render your own with Blender (free)
  blender -b -P render/hollin.py -- --mode still --out out/test --res 540x960 --samples 48 --t 0,0.5,1
  blender -b -P render/hollin.py -- --mode seq   --out out/seq  --res 1080x1920 --samples 96 --n 360
  The script builds the glass, the cask, the warehouse and the light from code, then ages the spirit per
  frame: colour by volume absorption, the level dropped by 2 % a year (0.98^years, solved on the glass
  profile), the sun walked from cold dawn to amber dusk. Edit colour_at(), light_at() and CAM to make it
  your own. Seq mode renders coarse-to-fine so you can preview the whole range early.
  Needs a font for the cask stencil: put SairaStencilOne-Regular.ttf (Google Fonts, OFL) next to it.

Weight
  360 frames at 720 x 1280 WebP q80 is about 18 MB, loaded progressively: the first frame shows at once,
  every 32nd frame is in within a second or two, the rest fills in while people read.
