Session-driven page navigation for the kiosk. Idle reacts only to session_start.
Any active session page can terminate back to idle using session_end.
idle.
session_start moves the kiosk from idle to account.
account → answer → books → find_book → checkout → crowd_density → account
session_end returns any active page back to idle.
scan jumps directly to checkout.