:root{--accent: #ef6f5a;--accent-strong: #d95a48;--desk: #e7e1d8;--desk-2: #f4f0ea;--paper: #fdfcf9;--ink: #3a342f;--muted: #8f857a;--line: #e8e1d7;--chrome: #ffffff;--chrome-ink: #4a423b;--chrome-border: #ece5db;--on-desk: #3a342f;--muted-desk: #8f857a;--accent-soft: color-mix(in srgb,var(--accent) 14%,transparent);--radius: 12px;--serif: 'Newsreader',Georgia,'Times New Roman',serif;--sans: 'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--shadow-pill: 0 10px 32px rgba(40,30,20,.16);--shadow-pop: 0 16px 42px rgba(40,30,20,.2)}:root[data-accent="ocean"]{--accent: #4a90c2;--accent-strong: #397aa8}:root[data-accent="forest"]{--accent: #4a9d6e;--accent-strong: #3a855b}:root[data-accent="plum"]{--accent: #9a6fb0;--accent-strong: #855a9b}:root[data-theme="sepia"]{--desk: #d9c8a6;--desk-2: #eaddc4;--paper: #f7efdb;--ink: #493f2e;--muted: #8a7d61;--line: #e3d7bd;--chrome: #f6eedb;--chrome-ink: #52472f;--chrome-border: #e6d7bb;--on-desk: #493f2e;--muted-desk: #8a7d61}:root[data-theme="night"]{--desk: #1a1817;--desk-2: #272321;--paper: #f0eee8;--ink: #33302b;--muted: #8f857a;--line: #ddd8cf;--chrome: #272321;--chrome-ink: #ece7df;--chrome-border: #39332d;--on-desk: #ece7df;--muted-desk: #a39a8e}*{box-sizing: border-box}[hidden]{display: none !important}html,body{margin: 0;padding: 0;height: 100%;overflow: hidden}body{background: var(--desk);color: var(--ink);font: 14px/1.5 var(--sans);-webkit-font-smoothing: antialiased}.icon-sprite{display: none}.icon{width: 18px;height: 18px;flex: none;fill: none;stroke: currentColor;stroke-width: 1.9;stroke-linecap: round;stroke-linejoin: round}.icon use[href="#i-heart"],svg use[href="#i-heart"]{fill: currentColor;stroke: none}#i-heart{fill: currentColor;stroke: none}.app{display: flex;flex-direction: column;height: 100%;background: radial-gradient(120% 90% at 50% -10%,var(--desk-2),var(--desk) 60%)}.appbar{flex: none;height: 58px;display: flex;align-items: center;justify-content: space-between;gap: 16px;padding: 0 18px;background: var(--chrome);border-bottom: 1px solid var(--chrome-border);color: var(--chrome-ink);position: relative;z-index: 30}.brand{display: flex;align-items: center;gap: 11px;min-width: 0;flex: 0 0 auto}.brand-mark{display: inline-flex;width: 30px;height: 30px;color: var(--accent)}.brand-mark svg{width: 100%;height: 100%}.brand-name{font-family: var(--serif);font-size: 20px;font-weight: 600;letter-spacing: -.01em}.doc-title{flex: 1;display: flex;align-items: center;justify-content: center;gap: 9px;min-width: 0;color: var(--chrome-ink)}.doc-title .icon{color: var(--muted);width: 16px;height: 16px}.doc-title span{font-size: 13.5px;font-weight: 500;max-width: min(42vw,420px);overflow: hidden;text-overflow: ellipsis;white-space: nowrap}.appbar-actions{display: flex;align-items: center;gap: 8px;flex: 0 0 auto}.app.state-empty .reading-only,.app.state-error .reading-only{display: none !important}.app.state-empty .doc-title{display: none !important}.btn{display: inline-flex;align-items: center;justify-content: center;gap: 7px;height: 36px;padding: 0 14px;border: 1px solid var(--chrome-border);border-radius: 10px;background: var(--chrome);color: var(--chrome-ink);font: inherit;font-weight: 600;font-size: 13px;cursor: pointer;white-space: nowrap;transition: background .14s,border-color .14s,color .14s,transform .1s}.btn:hover:not(:disabled){border-color: var(--accent);color: var(--accent-strong)}.btn:active:not(:disabled){transform: translateY(1px)}.btn:disabled{opacity: .45;cursor: default}.btn:focus-visible{outline: 2px solid var(--accent);outline-offset: 2px}.btn-icon{width: 36px;padding: 0}.btn-primary{background: var(--accent);border-color: transparent;color: #fff;box-shadow: 0 6px 16px color-mix(in srgb,var(--accent) 38%,transparent)}.btn-primary:hover:not(:disabled){background: var(--accent-strong);color: #fff;border-color: transparent}.btn-lg{height: 46px;padding: 0 22px;border-radius: 12px;font-size: 14.5px}.btn-rate{color: var(--muted);border-color: transparent;background: transparent}.btn-rate:hover{color: var(--accent-strong)}.link-btn{margin-top: 20px;background: none;border: none;color: var(--accent-strong);font: inherit;font-weight: 600;font-size: 14px;display: inline-flex;align-items: center;gap: 6px;cursor: pointer;transition: gap .14s}.link-btn:hover{gap: 10px}.link-btn .icon{width: 16px;height: 16px}.menu-wrap{position: relative}.menu{position: absolute;inset-inline-end: 0;top: calc(100% + 8px);min-width: 264px;padding: 7px;background: var(--chrome);border: 1px solid var(--chrome-border);border-radius: 14px;box-shadow: var(--shadow-pop);z-index: 40;color: var(--chrome-ink)}.menu-row,.menu-item{display: flex;align-items: center;gap: 9px;width: 100%;padding: 8px 9px;border: 0;border-radius: 9px;background: transparent;color: inherit;font: inherit;font-size: 13.5px;text-align: start;text-decoration: none;cursor: pointer}.menu-row{justify-content: space-between;cursor: default}.menu-item:hover{background: color-mix(in srgb,var(--chrome-ink) 8%,transparent)}.menu-item .icon{color: var(--muted)}.menu-check{justify-content: flex-start;cursor: pointer}.menu-sep{height: 1px;margin: 6px 4px;background: var(--chrome-border)}.menu select{height: 30px;min-width: 130px;padding: 0 8px;border: 1px solid var(--chrome-border);border-radius: 8px;background: var(--paper);color: var(--ink);font: inherit;font-size: 13px}.swatches{display: flex;gap: 7px}.swatch{width: 22px;height: 22px;border-radius: 50%;border: 2px solid transparent;background: var(--sw);cursor: pointer;padding: 0;transition: transform .1s}.swatch:hover{transform: scale(1.12)}.swatch[aria-pressed="true"]{border-color: var(--chrome-ink);box-shadow: 0 0 0 2px var(--chrome)}.searchbar{flex: none;display: flex;align-items: center;gap: 8px;padding: 9px 16px;background: var(--chrome);border-bottom: 1px solid var(--chrome-border);color: var(--chrome-ink);z-index: 25}.searchbar > .icon{color: var(--muted)}.searchbar input{flex: 1;height: 34px;padding: 0 12px;border: 1px solid var(--chrome-border);border-radius: 10px;background: var(--paper);color: var(--ink);font: inherit}.searchbar input:focus-visible{outline: 2px solid var(--accent);outline-offset: 1px}.searchbar .btn-icon{border-color: transparent;background: transparent}.search-status{min-width: 74px;color: var(--muted);text-align: center;font-size: 13px;font-variant-numeric: tabular-nums}.stage{flex: 1;min-height: 0;display: flex;position: relative}.sidebar{position: absolute;inset-block: 0;inset-inline-start: 0;width: 288px;max-width: 84vw;display: flex;flex-direction: column;background: var(--chrome);border-inline-end: 1px solid var(--chrome-border);box-shadow: var(--shadow-pop);z-index: 26;animation: slide-in .2s cubic-bezier(.2,.7,.2,1)}@keyframes slide-in{from{transform: translateX(-16px);opacity: 0}to{transform: none;opacity: 1}}.sidebar-scrim{position: absolute;inset: 0;z-index: 24;background: color-mix(in srgb,var(--desk) 40%,transparent)}.panel{display: flex;flex-direction: column;min-height: 0;flex: 1}.panel-head{flex: none;display: flex;align-items: center;justify-content: space-between;padding: 12px 10px 12px 16px;font-family: var(--sans);font-weight: 700;font-size: 12px;letter-spacing: .12em;text-transform: uppercase;color: var(--muted);border-bottom: 1px solid var(--chrome-border)}.panel-close{border-color: transparent;background: transparent;color: var(--muted)}.panel-body{flex: 1;overflow: auto;padding: 8px;color: var(--chrome-ink)}.outline-item,.result-item{display: block;width: 100%;padding: 8px 10px;border: 0;border-radius: 9px;background: none;color: inherit;font: inherit;text-align: start;cursor: pointer}.outline-item:hover,.result-item:hover{background: var(--accent-soft)}.result-item .page-num{color: var(--muted);font-size: 12px;font-weight: 600}.result-item mark{background: var(--accent-soft);color: inherit;font-weight: 700}.result-snippet{display: block;margin-top: 2px;color: var(--muted);font-size: 12.5px;overflow-wrap: anywhere}.panel-empty{padding: 18px 14px;color: var(--muted);text-align: center}.viewport{position: relative;flex: 1;min-width: 0;display: flex;align-items: center;justify-content: center;padding: 20px;overflow: auto}.viewport.is-zoomed{align-items: safe center;justify-content: safe center}.book-frame{position: relative;flex: 0 0 auto;margin: auto;filter: drop-shadow(0 26px 46px rgba(45,30,20,.26));transition: width .28s cubic-bezier(.2,.7,.2,1),height .28s cubic-bezier(.2,.7,.2,1)}.app.state-empty .book-frame,.app.state-error .book-frame{display: none}.book-container{position: relative;z-index: 1;background: var(--paper)}.pf-page{background: var(--paper);overflow: hidden}.pf-page canvas,.pf-page img{position: absolute;inset: 0;width: 100%;height: 100%;object-fit: contain}.flip-mount.is-static{position: relative}.flip-mount.is-static > .pf-page{position: absolute;inset: 0}.pf-page.is-pending::after{content: "";position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);width: 26px;height: 26px;border: 2px solid var(--line);border-top-color: var(--accent);border-radius: 50%;animation: spin .8s linear infinite}.pf-page.is-failed::after{content: "!";position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);display: flex;align-items: center;justify-content: center;width: 28px;height: 28px;border-radius: 50%;background: var(--accent);color: #fff;font-weight: 700}.book-edge{position: absolute;top: 6px;bottom: 6px;width: 11px;z-index: 0;pointer-events: none}.book-edge-left{inset-inline-start: -7px;border-radius: 3px 0 0 3px;background: linear-gradient(90deg,#c9bfae,var(--paper));box-shadow: -2px 0 5px rgba(0,0,0,.12)}.book-edge-right{inset-inline-end: -7px;border-radius: 0 3px 3px 0;background: linear-gradient(270deg,#c9bfae,var(--paper));box-shadow: 2px 0 5px rgba(0,0,0,.12)}.book-spine{position: absolute;top: 0;bottom: 0;left: calc(50% - 34px);width: 68px;z-index: 5;pointer-events: none;background: linear-gradient(90deg,rgba(60,42,30,0) 0%,rgba(60,42,30,.12) 44%,rgba(255,255,255,.3) 50%,rgba(60,42,30,.12) 56%,rgba(60,42,30,0) 100%)}.app:not(.layout-double) .book-spine,.app:not(.layout-double) .book-edge{display: none}.nav-arrow{position: absolute;top: 50%;transform: translateY(-50%);width: 46px;height: 46px;border-radius: 50%;border: 1px solid var(--chrome-border);background: var(--chrome);color: var(--chrome-ink);display: flex;align-items: center;justify-content: center;box-shadow: 0 6px 18px rgba(40,30,20,.16);cursor: pointer;z-index: 20;transition: background .14s,color .14s,border-color .14s,opacity .14s}.nav-arrow:hover:not(:disabled){background: var(--accent);color: #fff;border-color: transparent}.nav-arrow:disabled{opacity: .32;cursor: default}.nav-arrow .icon{width: 22px;height: 22px;stroke-width: 2.2}.nav-prev{inset-inline-start: 16px}.nav-next{inset-inline-end: 16px}.nav-prev .icon{transform: scaleX(1)}.app:not(.reading) .nav-arrow{display: none}.control-pill{position: absolute;left: 50%;bottom: 20px;transform: translateX(-50%);display: flex;flex-wrap: wrap;align-items: center;justify-content: center;gap: 4px;max-width: calc(100% - 28px);padding: 7px 9px;background: var(--chrome);color: var(--chrome-ink);border: 1px solid var(--chrome-border);border-radius: 16px;box-shadow: var(--shadow-pill);z-index: 40}.app:not(.reading) .control-pill{display: none}.pill-btn{width: 36px;height: 36px;border: none;background: transparent;color: inherit;border-radius: 9px;display: inline-flex;align-items: center;justify-content: center;flex: 0 0 auto;cursor: pointer;transition: background .12s,color .12s}.pill-btn:hover:not(:disabled){background: color-mix(in srgb,var(--chrome-ink) 9%,transparent)}.pill-btn:disabled{opacity: .38;cursor: default}.pill-btn:focus-visible{outline: 2px solid var(--accent);outline-offset: 1px}.pill-btn[aria-pressed="true"]{background: var(--accent-soft);color: var(--accent-strong)}.pill-zoom{width: auto;min-width: 48px;padding: 0 8px;font-family: var(--sans);font-size: 12.5px;font-weight: 600;font-variant-numeric: tabular-nums}.pill-page{display: flex;align-items: center;gap: 3px;padding: 0 4px;font-family: var(--sans);font-weight: 600;font-size: 13px;font-variant-numeric: tabular-nums}.pill-page input{width: 42px;height: 30px;padding: 0 2px;text-align: center;border: 1px solid var(--chrome-border);border-radius: 8px;background: var(--paper);color: var(--chrome-ink);font: inherit;font-variant-numeric: tabular-nums}.pill-page input::-webkit-outer-spin-button,.pill-page input::-webkit-inner-spin-button{-webkit-appearance: none;margin: 0}.pill-count{color: var(--muted);font-weight: 500}.pill-sep{width: 1px;height: 24px;background: var(--chrome-border);margin: 0 5px;flex: 0 0 auto}.scrub{width: clamp(88px,17vw,210px);flex: 0 0 auto;accent-color: var(--accent);cursor: pointer}.scrub:disabled{opacity: .5;cursor: default}.thumbs-pop{position: absolute;left: 50%;bottom: 86px;transform: translateX(-50%);max-width: calc(100% - 40px);background: var(--chrome);border: 1px solid var(--chrome-border);border-radius: 16px;box-shadow: var(--shadow-pop);padding: 12px 14px 14px;z-index: 45;animation: pop-in .18s cubic-bezier(.2,.7,.2,1)}@keyframes pop-in{from{transform: translateX(-50%) translateY(8px) scale(.98);opacity: 0}to{transform: translateX(-50%);opacity: 1}}.thumbs-head{display: flex;align-items: center;justify-content: space-between;gap: 12px;margin-bottom: 10px;padding: 0 2px}.thumbs-head span{font-family: var(--sans);font-size: 11px;font-weight: 700;letter-spacing: .14em;text-transform: uppercase;color: var(--muted)}.thumbs-head .btn-icon{width: 26px;height: 26px;border: none;background: transparent;color: var(--muted)}.thumb-strip{display: flex;gap: 12px;overflow-x: auto;overflow-y: hidden;padding: 4px 2px 8px;max-width: min(78vw,720px);scrollbar-width: thin}.thumb{flex: 0 0 auto;display: flex;flex-direction: column;align-items: center;gap: 6px;background: none;border: none;padding: 0;cursor: pointer;color: var(--muted);font-family: var(--sans);font-size: 11px;font-weight: 600}.thumb-frame{width: 54px;height: 72px;border-radius: 4px;overflow: hidden;background: var(--paper);border: 2px solid var(--line);box-shadow: 0 2px 7px rgba(0,0,0,.13);display: flex;align-items: center;justify-content: center}.thumb-frame canvas{width: 100%;height: 100%;object-fit: contain}.thumb:hover .thumb-frame{border-color: var(--accent)}.thumb[aria-current="true"] .thumb-frame{border-color: var(--accent)}.thumb[aria-current="true"]{color: var(--accent-strong)}.immersive-exit{position: absolute;top: 16px;inset-inline-end: 16px;width: 42px;height: 42px;border-radius: 12px;background: var(--chrome);color: var(--chrome-ink);border: 1px solid var(--chrome-border);box-shadow: 0 6px 18px rgba(40,30,20,.16);z-index: 41}.app.immersive .appbar{display: none}.state{position: absolute;inset: 0;display: flex;flex-direction: column;align-items: center;justify-content: center;padding: 24px;text-align: center;overflow: auto;z-index: 8}.state[hidden]{display: none}.hero{width: 100%;max-width: 560px;display: flex;flex-direction: column;align-items: center;animation: fade-up .5s cubic-bezier(.2,.7,.2,1)}@keyframes fade-up{from{opacity: 0;transform: translateY(14px)}to{opacity: 1;transform: none}}.hero-mark{width: 92px;height: 92px;color: var(--accent);filter: drop-shadow(0 12px 22px rgba(90,60,45,.22));animation: floaty 6s ease-in-out infinite}.hero-mark svg{width: 100%;height: 100%}@keyframes floaty{0%,100%{transform: translateY(0)}50%{transform: translateY(-9px)}}.hero-eyebrow{margin-top: 22px;font-family: var(--sans);font-size: 11px;font-weight: 700;letter-spacing: .3em;text-transform: uppercase;color: var(--accent)}.hero-title{margin: 12px 0 0;font-family: var(--serif);font-size: 40px;line-height: 1.06;font-weight: 500;letter-spacing: -.015em;color: var(--on-desk)}.hero-body{margin: 14px 0 0;font-size: 15.5px;line-height: 1.6;color: var(--muted-desk);max-width: 27em}.drop-card{margin-top: 30px;width: 100%;border: 2px dashed var(--line);border-radius: 18px;padding: 26px 22px;background: var(--chrome);box-shadow: 0 10px 34px rgba(70,50,35,.07)}.drop-card-title{font-size: 14.5px;font-weight: 600;color: var(--on-desk)}.drop-card-sub{margin: 4px 0 20px;font-size: 12.5px;color: var(--muted-desk)}.drop-card-actions{display: flex;flex-wrap: wrap;gap: 12px;justify-content: center}.hero-hints{margin-top: 26px;display: flex;flex-wrap: wrap;gap: 8px 14px;justify-content: center;font-family: var(--sans);font-size: 12px;color: var(--muted-desk)}.hero-hints .dot{opacity: .5}.state h1{margin: 0;font-family: var(--serif);font-size: 26px;font-weight: 500;color: var(--on-desk)}.state p{margin: 8px 0 0;max-width: 42ch;color: var(--muted-desk)}.state-actions{display: flex;gap: 10px;margin-top: 18px;flex-wrap: wrap;justify-content: center}.state-icon{width: 54px;height: 54px;fill: none;stroke: var(--muted-desk);stroke-width: 1.4;stroke-linecap: round;stroke-linejoin: round}.error-state .state-icon{stroke: var(--accent)}.loading-overlay{position: absolute;inset: 0;display: flex;flex-direction: column;align-items: center;justify-content: center;gap: 12px;background: color-mix(in srgb,var(--desk) 82%,transparent);backdrop-filter: blur(2px);z-index: 10}.loading-overlay[hidden]{display: none}.loading-overlay p{margin: 0;color: var(--muted-desk)}.spinner{width: 34px;height: 34px;border: 3px solid var(--line);border-top-color: var(--accent);border-radius: 50%;animation: spin .8s linear infinite}@keyframes spin{to{transform: rotate(360deg)}}.progress{width: 220px;height: 4px;border-radius: 2px;background: color-mix(in srgb,var(--muted-desk) 30%,transparent);overflow: hidden}.progress-bar{height: 100%;width: 0;background: var(--accent);transition: width .18s ease-out}.dropzone{position: fixed;inset: 0;z-index: 90;display: flex;align-items: center;justify-content: center;padding: 24px;background: color-mix(in srgb,var(--desk) 72%,transparent);backdrop-filter: blur(3px)}.dropzone[hidden]{display: none}.dropzone-inner{border: 3px dashed var(--accent);border-radius: 22px;padding: 52px 68px;background: var(--chrome);box-shadow: 0 20px 50px rgba(40,30,20,.22);text-align: center}.dropzone-inner .state-icon{stroke: var(--accent);width: 40px;height: 40px;margin-bottom: 8px}.dropzone-title{margin: 0;font-family: var(--serif);font-size: 26px;font-weight: 500;color: var(--on-desk)}.dropzone-sub{margin: 6px 0 0;font-size: 13px;color: var(--muted-desk)}.dlg{width: min(440px,calc(100vw - 32px));padding: 0;border: 1px solid var(--chrome-border);border-radius: 16px;background: var(--chrome);color: var(--chrome-ink);box-shadow: var(--shadow-pop)}.dlg-wide{width: min(680px,calc(100vw - 32px))}.dlg::backdrop{background: rgba(30,20,12,.5);backdrop-filter: blur(2px)}.dlg form{padding: 22px}.dlg h2{display: flex;align-items: center;gap: 8px;margin: 0 0 8px;font-family: var(--serif);font-size: 20px;font-weight: 500}.dlg h2 .icon{color: var(--accent)}.dlg p{margin: 0 0 12px;color: var(--muted)}.dlg-error{color: var(--accent-strong) !important}.dlg-error[hidden]{display: none}.dlg input[type="password"],.dlg input[type="text"]{width: 100%;height: 38px;padding: 0 12px;border: 1px solid var(--chrome-border);border-radius: 10px;background: var(--paper);color: var(--ink);font: inherit}.dlg menu{display: flex;justify-content: flex-end;gap: 8px;margin: 18px 0 0;padding: 0}.shortcut-list{display: grid;grid-template-columns: auto 1fr;gap: 9px 16px;margin: 0;align-items: center}.shortcut-list dt{display: flex;gap: 4px;align-items: center}.shortcut-list dd{margin: 0;color: var(--muted)}kbd{display: inline-block;min-width: 22px;padding: 2px 6px;border: 1px solid var(--chrome-border);border-bottom-width: 2px;border-radius: 6px;background: var(--paper);color: var(--ink);font: 12px/1.3 ui-monospace,"Cascadia Code",Consolas,monospace;text-align: center}.arrange-list{display: grid;grid-template-columns: repeat(auto-fill,minmax(120px,1fr));gap: 10px;max-height: 50vh;overflow: auto;padding: 4px}.arrange-item{position: relative;border: 1px solid var(--chrome-border);border-radius: 10px;background: var(--paper);padding: 6px;cursor: grab}.arrange-item.dragging{opacity: .4}.arrange-item.drop-target{border-color: var(--accent);box-shadow: 0 0 0 2px var(--accent-soft)}.arrange-item img{width: 100%;aspect-ratio: 3 / 4;object-fit: contain;background: var(--paper);border-radius: 5px}.arrange-name{display: block;font-size: 11px;color: var(--muted);overflow: hidden;text-overflow: ellipsis;white-space: nowrap}.arrange-tools{display: flex;justify-content: center;gap: 2px;margin-top: 4px}.arrange-tools .btn{height: 28px;width: 28px;padding: 0}.toasts{position: fixed;inset-block-start: 72px;inset-inline: 0;display: flex;flex-direction: column;align-items: center;gap: 8px;z-index: 100;pointer-events: none}.toast{display: flex;align-items: center;gap: 8px;max-width: 400px;padding: 11px 16px;border: 1px solid var(--chrome-border);border-radius: 12px;background: var(--chrome);color: var(--chrome-ink);box-shadow: var(--shadow-pop);pointer-events: auto;animation: toast-in .18s ease-out}.toast.is-error{border-color: var(--accent)}.toast.is-error .icon{color: var(--accent)}@keyframes toast-in{from{opacity: 0;transform: translateY(8px)}to{opacity: 1;transform: none}}.print-area{display: none}@media print{.app,.toasts,.dropzone{display: none !important}.print-area{display: block}.print-area img{display: block;width: 100%;page-break-after: always}@page{margin: 10mm}}@media (max-width: 720px){.brand-name{display: none}.btn-rate .btn-text{display: none}.hero-title{font-size: 32px}}@media (max-width: 520px){.doc-title{display: none !important}.btn-open span{display: none}}@media (prefers-reduced-motion: reduce){*{animation-duration: .01ms !important;transition-duration: .01ms !important}}