:root{--bg: #f5f0e6;--surface: #fffdf8;--surface-2: #efe8db;--ink: #2a2520;--muted: #7d7368;--line: #e2d9c8;--accent: #b4532a;--accent-ink: #fff;--accent-soft: #f3dfd3;--danger: #b3261e;--shadow: 0 1px 2px rgba(60, 40, 20, .08), 0 6px 18px rgba(60, 40, 20, .1);--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #171412;--surface: #221e1a;--surface-2: #2c2723;--ink: #ece5da;--muted: #a39888;--line: #38312b;--accent: #e07a4f;--accent-ink: #1b120c;--accent-soft: #3d2a20;--danger: #f2827a;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 20px rgba(0, 0, 0, .35);color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:16px/1.45 var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 14px;width:100%;outline:none}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.muted{color:var(--muted)}.small{font-size:13px}.grow{flex:1;min-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 16px;font-weight:600;font-size:15px;transition:transform .08s ease,background .15s}.btn:active{transform:scale(.97)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.danger{color:var(--danger)}.btn.wide{width:100%}.btn:disabled{opacity:.55;cursor:default}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:12px;border:0;background:transparent}.icon-btn:hover,.icon-btn.on{background:var(--surface-2)}.icon-btn.small{width:32px;height:32px;border-radius:10px;color:var(--muted)}.link{border:0;background:none;color:var(--accent);font-weight:600;padding:8px}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:14px}.splash{min-height:100vh;display:grid;place-items:center}.splash.inline{min-height:200px}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}.spinner.tiny{width:16px;height:16px;border-width:2px;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.auth-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:32px 24px 20px;box-shadow:var(--shadow)}.auth-card h1{font:600 30px/1.1 var(--serif);margin:0;text-align:center}.auth-card>p{margin:-6px 0 6px;text-align:center}.auth-card label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;color:var(--muted)}.auth-mark{display:flex;gap:5px;justify-content:center;align-items:flex-end;height:44px}.auth-mark span{width:12px;border-radius:3px 3px 1px 1px;background:var(--accent)}.auth-mark span:nth-child(1){height:36px}.auth-mark span:nth-child(2){height:44px;opacity:.7}.auth-mark span:nth-child(3){height:30px;transform:rotate(14deg);transform-origin:bottom left;margin-left:2px;opacity:.85}.form-error{color:var(--danger);margin:0;font-size:14px}.form-ok{color:var(--accent);margin:0;font-size:14px}.library{min-height:100vh}.top{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);padding:calc(var(--safe-top) + 10px) 16px 0;border-bottom:1px solid var(--line)}.top-row,.content{max-width:1120px;margin:0 auto}.top-row{display:flex;align-items:center;gap:8px}.top h1{font:600 30px/1.2 var(--serif);margin:0;flex:1;letter-spacing:-.01em}.top-actions{display:flex;align-items:center;gap:4px}.top .btn.primary{padding:9px 14px;margin-left:4px}.search{display:block;max-width:1120px;margin:10px auto 0}.chips{display:flex;gap:8px;overflow-x:auto;padding:12px 0;max-width:1120px;margin:0 auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;overflow:visible;padding:4px 0 8px}.chip{flex:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 14px;font-size:14px;font-weight:600;white-space:nowrap}.chip .n{color:var(--muted);font-weight:500}.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip.on .n{color:inherit;opacity:.7}.chip.ghost{background:transparent;border-style:dashed;color:var(--muted)}.chip-sep{flex:none;width:1px;background:var(--line);margin:4px 2px}.content{padding:18px 16px calc(var(--safe-bottom) + 40px)}.notice{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--surface-2);border-radius:14px;padding:12px 14px;font-size:14px;color:var(--muted);margin-bottom:16px}.notice.error{color:var(--danger)}.hero{display:flex;gap:18px;align-items:center;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:16px;margin-bottom:26px;box-shadow:var(--shadow)}.hero-cover{width:84px;flex:none;aspect-ratio:2 / 3;border-radius:6px;overflow:hidden;box-shadow:var(--shadow)}.hero-text{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--accent)}.hero-title{font:600 21px/1.2 var(--serif)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:28px 20px}@media (max-width: 520px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 12px}.hide-sm{display:none}.top h1{font-size:26px}}.card{display:flex;flex-direction:column;min-width:0}.card-cover{position:relative;padding:0;border:0;background:var(--surface-2);aspect-ratio:2 / 3;border-radius:6px;overflow:hidden;box-shadow:var(--shadow);transition:transform .15s ease}.card-cover:hover{transform:translateY(-2px)}.card-cover:active{transform:scale(.98)}.cover-img{width:100%;height:100%;object-fit:cover;display:block}.cover-fallback{width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:14% 10%;text-align:left;color:#fff;background:linear-gradient(160deg,hsl(var(--h) 38% 44%),hsl(calc(var(--h) + 30) 42% 28%))}.cf-title{font:600 clamp(12px,3.4vw,17px)/1.15 var(--serif);overflow:hidden;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical}.cf-author{font-size:11px;opacity:.85}.badge{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink)}.fmt{position:absolute;left:6px;bottom:6px;font-size:9px;font-weight:800;letter-spacing:.06em;background:#0000008c;color:#fff;padding:2px 5px;border-radius:4px}.bar{height:3px;border-radius:3px;background:var(--line);margin-top:8px;overflow:hidden}.bar.wide{margin:8px 0 0;max-width:260px}.bar>div{height:100%;background:var(--accent);border-radius:inherit}.card-meta{display:flex;align-items:flex-start;gap:2px;margin-top:8px}.card-text{flex:1;min-width:0;cursor:pointer}.card-title{font-weight:650;font-size:14px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-author{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.card-meta .icon-btn{margin:-6px -8px 0 0;flex:none}.dropzone{width:100%;display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 24px;border:2px dashed var(--line);border-radius:22px;background:transparent;color:var(--ink);text-align:center}.dropzone svg{color:var(--accent)}.dropzone strong{font:600 20px var(--serif)}.empty-small{text-align:center;padding:40px 0}.drag-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 18%,transparent);backdrop-filter:blur(4px);pointer-events:none}.drag-overlay>div{background:var(--surface);border:2px dashed var(--accent);border-radius:24px;padding:36px 48px;text-align:center;color:var(--accent);font-weight:700}.toasts{position:fixed;z-index:40;right:16px;left:16px;bottom:calc(var(--safe-bottom) + 16px);display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}.toast{pointer-events:auto;width:100%;max-width:360px;display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow)}.toast.error{border-color:var(--danger)}.toast.error>svg{color:var(--danger)}.toast-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet-backdrop{position:fixed;inset:0;z-index:60;background:#140e0866;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}.sheet{width:100%;max-width:520px;max-height:86vh;display:flex;flex-direction:column;background:var(--surface);color:var(--ink);border-radius:22px 22px 0 0;padding-bottom:var(--safe-bottom);animation:up .2s ease}@media (min-width: 700px){.sheet-backdrop{align-items:center}.sheet{border-radius:22px}}.sheet-head{display:flex;align-items:center;padding:14px 12px 6px 20px}.sheet-head h2{flex:1;margin:0;font:600 21px var(--serif)}.sheet-body{overflow-y:auto;padding:4px 20px 20px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:12px}.field-label{font-size:13px;font-weight:600;color:var(--muted);margin:10px 0 6px}.sheet-actions{display:flex;flex-direction:column;gap:8px;margin-top:16px}.sheet-actions .btn{justify-content:flex-start}.row{display:flex;gap:8px;align-items:center}.shelf-list{list-style:none;padding:0;margin:12px 0 0}.shelf-list li{display:flex;align-items:center;gap:4px;padding:8px 0;border-bottom:1px solid var(--line);min-height:50px}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(30px);opacity:0}}.reader{position:fixed;inset:0;background:var(--r-bg);color:var(--r-fg);--top: calc(var(--safe-top) + 52px);--bottom: calc(var(--safe-bottom) + 34px);user-select:none;-webkit-user-select:none}.reader .icon-btn:hover{background:color-mix(in srgb,var(--r-fg) 10%,transparent)}.reader-top{position:absolute;z-index:5;top:0;left:0;right:0;height:var(--top);padding:var(--safe-top) 8px 0;display:flex;align-items:center;gap:4px;background:var(--r-bg);border-bottom:1px solid color-mix(in srgb,var(--r-fg) 12%,transparent);transition:opacity .2s,transform .2s}.reader-top.hidden{opacity:0;transform:translateY(-8px);pointer-events:none}.reader-title{flex:1;min-width:0;text-align:center;font:600 15px var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}.reader-stage{position:absolute;top:var(--top);bottom:var(--bottom);left:0;right:0}.epub-host{position:absolute;inset:8px 20px 0}@media (min-width: 900px){.epub-host{left:50%;right:auto;width:min(720px,90vw);transform:translate(-50%)}}.tap-layer{position:absolute;inset:0;z-index:2}.reader-bottom{position:absolute;left:0;right:0;bottom:0;height:var(--bottom);padding-bottom:var(--safe-bottom);display:grid;place-items:center;font-size:12px;opacity:.55;font-variant-numeric:tabular-nums}.reader-loading{position:absolute;inset:0;display:grid;place-items:center}.reader-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;text-align:center}.pdf-box{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.pdf-box.scroll{overflow-y:auto;align-items:flex-start}.pdf-canvas{display:block;box-shadow:0 1px 6px #00000026;background:#fff}.pdf-canvas.theme-dark{filter:invert(.88) hue-rotate(180deg)}.pdf-canvas.theme-sepia{filter:sepia(.35) brightness(.97)}.themes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.theme-swatch{display:flex;flex-direction:column;align-items:center;gap:2px;border:2px solid var(--line);border-radius:14px;padding:12px 6px;font:600 22px var(--serif)}.theme-swatch span{font:500 12px var(--sans);opacity:.8}.theme-swatch.on{border-color:var(--accent)}.stepper{display:flex;align-items:center;gap:12px}.stepper span{flex:1;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}.stepper .btn{min-width:64px}.toc{list-style:none;margin:0 -8px;padding:0}.toc button{width:100%;text-align:left;border:0;background:none;padding:11px 12px;border-radius:10px;font-size:15px}.toc button:hover{background:var(--surface-2)}.password-ack{display:flex!important;flex-direction:row!important;align-items:center;gap:10px;margin:16px 0}.password-ack input{width:auto!important;min-width:20px;min-height:20px}
