- Keyboard: the 60ms timer in batch106 sampled the viewport MID-animation (clientHeight/visualViewport
temporarily inconsistent) and over-lifted -> gap. Reverted to reading clientHeight-visualViewport LIVE
on every vv resize, which is correct and self-adapting (unit test: residual=46 flush on the device).
- Budge: reverted the file <input> back to display:none (the position:fixed;left:50% hack overflowed
the viewport horizontally).
- Config back to resize:native to match the installed build (works, no rebuild).
- Added test/keyboard-lift.test.js (5/5 pass) verifying the lift math against real device numbers.
Build marker -> 2026-07-18-batch107.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>