@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&display=swap');
:root{--ink:#272923;--muted:#777366;--cream:#f4eddb;--paper:#f8f2e6;--gold:#c9a878;--night:#111923;--accent:#ac7d50;--serif:'Libre Baskerville',Georgia,serif;--display:'Playfair Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100dvh;color:#e8ded0;background:radial-gradient(ellipse at 52% 30%,#26313c 0%,#121c26 55%,#0b121b 100%);font-family:var(--sans);overflow-x:hidden}.ambience{position:fixed;inset:0;overflow:hidden;z-index:-1;pointer-events:none}.orb{position:absolute;border-radius:50%;filter:blur(85px);opacity:.12}.orb-one{width:500px;height:500px;left:-180px;top:12%;background:#b48d60}.orb-two{width:500px;height:500px;right:-190px;bottom:0;background:#73909b}.noise{position:absolute;inset:0;opacity:.09;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E")}.topbar{height:76px;display:flex;justify-content:space-between;align-items:center;padding:0 clamp(20px,5vw,88px)}.brand{text-decoration:none;color:#e4d5bc;font-size:13px;font-weight:700;letter-spacing:.24em}.brandmark{font-size:22px;color:#c9a878;margin-right:12px}.brand em{font-style:normal;font-weight:400;color:#a6a8ad}.topActions{display:flex;gap:10px}.topButton{background:transparent;color:#d5cfc7;border:1px solid #ffffff22;border-radius:30px;padding:10px 15px;cursor:pointer;font:500 12px var(--sans);letter-spacing:.03em}.topButton:hover{border-color:#c9a87880}.stage{display:flex;align-items:center;justify-content:center;gap:clamp(10px,5vw,90px);padding:10px 18px;min-height:calc(100dvh - 158px)}.sideNote{font-size:10px;color:#b3a18a;letter-spacing:.28em;writing-mode:vertical-rl;opacity:.62;white-space:nowrap}.leftNote{transform:rotate(180deg)}.bookWrap{width:min(560px,100%);position:relative;perspective:1600px}.bookShadow{position:absolute;inset:20px -18px -18px;filter:blur(28px);background:#000a;z-index:-1}.paper{position:relative;height:min(720px,calc(100dvh - 196px));min-height:450px;background:var(--paper);color:var(--ink);box-shadow:0 16px 45px #0007,inset 0 0 0 1px #b3997130,inset -18px 0 25px #947e4e10;overflow:hidden;transform-style:preserve-3d;border-radius:3px 8px 8px 3px}.paper:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.12;background:repeating-linear-gradient(0deg,transparent 0 3px,#c6ac7d10 4px 5px)}.paperSpine{position:absolute;z-index:4;left:0;top:0;bottom:0;width:12px;background:linear-gradient(90deg,#9c8469a0,#eedfc522,transparent);pointer-events:none}.pageInner{height:100%;padding:clamp(32px,6vw,62px) clamp(30px,6vw,64px) 43px;overflow:hidden;position:relative}.pageHead{display:flex;align-items:center;justify-content:space-between;font:600 9px var(--sans);letter-spacing:.24em;color:#8b7e6d;margin-bottom:24px}.pageHead .line{height:1px;background:#b19a7444;flex:1;margin-left:20px}.pageContent{height:calc(100% - 49px);overflow:hidden}.pageContent p{font:400 clamp(12px,1.55vw,14px)/1.92 var(--serif);margin:0 0 13px;color:#37342d}.pageFooter{position:absolute;bottom:22px;left:0;right:0;text-align:center;font:600 10px var(--sans);letter-spacing:.14em;color:#a0927f}.coverPage,.endPage{position:absolute;inset:0;padding:52px 46px;text-align:center;color:#efe0c6;background:radial-gradient(ellipse at 50% 23%,#44505a,#1a2731 61%,#111c26 100%);display:flex;align-items:center;justify-content:center;flex-direction:column}.coverPage:before,.endPage:before{content:'';position:absolute;inset:18px;border:1px solid #a5895777;pointer-events:none}.coverPage:after{content:'';position:absolute;inset:28px;border:1px solid #b5964633;pointer-events:none}.coverTop{font:600 10px var(--sans);letter-spacing:.34em;color:#cbb897}.coverSymbol{position:relative;font-size:55px;font-family:var(--display);font-weight:400;color:#d2b37c;margin:45px 0 13px}.coverTitle{font:500 clamp(35px,5vw,52px)/1.18 var(--display);letter-spacing:-.04em;max-width:390px;margin:12px 0 22px}.coverSubtitle{font:italic 14px/1.9 var(--display);color:#d0bfaa;max-width:290px}.coverRule{width:52px;height:1px;background:#caa572;margin:28px 0}.coverAuthor{font:600 11px var(--sans);letter-spacing:.28em;color:#d7bc8f;margin-top:28px}.coverBottom{position:absolute;bottom:44px;font:10px var(--sans);letter-spacing:.24em;color:#aaa08f}.textPage .chapterKicker{font:600 9px var(--sans);color:#ab7b50;letter-spacing:.23em;margin:0 0 19px}.textPage h2{font:500 24px/1.4 var(--display);margin:10px 0 26px}.echoPage{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 12px}.echoPage .quoteMark{font:76px var(--display);height:68px;color:#b58e5c}.echoPage .echoTag{font:600 10px var(--sans);letter-spacing:.38em;color:#ac8059;margin:10px 0 22px}.echoPage blockquote{font:italic clamp(14px,2.5vw,19px)/1.95 var(--display);margin:0;color:#504437;white-space:pre-line}.echoPage .decoration{width:66px;height:1px;background:#ba976e;margin-top:30px}.poemPage{height:100%;display:flex;justify-content:center;flex-direction:column;text-align:center}.poemPage h2{font:500 24px/1.4 var(--display);margin:0 0 35px}.poemPage .poem{font:italic clamp(14px,2vw,17px)/2 var(--display);white-space:pre-line;color:#57483d}.epigraphPage{height:100%;display:flex;align-items:center;justify-content:center;text-align:center}.epigraphPage .epigraph{font:italic 24px/1.8 var(--display)}.underTitle{text-align:center;color:#b59d7d;font:600 9px var(--sans);letter-spacing:.3em;margin:18px 0 0}.readerFooter{display:flex;justify-content:center;align-items:center;gap:27px;padding:15px 18px 22px}.navButton{background:none;border:0;color:#ded4c4;font:500 12px var(--sans);letter-spacing:.09em;cursor:pointer;padding:12px}.navButton:disabled{opacity:.32;cursor:default}.progressArea{display:flex;align-items:center;gap:15px;width:min(300px,45vw)}.progressTrack{height:3px;flex:1;border-radius:4px;background:#ffffff26;cursor:pointer;outline-offset:8px}.progressFill{width:0;height:100%;background:#d2aa73;transition:width .25s}.pageCounter{font:500 11px var(--sans);color:#b6a999;white-space:nowrap}.toc{width:min(470px,calc(100vw - 32px));max-height:75dvh;background:#f6eedf;color:#272923;border:1px solid #bea27a;padding:28px 30px;border-radius:4px;box-shadow:0 25px 70px #0009}.toc::backdrop{background:#050b12b9;backdrop-filter:blur(6px)}.tocTop{display:flex;align-items:flex-start;justify-content:space-between}.tocTop small{font:700 9px var(--sans);letter-spacing:.3em;color:#ab7b50}.tocTop h2{font:500 30px var(--display);margin:6px 0 20px}.tocTop button{border:0;background:none;font-size:22px;cursor:pointer}.tocList{max-height:45dvh;overflow:auto}.tocItem{width:100%;text-align:left;display:flex;justify-content:space-between;gap:12px;background:none;border:0;border-bottom:1px solid #bca7834a;padding:14px 2px;cursor:pointer;color:#473c32;font:14px var(--display)}.tocItem:hover{color:#a8754a}.tocItem span:last-child{font:11px var(--sans);color:#978673}.tocHelp{font:11px/1.6 var(--sans);color:#7c7165;margin:20px 0 0}body.darkPaper{--paper:#20252b;--ink:#e5dccf}body.darkPaper .pageContent p{color:#ded4c8}body.darkPaper .pageHead,body.darkPaper .pageFooter{color:#a39788}body.darkPaper .echoPage blockquote,body.darkPaper .poemPage .poem{color:#e7d4bd}body.darkPaper .epigraphPage{color:#e8dccb}

.echoPage blockquote{font-size:clamp(12px,1.8vw,17px);line-height:1.72}.echoPage:has(blockquote) {overflow:hidden}.pageContent:has(.echoPage){height:calc(100% - 44px)}

.paginationReference .pageContent p{font:400 14px/1.92 var(--serif);margin:0 0 13px}.paginationReference .pageHead{margin-bottom:24px}.paginationReference .pageContent{overflow:hidden}

/* v3: Never crop the manuscript. Each numbered page remains fixed across devices. */
.pageInner { min-height:0; }
.pageContent { overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#b9a07e transparent; padding-right:3px; }
.pageContent::-webkit-scrollbar { width:5px; }
.pageContent::-webkit-scrollbar-thumb { background:#b9a07e; border-radius:8px; }
.pageContent .echoPage,.pageContent .poemPage,.pageContent .epigraphPage { height:auto; min-height:100%; overflow:visible; padding-block:16px; }
.pageContent .echoPage blockquote { overflow-wrap:anywhere; }
.pageContent .poemPage .poem { overflow-wrap:anywhere; }
/* Keep pagination measurement deterministic; its overflow is intentionally measured. */
.paginationReference .pageContent {overflow:hidden; padding-right:0;}
@media(max-height:660px) { .paper { min-height:320px; } .pageInner {padding-top:27px;padding-bottom:34px;} }

/* Pagination fix: content is measured and continued on the next page. */
.pageContent,.paper .pageContent{overflow:hidden!important;overflow-x:hidden!important;overflow-y:hidden!important;padding-right:0!important;}
.pageContent .echoPage,.pageContent .poemPage,.pageContent .epigraphPage{height:auto!important;min-height:0!important;overflow:visible!important;padding-block:5px!important;}
.pageContent .echoPage blockquote{font-size:clamp(12px,1.8vw,16px);line-height:1.55;}
.pageContent .echoPage .quoteMark{display:none}
.pageContent .echoPage .echoTag{margin:0 0 12px}
.pageContent .poemPage h2{margin-bottom:14px;font-size:19px}
.pageContent .poemPage .poem{line-height:1.65}
.pageInner.pageMeasure{overflow:hidden!important;box-sizing:border-box}
@media(max-width:520px){.pageContent p{font-size:12px;line-height:1.65;margin-bottom:10px}.pageInner{padding:24px 23px 33px}.pageHead{margin-bottom:12px}.paper{min-height:0;height:calc(100dvh - 142px)}}
@media(max-height:550px){.paper{min-height:0;height:calc(100dvh - 132px)}.pageInner{padding:15px 18px 25px}.pageHead{margin-bottom:8px}.pageContent p{font-size:11px;line-height:1.45;margin-bottom:7px}}
