Audio was verified structurally, not by ear. If the subjective fade
still feels too abrupt, tune only the 12000 base fade
duration in enterReadingRoom().
The entry logo is positioned at the original cover-design location,
not dead center of the viewport. This avoids movement when the rest of
the cover fades in.
The final CSS overrides are near the bottom of the
<style> block. Keep future layout corrections there
unless doing a larger cleanup pass.
Browser scroll testing used the in-app browser; if another browser
differs, check whether scroll-snap-type:y mandatory feels
too rigid.