Printable idea sheet
tutorials_section
site/reqs/core.rq:65
The site exposes `/tutorials` and `/tutorials/slug/` as statically generated pages.
Catalog and deck ids come from authored manifest.jsonc.
Each detail page embeds the Reveal player iframe at `/presentations/player/?deck=<id>` using assets / SITE_BASE_PATH-aware `sitePath`.
Each detail page hosts a unified transport chrome ( `<<` `<` steps `>` `>>` ) that drives slide nav in the embedded player via postMessage, plus lesson jumps.
Location hierarchy chrome: tutorial_location_crumb.
Blurb and try-this live on the catalog and inside the slides, not as page chrome.
The player is an App Router page ( presentation_player_route ) so it static-exports under `trailingSlash` without colliding with `public/` HTML.
Sync ( sync_presentations ) converts authored deck / catalog JSONC under presentations into runtime JSON under `public/presentations/`, and copies assets plus vendored Reveal. js ( player shell excluded ).
Status: done
Interactive page: tutorials_section