Lane B: camera and screen fixes

Current-main baseline 42b063ee compared with 65ded2ac. Captured on the Mac mini with Apple M1 / Metal, DPR 2. Click an image for its full viewport.

Review fixes at 56c23baf

Browser clip normalization is now accounted for. Loan Shark restores inset(92px 0px 190px), exactly matching the host's initial clip. Speech stays mounted while hidden, then resumes with its unread time. The real Reflect run kept the line hidden for 53 sampled frames and visible for 1.57 seconds after returning. No page errors.

Loan Shark: host clip restored
Normal table after Loan Shark
Reflect: speech returns after camera movement
Right back at you speech after camera return

Browser probe data. Regression tests also cover normalized styles, retained prior speech, lines delivered while hidden and permanent component mounting.

V26: Loan Shark letterbox fixed

The top bar starts at y=0. The bottom bar stays against the visible scene’s tray edge. Bars retract with the noir lighting. The normal overlay clip returns on exit, disposal and resize. The small safe remains for the round as designed; no mobster remains.

390 × 844: cinematic hold

Before
cinematic hold before
After
cinematic hold after

390 × 844: exit at the tray edge

Before
exit at the tray edge before
After
exit at the tray edge after

412 × 915: cinematic hold

Before
cinematic hold before
After
cinematic hold after

412 × 915: exit at the tray edge

Before
exit at the tray edge before
After
exit at the tray edge after

1440 × 900: cinematic hold

Before
cinematic hold before
After
cinematic hold after

1440 × 900: exit at the tray edge

Before
exit at the tray edge before
After
exit at the tray edge after

U7: Reflect speech fixed

The old bubble points at grass while the camera shows a different seat. Speech now hides while a cinematic owns the camera, and returns only with current table anchors. The same rule covers every card’s cinematic.

390 × 844: camera moving, speech hidden instead of pointing at the old seat

Before
camera moving, speech hidden instead of pointing at the old seat before
After
camera moving, speech hidden instead of pointing at the old seat after

1440 × 900: camera moving, speech hidden instead of pointing at the old seat

Before
camera moving, speech hidden instead of pointing at the old seat before
After
camera moving, speech hidden instead of pointing at the old seat after

U5: no 33 px jump reproduced

No code changed for U5. Four current-main phone intros and one desktop intro showed no lateral jump. Three phone runs and the desktop run also recorded canvas bounds and document scroll on every animation frame, through 30 seconds after navigation.

RunIntro framesMax |x| pxShifted frames
before-intro-1440133500
before2-intro-390161600
before3-intro-390160000
before4-intro-390163300

390 × 844: deal remains aligned with the screen

Before
deal remains aligned with the screen before
After
deal remains aligned with the screen after

1440 × 900: deal remains aligned with the screen

Before
deal remains aligned with the screen before
After
deal remains aligned with the screen after

Seat 0 opener nod fixed

Rounds 2 and 3 now nod for seats 0–3. A missing opener stays quiet. The regression test failed for seat 0 before the explicit null check and passes afterward.

Checks

55 targeted tests, workspace typecheck and mobile lint passed. The full gate result is recorded on the PR. Independent review and stamping belong to the coordinator. No server or engine code changed. No overlap with #194.