:root{--bg:#17130f;--bg-2:#211a14;--panel:#221b15;--ink:#ede6da;--muted:#9c8f7d;--line:#3a2f24;--accent:#e4a72e;--accent-dim:#8a6a24;--danger:#e07a53;--sheet:#1d1712;--font-ui:"Jost","Segoe UI",system-ui,-apple-system,sans-serif;--font-read:Georgia,"Times New Roman",serif;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink);font-family:var(--font-ui);background:radial-gradient(130% 90% at 50% -10%,#2a2118 0%,var(--bg) 55%,#100c09 100%);overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font-family:inherit}#app{height:100dvh;display:flex;flex-direction:column;min-height:0}.icon-btn{display:grid;place-items:center;flex:0 0 auto;width:44px;height:44px;border-radius:999px;border:1px solid var(--line);background:#ffffff08;color:var(--ink);cursor:pointer;transition:border-color .18s,color .18s,background .18s}.icon-btn:hover{border-color:var(--accent-dim);color:var(--accent)}.icon-btn:active{transform:scale(.94)}.icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.landing{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:24px calc(20px + env(safe-area-inset-left,0px)) calc(28px + var(--safe-b));text-align:center}.brand{display:flex;align-items:center;gap:12px;user-select:none}.brand .mark{width:40px;height:40px}.brand h1{margin:0;font-size:26px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;padding-left:.22em}.tagline{margin:-8px 0 0;color:var(--muted);font-size:14px;max-width:34ch;line-height:1.5}.drop{width:min(520px,92vw);border:1.5px dashed var(--line);border-radius:20px;background:#ffffff05;padding:34px 22px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:14px;transition:border-color .2s,background .2s,transform .2s}.drop:hover,.drop.over{border-color:var(--accent);background:#e4a72e0f}.drop.over{transform:scale(1.01)}.drop .plus{width:56px;height:56px;border-radius:999px;display:grid;place-items:center;background:#e4a72e1f;color:var(--accent)}.drop .plus svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.drop .big{font-size:17px;font-weight:600}.drop .small{font-size:13px;color:var(--muted)}.drop .btn{margin-top:4px;padding:11px 22px;border-radius:999px;border:none;cursor:pointer;background:var(--accent);color:#241a05;font-weight:700;font-size:15px}.formats{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:min(560px,94vw);margin-top:10px}.formats span{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:5px 11px}.privacy{color:var(--muted);font-size:12px;max-width:38ch;line-height:1.5;opacity:.8}.library{width:min(720px,94vw);text-align:left}.lib-title{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 2px 12px}.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:16px}.bookcard{position:relative;display:flex;flex-direction:column;gap:6px;text-align:left;cursor:pointer;background:none;border:none;padding:0;color:inherit;font:inherit}.bookcard .cover{position:relative;aspect-ratio:.68;border-radius:10px;overflow:hidden;background:#0d0a07 center/cover no-repeat;border:1px solid var(--line);box-shadow:0 6px 18px #00000059;transition:transform .18s}.bookcard:hover .cover{transform:translateY(-3px)}.bookcard .cover.gen{display:grid;place-items:center;background:linear-gradient(150deg,#2c2318,#191410)}.bookcard .cover .ci{font-size:40px;font-weight:700;color:var(--accent);opacity:.85}.bookcard .cover .badge{position:absolute;top:6px;left:6px;font-size:9px;font-weight:700;letter-spacing:.06em;background:#0000008c;color:#fff;padding:2px 6px;border-radius:5px}.bookcard .bt{font-size:13px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bookcard .ba{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bookcard .prog{height:3px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:2px}.bookcard .prog>i{display:block;height:100%;background:var(--accent)}.bookcard .del{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;background:#0000008c;color:#fff;opacity:.7;transition:opacity .15s}.bookcard:hover .del,.bookcard:focus-within .del{opacity:1}.reader{flex:1;display:flex;flex-direction:column;min-height:0}.reader[hidden]{display:none}.topbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:calc(8px + var(--safe-t)) 12px 8px}.topbar .title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}.topbar .title .t{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .title .a{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;padding:2px 8px}#book{touch-action:pan-y}.hint{position:absolute;bottom:6px;left:50%;transform:translate(-50%);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);pointer-events:none;opacity:0;transition:opacity .5s;white-space:nowrap}.hint.show{opacity:.8}.pg{background:#fbf6ec;color:#221c14;overflow:hidden}.pg-body{height:100%;width:100%;padding:var(--pg-pad,26px);font-family:var(--font-read);font-size:var(--pg-fs,18px);line-height:1.5;overflow:hidden;overflow-wrap:break-word;word-break:break-word;hyphens:auto}.pg-body>*:first-child{margin-top:0}.pg-body p{margin:0 0 .7em;text-align:justify;text-indent:1.3em}.pg-body p.noindent,.pg-body p:first-child{text-indent:0}.pg-body h1,.pg-body h2,.pg-body h3{font-family:var(--font-ui);line-height:1.25;text-wrap:balance;margin:.2em 0 .5em}.pg-body h1{font-size:1.5em}.pg-body h2{font-size:1.3em}.pg-body h3{font-size:1.12em}.pg-body img{max-width:100%;max-height:100%;display:block;margin:.4em auto;object-fit:contain}.pg-body blockquote{margin:.5em 0;padding-left:.9em;border-left:2px solid rgba(0,0,0,.2);font-style:italic}.pg-body hr{border:none;text-align:center;margin:1em 0}.pg-body hr:before{content:"※";color:#0006}.pg-body em,.pg-body i{font-style:italic}.pg-body .center{text-align:center;text-indent:0}.pg-num{position:absolute;left:0;right:0;bottom:8px;text-align:center;font-family:var(--font-ui);font-size:11px;color:#0006}.pg img.full{width:100%;height:100%;object-fit:contain}.stage[data-paper=sepia] .pg{background:#f2e4c9;color:#4a3a25}.stage[data-paper=sepia] .pg-num{color:#4a3a2580}.stage[data-paper=dark] .pg{background:#211d18;color:#d8cdbb}.stage[data-paper=dark] .pg-body blockquote{border-left-color:#ffffff38}.stage[data-paper=dark] .pg-body hr:before{color:#fff6}.stage[data-paper=dark] .pg-num{color:#d8cdbb66}.controls{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;padding:8px 14px calc(10px + var(--safe-b))}.slider-row{display:flex;align-items:center;gap:12px}.pagebar{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:4px;background:var(--line);outline:none;cursor:pointer}.pagebar::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}.pagebar::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}.counter{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:66px;text-align:center}.counter b{color:var(--ink)}.nav-row{display:flex;align-items:center;justify-content:center;gap:16px}.nav{display:grid;place-items:center;width:54px;height:54px;border-radius:999px;border:1px solid var(--line);background:#ffffff08;color:var(--ink);cursor:pointer;transition:border-color .18s,color .18s,background .18s,opacity .18s}.nav:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:#e4a72e0f}.nav:active:not(:disabled){transform:scale(.94)}.nav:disabled{opacity:.28}.nav svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.scrim{position:fixed;inset:0;background:#00000080;opacity:0;pointer-events:none;transition:opacity .25s;z-index:40}.scrim.open{opacity:1;pointer-events:auto}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--sheet);border-top:1px solid var(--line);border-radius:20px 20px 0 0;padding:10px 20px calc(22px + var(--safe-b));transform:translateY(110%);transition:transform .28s cubic-bezier(.2,.7,.2,1);max-height:86dvh;overflow-y:auto}.sheet.open{transform:translateY(0)}.sheet .grip{width:40px;height:4px;border-radius:4px;background:var(--line);margin:2px auto 14px}.sheet h2{margin:0 0 4px;font-size:16px;font-weight:600}.field{padding:14px 0;border-top:1px solid var(--line)}.field:first-of-type{border-top:none}.field .label{font-size:13px;color:var(--muted);margin-bottom:9px;letter-spacing:.02em}.seg{display:flex;gap:6px;flex-wrap:wrap}.seg button{flex:1;min-width:72px;padding:10px 8px;border-radius:11px;cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--ink);font-size:14px;transition:border-color .15s,background .15s,color .15s}.seg button[aria-pressed=true]{border-color:var(--accent);background:#e4a72e1f;color:var(--accent);font-weight:600}.range{display:flex;align-items:center;gap:12px}.range input[type=range]{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:4px;background:var(--line)}.range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.range input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.range .val{min-width:44px;text-align:right;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.sheet .close{width:100%;margin-top:16px;padding:13px;border-radius:12px;border:none;background:var(--accent);color:#241a05;font-weight:700;font-size:15px;cursor:pointer}.overlay{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#0f0c09eb;backdrop-filter:blur(2px)}.overlay[hidden]{display:none}.overlay .spinner{width:46px;height:46px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.overlay .msg{font-size:15px;color:var(--ink)}.overlay .bar{width:min(280px,70vw);height:5px;border-radius:5px;background:var(--line);overflow:hidden}.overlay .bar>i{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}.overlay .err{color:var(--danger);max-width:40ch;text-align:center;line-height:1.5;font-size:14px}.overlay .retry{padding:10px 20px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer}.toast{position:fixed;left:50%;bottom:calc(20px + var(--safe-b));transform:translate(-50%,20px);background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:11px 18px;border-radius:12px;font-size:14px;z-index:70;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%)}@media(min-width:600px){.topbar{padding-top:calc(12px + var(--safe-t))}.brand h1{font-size:30px}}@media(prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important}}
