diff --git a/zebra-report/zebra-spaces.html b/zebra-report/zebra-spaces.html index cd30161..5ef5425 100644 --- a/zebra-report/zebra-spaces.html +++ b/zebra-report/zebra-spaces.html @@ -100,35 +100,41 @@ * controls (kept narrow so the screen share gets maximum pixels). * Both columns get min-width:0 so they shrink without forcing a * horizontal scrollbar. */ - /* three columns: cameras-vertical | screen/timeline | controls. - * The cameras column auto-collapses to width:0 when nobody has a - * camera on (.hidden), so a typical mic-only room reads as the - * original two-column layout. */ + /* three columns: cameras (left) | timeline/screen (middle) | controls (right). + * The 220px cameras track stays reserved even when no camera is live — + * .hidden hides the section content but the column itself stays put so + * the timeline (with the game iframe or a screen share) keeps its + * middle position instead of sliding leftmost. */ .page { display: grid; - grid-template-columns: minmax(0, auto) minmax(0, 1fr) minmax(0, 360px); + grid-template-columns: 220px minmax(0, 1fr) minmax(0, 360px); gap: 1.25rem; align-items: start; } .cameras-col { - width: 220px; min-width: 0; + min-width: 0; border-right: 1px solid #ddd; padding-right: 1.25rem; display: flex; flex-direction: column; } - .cameras-col.hidden { display: none; } - /* collapsed: right column folds away so the screen+cameras layout - * fills the viewport. */ + .cameras-col.hidden h2, + .cameras-col.hidden #cameras { display: none; } + /* hide-panel = focus mode: both side columns fold away, screen+timeline + * fills the full viewport. Cameras and controls both go to display:none + * so the screen-share / game iframe has nothing competing with it. */ .page.controls-collapsed { - grid-template-columns: minmax(0, auto) minmax(0, 1fr); - gap: 1.25rem; + grid-template-columns: minmax(0, 1fr); + gap: 0; } - .page.controls-collapsed > .controls { display: none; } + .page.controls-collapsed > .controls, + .page.controls-collapsed > .cameras-col { display: none; } .page.controls-collapsed > .timeline { border-right: none; padding-right: 0; } /* honour the pre-paint pref so first-paint matches saved state */ html.controls-collapsed-pref .page { - grid-template-columns: minmax(0, auto) minmax(0, 1fr); + grid-template-columns: minmax(0, 1fr); + gap: 0; } - html.controls-collapsed-pref .page > .controls { display: none; } + html.controls-collapsed-pref .page > .controls, + html.controls-collapsed-pref .page > .cameras-col { display: none; } html.controls-collapsed-pref .page > .timeline { border-right: none; padding-right: 0; } .timeline { border-right: 1px solid #ddd; padding-right: 1.25rem; min-height: 60vh; @@ -2249,8 +2255,8 @@ logLine('', 'ready — pick a handle, type a rendezvous code, enter the space');