SearchResultsView renders the four SearchState categories; mounted in AppShell on ContentView.search. Phase 1 is now functional end to end: header input -> debounced search -> QbzCore::search_all -> results. Phase 2 builds this into the tabbed dashboard. cc