Move stream start/stop, detection intervals, and tracked-card polling into lib/use-camera-scanner.js. CameraScanner keeps identification UI and disambiguation wiring only. Co-authored-by: Cursor <cursoragent@cursor.com>
Move OpenCV shape detection, coordinate conversion, overlap checks, and tracked-card merge logic from CameraScanner into lib/scanner-card-detection.js with unit tests for the pure helpers. Co-authored-by: Cursor <cursoragent@cursor.com>