The R/F/D toolbar shortcuts were only wired in PageControls, but the
recipes page uses its own RecipePageControls in recipes.js. The shared
toolbar still rendered the R keycap and the shortcuts sheet listed it,
yet no keydown handler was registered, so pressing R did nothing.
Extract the shortcut handling into a shared ActionShortcuts module and
register it from both PageControls and RecipePageControls. Registration
is idempotent per event-manager source, so rebuilding controls cannot
fire the action twice. F/D still pass through on recipes because the
page has no fetch/download buttons.
Add regression coverage for the recipes shortcut.