diff --git a/web/zebra-spaces.html b/web/zebra-spaces.html index a3fb8b2..504efd3 100644 --- a/web/zebra-spaces.html +++ b/web/zebra-spaces.html @@ -209,10 +209,34 @@ * sinks for the WebRTC track, no UI required */ audio { display: none; } - /* screen-share tiles render in the LEFT (timeline) column at full width. - * When sec-screens is shown the game tabs + iframe are hidden so the - * screen owns the column. */ - #screens { display: grid; grid-template-columns: 1fr; gap: 0.75rem; } + /* spotlight: the active tile (camera OR screen) renders full-width + * in the middle column. All other tiles render as thumbnails inside + * the cameras-col. Clicking a thumbnail promotes it to the spotlight + * and demotes the current one back to the column. */ + #spotlight { display: grid; grid-template-columns: 1fr; gap: 0; } + #screens-thumbs { display: grid; grid-template-columns: 1fr; gap: 0.45rem; margin-top: 0.5rem; } + .screens-thumbs-h2 { margin-top: 0.5rem; } + .screens-thumbs-h2.hidden { display: none; } + /* a thumbnail tile is the same DOM as a spotlight tile but with a + * thumb modifier class; clicking it triggers a spotlight swap */ + .tile-thumb { cursor: pointer; } + .tile-thumb:hover { outline: 1px solid #888; } + /* spotlight sizing — a camera in the spotlight uses contain so the + * whole frame is visible (not cropped like the thumb cover) */ + #spotlight > .camera-tile video { + aspect-ratio: 16 / 9; + object-fit: contain; + max-height: 92vh; + } + /* thumb sizing for either kind: small, cropped 16:9 */ + .tile-thumb > video { + width: 100%; height: auto; + aspect-ratio: 16 / 9; object-fit: cover; + max-height: 22vh; + } + .tile-thumb > .screen-meta { + font-size: 0.6rem; padding: 0.15rem 0.3rem; + } /* tile chrome (border + bg + meta) defaults to light-theme palette so * the screen-share blends with a white page. Dark-theme overrides * further down restore the black tile chrome for the night palette. */ @@ -239,9 +263,9 @@ font-family: monospace; font-size: 1rem; user-select: none; } .screen-tile.needs-tap .tap-play { display: grid; } - /* sec-screens visible → push everything else in the timeline column down or hide */ - .timeline:has(> #sec-screens:not(.hidden)) > .game-tabs, - .timeline:has(> #sec-screens:not(.hidden)) > #game-frame { display: none; } + /* spotlight active → hide the game iframe so the spotlight tile owns the column */ + .timeline:has(> #sec-spotlight:not(.hidden)) > .game-tabs, + .timeline:has(> #sec-spotlight:not(.hidden)) > #game-frame { display: none; } /* camera tiles live in the LEFT column now — single column, stacked * vertically. Each tile keeps a 16:9 letterbox so faces don't squash. */ @@ -463,15 +487,16 @@ try {
- -