I made three targeted changes:
1. themes/openfreebooks/templates/base.html: added a body_class block so templates can declare first-render shell behavior.
2. themes/openfreebooks/templates/index.html: set homepage body classes to page-home has-particle-background, so the background layering mode is present from first paint (not added later during hydration).
3. themes/openfreebooks/sass/_layout.scss: reserved in-flow space before hydration with a fixed header shell (#site-header min-height, including mobile override), reserved marquee slot height on home (#marquee min-height), and stabilized page shell sizing (body/home main min-height behavior).