:root{--background:#f7faf9;--ink:#273c45;--muted:#6a7e86;--accent:#416e67;--line:#d5e3e1;--panel:#fff;--font-size:20px;--line-height:1.85;--prose: "Songti SC","Noto Serif CJK SC","SimSun",serif;color-scheme:light}
*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--ink);font-family:system-ui,-apple-system,"PingFang SC",sans-serif}body[data-theme=paper]{--background:#e9eee1;--panel:#f4f6ec;--ink:#334332}body[data-theme=dark]{--background:#192326;--panel:#253236;--ink:#d1dcda;--muted:#9eafaf;--line:#405458;color-scheme:dark}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:10px 14px;cursor:pointer;min-height:44px}button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}input,select{background:var(--panel);border:1px solid var(--line);padding:10px;border-radius:6px;min-width:0}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}[hidden]{display:none!important}
.shelf{max-width:800px;margin:auto;padding:40px 22px}.shelf-header{margin:20px 0 36px}.imprint{font-size:11px;letter-spacing:.15em;color:var(--accent);font-weight:650}h1{font:600 30px/1.4 var(--prose);margin:18px 0 12px}p{line-height:1.7}.shelf-header p,.login p{color:var(--muted)}#books{display:grid;gap:18px}.book{display:grid;grid-template-columns:60px 1fr;gap:18px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:22px}.book-spine{writing-mode:vertical-rl;letter-spacing:.15em;background:var(--accent);color:#fff;border-radius:2px 6px 6px 2px;padding:12px 16px;font-family:var(--prose);max-height:180px;overflow:hidden}.book h2{font:600 23px/1.4 var(--prose);margin:0 0 8px}.book p{margin:10px 0;white-space:pre-wrap;font-size:14px;color:var(--muted);max-height:120px;overflow:auto}.book small{color:var(--muted);display:block;margin-bottom:15px}.login{min-height:100dvh;display:grid;place-items:center;padding:24px}.login form{width:min(100%,380px)}.login label{display:grid;gap:8px;margin:20px 0}.login button[type=submit]{width:100%;color:#fff;background:var(--accent)}
.reader{position:fixed;inset:0;max-width:760px;margin:auto;padding:calc(12px + env(safe-area-inset-top)) 22px calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-rows:32px minmax(0,1fr) 28px;gap:12px;height:100dvh}.reader-heading,.reader-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted)}.reader-heading span,.reader-footer span:first-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.reader-heading button{font-size:11px;padding:3px 8px;min-height:28px;white-space:nowrap}.reader-footer span:last-child{white-space:nowrap}.page-viewport{position:relative;overflow:hidden;outline:none;touch-action:pan-y;overscroll-behavior:none}.pages{height:100%;column-fill:auto;column-gap:36px;column-width:calc(100vw - 44px);font:var(--font-size)/var(--line-height) var(--prose);text-align:justify;overflow-wrap:anywhere;will-change:transform}.pages p{margin:0;text-indent:2em;white-space:pre-wrap;line-height:inherit}.pages h2{font-size:1.15em;margin:0 0 1em;line-height:1.7;break-after:avoid}.reading-menu{position:absolute;left:0;right:0;bottom:0;padding:20px 22px calc(22px + env(safe-area-inset-bottom));background:var(--panel);box-shadow:0 -12px 50px #0002;border-top:1px solid var(--line);z-index:2}.reading-menu nav,.chapter-navigation{display:flex;justify-content:space-between;gap:10px}.reading-controls{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:24px 0}.reading-controls label{display:grid;gap:8px;font-size:14px}.reading-controls input[type=range]{width:100%;padding:0;accent-color:var(--accent)}.reading-menu small{display:block;margin:20px 0 0;color:var(--muted);line-height:1.7}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:12px;width:min(92vw,600px);max-height:85dvh;padding:20px}dialog::backdrop{background:#172a3b66}dialog header,dialog nav{display:flex;justify-content:space-between;align-items:center;gap:10px}dialog h2{font-size:20px;margin:0}#toc-search{width:100%;margin:18px 0}#toc-list{max-height:55dvh;overflow:auto;display:grid;gap:4px}#toc-list button{text-align:left;border:0;background:transparent}#toc-list button.current{background:var(--line)}dialog nav{margin-top:16px;font-size:13px}.message{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);width:max-content;max-width:90vw;margin:0;padding:12px 18px;background:var(--ink);color:var(--background);border-radius:8px;z-index:5;font-size:14px;box-shadow:0 4px 16px #0002}
.page-preview{position:absolute;inset:0;overflow:hidden;background:var(--background);pointer-events:none;will-change:transform}.page-viewport.dragging{user-select:none;-webkit-user-select:none;cursor:grabbing}.page-viewport[aria-busy=true]{cursor:progress}.pages,.page-preview{backface-visibility:hidden}
@media(min-width:650px){.reader{padding-left:48px;padding-right:48px}.book{grid-template-columns:60px 1fr}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
