diff --git a/apps/web/src/reader/readerRuntime.test.ts b/apps/web/src/reader/readerRuntime.test.ts index dddefe8..d56d18c 100644 --- a/apps/web/src/reader/readerRuntime.test.ts +++ b/apps/web/src/reader/readerRuntime.test.ts @@ -212,6 +212,16 @@ describe("reader runtime helpers", () => { expect(verticalBranch).not.toContain('hidden={!imageSizes[item.page]}'); }); + it("starts vertical reader overflow from the top edge instead of centered content", () => { + const styles = readFileSync(new URL("../styles/app.css", import.meta.url), "utf8"); + const verticalStage = styles.match(/\.reader-mode-vertical \.reader-stage\s*\{[^}]+\}/)?.[0] ?? ""; + const verticalContent = styles.match(/\.reader-mode-vertical \.reader-content\s*\{[^}]+\}/)?.[0] ?? ""; + + expect(verticalStage).toContain("align-items: start"); + expect(verticalStage).toContain("overflow-anchor: none"); + expect(verticalContent).toContain("align-self: start"); + }); + it("detects fullscreen support and active fullscreen element", () => { const fullscreenElement = { requestFullscreen: () => Promise.resolve() } as unknown as HTMLElement; const regularElement = {} as HTMLElement; diff --git a/apps/web/src/styles/app.css b/apps/web/src/styles/app.css index 833bf1b..ff0e1f4 100644 --- a/apps/web/src/styles/app.css +++ b/apps/web/src/styles/app.css @@ -1035,8 +1035,17 @@ main.app-main-reader .reader-page { } .reader-mode-vertical .reader-content { + align-self: start; align-items: start; + justify-self: stretch; width: 100%; + height: auto; +} + +.reader-mode-vertical .reader-stage { + align-items: start; + justify-items: center; + overflow-anchor: none; } .pdf-reader,