:root{--paper:#f6f3ec;--ink:#253128;--muted:#77786f;--line:#d8d5cc;--accent:#88774e;color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#ece8df}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{height:100dvh;display:flex;flex-direction:column;background:radial-gradient(ellipse at 48% 43%,#f9f6f0 0,#ece8df 69%,#e5e0d7 100%);-webkit-tap-highlight-color:transparent}button,a,input{touch-action:manipulation}button{font:inherit;color:inherit;border:0;cursor:pointer;background:none}button:disabled{opacity:.25;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}a{color:inherit;text-decoration:none}.masthead{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:21px max(32px,env(safe-area-inset-right)) 18px max(32px,env(safe-area-inset-left));position:relative;flex:none}.brand{font-family:Georgia,"Times New Roman",serif;font-size:24px;letter-spacing:-.8px;line-height:1.2}.brand span{display:block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:7px;letter-spacing:2.5px;margin-top:7px;color:var(--muted)}.edition{position:absolute;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:2.5px;text-align:center;color:#656b60;line-height:1.6}.edition span{display:block;font:italic 12px Georgia,serif;letter-spacing:0;margin-top:4px}.icon-button{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;font-size:25px}.icon-button:hover,.tool:hover,.side-arrow:hover{background:#dbd7cc80}.reader{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 max(14px,env(safe-area-inset-right)) max(9px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}.stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;padding:10px 38px 14px;isolation:isolate}.loading{position:absolute;font:italic 18px Georgia,serif;color:var(--muted);text-align:center}.loading span{display:block;width:26px;height:1px;background:#94815b;margin:16px auto;animation:breathe 1.2s infinite alternate}.loading[hidden]{display:none}#book-mount{position:relative;flex:none;opacity:0;transition:opacity .25s}#book-mount.ready{opacity:1}#book{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;isolation:isolate;filter:drop-shadow(0 16px 21px #332a201c);outline:none}#book:active{cursor:grabbing}.page{background:var(--paper);overflow:hidden;position:relative;border:0}.page img{width:100%;height:100%;object-fit:fill;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none}.page:after{content:none}.stf__parent{margin:0!important}.stf__wrapper{overflow:visible!important}.stf__block{touch-action:none}.side-arrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:52px;display:flex;align-items:center;justify-content:center;color:#7d8176;border-radius:30px}.side-prev{left:0}.side-next{right:0}.hint{height:28px;flex:none;display:flex;justify-content:center;align-items:center;gap:5px;color:#787a6f;font-size:11px;letter-spacing:.15px}.hint svg{width:30px;animation:gesture 2.6s ease-in-out 3}.reader-footer{display:flex;align-items:center;flex-direction:column;flex:none;padding:8px 0 0}.toolbar{height:52px;border:1px solid #ffffffb0;box-shadow:0 4px 18px #3e372609,0 0 0 1px #c6c0b830;display:flex;align-items:center;justify-content:center;padding:4px 10px;gap:3px;border-radius:40px;background:#f9f7f1e8;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.tool{height:42px;border-radius:24px;display:flex;align-items:center;gap:7px;padding:0 12px;font-size:11px}.separator{width:1px;height:20px;background:#ddd9d0;margin:0 5px}.page-count{min-width:85px;height:42px;font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:1px}.page-count span{color:#99998c;font-size:11px;letter-spacing:0}.progress{width:188px;height:22px;display:flex;align-items:center;margin-top:4px}.progress input{width:100%;height:3px;appearance:none;-webkit-appearance:none;background:linear-gradient(to right,#8a7e60 var(--progress,0%),#d7d2c8 var(--progress,0%));border-radius:3px;cursor:pointer}.progress input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;height:8px;width:8px;border-radius:100%;background:#8a7e60;box-shadow:0 0 0 6px #ece8df50}.progress input::-moz-range-thumb{height:8px;width:8px;border:0;border-radius:100%;background:#8a7e60}.section-name{font-size:9px;letter-spacing:1.5px;color:#7b7e73;margin:0 0 2px;text-transform:uppercase;min-height:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}dialog{border:1px solid #ffffffb0;background:var(--paper);color:var(--ink);box-shadow:0 24px 100px #0003;border-radius:20px;max-height:88dvh;padding:28px}dialog::backdrop{background:#1d241a70;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.pages-dialog{width:min(920px,94vw)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{font-size:9px;letter-spacing:2px;color:var(--muted);margin:0 0 9px}h2{font:normal 31px/1.1 Georgia,serif;margin:0}.thumbnails{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px 16px}.thumbnail{padding:0;text-align:left;min-width:0;display:block}.thumbnail img{display:block;width:100%;aspect-ratio:594.96 / 841.92;object-fit:contain;box-shadow:0 4px 12px #0001;border-radius:1px}.thumbnail span{display:block;font-size:10px;line-height:1.5;margin-top:9px;color:#666d62}.thumbnail b{font-weight:400;color:#94988e;padding-right:5px}.zoom-dialog{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:0;background:#e9e5dc;overflow:hidden}.zoom-bar{height:66px;position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:calc(8px + env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) 8px max(20px,env(safe-area-inset-left));z-index:2;background:#f6f3eceb;backdrop-filter:blur(20px);font-size:12px}.zoom-bar>div{display:flex;align-items:center;gap:3px}.zoom-level{font-size:11px;min-width:55px;height:44px;font-variant-numeric:tabular-nums}.zoom-surface{position:absolute;inset:66px 0 44px;overflow:hidden;touch-action:none;cursor:grab;user-select:none}.zoom-surface:active{cursor:grabbing}.zoom-surface img{position:absolute;left:50%;top:50%;max-width:none;transform-origin:center;box-shadow:0 10px 45px #0003;user-select:none;pointer-events:none}.zoom-tip{position:absolute;bottom:0;left:0;right:0;padding:14px 8px max(14px,env(safe-area-inset-bottom));font-size:11px;text-align:center;background:#f6f3eceb;color:#687063}.help-dialog{width:min(430px,92vw);padding:38px}.help-dialog>.close-dialog:first-child{position:absolute;right:14px;top:14px}.help-dialog h2{font-size:36px;margin:20px 0 27px}.help-dialog dt{font-size:13px;margin:21px 0 6px;font-weight:600}.help-dialog dd{margin:0;font-size:12px;line-height:1.7;color:#6b7065}.primary{border-radius:40px;background:var(--ink);color:white;width:100%;padding:15px;margin-top:18px;font-size:12px}.no-js{position:absolute;inset:30%;background:var(--paper);padding:30px}
@keyframes gesture{0%,100%{transform:translateX(3px)}50%{transform:translateX(-4px)}}@keyframes breathe{to{opacity:.25;transform:scaleX(.5)}}
@media(max-width:700px){.masthead{padding:17px 19px 11px;gap:10px}.brand{font-size:22px}.brand span{font-size:6px;letter-spacing:2px;margin-top:5px}.edition{position:static;transform:none;margin-left:auto;text-align:right;font-size:9px;letter-spacing:1.7px}.edition span{display:none}.masthead>.icon-button{width:32px;height:32px}.reader{padding-left:max(9px,env(safe-area-inset-left));padding-right:max(9px,env(safe-area-inset-right))}.stage{padding:8px 2px 10px}.side-arrow{display:none}.hint{font-size:10px;height:25px;letter-spacing:0}.hint svg{width:25px}.toolbar{height:50px;padding:3px 7px;gap:0;width:fit-content;max-width:100%}.toolbar .icon-button{width:36px;height:40px}.tool{padding:0 10px}.tool span{display:none}.page-count{min-width:81px}.separator{margin:0 4px}.reader-footer{padding-top:4px}.thumbnails{grid-template-columns:repeat(3,minmax(0,1fr));gap:21px 13px}.pages-dialog{padding:22px 19px;border-radius:16px}.thumbnail span{font-size:9px}.section-name{font-size:8px}.zoom-bar{padding-left:15px;padding-right:10px}.zoom-tip{font-size:10px}.hint svg{display:none}}
@media(max-height:550px){.masthead{padding-top:8px;padding-bottom:5px}.brand{font-size:18px}.brand span,.edition span,.hint,.section-name{display:none}.reader-footer{padding-top:2px}.toolbar{height:40px}.progress{height:13px;margin:0}.toolbar .icon-button,.tool,.page-count{height:34px}.stage{padding-top:2px;padding-bottom:5px}.reader{padding-bottom:3px}}
/* A backward single-page turn uses the same fold geometry as a forward turn.
   Mirror the plane and counter-mirror the artwork so all text stays readable. */
#book.reverse-turn .stf__block{transform:scaleX(-1)}
#book.reverse-turn .page img{transform:scaleX(-1)}

/* Full-screen controls are overlays: revealing them never shrinks the pages. */
.masthead,.reader-footer,.hint,.side-arrow{opacity:1;visibility:visible;transition:opacity .32s ease,translate .38s cubic-bezier(.22,.61,.36,1),visibility 0s}
body.immersive .reader{position:fixed;inset:0;padding:0;width:100%;height:100dvh}
body.immersive .stage{position:absolute;inset:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);width:100%;height:100%}
body.immersive .masthead{position:fixed;top:0;left:0;right:0;z-index:30;padding-top:max(16px,env(safe-area-inset-top));background:linear-gradient(#f6f3ecf5,#f6f3ecd9);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
body.immersive .reader-footer{position:absolute;z-index:30;bottom:0;left:0;right:0;padding:14px 8px max(12px,env(safe-area-inset-bottom));background:linear-gradient(transparent,#ece8dfe8 34%,#ece8dff7)}
body.immersive .hint{position:absolute;z-index:29;top:88px;left:0;right:0;pointer-events:none;background:#f6f3ecdc;width:max-content;max-width:95%;padding:4px 12px;border-radius:20px;margin:auto}
body.immersive .side-arrow{z-index:25;background:#f6f3ecd9;backdrop-filter:blur(12px)}
body.immersive:not(.controls-visible) .masthead,
body.immersive:not(.controls-visible) .reader-footer,
body.immersive:not(.controls-visible) .hint,
body.immersive:not(.controls-visible) .side-arrow{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .32s ease,translate .38s cubic-bezier(.22,.61,.36,1),visibility 0s .38s}
body.immersive:not(.controls-visible) .masthead,
body.immersive:not(.controls-visible) .hint{translate:0 -14px}
body.immersive:not(.controls-visible) .reader-footer{translate:0 18px}
body.immersive:not(.controls-visible) .side-prev{translate:-12px 0}
body.immersive:not(.controls-visible) .side-next{translate:12px 0}
@media(max-height:550px){body.immersive .hint{display:none}body.immersive .reader-footer{padding-top:4px;padding-bottom:max(4px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}

/* Two-finger full-screen gestures belong to the book, not browser page zoom. */
.stage{touch-action:none}

/* Quiet, tactile reader chrome. Selection is a filled state, not a frame. */
body{background:radial-gradient(ellipse at 50% 35%,#faf9f6 0,#eeece6 75%,#e7e5de 100%);-webkit-font-smoothing:antialiased}
button{ -webkit-appearance:none;appearance:none }
.icon-button,.tool,.page-count,.primary{transition:background .18s ease,color .18s ease,box-shadow .18s ease}
.icon-button,.tool,.side-arrow{background:transparent}
.icon-button:active,.tool:active,.page-count:active{background:#25312814}
.toolbar{background:#fbfaf6d9;border-color:#ffffffd9;box-shadow:0 8px 28px #2831250b,0 1px 3px #28312508;backdrop-filter:blur(24px) saturate(135%);-webkit-backdrop-filter:blur(24px) saturate(135%)}
.tool{font-weight:500}.page-count{border-radius:22px;letter-spacing:.3px;font-weight:500}
.separator{background:#25312812;height:17px}
.fullscreen[aria-pressed=true]{background:#25312810;color:#304536}
.hint{color:#74796f}.section-name{letter-spacing:1.1px}
dialog:not(.zoom-dialog){border:1px solid #ffffffad;border-radius:28px;background:#f8f7f3;box-shadow:0 32px 100px #18211b2b,0 2px 10px #18211b0a;outline:none}
dialog::backdrop{background:#19211d40;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
dialog[open]:not(.zoom-dialog){animation:panel-in .25s cubic-bezier(.2,.7,.2,1)}
.pages-dialog{width:min(960px,94vw);padding:30px;scrollbar-width:thin;scrollbar-color:#c4c8bf transparent}
.dialog-heading{margin-bottom:22px;padding:0 6px;gap:20px}
.dialog-heading h2{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:28px;letter-spacing:-.8px;font-weight:600;line-height:1.15}
.eyebrow{font-size:9px;letter-spacing:1.7px;line-height:1.4}
.close-dialog.icon-button{background:#26352b0a;width:44px;height:44px;color:#657066}
.close-dialog svg{width:19px;height:19px;stroke-width:1.7}
.thumbnails{gap:12px 8px;align-items:stretch}
.thumbnail{padding:10px;border-radius:14px;display:flex;flex-direction:column;align-self:stretch;transition:background .2s ease;outline-offset:1px}
.thumbnail img{width:100%;height:auto;aspect-ratio:594.96 / 841.92;object-fit:contain;border-radius:3px;box-shadow:0 3px 9px #19211b12;outline:none}
.thumbnail span{font-size:11px;line-height:1.45;margin-top:10px;color:#646d63;letter-spacing:0}
.thumbnail b{font-variant-numeric:tabular-nums;color:#8a9187}
.thumbnail[aria-current=true]{background:#e0e7dc}
.thumbnail[aria-current=true] span,.thumbnail[aria-current=true] b{color:#314b36;font-weight:500}
.thumbnail:active{background:#d5dfd1}
.zoom-bar,.zoom-tip{background:#f8f7f3e8;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}
.zoom-level{border-radius:20px;background:#26352b08}
.help-dialog dd{font-size:13px;line-height:1.65}.primary{font-weight:500;font-size:13px}
@media(hover:hover) and (pointer:fine){.icon-button:hover,.tool:hover,.page-count:hover,.side-arrow:hover{background:#2531280d}.thumbnail:hover{background:#25312808}.thumbnail[aria-current=true]:hover{background:#d9e3d5}.close-dialog:hover{background:#26352b14}.primary:hover{background:#3b4c3f}}
@media(max-width:700px){.pages-dialog{padding:22px 12px;border-radius:24px}.dialog-heading{padding:0 8px;margin-bottom:16px}.dialog-heading h2{font-size:25px}.thumbnails{gap:8px 2px}.thumbnail{padding:7px;border-radius:11px}.thumbnail span{font-size:10px;margin-top:8px}}
@media(max-width:380px){.thumbnails{grid-template-columns:repeat(2,minmax(0,1fr))}}
@keyframes panel-in{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}

/* Keep the current page unmistakable in the overview, including touch screens. */
.thumbnail{position:relative}
.thumbnail[aria-current=true]{background:#c5d7be}
.thumbnail[aria-current=true] span,.thumbnail[aria-current=true] b{color:#203c26;font-weight:600}
.thumbnail[aria-current=true]::after{content:"✓";position:absolute;top:16px;right:16px;width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:#315b39;color:#fff;font:600 17px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;box-shadow:0 2px 6px #152e2526;pointer-events:none}
@media(hover:hover) and (pointer:fine){.thumbnail[aria-current=true]:hover{background:#baceb3}}
@media(max-width:700px){.thumbnail[aria-current=true]::after{top:12px;right:12px;width:24px;height:24px;font-size:15px}}

/* The header and footer converge on a small, persistent left-edge handle. */
body.immersive .masthead,body.immersive .reader-footer{transform:translate(0,0) scale(1);transform-origin:center;transition:transform .65s cubic-bezier(.22,.75,.2,1),opacity .5s ease,visibility 0s;will-change:transform,opacity}
body.immersive:not(.controls-visible) .masthead,body.immersive:not(.controls-visible) .reader-footer{translate:0 0;opacity:0;transition:transform .65s cubic-bezier(.4,0,.2,1),opacity .55s ease .1s,visibility 0s .65s}
body.immersive:not(.controls-visible) .masthead{transform:translate(calc(-50% + 18px),calc(50dvh - 50%)) scale(.06)}
body.immersive:not(.controls-visible) .reader-footer{transform:translate(calc(-50% + 18px),calc(-50dvh + 50%)) scale(.06)}
.controls-tab{position:fixed;z-index:40;left:0;top:50%;margin-top:-27px;width:36px;height:54px;padding:0 5px 0 1px;display:flex;align-items:center;justify-content:center;border-radius:0 18px 18px 0;background:#f8f7f3e6;color:#40533f;border:1px solid #ffffffc9;border-left:0;box-shadow:2px 3px 16px #19211d1c;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);opacity:0;visibility:hidden;pointer-events:none;transform:translateX(-100%) scale(.8);transition:transform .3s ease,opacity .2s ease,visibility 0s .3s;touch-action:manipulation}
.controls-tab svg{width:19px;height:19px;stroke-width:2}
body.immersive:not(.controls-visible) .controls-tab{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(0) scale(1);transition:transform .35s cubic-bezier(.2,.8,.2,1) .35s,opacity .25s ease .35s,visibility 0s .35s}
.controls-tab:active{background:#dfe7d9}
@media(prefers-reduced-motion:reduce){body.immersive .masthead,body.immersive .reader-footer{will-change:auto}}

.thumbnail img{aspect-ratio:var(--page-ratio,594.96 / 841.92)}
.brand{max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

#gesture-notice{position:fixed;z-index:100;left:50%;bottom:max(160px,calc(env(safe-area-inset-bottom) + 32px));transform:translateX(-50%);padding:12px 20px;border-radius:24px;max-width:calc(100vw - 32px);width:max-content;background:#25342ef2;color:#fff;box-shadow:0 6px 28px #0002;font:500 13px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;text-align:center;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}#gesture-notice:disabled{opacity:1;cursor:default}#gesture-notice[hidden]{display:none}.immersive #gesture-notice{bottom:max(32px,calc(env(safe-area-inset-bottom) + 24px))}

.gesture-diagnostics{display:block;margin:18px auto 0;font-size:11px;color:var(--muted);padding:10px;text-decoration:underline;text-underline-offset:3px}#gesture-report{width:100%;height:160px;margin-top:12px;font:11px/1.5 monospace}

#exit-reading-view[hidden]{display:none}
