.free-books { width:min(1200px,calc(100% - 32px)); margin:auto; padding:40px 0 64px; }
.free-books__intro { text-align:center; margin:0 auto 32px; }
.free-books__back { display:block; text-align:left; color:var(--teal); margin-bottom:24px; }
.free-books h1 { color:var(--plum-dark); font-family:Georgia,serif; font-size:clamp(2.4rem,5vw,4.4rem); font-weight:400; letter-spacing:-.035em; line-height:1.1; margin:12px 0; }
.free-books__subtitle { font-family:Georgia,serif; font-size:clamp(1.2rem,2.5vw,1.7rem); margin:12px 0; color:var(--muted); }
.free-books__author { color:var(--plum-dark); font-weight:700; }
.book-reader__desk { background:radial-gradient(ellipse at center,#f7f1e8,#e2d8ca); border:1px solid #d8ccbd; border-radius:16px; padding:32px 20px; overflow:hidden; }
.book-reader__viewport { max-width:1040px; margin:auto; }
.book-reader__book { margin:auto; }
.book-reader__book:not(.stf__parent) { width:min(100%,440px); }
.book-reader__page { background:#fffdf8; overflow:hidden; border:1px solid #e5dfd6; }
.book-reader__page img { display:block; width:100%; height:100%; object-fit:contain; user-select:none; }
.book-reader__page.--left { box-shadow:inset -12px 0 20px -20px #000; }
.book-reader__page.--right { box-shadow:inset 12px 0 20px -20px #000; }
.book-reader__page-error { padding:30px; color:var(--plum-dark); text-align:center; }
.book-reader__controls { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:12px; padding:22px 8px 8px; }
.book-reader__controls button { min-height:44px; padding:8px 18px; border:1px solid #c7b6bd; border-radius:24px; color:var(--plum-dark); background:white; font:inherit; font-weight:600; cursor:pointer; }
.book-reader__controls button:hover { background:#f1e8ed; }
.book-reader__controls button:disabled { opacity:.4; cursor:default; }
.book-reader__controls input { width:72px; min-height:44px; padding:8px; font:inherit; border:1px solid #c7b6bd; border-radius:8px; background:white; }
.book-reader [data-status],.book-reader__hint { text-align:center; color:var(--muted); font-size:.9rem; margin:8px 0; }
.free-books__notes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; margin-top:48px; border-top:1px solid var(--line); padding-top:24px; }
.free-books__notes h2 { font-size:1.1rem; color:var(--plum-dark); }
.free-books__notes p { color:var(--muted); }
.free-books :focus-visible { outline:3px solid var(--teal); outline-offset:4px; }
@media(max-width:680px) {
 .free-books { width:calc(100% - 20px); padding-top:24px; }
 .free-books__notes { grid-template-columns:1fr; gap:8px; }
 .book-reader__desk { padding:16px 8px; border-radius:10px; }
 .book-reader__controls { gap:8px; }
 .book-reader__controls button { padding:8px 12px; }
}

.book-reader__desk { position:relative; padding-top:64px; background:radial-gradient(ellipse at top,#25475c,#102535); }
.book-reader__fullscreen { position:absolute; top:12px; right:12px; z-index:10; border:1px solid #b5c4ce; border-radius:24px; padding:10px 16px; background:#ffffff18; color:#fff; font:inherit; cursor:pointer; min-height:44px; }
.book-reader:fullscreen,.book-reader.is-expanded { background:#102535; width:100%; height:100%; padding:12px; overflow:auto; color:white; }
.book-reader.is-expanded { position:fixed; inset:0; z-index:10000; height:100dvh; }
.book-reader:fullscreen .book-reader__desk,.book-reader.is-expanded .book-reader__desk { border:0; border-radius:0; padding-bottom:8px; }
.book-reader:fullscreen [data-status],.book-reader:fullscreen .book-reader__hint,
.book-reader.is-expanded [data-status],.book-reader.is-expanded .book-reader__hint { color:#d6e0e6; }
.book-reader:fullscreen .book-reader__controls,.book-reader.is-expanded .book-reader__controls { padding-top:8px; }

.free-books__selection { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:0 0 28px; }
.free-books__selection a { display:flex; flex-direction:column; gap:8px; padding:20px; border:1px solid #c7b6bd; border-radius:12px; color:var(--plum-dark); text-decoration:none; }
.free-books__selection a[aria-current] { border:2px solid var(--teal); background:#f0f7f5; }
.free-books__selection strong { font:1.5rem Georgia,serif; }
.free-books__selection small { color:var(--muted); }
@media(max-width:680px) { .free-books__selection { grid-template-columns:1fr; } }

/* A separate scrollable page preserves readable text without scaling the flip gesture surface. */
.book-reader [hidden] { display:none !important; }
.book-reader__reading-tools { display:flex; align-items:center; gap:12px; flex-wrap:wrap; color:#fff; margin:-48px 180px 16px 0; min-height:44px; }
.book-reader__reading-tools button,.book-reader__reading-tools select { font:inherit; padding:8px 12px; border-radius:8px; border:1px solid #b5c4ce; background:#fff; color:#243746; min-height:44px; }
.book-reader__reading-tools button { cursor:pointer; }
.book-reader__reading-tools label { color:#fff; }
.book-reader__reading-view { overflow:auto; max-height:75vh; background:#102535; overscroll-behavior:contain; }
.book-reader__reading-view img { display:block; width:var(--reading-width,1000px); max-width:none; height:auto; margin:0 auto; }
.book-reader:fullscreen .book-reader__reading-view,.book-reader.is-expanded .book-reader__reading-view { max-height:calc(100dvh - 160px); }
.book-reader:fullscreen .book-reader__controls label,.book-reader.is-expanded .book-reader__controls label { color:#fff; }
@media(max-width:680px) {
 .book-reader__reading-tools { margin:0 0 12px; padding-top:0; }
 .book-reader__desk { padding-top:64px; }
 .book-reader__reading-view { max-height:65vh; }
}

.book-reader:fullscreen .book-reader__hint,.book-reader.is-expanded .book-reader__hint { display:none; }
.book-reader__reading-tools label,.book-reader__controls label { display:flex; align-items:center; gap:8px; margin:0; }
.book-reader__reading-tools select,.book-reader__controls input { margin:0; }
.book-reader:fullscreen [data-status],.book-reader.is-expanded [data-status] { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
