zebra-report/web
Russell Ballestrini 4f11738731
zebra-spaces: spotlight model — one tile big in middle, click thumbnail to swap
Per fox: every camera and screen tile becomes clickable. One tile at a
time sits in the middle 'spotlight' slot at full size; all others
render as thumbnails in the cameras column (with screens stacked
under the cameras group). Clicking any thumbnail promotes it to the
spotlight and demotes the previous spotlight tile back to its kind's
thumb container. Thumbnails hide the fullscreen button (the tile-click
is now the action) and shrink to ~22vh letterbox.

Implementation:
- DOM: replaced #screens with #spotlight (middle); added
  #screens-thumbs to cameras-col (under #cameras); cameras-thumbs h2
  appears when at least one thumbnail screen exists.
- TILE_KINDS now points at thumb containers only; spotlight is shared
  across kinds via a single global 'spotlight = {kind, pubHex}' var.
- renderVideoTile: first tile auto-promotes to spotlight; subsequent
  tiles go to their kind's thumb container. Tile click handler calls
  setSpotlight; fullscreen + tap-to-play buttons stopPropagation so
  they don't trigger the swap.
- removeVideoTile: if the removed tile was the spotlight, pickNext-
  Spotlight() promotes a screen (preferred) or camera. Otherwise just
  updates container visibility.
- updateContainerVisibility: hides sec-spotlight when nothing spotlit,
  hides sec-cameras when no tiles at all, hides screens-thumbs h2
  when no thumbnail screens are present.
- CSS: .tile-thumb shrinks video (22vh max) + meta fontsize; spotlight
  cameras use object-fit:contain so the whole face frame is visible.
2026-06-02 10:25:14 -04:00
..
blog phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
fonts phase 2: gap analysis — cat>> append + binary asset recovery 2026-05-27 13:54:19 -04:00
chat.html css: .row uses minmax(0, max-content) so long labels shrink + wrap 2026-06-02 09:27:55 -04:00
host-your-own.html zebra: dark mode default on all pages + unified theme key 2026-06-01 22:18:02 -04:00
how-it-works.html zebra: dark mode default on all pages + unified theme key 2026-06-01 22:18:02 -04:00
index.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
kernel.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
stamp.js web: stamp each zebra-report page with build date + md5/sha256 2026-05-28 17:50:12 -04:00
zebra-audio.html css: .row uses minmax(0, max-content) so long labels shrink + wrap 2026-06-02 09:27:55 -04:00
zebra-spaces.html zebra-spaces: spotlight model — one tile big in middle, click thumbnail to swap 2026-06-02 10:25:14 -04:00