The Elements page has three filter buttons (Apparatus, Element group, Difficulty), but they only say "… filter is not connected yet." Filtering is one of the functions the beta delivery is assessed on, and the API already supports it (`filter: CatalogFilter` on `searchCatalog`, see "Search, filter, sort and pagination" in docs/API.md). ### What to do - **Apparatus:** choose one apparatus (VT, UB, BB, FX) → `filter.apparatusId`. The names come from the `apparatus` query. - **Element group:** choose one group of the chosen apparatus → `filter.elementGroupId`. Only enabled when an apparatus is chosen, and cleared when the apparatus changes. Vault groups are shown as "Group N", like in the list. - **Difficulty:** choose one or more letters (A, B, …) → `filter.difficultyValues` (A = 0.1, B = 0.2 …). Not available for vault (the API answers `BAD_USER_INPUT` for difficulty together with VT). - Put the filters in the address together with the search (`?search=…&apparatus=UB&group=…&difficulty=A,B`), so a result can be shared and the back button works. - A changed filter starts from the first page. The cache already keeps a separate list per `search`, `filter` and `sort` (`keyArgs` in src/lib/apollo/cache.ts). - Show which filters are active, and a way to clear them. - Accessibility: each filter is reachable and usable with the keyboard, has a visible label, and says which value is chosen. ### Done when - [ ] Each filter changes the results, also together with the search. - [ ] The filters are in the address, and opening that address shows the same result. - [ ] Element group follows the chosen apparatus, and Difficulty is not offered for vault. - [ ] The filters can be cleared. - [ ] Tests cover each filter, the address and the vault rule.