The imperative useLayoutEffect approach made mobile worse — first tap flickered and didn't bring up the keyboard, while the original swipe-overlap symptom remained. Restoring the previous React-state flow until a better fix is identified. Removes the changeset that shipped with the failed attempt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>