diff --git a/src/ui/rightPanelRail.js b/src/ui/rightPanelRail.js index e92d2267b..352ebda94 100644 --- a/src/ui/rightPanelRail.js +++ b/src/ui/rightPanelRail.js @@ -236,19 +236,20 @@ export function layoutRightPanelRail({ // CCTV does the same, so its feed and controls have the room. const FULL_HEIGHT = new Set(['global-context-panel', 'cctv-panel']); const contextOpen = panels.some( - (panel) => FULL_HEIGHT.has(panel.id) && !panel.classList.contains('collapsed'), + (panel) => + FULL_HEIGHT.has(panel.id) && !panel.classList.contains('collapsed'), ); - // Any open panel starts from that same raised top, so switching between - // Context, CCTV and Street Level does not move the column. Only the two - // above also stretch to the bottom. - const anyOpen = panels.some((panel) => !panel.classList.contains('collapsed')); + // Every panel starts level with the left rail, open or not, so the two + // rails line up in every HUD layout (Minimal has no top-right readout to + // push this column down) and switching between Context, CCTV and Street + // Level does not move it. Only the two above also stretch to the bottom. const layout = resolveHudRailLayout({ viewportHeight, panelHeight: naturalHeight, laneLeft: stackRect.left, laneRight: stackRect.right, obstacles: obstacleRects, - baseTop: anyOpen ? viewportHeight * 0.04 : alignedTop, + baseTop: alignedTop, baseBottom: viewportHeight * 0.96, gap: safeGap, align: 'start', diff --git a/src/ui/styles/overlays.css b/src/ui/styles/overlays.css index 85aaafa06..b45611785 100644 --- a/src/ui/styles/overlays.css +++ b/src/ui/styles/overlays.css @@ -310,8 +310,10 @@ bottom: 12vh; } +/* Minimal keeps its coordinates in the corner block, where the other layouts + have them; the full-width strip would only repeat the same position. */ #intel-hud[data-variant='minimal'] .hud-bottom-bar { - display: flex; + display: none; bottom: calc(12vh + 4rem); }