feat: PoseFocusMode.CROP_FOLLOW — dynamic follow-the-player crop
Once a confident full skeleton is detected inside the static focus
area, FollowCropState remembers its bbox (with 50% pad) and the next
frame crops tightly around it — lifting effective input resolution on
the person above what the static half-frame crop can achieve.
Reverts to the static focus area when the skeleton is lost for
MISS_TOLERANCE=2 consecutive frames (hysteresis so one clipped frame
doesn't bounce back to wide), goes stale past 500ms, or the tight rect
degenerates. A MIN_NORMALIZED_SIDE floor of 0.25 keeps MLKit off
ultra-narrow aspect crops where recall collapses. Tight rect is
clamped to the user's static focusArea so the tracker can't drift
outside the intended zone.
Sample app menu item now cycles Mask → Crop → Crop+follow → Mask.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>