:root{--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-pixel:"Courier New", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ink:#2b211a;--ink-soft:#382a2094;--paper:#f8ecd7;--reader-text:#fbf1de}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100dvh;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;background:#efdfc5}button{font-family:inherit}.shelf-page{background-color:#efdfc5;background-image:radial-gradient(120% 80% at 15% 0,#fbf3e2 0%,#fbf3e200 60%),radial-gradient(95% 70% at 96% 16%,#d39b685c 0%,#d39b6800 58%),linear-gradient(160deg,#f3e5cd 0%,#ecd7b4 46%,#e2c8a0 100%);min-height:100dvh;padding:clamp(1.6rem,5vw,4rem) clamp(1.15rem,5vw,3.5rem) 4.5rem;position:relative;overflow-x:hidden}.shelf-page:before{content:"";z-index:0;pointer-events:none;opacity:.16;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");position:fixed;inset:0}.shelf-page:after{content:"";z-index:0;pointer-events:none;opacity:.35;background-image:linear-gradient(#845d3a12 1px,#0000 1px),linear-gradient(90deg,#845d3a12 1px,#0000 1px);background-size:8px 8px;position:fixed;inset:0}.shelf-loading{z-index:1;text-align:center;font-family:var(--font-pixel);letter-spacing:.18em;color:var(--ink-soft);margin-top:30vh;font-size:.78rem;position:relative}.shelf-header{z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem;width:100%;max-width:1180px;margin:0 auto clamp(2rem,5vw,3rem);display:flex;position:relative}.brand h1{font-family:var(--font-pixel);letter-spacing:.32em;text-indent:.32em;margin:0 0 .55rem;font-size:clamp(1.7rem,4vw,2.4rem);font-weight:700}.brand p{letter-spacing:.06em;color:var(--ink-soft);margin:0;font-size:.82rem}.upload-btn{color:var(--paper);font-family:var(--font-pixel);letter-spacing:.14em;cursor:pointer;background:#2b211a;border:0;border-radius:999px;align-items:center;padding:.82rem 1.3rem;font-size:.74rem;transition:transform .22s,box-shadow .22s,opacity .2s;display:inline-flex;box-shadow:0 12px 26px #4a2e1c38}.upload-btn:hover{transform:translateY(-2px);box-shadow:0 16px 32px #4a2e1c47}.upload-btn:active{transform:translateY(0)}.upload-btn:disabled{opacity:.55;cursor:wait}.shelf-error{z-index:1;color:#7d3c2a;background:#fff6e8b8;border:1px solid #8c463238;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:1180px;margin:0 auto 1.6rem;padding:.75rem .95rem .75rem 1.1rem;font-size:.8rem;line-height:1.6;display:flex;position:relative}.error-dismiss{color:#7d3c2a;cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;width:28px;height:28px;font-size:1rem}.error-dismiss:hover{background:#7d3c2a1a}.shelf-empty{z-index:1;text-align:center;background:#fff9ee6b;border:1.5px dashed #5a3e2a42;border-radius:20px;width:100%;max-width:1180px;margin:0 auto;padding:clamp(3rem,9vh,5.5rem) 1.5rem;position:relative}.empty-glyph{font-family:var(--font-pixel);letter-spacing:.25em;color:#78523459;font-size:2.2rem}.shelf-empty h2{letter-spacing:.08em;margin:1.1rem 0 .5rem;font-size:1.05rem;font-weight:600}.shelf-empty p{color:var(--ink-soft);margin:0;font-size:.82rem}.empty-btn{color:var(--ink);font-family:var(--font-pixel);letter-spacing:.16em;cursor:pointer;background:0 0;border:1px solid #3c2a1e52;border-radius:999px;margin-top:1.7rem;padding:.7rem 1.35rem;font-size:.7rem;transition:background .2s,color .2s}.empty-btn:hover{color:var(--paper);background:#2b211a}.empty-note{letter-spacing:.08em;color:#382a2066!important;margin-top:1.1rem!important;font-size:.68rem!important}.book-grid{z-index:1;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:clamp(1.35rem,2.4vw,2rem) clamp(.9rem,1.8vw,1.5rem);width:100%;max-width:1180px;margin:0 auto;display:grid;position:relative}@media (width>=900px){.book-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.book-card{min-width:0;position:relative}.book-open{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:block}.book-cover{aspect-ratio:3/4;border-radius:10px;transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s;position:relative;overflow:hidden;box-shadow:0 16px 28px #52331e2e,inset 0 1px #ffffff38}.book-cover:before{content:"";z-index:2;background:linear-gradient(90deg,#0000004d,#ffffff29 65%,#00000014);width:9px;position:absolute;top:0;bottom:0;left:0}.book-cover:after{content:"";z-index:1;opacity:.5;mix-blend-mode:soft-light;background-image:linear-gradient(#ffffff17 1px,#0000 1px),linear-gradient(90deg,#ffffff17 1px,#0000 1px);background-size:9px 9px;position:absolute;inset:0}.book-open:hover .book-cover,.book-open:focus-visible .book-cover{transform:translateY(-5px)rotate(-.4deg);box-shadow:0 24px 40px #52331e3d}.book-open:focus-visible{outline:none}.book-open:focus-visible .book-cover{outline-offset:4px;outline:2px solid #3c281a73}.cover-glyph{z-index:2;font-family:var(--font-pixel);letter-spacing:.2em;text-indent:.2em;color:#fff9eeb3;text-shadow:0 2px 12px #0000002e;white-space:nowrap;font-size:clamp(1.4rem,3.2vw,2rem);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cover-grid{z-index:1;background-image:linear-gradient(#ffffff14 1px,#0000 1px),linear-gradient(90deg,#ffffff14 1px,#0000 1px);background-size:18px 18px;position:absolute;inset:0}.book-cover-tag{z-index:2;font-family:var(--font-pixel);letter-spacing:.22em;color:#fff9ee73;font-size:.52rem;position:absolute;bottom:10px;left:16px}.book-meta{padding-right:.2rem}.book-title{letter-spacing:.01em;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.8rem 0 .22rem;font-size:.92rem;font-weight:600;line-height:1.38;display:-webkit-box;overflow:hidden}.book-author{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.7rem;overflow:hidden}.book-progress{font-family:var(--font-pixel);letter-spacing:.04em;color:#382a2080;align-items:center;gap:.5rem;margin-top:.55rem;font-size:.6rem;display:flex}.book-progress-bar{background:#3c281921;border-radius:2px;flex:1;height:3px;overflow:hidden}.book-progress-bar>span{background:#ae6742;border-radius:2px;height:100%;transition:width .4s;display:block}.book-progress-text{flex:none}.book-remove{z-index:3;color:#fff8ecd1;cursor:pointer;opacity:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1e140e52;border:1px solid #fff8ec4d;border-radius:50%;place-items:center;width:30px;height:30px;font-size:.95rem;line-height:1;transition:opacity .2s,background .2s;display:grid;position:absolute;top:8px;right:8px}.book-card:hover .book-remove,.book-remove:focus-visible{opacity:1}.book-remove:hover{background:#1e140e8c}@media (hover:none){.book-remove{opacity:.72;width:36px;height:36px}}.shelf-footnote{z-index:1;letter-spacing:.1em;text-align:center;color:#382a2057;width:100%;max-width:1180px;margin:clamp(3rem,7vh,5rem) auto 0;font-size:.66rem;position:relative}.drop-veil,.import-veil{z-index:30;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#2b211a6b;place-items:center;padding:1.5rem;display:grid;position:fixed;inset:0}.drop-veil{pointer-events:none}.drop-card{text-align:center;color:var(--paper);background:#2b211a80;border:1.5px dashed #f8ecd78c;border-radius:18px;padding:2.6rem 3rem}.drop-card p{letter-spacing:.08em;margin:0 0 .6rem;font-size:1rem}.drop-card span{font-family:var(--font-pixel);letter-spacing:.2em;opacity:.6;font-size:.62rem}.import-card{text-align:center;background:#f8eedb;border-radius:18px;min-width:min(78vw,320px);padding:1.7rem 2rem;box-shadow:0 30px 60px #1e140e47}.pixel-dots{justify-content:center;gap:6px;margin-bottom:1.15rem;display:flex}.pixel-dots span{background:#ae6742;width:8px;height:8px;animation:1.1s steps(2,end) infinite pixel-blink}.pixel-dots span:nth-child(2){animation-delay:.2s}.pixel-dots span:nth-child(3){animation-delay:.4s}.import-title{font-family:var(--font-pixel);letter-spacing:.12em;margin:0 0 .4rem;font-size:.8rem}.import-file{max-width:240px;color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin:0 auto .8rem;font-size:.74rem;overflow:hidden}.import-ratio{color:#382a2073;font-family:var(--font-pixel);letter-spacing:.12em;margin:0;font-size:.66rem}.reader-stage{--glass-blur:24px;--glass-radius:18px;--bg-fade:.4s;--color-fade:.3s;--reader-scale:1;color:var(--reader-text);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;transition:color var(--color-fade) ease;background-color:#241a16;background-image:radial-gradient(90% 70% at 22% 16%,#fff6d6e6 0%,#fff6d600 52%),radial-gradient(80% 70% at 84% 78%,#c7784a94 0%,#c7784a00 58%),linear-gradient(160deg,#f4e4c6 0%,#e4c294 52%,#c98f60 100%);background-position:50%;background-size:cover;position:fixed;inset:0;overflow:hidden}.reader-stage:before{content:"";z-index:1;pointer-events:none;opacity:.16;background-image:repeating-linear-gradient(0deg,#00000029 0 1px,#0000 1px 3px);position:absolute;inset:0}.reader-bg{z-index:0;pointer-events:none;background:#2a1d16;position:absolute;inset:0;overflow:hidden}.reader-bg-fallback{background-color:#2a1d16;background-image:radial-gradient(90% 70% at 22% 16%,#fff6d6e6 0%,#fff6d600 52%),radial-gradient(80% 70% at 84% 78%,#c7784a94 0%,#c7784a00 58%),linear-gradient(160deg,#f4e4c6 0%,#e4c294 52%,#c98f60 100%);position:absolute;inset:0}.reader-bg-layer{opacity:0;transition:opacity var(--bg-fade) ease;background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.reader-bg-layer[data-active=true]{opacity:1}.reader-bg-noise{opacity:.12;mix-blend-mode:multiply;background-image:linear-gradient(#3c281a29 1px,#0000 1px),linear-gradient(90deg,#3c281a29 1px,#0000 1px);background-size:8px 8px;position:absolute;inset:0}.reader-scrim{z-index:1;pointer-events:none;background:linear-gradient(#100c094d 0%,#100c0924 34%,#100c0933 68%,#100c0957 100%);position:absolute;inset:0}.reader-top{z-index:4;padding:max(env(safe-area-inset-top,0px), .8rem) clamp(.8rem, 3.5vw, 1.6rem) 0;align-items:center;gap:.35rem;display:flex;position:absolute;top:0;left:0;right:0}.reader-back{width:44px;height:44px;color:var(--reader-ui-soft,#fbf0dc85);cursor:pointer;pointer-events:auto;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;font-size:1.15rem;transition:background .2s,color .2s;display:grid}.reader-back:hover{color:var(--reader-ui-strong,#fff8ea);background:var(--ui-surface,#fbf0dc17)}.reader-book-title{min-width:0;font-family:var(--font-pixel);letter-spacing:.1em;white-space:nowrap;text-overflow:ellipsis;color:var(--reader-ui-soft,#fbf0dc6b);transition:color var(--color-fade) ease;flex:1;font-size:.66rem;overflow:hidden}.reader-progress{font-family:var(--font-pixel);letter-spacing:.08em;color:var(--reader-ui-soft,#fbf0dc80);transition:color var(--color-fade) ease;flex:none;font-size:.66rem}.reader-content{z-index:2;pointer-events:none;flex-direction:column;justify-content:flex-end;align-items:center;padding:clamp(4.5rem,10vh,6rem) clamp(1rem,4vw,2rem) clamp(6.4rem,16vh,8.6rem);display:flex;position:absolute;inset:0}.reader-panel{border:1px solid var(--glass-border,#ffffff26);border-radius:var(--glass-radius,18px);background:var(--glass-bg,#1a130f8c);width:min(100vw - clamp(2rem,8vw,3rem),640px);max-width:100%;box-shadow:var(--glass-shadow,0 24px 60px #0000005c);-webkit-backdrop-filter:blur(var(--glass-blur,24px)) saturate(1.15);backdrop-filter:blur(var(--glass-blur,24px)) saturate(1.15);transition:background var(--color-fade) ease, border-color var(--color-fade) ease, box-shadow var(--color-fade) ease, color var(--color-fade) ease;padding:clamp(1.15rem,3vw,1.9rem) clamp(1.25rem,4vw,2.1rem)}.reader-chapter{font-family:var(--font-pixel);letter-spacing:.22em;color:var(--reader-ui-soft,#fbf0dc6b);transition:color var(--color-fade) ease;margin:0 0 .8rem;font-size:.6rem}.reader-text{color:var(--reader-text);font-size:calc(clamp(1.02rem, 2.4vw, 1.32rem) * var(--reader-scale,1));letter-spacing:.015em;word-break:break-word;text-shadow:var(--reader-text-shadow,0 1px 2px #00000024);transition:color var(--color-fade) ease, text-shadow var(--color-fade) ease;margin:0;line-height:1.95;animation:.34s both chunk-in}.reader-hint{font-family:var(--font-pixel);letter-spacing:.12em;text-align:center;color:var(--reader-ui-soft,#fbf0dc5c);transition:color var(--color-fade) ease;margin:.9rem 0 0;font-size:.6rem}.reader-controls{bottom:max(env(safe-area-inset-bottom,0px), 1.1rem);z-index:4;pointer-events:auto;opacity:.5;align-items:center;gap:.45rem;padding:.25rem;transition:opacity .3s;display:flex;position:absolute;left:50%;transform:translate(-50%)}.reader-controls:hover,.reader-controls:focus-within{opacity:1}@media (hover:none){.reader-controls{opacity:.62}}.reader-btn{border:1px solid var(--ui-border,#fbf0dc29);background:var(--ui-surface,#16100c4d);min-height:44px;color:var(--reader-ui,#fbf0dcb8);font-family:var(--font-pixel);letter-spacing:.12em;cursor:pointer;-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);border-radius:999px;padding:0 1rem;font-size:.66rem;transition:color .2s,background .2s,border-color .2s,opacity .2s}.reader-btn:hover:not(:disabled){border-color:var(--glass-border,#fbf0dc52);background:var(--glass-bg,#fbf0dc21);color:var(--reader-ui-strong,#fff8ea)}.reader-btn:active:not(:disabled){background:#fbf0dc38}.reader-btn:disabled{opacity:.22;cursor:default}.reader-btn.is-active{color:#2a1d17;opacity:1;background:#f3dfbd;border-color:#0000}.reader-top-btn{border:1px solid var(--ui-border,#fbf0dc24);background:var(--ui-surface,#16100c2e);min-height:34px;color:var(--reader-ui-soft,#fbf0dc85);font-family:var(--font-pixel);letter-spacing:.08em;white-space:nowrap;cursor:pointer;opacity:.82;-webkit-backdrop-filter:blur(12px)saturate(1.1);backdrop-filter:blur(12px)saturate(1.1);border-radius:999px;flex:none;padding:0 .66rem;font-size:.6rem;transition:opacity .2s,color .2s,background .2s,border-color .2s}.reader-top-btn:hover,.reader-top-btn:focus-visible{opacity:1;color:var(--reader-ui-strong,#fff8ea);background:var(--glass-bg,#fbf0dc1a)}.reader-top-icon{border:1px solid var(--ui-border,transparent);background:var(--ui-surface,transparent);width:38px;height:38px;color:var(--reader-ui-soft,#fbf0dc70);cursor:pointer;opacity:.78;-webkit-backdrop-filter:blur(12px)saturate(1.1);backdrop-filter:blur(12px)saturate(1.1);border-radius:50%;flex:none;place-items:center;font-size:1.05rem;line-height:1;transition:opacity .2s,color .2s,background .2s,border-color .2s;display:grid}.reader-top-icon:hover,.reader-top-icon:focus-visible{opacity:1;border-color:var(--glass-border,#fbf0dc33);background:var(--glass-bg,#fbf0dc17);color:var(--reader-ui-strong,#fff8ea)}@media (hover:none){.reader-top-btn,.reader-top-icon{opacity:.86}}.reader-overlay{z-index:5;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);background:#0e0a0842;position:fixed;inset:0}.reader-menu{top:calc(max(env(safe-area-inset-top,0px), .8rem) + 52px);z-index:6;-webkit-backdrop-filter:blur(14px)saturate(120%);backdrop-filter:blur(14px)saturate(120%);width:min(88vw,310px);color:var(--reader-text);background:#1c1511d1;border:1px solid #fbf0dc29;border-radius:14px;padding:.95rem 1rem 1.05rem;animation:.18s both menu-in;position:fixed;right:clamp(.6rem,3vw,1.4rem);box-shadow:0 24px 52px #0000006b}.menu-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.menu-title{font-family:var(--font-pixel);letter-spacing:.2em;color:#fbf0dc8f;font-size:.66rem}.menu-close{color:#fbf0dc80;cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:.95rem;display:grid}.menu-close:hover{color:#fff8ea;background:#fbf0dc1a}.menu-caption{font-family:var(--font-pixel);letter-spacing:.14em;color:#fbf0dc5c;margin:.85rem 0 .35rem;font-size:.58rem}.seg-row{gap:.3rem;display:flex}.seg-btn{color:#fbf0dc9e;min-height:34px;font-family:var(--font-pixel);letter-spacing:.06em;cursor:pointer;background:#fbf0dc0a;border:1px solid #fbf0dc24;border-radius:8px;flex:1;padding:0 .4rem;font-size:.6rem;transition:background .18s,color .18s,border-color .18s}.seg-btn:hover{color:#fff8ea;background:#fbf0dc1a}.seg-btn.is-on{color:#2a1d17;background:#f3dfbde6;border-color:#0000}.menu-row{color:#fbf0dcd1;letter-spacing:.04em;cursor:pointer;background:0 0;border:0;border-top:1px solid #fbf0dc17;justify-content:space-between;align-items:center;width:100%;margin-top:.72rem;padding:.58rem .1rem;font-size:.78rem;display:flex}.menu-row:hover{color:#fff8ea}.menu-row:disabled{opacity:.42;cursor:wait}.menu-row-accent{color:#f3dfbde6}.menu-note{font-family:var(--font-pixel);letter-spacing:.08em;color:#fbf0dc66;white-space:nowrap;text-overflow:ellipsis;margin:0 0 .2rem;font-size:.56rem;line-height:1.6;overflow:hidden}.menu-arrow{font-family:var(--font-pixel);color:#fbf0dc5c;font-size:.7rem}.menu-divider{background:#fbf0dc1a;height:1px;margin:.9rem 0 .2rem}.toc-layer{z-index:7;background:#0c09076b;position:fixed;inset:0}.toc-drawer{width:min(86vw,340px);max-width:100%;padding:max(env(safe-area-inset-top,0px), .9rem) 0 max(env(safe-area-inset-bottom,0px), .6rem);-webkit-backdrop-filter:blur(16px)saturate(120%);backdrop-filter:blur(16px)saturate(120%);background:#1a130fe0;border-left:1px solid #fbf0dc21;flex-direction:column;animation:.2s both toc-in;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-18px 0 48px #0006}.toc-head{border-bottom:1px solid #fbf0dc17;justify-content:space-between;align-items:center;gap:.5rem;padding:.3rem .9rem .75rem 1.15rem;display:flex}.toc-list{-webkit-overflow-scrolling:touch;flex:1;padding:.5rem .55rem 1rem;overflow-y:auto}.toc-item{color:#fbf0dcb8;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:baseline;gap:.6rem;width:100%;padding:.6rem .7rem;font-size:.78rem;line-height:1.5;transition:background .18s,color .18s;display:flex}.toc-item:hover{color:#fff8ea;background:#fbf0dc14}.toc-item.is-current{color:#fff8ea;background:#f3dfbd21;box-shadow:inset 2px 0 #f3dfbdb3}.toc-label{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.toc-num{font-family:var(--font-pixel);letter-spacing:.08em;color:#fbf0dc52;flex:none;font-size:.56rem}.toc-empty{text-align:center;color:#fbf0dc6b;margin:1.4rem 0;font-size:.76rem}@media (width<=720px){.toc-drawer{border-top:1px solid #fbf0dc21;border-left:0;border-radius:16px 16px 0 0;width:auto;max-height:76vh;animation:.2s both toc-up;top:auto;left:0;box-shadow:0 -18px 48px #0000006b}}.reader-scroll{z-index:2;overscroll-behavior:contain;cursor:default;-webkit-user-select:text;user-select:text;scrollbar-width:thin;scrollbar-color:#fbf0dc3d transparent;position:absolute;inset:0;overflow:hidden auto}.reader-scroll::-webkit-scrollbar{width:8px}.reader-scroll::-webkit-scrollbar-thumb{background:#fbf0dc38;border-radius:4px}.scroll-sheet{border:1px solid var(--glass-border,#ffffff26);border-radius:var(--glass-radius,18px);background:var(--glass-bg,#18120e75);width:calc(100% - clamp(1.5rem,5vw,2.8rem));max-width:720px;min-height:100%;box-shadow:var(--glass-shadow,0 0 60px #00000047);-webkit-backdrop-filter:blur(var(--glass-blur,24px)) saturate(1.15);backdrop-filter:blur(var(--glass-blur,24px)) saturate(1.15);transition:background var(--color-fade) ease, border-color var(--color-fade) ease, box-shadow var(--color-fade) ease;margin:0 auto;padding:clamp(4.6rem,9vh,6.2rem) clamp(1.05rem,4vw,2.2rem) 4.5rem}.scroll-chapter{padding-bottom:2.2rem}.scroll-chapter-head{border-bottom:1px solid var(--ui-border,#fbf0dc1a);margin-bottom:1.4rem;padding-bottom:.7rem}.scroll-chapter-kicker{font-family:var(--font-pixel);letter-spacing:.2em;color:var(--reader-ui-soft,#fbf0dc57);margin-bottom:.4rem;font-size:.56rem;display:block}.scroll-chapter-head h2{font-size:calc(clamp(1.02rem, 2.4vw, 1.22rem) * var(--reader-scale,1));letter-spacing:.04em;color:var(--reader-text,#fbf0dce6);transition:color var(--color-fade) ease;margin:0;font-weight:600;line-height:1.5}.scroll-paragraph{color:var(--reader-text);font-size:calc(clamp(.98rem, 2.2vw, 1.16rem) * var(--reader-scale,1));letter-spacing:.012em;word-break:break-word;text-shadow:var(--reader-text-shadow,0 1px 2px #0000001f);transition:color var(--color-fade) ease, text-shadow var(--color-fade) ease;margin:0 0 1.1rem;line-height:1.95}.scroll-end{font-family:var(--font-pixel);letter-spacing:.22em;text-align:center;color:var(--reader-ui-soft,#fbf0dc4d);padding-top:1.2rem;font-size:.6rem}.reader-stage.is-scroll{cursor:default;-webkit-user-select:text;user-select:text}.reader-stage.is-scroll .reader-top{background:linear-gradient(180deg, var(--ui-surface,#120d0ad1) 0%, transparent 100%);padding-bottom:.55rem}.reader-toast{left:50%;bottom:calc(6.4rem + env(safe-area-inset-bottom,0px));z-index:8;color:#f6e9d2;letter-spacing:.02em;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);cursor:default;background:#140f0cdb;border:1px solid #fbf0dc29;border-radius:12px;align-items:center;gap:.6rem;width:max-content;max-width:min(92vw,560px);padding:.72rem .6rem .72rem 1rem;font-size:.74rem;line-height:1.55;animation:.25s both toast-in;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 16px 38px #00000057}.reader-toast-close{color:#fbf0dc80;cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;width:26px;height:26px;font-size:1rem}.reader-toast-close:hover{color:#f6e9d2;background:#fbf0dc1a}.bgm-layer{z-index:9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:default;background:#0c090794;justify-content:center;align-items:center;padding:1rem;animation:.22s both fade-in;display:flex;position:absolute;inset:0}.bgm-panel{color:#f6e9d2;background:#1a130feb;border:1px solid #fbf0dc29;border-radius:16px;flex-direction:column;width:min(560px,100%);max-height:min(86vh,760px);animation:.22s both menu-in;display:flex;box-shadow:0 30px 70px #00000075}.bgm-head{border-bottom:1px dashed #fbf0dc29;justify-content:space-between;align-items:center;gap:1rem;padding:.95rem 1rem .85rem 1.15rem;display:flex}.bgm-title{font-family:var(--font-pixel);letter-spacing:.24em;color:#f6e9d2;font-size:.72rem}.bgm-body{overscroll-behavior:contain;padding:.2rem 1.05rem .8rem;overflow-y:auto}.bgm-section{padding:1rem 0 .45rem}.bgm-section+.bgm-section{border-top:1px dashed #fbf0dc1f}.bgm-section-head{justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:.5rem;display:flex}.bgm-section-title{font-family:var(--font-pixel);letter-spacing:.18em;color:#fbf0dc99;font-size:.62rem}.bgm-btn{color:#f6e9d2;font-family:var(--font-pixel);letter-spacing:.1em;cursor:pointer;background:#fbf0dc14;border:1px solid #fbf0dc33;border-radius:999px;flex:none;padding:.5rem .8rem;font-size:.58rem;transition:background .2s,border-color .2s}.bgm-btn:hover:not(:disabled){background:#fbf0dc29;border-color:#fbf0dc57}.bgm-btn:disabled,.bgm-mini:disabled{opacity:.4;cursor:wait}.bgm-note{color:#fbf0dc6b;margin:0 0 .75rem;font-size:.68rem;line-height:1.65}.bgm-note-warn{color:#e9c99a}.bgm-badge{font-family:var(--font-pixel);letter-spacing:.06em;color:#fbf0dca8;border:1px solid #fbf0dc2e;border-radius:999px;flex:none;padding:.2rem .55rem;font-size:.54rem}.bgm-inline-row{color:#fbf0dc94;border:1px dashed #e9c99a47;border-radius:10px;justify-content:space-between;align-items:center;gap:.7rem;padding:.52rem .7rem;font-size:.68rem;display:flex}.bgm-advanced-toggle{color:#fbf0dc9e;width:100%;font-family:var(--font-pixel);letter-spacing:.08em;cursor:pointer;background:#fbf0dc08;border:1px solid #fbf0dc1f;border-radius:10px;justify-content:space-between;align-items:center;padding:.55rem .7rem;font-size:.6rem;transition:background .2s,border-color .2s;display:flex}.bgm-advanced-toggle:hover{background:#fbf0dc14;border-color:#fbf0dc3d}.bgm-advanced-arrow{color:#fbf0dc66}.bgm-advanced-body{padding-top:.7rem}.menu-note-dim{color:#f6e9d266}.bgm-list{flex-direction:column;gap:.45rem;display:flex}.bgm-folder,.bgm-file{background:#fbf0dc0a;border:1px solid #fbf0dc1a;border-radius:10px;justify-content:space-between;align-items:center;gap:.7rem;padding:.62rem .7rem;display:flex}.bgm-folder-main{flex-direction:column;gap:.22rem;min-width:0;display:flex}.bgm-folder-name,.bgm-file-name{letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;overflow:hidden}.bgm-meta{font-family:var(--font-pixel);letter-spacing:.06em;color:#fbf0dc66;font-size:.55rem}.bgm-actions{flex-wrap:wrap;flex:none;gap:.35rem;display:flex}.bgm-mini{color:#fbf0dcad;font-family:var(--font-pixel);letter-spacing:.06em;cursor:pointer;background:0 0;border:1px solid #fbf0dc29;border-radius:999px;padding:.32rem .55rem;font-size:.54rem}.bgm-mini:hover:not(:disabled){color:#fff8ea;background:#fbf0dc1a}.bgm-mini.is-accent{color:#e9c99a;border-color:#e9c99a80}.bgm-mini.is-danger:hover:not(:disabled){color:#f2b49f;border-color:#e0826880}.bgm-empty{color:#fbf0dc52;margin:.4rem 0 .6rem;font-size:.68rem}.bgm-foot{color:#fbf0dc57;border-top:1px dashed #fbf0dc24;padding:.75rem 1.1rem .9rem;font-size:.62rem;line-height:1.6}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toc-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes toc-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes chunk-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes pixel-blink{0%,44%{opacity:1}45%,to{opacity:.25}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=480px){.reader-panel{width:100%}.reader-controls{gap:.35rem}.reader-btn{padding:0 .8rem;font-size:.62rem}}@media (height<=620px){.reader-content{padding-bottom:5.6rem}.reader-text{font-size:.98rem;line-height:1.75}.reader-panel{padding-top:1rem;padding-bottom:1rem}}
