@font-face{font-family:EB Garamond;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ebgaramond-latin.woff2)format("woff2")}@font-face{font-family:EB Garamond;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ebgaramond-italic-latin.woff2)format("woff2")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#ece9e4}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{background:radial-gradient(120% 105% at 50% 30%,#d8cfbc 0%,#b9ad95 55%,#97896f 100%);font-family:system-ui,-apple-system,Segoe UI,sans-serif}#root{position:relative}.loader{z-index:10;opacity:1;pointer-events:none;background:radial-gradient(120% 105% at 50% 30%,#d8cfbc 0%,#b9ad95 55%,#97896f 100%);transition:opacity .9s;position:absolute;inset:0}.loader--hidden{opacity:0}.toc-toggle{z-index:6;color:#1f4e46;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#faf6ecb3;border:1px solid #1f4e464d;border-radius:22px;padding:9px 18px;font:500 13px/1 EB Garamond,Georgia,serif;transition:background .2s,transform .16s;position:absolute;top:22px;left:22px}.toc-toggle:hover{background:#faf6ec;transform:translateY(-1px)}.toc-toggle:focus-visible{outline-offset:2px;outline:2px solid #1f4e46}.dropzone{z-index:8;pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1f4e4624;place-items:center;padding:22px;display:grid;position:absolute;inset:0}.dropzone__inner{color:#1f4e46;letter-spacing:.04em;border:2px dashed #1f4e468c;border-radius:18px;place-items:center;width:100%;height:100%;font:400 26px/1 EB Garamond,Georgia,serif;display:grid}.fade{z-index:8;opacity:0;pointer-events:none;background:radial-gradient(120% 105% at 50% 30%,#d8cfbc 0%,#b9ad95 55%,#97896f 100%);transition:opacity .28s;position:absolute;inset:0}.fade--on{opacity:1}@media (prefers-reduced-motion:reduce){.fade{transition-duration:.12s}}.toast{z-index:9;color:#7a1f1f;background:#fbedec;border:1px solid #9f12394d;border-radius:12px;align-items:center;gap:12px;max-width:min(440px,100vw - 40px);padding:12px 14px 12px 18px;font:400 15px/1.35 EB Garamond,Georgia,serif;animation:.22s toast-in;display:flex;position:absolute;bottom:70px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #28221447}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.toast__msg{flex:1}.toast__close{color:#7a1f1f;cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;width:26px;height:26px;font-size:20px;line-height:1}.toast__close:hover{background:#7a1f1f1f}.toast__close:focus-visible{outline-offset:1px;outline:2px solid #7a1f1f}.pdf-loading{z-index:9;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#28221447;place-items:center;display:grid;position:absolute;inset:0}.pdf-loading__card{background:#faf6ec;border-radius:14px;flex-direction:column;align-items:center;gap:16px;padding:28px 36px;display:flex;box-shadow:0 18px 50px #28221459}.pdf-loading__spinner{border:3px solid #1f4e4633;border-top-color:#1f4e46;border-radius:50%;width:30px;height:30px;animation:.8s linear infinite pdf-spin}@keyframes pdf-spin{to{transform:rotate(360deg)}}.pdf-loading__label{text-align:center;color:#2b2a26;max-width:280px;margin:0;font:400 17px/1.3 EB Garamond,Georgia,serif}.pdf-loading__bar{background:#1f4e4626;border-radius:2px;width:220px;height:4px;overflow:hidden}.pdf-loading__fill{transform-origin:0;background:#1f4e46;height:100%;transition:transform .2s}.pdf-loading__fill--indeterminate{width:40%;animation:1.1s ease-in-out infinite pdf-indet;transform:none}@keyframes pdf-indet{0%{margin-left:-40%}to{margin-left:100%}}@media (prefers-reduced-motion:reduce){.pdf-loading__spinner,.pdf-loading__fill--indeterminate{animation:none}}.book-label{z-index:5;text-overflow:ellipsis;white-space:nowrap;color:#5c5346;letter-spacing:.02em;pointer-events:none;-webkit-user-select:none;user-select:none;max-width:40vw;margin:0;font:italic 400 15px/1 EB Garamond,Georgia,serif;position:absolute;top:26px;left:50%;overflow:hidden;transform:translate(-50%)}.top-actions{z-index:6;align-items:center;gap:14px;display:flex;position:absolute;top:22px;right:22px}.reset-btn{color:#1f4e46;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#faf6ecb3;border:1px solid #1f4e464d;border-radius:22px;padding:9px 16px;font:500 13px/1 EB Garamond,Georgia,serif;transition:background .2s,transform .16s}.reset-btn:hover{background:#faf6ec;transform:translateY(-1px)}.reset-btn:focus-visible{outline-offset:2px;outline:2px solid #1f4e46}.upload-btn{color:#1f4e46;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#faf6ecb3;border:1px solid #1f4e464d;border-radius:22px;padding:9px 18px;font:500 13px/1 EB Garamond,Georgia,serif;transition:background .2s,transform .16s,opacity .2s}.upload-btn:hover{background:#faf6ec;transform:translateY(-1px)}.upload-btn:disabled{opacity:.5;cursor:default}.upload-btn:focus-visible{outline-offset:2px;outline:2px solid #1f4e46}.toc-scrim{z-index:6;background:#2822142e;position:absolute;inset:0}.toc{z-index:7;background:#faf6ec;border-radius:14px;width:min(340px,100vw - 44px);max-height:calc(100vh - 100px);padding:14px;animation:.22s cubic-bezier(.22,.61,.36,1) toc-in;position:absolute;top:70px;left:22px;overflow-y:auto;box-shadow:0 18px 50px #28221452}@keyframes toc-in{0%{opacity:0;transform:translateY(-8px)}}.toc__head{color:#6b6354;letter-spacing:.2em;text-transform:uppercase;margin:4px 10px 10px;font:400 12px/1 EB Garamond,Georgia,serif}.toc__item{color:#2b2a26;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:baseline;gap:14px;width:100%;padding:9px 10px;font:400 17px/1.25 EB Garamond,Georgia,serif;transition:background .15s;display:flex}.toc__item:hover{background:#1f4e4617}.toc__item:focus-visible{outline-offset:-2px;outline:2px solid #1f4e46}.toc__num{color:#1f4e46;letter-spacing:.04em;flex:0 0 34px;font-size:14px;font-style:italic}.progress{background:#1f4e461f;height:3px;position:absolute;bottom:0;left:0;right:0}.progress__fill{transform-origin:0;background:#1f4e46;height:100%;transition:transform .55s cubic-bezier(.22,.61,.36,1)}.controls{left:50%;bottom:calc(28px + env(safe-area-inset-bottom,0px));align-items:center;gap:16px;display:flex;position:absolute;transform:translate(-50%)}.hint{text-align:center;color:#5c5346;letter-spacing:.1em;text-transform:uppercase;-webkit-user-select:none;user-select:none;min-width:168px;margin:0;font-size:13px;transition:opacity .5s}.nav-btn{color:#1f4e46;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff8c;border:1px solid #1f4e4640;border-radius:50%;place-items:center;width:44px;height:44px;font-size:22px;line-height:1;transition:transform .16s,background .2s,opacity .2s;display:grid}.nav-btn:hover{background:#fff;transform:translateY(-1px)}.nav-btn:active{transform:translateY(0)}.nav-btn:disabled{opacity:.3;cursor:default}.nav-btn:focus-visible{outline-offset:2px;outline:2px solid #1f4e46}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}canvas:focus{outline:none}canvas:focus-visible{outline-offset:-3px;border-radius:4px;outline:2px solid #1f4e46}.rotate-hint{display:none}.rotate-hint__inner{color:#1f4e46;text-align:center;flex-direction:column;align-items:center;gap:14px;padding:0 32px;font:400 22px/1.4 EB Garamond,Georgia,serif;display:flex}.rotate-hint__icon{font-size:46px;animation:2s ease-in-out infinite rotate-nudge}@keyframes rotate-nudge{0%,60%,to{transform:rotate(0)}80%{transform:rotate(90deg)}}@media (width<=640px),(height<=480px){.nav-btn{display:none}}@media (width<=640px) and (orientation:portrait){.rotate-hint{z-index:9;background:radial-gradient(120% 105% at 50% 30%,#e0d8c7 0%,#c3bba6 60%,#a89f88 100%);place-items:center;display:grid;position:absolute;inset:0}}@media (prefers-reduced-motion:reduce){.hint,.loader,.progress__fill{transition:none}.rotate-hint__icon{animation:none}}
