:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}html,body,#root{height:100%}:root{--bg:#0f1115;--card:#1a1d24;--ink:#e8eaed;--muted:#9aa0aa;--accent:#7c8cff;--accent-ink:#fff;--border:#2a2e38;--scroll-thumb:#ffffff61;--scroll-thumb-hover:#fff9}*{box-sizing:border-box}body{margin:0}.landing{background:radial-gradient(1200px 600px at 50% -10%, #20242e 0%, var(--bg) 60%);min-height:100vh;color:var(--ink);place-items:center;padding:24px;font-family:system-ui,-apple-system,Segoe UI,sans-serif;display:grid}.landing__card{background:var(--card);border:1px solid var(--border);text-align:center;border-radius:18px;width:min(480px,100%);padding:40px 32px;box-shadow:0 24px 60px #0006}.landing__card h1{margin:0 0 8px;font-size:28px}.landing__sub{color:var(--muted);margin:0 0 28px}.dropzone{border:2px dashed var(--border);cursor:pointer;min-height:140px;color:var(--muted);border-radius:14px;place-items:center;transition:border-color .15s,color .15s,background .15s;display:grid}.dropzone:hover{border-color:var(--accent);color:var(--ink);background:#7c8cff0f}.dropzone--busy{cursor:progress;border-color:var(--accent)}.dropzone__progress{align-items:center;gap:12px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.landing__error{color:#ff7b7b;margin:16px 0 0;font-size:14px}.landing__card--message{place-items:center;gap:10px;display:grid}.landing__card--message h1{font-size:22px}.landing__card--message p{color:var(--muted);margin:0}.spinner--inline{vertical-align:middle;width:14px;height:14px;display:inline-block}.reader{height:100vh;color:var(--ink);-webkit-user-select:none;user-select:none;background:#14161b;grid-template-rows:1fr;justify-items:center;font-family:system-ui,-apple-system,Segoe UI,sans-serif;display:grid;overflow:hidden}.flipbook-wrap{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:min(96vw,2600px);height:100%;min-height:0;padding:10px 0;display:flex}.flipbook-wrap--fullscreen{background:#14161b;justify-content:center;width:100vw;height:100vh;margin:0;padding:16px}.flipbook-main{flex:1;align-items:stretch;gap:12px;width:100%;min-height:0;display:flex}.flipbook-shell{touch-action:none;flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}.flipbook-frame{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.flipbook{touch-action:none;width:100%;height:100%;position:relative;overflow:hidden}.flipbook .stf__parent{box-sizing:border-box;touch-action:none;display:block;position:relative}.flipbook .stf__wrapper{box-sizing:border-box;width:100%;height:100%;position:relative}.flipbook .stf__parent canvas{width:100%;height:100%;position:absolute;top:0;left:0}.flipbook .stf__block{box-sizing:border-box;perspective:2000px;width:100%;height:100%;position:absolute}.flipbook .stf__item{transform-style:preserve-3d;display:none;position:absolute}.flipbook .stf__outerShadow,.flipbook .stf__innerShadow,.flipbook .stf__hardShadow,.flipbook .stf__hardInnerShadow{position:absolute;top:0;left:0}.flipbook-page{background:#fff;width:100%;height:100%;overflow:hidden}.flipbook-page img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.flipbook-nav{z-index:8;border:1px solid var(--border);width:32px;height:32px;color:var(--ink);cursor:pointer;opacity:.7;background:#1a1d24b3;border-radius:50%;place-items:center;font-size:16px;line-height:1;transition:opacity .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.flipbook-nav:hover:not(:disabled){opacity:1;border-color:var(--accent);color:var(--accent)}.flipbook-nav:disabled{opacity:.25;cursor:default}.flipbook-nav--prev{left:-6px}.flipbook-nav--next{right:-6px}.toc-panel{border:1px solid var(--border);background:#1a1d24b3;border-radius:10px;flex-direction:column;flex:0 0 240px;min-height:0;display:flex;overflow:hidden}.toc-panel__header{border-bottom:1px solid var(--border);color:var(--ink);justify-content:space-between;align-items:center;padding:10px 8px 10px 14px;font-size:12px;font-weight:600;display:flex}.toc-panel__header button{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 8px;font-size:18px;line-height:1}.toc-panel__header button:hover{color:var(--ink)}.toc-panel__scroller{flex:1;gap:4px;min-height:0;padding-right:6px;display:flex}.toc-panel__list{scrollbar-width:none;-ms-overflow-style:none;flex:1;min-width:0;margin:0;padding:6px;list-style:none;overflow-y:auto}.toc-panel__list::-webkit-scrollbar{display:none}.toc-scrollbar{cursor:pointer;touch-action:none;background:#ffffff14;border-radius:999px;flex-shrink:0;width:10px;margin:6px 0;position:relative}.toc-scrollbar__thumb{background:var(--scroll-thumb);pointer-events:none;border-radius:999px;min-height:24px;position:absolute;left:2px;right:2px}.toc-scrollbar:hover .toc-scrollbar__thumb{background:var(--scroll-thumb-hover)}.toc-panel__list button{width:100%;color:var(--muted);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:baseline;gap:8px;padding:7px 9px;font-size:12px;display:flex}.toc-panel__list button:hover{color:var(--ink);background:#21252e}.toc-panel__list button[data-active=true]{color:var(--accent)}.toc-panel__title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.toc-panel__page{font-variant-numeric:tabular-nums;opacity:.7;flex-shrink:0}.flipbook-bar{flex-direction:column;flex-shrink:0;align-items:center;gap:6px;width:100%;display:flex}.thumb-scroller{flex-direction:column;gap:4px;width:100%;display:flex}.thumb-scroller__row{align-items:center;gap:4px;min-width:0;display:flex}.thumb-scroller__arrow{border:1px solid var(--border);width:22px;height:44px;color:var(--ink);cursor:pointer;opacity:.7;background:#1a1d24b3;border-radius:6px;flex-shrink:0;place-items:center;font-size:16px;line-height:1;transition:opacity .15s,border-color .15s,color .15s;display:grid}.thumb-scroller__arrow:hover{opacity:1;border-color:var(--accent);color:var(--accent)}.thumb-strip{box-sizing:border-box;cursor:grab;touch-action:pan-x pinch-zoom;flex:1;align-items:flex-start;gap:6px;min-width:0;height:70px;padding:2px 4px;display:flex;overflow:auto hidden}.thumb-strip:active{cursor:grabbing}.thumb-strip{scrollbar-width:none;-ms-overflow-style:none}.thumb-strip::-webkit-scrollbar{display:none}.thumb-scrollbar{cursor:pointer;touch-action:none;background:#ffffff14;border-radius:999px;flex-shrink:0;height:10px;margin:0 26px;position:relative}.thumb-scrollbar__thumb{background:var(--scroll-thumb);pointer-events:none;border-radius:999px;min-width:24px;position:absolute;top:2px;bottom:2px}.thumb-scrollbar:hover .thumb-scrollbar__thumb{background:var(--scroll-thumb-hover)}.thumb-strip__item{box-sizing:content-box;cursor:pointer;opacity:.55;background:0 0;border:2px solid #0000;border-radius:4px;flex:0 0 44px;width:44px;padding:0;line-height:0;transition:opacity .15s,border-color .15s}.thumb-strip__item:hover{opacity:1}.thumb-strip__item[data-active=true]{border-color:var(--accent);opacity:1}.thumb-strip__item img{object-fit:cover;pointer-events:none;background:#21252e;border-radius:2px;width:44px;height:58px;display:block}.flipbook-toolbar{border:1px solid var(--border);box-sizing:border-box;background:#1a1d24b3;border-radius:999px;flex-wrap:wrap;flex-shrink:0;justify-content:center;align-items:center;gap:6px;max-width:100%;padding:4px 6px 4px 12px;display:flex}.flipbook-toolbar>*{white-space:nowrap}.flipbook-toolbar__count{color:var(--muted);font-size:11px}.flipbook-toolbar__btn{color:var(--ink);cursor:pointer;background:#21252e;border:none;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:500}.flipbook-toolbar__btn:hover{color:var(--accent)}.flipbook-toolbar__btn[data-active=true]{background:var(--accent);color:var(--accent-ink)}.flipbook-toolbar__btn:disabled{opacity:.35;cursor:default}.flipbook-toolbar__btn:disabled:hover{color:var(--ink)}.flipbook-toolbar__zoom{align-items:center;gap:2px;display:inline-flex}.flipbook-toolbar__btn--icon{padding:4px 8px;font-size:13px;line-height:1}.flipbook__watermark{z-index:5;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.05;color:#000;white-space:nowrap;flex-wrap:wrap;place-content:center;gap:70px 50px;font:600 20px system-ui,sans-serif;display:flex;position:absolute;inset:0;overflow:hidden;transform:rotate(-30deg)scale(1.6)}.admin-shell{background:var(--bg);min-height:100vh;color:var(--ink);padding:32px 20px 64px;font-family:system-ui,-apple-system,Segoe UI,sans-serif}.admin-shell__inner{place-items:center;gap:24px;width:min(760px,100%);margin:0 auto;display:grid}.admin-shell__inner>*{width:100%}.admin__notice{background:var(--card);border:1px solid var(--border);color:var(--muted);border-radius:12px;padding:16px;line-height:1.6}.admin__notice code,.admin__login code{color:var(--accent);background:#000;border-radius:5px;padding:1px 6px}.admin__login{text-align:center;gap:12px;width:min(360px,100%);margin:8vh auto 0;display:grid}.admin__login h1{margin-bottom:4px}.admin__sub{color:var(--muted);margin:0 0 8px}.admin__header{justify-content:space-between;align-items:center;display:flex}.admin__signout{border:1px solid var(--border);color:var(--ink);cursor:pointer;background:0 0;border-radius:9px;padding:7px 14px}.admin__error{color:#ff7b7b;margin:4px 0 0;font-size:14px}.admin__empty,.reviewer-panel__empty{color:var(--muted);font-size:14px}.admin input,.admin-shell input{border:1px solid var(--border);color:var(--ink);background:#0c0e12;border-radius:9px;width:100%;padding:11px 12px;font-size:15px}.admin input:focus,.admin-shell input:focus{border-color:var(--accent);outline:none}.admin button,.admin-shell button{background:var(--accent);color:var(--accent-ink);cursor:pointer;border:none;border-radius:9px;padding:10px 16px;font-size:14px;font-weight:600}.admin button:disabled,.admin-shell button:disabled{opacity:.45;cursor:default}.admin button.danger{color:#ff9b9b;background:0 0;border:1px solid #5b2330}.upload-card{background:var(--card);border:1px solid var(--border);border-radius:14px;gap:12px;padding:20px;display:grid}.upload-card h2{margin:0;font-size:17px}.upload-card__status{color:var(--muted);align-items:center;gap:8px;margin:0;font-size:14px;display:flex}.upload-card__field{gap:6px;display:grid}.upload-card__field>span{color:var(--muted);font-size:13px}.admin__books h2{margin:0 0 12px;font-size:17px}.book-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.book-row{background:var(--card);border:1px solid var(--border);border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px 16px;padding:14px 16px;display:grid}.book-row__thumb{border:1px solid var(--border);width:44px;height:58px;color:var(--muted);background:#0c0e12;border-radius:6px;flex-shrink:0;place-items:center;display:grid;overflow:hidden}.book-row__thumb img{object-fit:cover;width:100%;height:100%;display:block}.book-row__main{flex-direction:column;gap:2px;min-width:0;display:flex}.book-row__title{font-weight:600}.book-row__meta{color:var(--muted);font-size:13px}.book-row__actions{gap:8px;display:flex}.book-row__actions button{color:var(--ink);background:#21252e;font-weight:500}.book-row__actions button.danger{background:0 0}.reviewer-panel{border-top:1px solid var(--border);grid-column:1/-1;gap:12px;margin-top:6px;padding-top:14px;display:grid}.reviewer-panel__add{gap:8px;display:flex}.reviewer-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.reviewer-row{border:1px solid var(--border);background:#0c0e12;border-radius:9px;grid-template-columns:130px 1fr auto;align-items:center;gap:10px;padding:8px 12px;display:grid}.reviewer-row__name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.reviewer-row__link{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.reviewer-row__actions{align-items:center;gap:6px;display:flex}.reviewer-row__actions button,.reviewer-row__actions a{color:var(--ink);cursor:pointer;background:#21252e;border:none;border-radius:7px;padding:6px 11px;font-size:13px;font-weight:500;text-decoration:none}.reviewer-row__actions a{align-items:center;display:inline-flex}.reviewer-row__actions button.danger{background:0 0}@media (width<=620px){.reviewer-row{grid-template-columns:1fr;gap:6px}.book-row{grid-template-columns:auto 1fr}.book-row__actions{grid-column:1/-1}}
