:root{--ink:#111;--muted:#707070;--line:#dedede;--paper:#fff;--canvas:#f2f3f4;--fast:140ms;--normal:220ms}
*{box-sizing:border-box}html,body{margin:0;height:100%;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;background:var(--canvas)}
button,input{font:inherit}button{color:inherit;cursor:pointer}button:disabled{opacity:.27;cursor:default}button:focus-visible,input:focus-visible{outline:2px solid #111;outline-offset:3px}button{border:0;background:transparent}svg{height:20px;width:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
[hidden]{display:none!important}.reader{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.reader-header{flex:none;min-height:86px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 30px;border-bottom:1px solid var(--line)}.eyebrow{font-size:10px;color:var(--muted);letter-spacing:.15em;text-transform:uppercase}.reader-heading h1{font-size:19px;font-weight:500;letter-spacing:-.025em;line-height:1.25;margin:6px 0 0}.icon-button{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;font-size:25px;transition:background var(--fast),transform var(--fast)}.icon-button:hover{background:#e9e9e9}.icon-button:active{transform:scale(.96)}.close-reader{border:0;background:#f4f4f4;flex:none}.reader-tools{flex:none;display:flex;align-items:center;gap:8px;background:#fff;padding:8px 26px;min-height:56px;border-bottom:1px solid var(--line)}.reader-tools>button{display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 12px;font-size:12px;border-radius:4px;transition:background var(--fast)}.reader-tools>button:hover,.reader-tools>button[aria-pressed=true],.reader-tools>button[aria-expanded=true]{background:#ededed}.tools-divider{height:20px;width:1px;background:var(--line);margin:0 8px}.reader-preview{margin-left:auto;color:#8a8a8a;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding-left:16px;white-space:nowrap}
.reader-main{flex:1;min-height:0;display:flex;position:relative}.reader-view{flex:1;min-width:0;min-height:0;position:relative;display:flex;flex-direction:column}.book-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:34px 45px 20px;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 62%,#fff 0,#f2f3f4 70%)}.book-shell{flex:none;position:relative;filter:drop-shadow(0 16px 18px #00000021);transition:translate 360ms cubic-bezier(.2,0,.2,1)}.book-shell.is-cover{translate:-25% 0}.book-shell.is-back{translate:25% 0}.book-shell::after{content:"";position:absolute;z-index:-1;inset:5px -4px -5px 0;background:repeating-linear-gradient(0deg,#c6c6c6 0 1px,#eee 1px 3px);border-right:1px solid #b7b7b7;pointer-events:none}.book-shell.is-cover::after{left:50%}.book-shell.is-back::after{right:50%}#book{touch-action:pan-y}.book-page{position:relative;background:white;overflow:hidden;user-select:none;-webkit-user-select:none}.book-page img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}.book-page::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#00000013 0,transparent 3%,transparent 97%,#00000005)}.book-page.--left::after{background:linear-gradient(270deg,#0000001a 0,transparent 3%,transparent 97%,#00000003)}.loading-message{font-size:13px;color:var(--muted);position:absolute}.book-help{flex:none;text-align:center;padding:8px 20px 18px;font-size:11px;color:#888;letter-spacing:.015em}.reader-footer{flex:none;display:flex;align-items:center;gap:30px;padding:14px 30px;background:#fff;border-top:1px solid var(--line);min-height:80px}.page-controls{display:flex;align-items:center;gap:18px;white-space:nowrap;font-size:12px;min-width:250px;justify-content:space-between}#pageStatus{min-width:124px;text-align:center;font-variant-numeric:tabular-nums}.page-progress{flex:1;display:flex;align-items:center}.page-progress input{accent-color:#111;width:100%;height:4px;cursor:pointer}.page-jump{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.page-jump input{width:46px;appearance:textfield;-moz-appearance:textfield;padding:8px 3px;border:0;border-bottom:1px solid #bbb;text-align:center;background:white;color:#111}.page-jump input::-webkit-inner-spin-button{appearance:none}.contents{width:300px;flex:none;background:#fff;border-right:1px solid var(--line);padding:22px 20px;overflow-y:auto}.contents-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.contents h2{font-size:20px;font-weight:500;letter-spacing:-.025em;margin:0}.contents-heading .icon-button{width:32px;height:32px;border:0}.chapter-list{display:grid;gap:4px}.chapter-link{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:11px 8px;font-size:12px;line-height:1.5;border-radius:2px}.chapter-link:hover{background:#f4f4f4}.chapter-link[aria-current=true]{background:#111;color:white}.chapter-link span{flex:1}.chapter-link small{font-size:11px;color:inherit;opacity:.65;font-variant-numeric:tabular-nums}.contents-note{margin:28px 8px 0;font-size:11px;color:var(--muted);line-height:1.7}.text-view{overflow-y:auto;flex:1;background:#fff;padding:34px clamp(20px,6vw,90px)}.text-page{max-width:850px;margin:0 auto 44px;padding-bottom:38px;border-bottom:1px solid var(--line)}.text-page h2{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:#888;font-weight:500;margin:0 0 22px}.text-page p{white-space:pre-line;overflow-wrap:anywhere;line-height:1.75;font-size:17px;letter-spacing:.003em;margin:0}.zoom-dialog{position:fixed;inset:0;padding:0;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;background:var(--canvas);color:#111}.zoom-dialog[open]{display:flex;flex-direction:column}.zoom-dialog::backdrop{background:#f2f3f4}.zoom-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 24px;background:#fff;border-bottom:1px solid var(--line);flex:none}.zoom-pages,.zoom-scale{display:flex;align-items:center;gap:12px;font-size:12px}.zoom-pages .icon-button{width:36px;height:36px;font-size:18px}.zoom-scale button{min-width:36px;min-height:36px;border:1px solid var(--line);border-radius:3px;font-size:18px}.zoom-scale #zoomFit{font-size:12px;padding:0 10px}.zoom-scale span{min-width:48px;text-align:center;font-variant-numeric:tabular-nums}.zoom-scroll{flex:1;min-height:0;overflow:auto;padding:30px;overscroll-behavior:contain;touch-action:pan-x pan-y}.zoom-scroll img{display:block;width:var(--zoom-width,100%);max-width:none;min-width:0;height:auto;margin:0 auto;box-shadow:0 12px 35px #00000015;-webkit-user-drag:none;user-select:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:760px){.reader-header{min-height:74px;padding:14px 16px;gap:12px}.reader-heading h1{font-size:15px;max-width:270px}.eyebrow{font-size:8px}.close-reader{width:36px;height:36px}.reader-tools{padding:6px 10px;gap:2px;min-height:50px;flex-wrap:wrap}.reader-tools>button{gap:5px;padding:7px 8px;font-size:11px}.reader-tools svg{width:17px;height:17px}.tools-divider,.reader-preview{display:none}.reader-tools #fullscreenToggle{margin-left:auto;font-size:0;gap:0}.reader-tools #fullscreenToggle svg{height:20px;width:20px}.book-stage{padding:24px 14px 14px}.book-shell.is-cover,.book-shell.is-back{translate:0}.book-help{font-size:10px;line-height:1.5;padding-bottom:14px}.reader-footer{gap:12px;padding:11px 16px;flex-wrap:wrap}.page-controls{min-width:0;flex:1;gap:10px;justify-content:flex-start;font-size:11px}.page-controls .icon-button{width:36px;height:36px}.page-controls #pageStatus{min-width:108px}.page-progress{order:3;flex-basis:100%;padding:6px 0}.page-jump{font-size:11px;gap:4px}.page-jump input{width:32px;padding:6px 0}.contents{position:absolute;z-index:30;inset:0 auto 0 0;width:min(310px,calc(100% - 42px));box-shadow:12px 0 35px #00000015}.zoom-toolbar{padding:10px 12px;gap:5px;flex-wrap:wrap}.zoom-pages,.zoom-scale{gap:6px;font-size:11px}.zoom-scale{order:3;flex-basis:100%;justify-content:center}.zoom-toolbar>.icon-button{width:36px;height:36px}.zoom-scroll{padding:16px}.text-view{padding:25px 20px}.text-page p{font-size:16px}}
.book-shell.is-cover{translate:calc(-1 * var(--cover-shift,0px)) 0}.book-shell.is-back{translate:var(--cover-shift,0px) 0}
.book-shell::after,.book-shell.is-cover::after,.book-shell.is-back::after{inset:auto;left:var(--stack-left);top:var(--stack-top);width:var(--stack-width);height:var(--stack-height)}
#book{min-width:0!important;min-height:0!important}
@media(max-width:760px){.book-shell.is-cover,.book-shell.is-back{translate:0}}
@media(prefers-reduced-motion:reduce){.book-shell,.icon-button{transition:none}.book-help{visibility:hidden}}
.background-control{display:flex;align-items:center;gap:8px;margin-left:8px;font-size:11px;color:#777}.background-control select{font:inherit;color:#111;background:#fff;border:1px solid #ddd;border-radius:3px;padding:7px 24px 7px 9px;min-height:36px;cursor:pointer}.background-control select:focus-visible{outline:2px solid #111;outline-offset:2px}
.reader-view{background:#f2f3f4;transition:background 240ms}.book-stage{background:transparent;transition:background 240ms}.reader[data-background=dark] .reader-view{background:#191a1b}.reader[data-background=dark] .book-help{color:#aaa}.reader[data-background=dark] .book-shell{filter:drop-shadow(0 18px 22px #0008)}
.zoom-dialog[data-background=dark]{background:#191a1b}.zoom-dialog[data-background=dark] .zoom-scroll img{box-shadow:0 14px 36px #0008}
@media(max-width:760px){.background-control{flex-basis:100%;justify-content:space-between;padding:0 8px 3px;margin:0}.background-control select{min-height:32px;padding-block:5px}}
@media(prefers-reduced-motion:reduce){.reader-view,.book-stage{transition:none}}
@media(max-width:380px){.reader-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px}.page-controls{grid-column:1/-1;justify-content:center}.page-progress{order:0;grid-row:2}.page-jump{grid-row:2}.page-controls #pageStatus{min-width:120px}}
.zoom-edge-controls{position:absolute;inset:0;pointer-events:none;z-index:2}.zoom-edge-controls .icon-button{position:absolute;top:50%;translate:0 -50%;width:48px;height:48px;background:#fff;color:#111;border-color:#aaa;box-shadow:0 3px 18px #0003;pointer-events:auto}.zoom-edge-controls .icon-button:disabled{visibility:hidden}.zoom-edge-controls #zoomEdgePrevious{left:16px}.zoom-edge-controls #zoomEdgeNext{right:16px}.zoom-edge-controls .icon-button:hover{background:#e8e8e8}
@media(max-width:760px){.zoom-edge-controls .icon-button{width:44px;height:44px}.zoom-edge-controls #zoomEdgePrevious{left:8px}.zoom-edge-controls #zoomEdgeNext{right:8px}}
/* Keep the floor shadow static instead of filtering every animated paper pixel. */
.book-shell,.reader[data-background=dark] .book-shell{filter:none}
.book-shell::after{box-shadow:0 16px 22px #0003}
.reader[data-background=dark] .book-shell::after{box-shadow:0 18px 25px #0008}

/* The reader handles two-finger scaling; a fresh single finger scrolls the zoom. */
.book-stage{touch-action:none}.zoom-scroll{touch-action:pan-x pan-y}
