:root{--paper:#f5efdf;--ink:#26231f;--muted:#6d665c;--line:#d4c7ab;--panel:#fffaf0;--accent:#6b4f1d;--size:20px}
*{box-sizing:border-box}html{scroll-behavior:auto;overflow-anchor:none}body{margin:0;background:var(--paper);color:var(--ink);font-family:Georgia,'Times New Roman',serif;font-size:var(--size);line-height:1.68;overflow-anchor:none}
body.dark{--paper:#171717;--ink:#ece7dd;--muted:#b9b1a3;--line:#3a3732;--panel:#202020;--accent:#d7b46a}
.topbar{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:10px 14px;background:color-mix(in srgb,var(--panel) 94%,transparent);border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
button,input{font:inherit}.topbar button,.chapter-nav button,.toc button,.home-link,.author-link,.resume-reading{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:.35rem .6rem;cursor:pointer}.home-link,.author-link{text-decoration:none;font-size:.78rem;display:flex;align-items:center}.brand{display:flex;flex-direction:column;line-height:1.15}.brand span{font-size:.72rem;color:var(--muted);margin-top:3px}.controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.progress{height:3px;background:var(--line);position:sticky;top:55px;z-index:29}.progress div{height:100%;width:0;background:var(--accent)}
.reader-shell{max-width:900px;margin:0 auto;padding:4rem 1.5rem 5rem}.book-content{max-width:720px;margin:0 auto;outline:none;overflow-anchor:none}.book-content h1{font-size:2.1rem;line-height:1.1;text-align:center;margin:0 0 2.2rem}.book-content h2{font-size:1.3rem;margin-top:2.2rem}.book-content p{margin:0 0 1.05em;text-indent:1.35em}.book-content .no-indent,.book-content h1+p,.book-content h2+p{text-indent:0}.book-content .center{text-align:center;text-indent:0}.book-content .frontmatter p{text-indent:0}.book-content .rhetorical{margin:1.2em 0;text-indent:0;white-space:pre-line}.placeholder{padding:2rem;border:1px dashed var(--line);border-radius:10px;color:var(--muted);background:var(--panel)}
.cover-page{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:1rem;min-height:60vh}.cover-page img{display:block;width:min(100%,620px);height:auto;max-height:calc(100vh - 230px);object-fit:contain;border:1px solid var(--line);box-shadow:0 18px 42px rgba(0,0,0,.16)}.resume-reading{padding:.55rem .95rem;font-size:.9rem;color:var(--accent);font-weight:700}.resume-reading:hover,.resume-reading:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:2px}
.chapter-nav{display:flex;justify-content:space-between;gap:1rem;max-width:720px;margin:3rem auto 0;padding-top:1.5rem;border-top:1px solid var(--line)}
.toc{position:fixed;top:0;bottom:0;left:0;width:min(420px,90vw);z-index:50;background:var(--panel);border-right:1px solid var(--line);padding:16px;transform:translateX(-102%);transition:.2s ease;overflow:auto}.toc.open{transform:none}.toc-head{display:flex;justify-content:space-between;align-items:center;font-size:1.15rem}.toc input{width:100%;margin:12px 0 16px;padding:.65rem;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink)}.toc a{display:block;padding:.55rem .25rem;text-decoration:none;color:var(--ink);border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent);font-size:.9rem}.toc a.active{font-weight:700;color:var(--accent)}.scrim{position:fixed;inset:0;z-index:40;background:#0008;opacity:0;pointer-events:none;transition:.2s}.scrim.open{opacity:1;pointer-events:auto}
@media(max-width:760px){.topbar{grid-template-columns:auto 1fr}.controls{grid-column:1/-1;justify-content:center}.progress{top:105px}}
@media(max-width:620px){:root{--size:18px}.brand strong{font-size:.9rem}.brand span{display:none}.reader-shell{padding:2.4rem 1rem 4rem}.book-content h1{font-size:1.75rem}.controls button,.home-link,.author-link{padding:.3rem .45rem}.home-link,.author-link{font-size:.7rem}.cover-page img{max-height:none}.chapter-nav{flex-direction:column}.chapter-nav button{width:100%}}
