.books-library{padding-block:42px 80px}.books-heading{text-align:center;margin-bottom:36px}.books-heading h1{font:600 clamp(40px,6vw,64px) var(--serif);margin:12px}.books-heading>p:last-child,.book-intro p,.book-hint{color:var(--muted)}.book-reader{background:#eee9dc;border:1px solid #e0d9c8;border-radius:28px;padding:32px clamp(12px,4vw,48px)}.book-intro{text-align:center;margin-bottom:26px}.book-tag{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--green)}.book-intro h2{font:600 clamp(25px,4vw,38px) var(--serif);margin:12px 0}.book-intro p{font-size:14px}.book-stage{max-width:1000px;margin:auto;perspective:1800px;display:flex;justify-content:center;align-items:start;touch-action:pan-y}.book-leaf{flex:1;min-width:0;margin:0;max-width:500px;background:white;box-shadow:0 12px 25px #34433726;transform-origin:left center;backface-visibility:hidden}.book-leaf img{width:100%;height:auto;cursor:zoom-in}.book-leaf[hidden]{display:none}.book-stage:focus-visible{outline:3px solid var(--green);outline-offset:6px}.book-stage.turn-forward{animation:book-forward .38s ease-in-out}.book-stage.turn-back{animation:book-back .38s ease-in-out}.book-controls{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:26px}.book-controls[hidden],.book-hint[hidden]{display:none}.book-controls button{border:1px solid #c9d2c8;background:var(--green);color:white;border-radius:30px;padding:12px 22px}.book-controls button:disabled{opacity:.4;cursor:default}.book-controls p{min-width:125px;text-align:center;font-size:14px}.book-hint{text-align:center;font-size:13px}.book-reader.is-zoomed .book-stage{display:block;max-width:900px}.book-reader.is-zoomed .book-leaf{max-width:none;margin-bottom:16px}.book-reader.is-zoomed img{cursor:zoom-out}@keyframes book-forward{50%{transform:rotateY(-80deg);opacity:.65}}@keyframes book-back{50%{transform:rotateY(80deg);opacity:.65}}@media(max-width:650px){.books-library{width:calc(100% - 24px);padding-top:20px}.book-reader{padding:24px 12px;border-radius:18px}.book-controls{gap:10px}.book-controls button{padding:12px 16px}.book-controls p{min-width:105px}.book-hint{line-height:1.6}}@media(prefers-reduced-motion:reduce){.book-stage.turn-forward,.book-stage.turn-back{animation:none}}
.book-stage{max-width:min(100%,calc(68vh * 1.294))}.book-leaf{max-width:calc(68vh * .647)}.book-reader.is-zoomed .book-stage{max-width:900px}.book-reader.is-zoomed .book-leaf{max-width:none}@media(max-width:650px){.book-stage{max-width:100%}.book-leaf{max-width:100%}}
.book-intro h1{font:600 clamp(25px,4vw,38px) var(--serif);margin:12px 0}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:30px;align-items:start}.book-card{background:#fffdf8;border:1px solid var(--line);border-radius:22px;overflow:hidden;transition:transform .2s,box-shadow .2s}.book-card:hover{transform:translateY(-4px);box-shadow:0 15px 30px #26393612}.book-card a{display:block}.book-card a:focus-visible{outline:3px solid var(--green);outline-offset:-4px}.book-card-cover{background:#eee9dc;padding:28px 42px;display:flex;justify-content:center}.book-card-cover img{height:290px;width:auto;max-width:100%;object-fit:contain;box-shadow:5px 7px 14px #26393630;border-radius:3px 9px 9px 3px}.book-card-body{padding:24px}.book-card h2{font:600 25px/1.25 var(--serif);margin:12px 0}.book-card p{font-size:14px;line-height:1.7;color:var(--muted)}.book-card-author{font-size:12px!important}.book-card-open{display:flex;justify-content:space-between;color:var(--green);font-size:14px;font-weight:700;margin-top:24px}.books-empty{text-align:center;padding:50px}
/* Live book text: pages grow with the text instead of clipping at a fixed height. */
.book-stage{max-width:1000px;align-items:stretch}.book-leaf{max-width:500px;position:relative;align-self:stretch}.book-leaf>img{height:100%;object-fit:contain}.book-text-leaf{display:flex;flex-direction:column;justify-content:center;background:linear-gradient(90deg,#e9e5d9 0,#fffdf6 7%,#fffdf6 96%,#f0ecdf 100%);padding:40px 36px;min-height:580px;aspect-ratio:900/1391}.book-page-copy{font-family:Georgia,'Times New Roman',serif;font-size:26px;line-height:1.6;color:#26352e;overflow-wrap:break-word}.book-page-copy p{margin:0}.book-page-number{position:absolute;bottom:16px;right:24px;font:14px var(--sans);color:var(--muted)}.book-cover-leaf{background:#fffdf6;border-radius:5px 14px 14px 5px;overflow:hidden}.book-cover-art{aspect-ratio:900/1143;overflow:hidden}.book-cover-art img{width:100%;height:auto}.book-cover-title{font:600 clamp(24px,3vw,34px)/1.3 var(--serif);text-align:center;padding:26px 20px;margin:0}.book-reader.is-zoomed .book-text-leaf{aspect-ratio:auto;min-height:0;padding:48px}.book-reader.is-zoomed .book-page-copy{max-width:65ch;margin:auto}@media(max-width:650px){.book-text-leaf{padding:36px 26px;min-height:480px;aspect-ratio:auto}.book-page-copy{font-size:23px;line-height:1.65}.book-leaf>img{height:auto}.book-reader.is-zoomed .book-text-leaf{padding:36px 26px}.book-cover-title{font-size:26px}}

/* Long text establishes the page height instead of overflowing a fixed ratio. */
.book-text-leaf{aspect-ratio:auto}

/* Text-only source covers retain their paper, with a live HTML title. */
.book-paper-cover{isolation:isolate;aspect-ratio:800/1237;display:flex;align-items:flex-end}
.book-paper-cover .book-cover-art{position:absolute;inset:0;aspect-ratio:auto;z-index:-1}
.book-paper-cover .book-cover-art img{height:100%;object-fit:cover}
.book-paper-cover .book-cover-title{width:100%;padding:26px 28px 44px}
.book-card-paper-cover{position:relative}
.book-card-cover-title{position:absolute;bottom:52px;left:50%;transform:translateX(-50%);width:190px;text-align:center;font:600 17px/1.3 var(--serif);color:#26352e}

/* Preserve the whole illustration on covers supplied without printed text. */
.book-full-cover .book-cover-art{aspect-ratio:auto}
.book-full-cover .book-cover-art img{display:block;height:auto}
.book-card-full-cover{position:relative}
.book-card-full-cover .book-card-cover-title{bottom:28px;width:min(187px,calc(100% - 84px));background:#fffdf6;padding:10px 8px;font-size:16px}
