.auth-page,.auth-loading{background:radial-gradient(circle at 14% 8%,#e0bc8f33,#0000 34%),#f4f0e8;place-items:center;min-height:100svh;padding:24px;display:grid}.auth-card{background:#fffdf8e0;border:1px solid #4b3d3424;border-radius:28px;width:min(100%,440px);padding:clamp(28px,7vw,48px);box-shadow:0 28px 70px #4130241a}.auth-eyebrow{color:#9b6c4c;letter-spacing:.16em;margin:0 0 14px;font:700 11px/1.3 ui-sans-serif,system-ui,sans-serif}.auth-card h1{color:#332920;margin:0;font-size:clamp(34px,9vw,48px);font-weight:500}.auth-intro{color:#75695f;margin:14px 0 30px;line-height:1.7}.auth-card form{gap:10px;display:grid}.auth-card label{color:#5c5047;margin-top:8px;font:650 13px/1.3 ui-sans-serif,system-ui,sans-serif}.auth-card input{color:#332920;background:#fffefa;border:1px solid #d8cec2;border-radius:12px;width:100%;min-height:48px;padding:0 14px;font:16px/1.2 ui-sans-serif,system-ui,sans-serif}.auth-card input:focus{border-color:#9b6c4c;outline:3px solid #9b6c4c24}.password-field{position:relative}.password-field input{padding-right:68px}.password-toggle{color:#8b6247;background:0 0;border:0;min-height:38px;position:absolute;top:5px;right:6px}.auth-submit{color:#fffdf8;background:#4d392d;border:0;border-radius:999px;min-height:50px;margin-top:14px;font:700 15px/1 ui-sans-serif,system-ui,sans-serif}.auth-submit:disabled,.sign-out:disabled{cursor:wait;opacity:.6}.auth-mode{color:#8b6247;background:0 0;border:0;width:100%;margin-top:18px;font:650 14px/1.4 ui-sans-serif,system-ui,sans-serif}.auth-message,.auth-global-error{border-radius:10px;margin:8px 0 0;padding:10px 12px;font:14px/1.5 ui-sans-serif,system-ui,sans-serif}.auth-error,.auth-global-error{color:#8a382f;background:#f9e8e3}.auth-notice{color:#47603d;background:#edf2e7}.authenticated-app{min-height:100svh}.sign-out{z-index:30;top:max(14px, env(safe-area-inset-top));color:#5b493d;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8e0;border:1px solid #4a3a3029;border-radius:999px;min-height:38px;padding:0 15px;position:fixed;right:16px}:root{color:#352e29;font-synthesis:none;background:#f4f0e8;font-family:ui-serif,Georgia,Songti SC,Noto Serif SC,serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100vh}button,input,textarea{font:inherit}button{cursor:pointer}.shelf-page{min-height:100svh;padding:max(56px, env(safe-area-inset-top)) clamp(20px, 5vw, 72px) 80px;background:radial-gradient(circle at 78% 0,#bba1842e,#0000 28%),linear-gradient(150deg,#f7f4ee,#eee8dd)}.shelf-header{justify-content:space-between;align-items:end;gap:24px;width:min(1120px,100%);margin:0 auto 48px;display:flex}.eyebrow{color:#9c6c49;letter-spacing:.2em;margin:0 0 10px;font:700 11px/1.4 ui-sans-serif,system-ui,sans-serif}.shelf-header h1{letter-spacing:-.04em;margin:0;font-size:clamp(48px,9vw,86px);font-weight:500}.shelf-subtitle{color:#71665d;margin:12px 0 0;line-height:1.6}.primary-button{color:#fffaf3;background:#4c392f;border:0;border-radius:999px;min-height:48px;padding:0 22px;font:700 14px/1 ui-sans-serif,system-ui,sans-serif;box-shadow:0 12px 24px #49312324}.book-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:clamp(24px,4vw,44px);width:min(1120px,100%);margin:0 auto;display:grid}.book-card{position:relative}.book-cover{aspect-ratio:3/4.25;color:#40342d;text-align:left;border:1px solid #412f261f;border-radius:6px 20px 20px 6px;flex-direction:column;justify-content:space-between;align-items:flex-start;width:100%;padding:20px;transition:transform .18s,box-shadow .18s;display:flex;overflow:hidden;box-shadow:0 22px 36px #48372c21,inset 5px 0 #ffffff59}.book-cover:hover{transform:translateY(-5px);box-shadow:0 28px 44px #48372c2b}.book-cover strong{font-size:clamp(20px,3vw,28px);font-weight:550;line-height:1.32}.book-cover small,.book-mark{letter-spacing:.08em;opacity:.62;font:650 11px/1.5 ui-sans-serif,system-ui,sans-serif}.cover-0{background:linear-gradient(145deg,#d8d8e7,#f2f0eb)}.cover-1{background:linear-gradient(145deg,#e6ced3,#f4ece8)}.cover-2{background:linear-gradient(145deg,#c9dde0,#edf1ed)}.cover-3{background:linear-gradient(145deg,#d5dfca,#f0efe6)}.cover-4{background:linear-gradient(145deg,#ead9bd,#f5ede2)}.cover-5{background:linear-gradient(145deg,#d7cee5,#f1edf1)}.delete-book{color:#8c7464;background:0 0;border:0;margin:10px 0 0 4px;font-size:12px}.empty-state{color:#80756c;text-align:center;width:min(560px,100%);margin:15vh auto 0;line-height:1.7}.empty-state span{color:#ad8061;font-size:32px}.empty-state h2{color:#433930;margin-bottom:4px;font-weight:500}.app-message{border-radius:12px;width:min(720px,100%);margin:0 auto 24px;padding:12px 16px}.error-message{color:#853b34;background:#f4dfdb}.modal-backdrop,.drawer-backdrop{z-index:60;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#31282261;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.import-modal{background:#fffdf8;border-radius:26px;width:min(460px,100%);padding:36px;position:relative;box-shadow:0 32px 90px #2b1f183d}.import-modal h2{margin:0 0 24px;font-size:34px;font-weight:500}.import-modal form{gap:12px;display:grid}.import-modal label{color:#60544c;font:650 13px/1.4 ui-sans-serif,system-ui,sans-serif}.import-modal input:not([type=file]),.comment-form textarea{color:#3e342d;background:#fffefa;border:1px solid #d9cec2;border-radius:12px;width:100%;padding:13px 14px}.file-picker{text-align:center;background:#faf6ef;border:1px dashed #bfa995;border-radius:14px;place-items:center;min-height:62px;padding:12px;display:grid}.file-picker input{opacity:0;block-size:1px;inline-size:1px;position:absolute}.full-button{width:100%;margin-top:10px}.modal-close{color:#76675d;background:0 0;border:0;width:36px;height:36px;font-size:26px;position:absolute;top:14px;right:16px}.import-progress{color:#8a6247;font:13px/1.4 ui-sans-serif,system-ui,sans-serif}.reader-page{background:#ece7de;min-height:100svh;padding:74px 20px 76px}.reader-header{z-index:30;min-height:60px;padding:max(8px, env(safe-area-inset-top)) 18px 8px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f4f0e8e6;border-bottom:1px solid #4b3a2f1a;grid-template-columns:100px 1fr 140px;align-items:center;display:grid;position:fixed;top:0;left:0;right:0}.reader-header button,.reader-footer button,.reader-actions button{color:#58493f;background:0 0;border:0;font:650 13px/1 ui-sans-serif,system-ui,sans-serif}.reader-header>div:nth-child(2){flex-direction:column;align-items:center;min-width:0;display:flex}.reader-header strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:15px;overflow:hidden}.reader-header span{color:#88796e;margin-top:3px;font:11px/1.2 ui-sans-serif,system-ui,sans-serif}.reader-actions{justify-content:flex-end;gap:4px;display:flex}.reader-layout{grid-template-columns:minmax(0,760px) 280px;align-items:start;gap:24px;width:min(1140px,100%);margin:0 auto;display:grid}.reader-surface{background:#fffcf5;border:1px solid #46342a17;border-radius:4px 18px 18px 4px;min-height:calc(100svh - 166px);padding:clamp(28px,6vw,64px);box-shadow:0 20px 50px #3e2e251f}.reader-paragraph{grid-template-columns:1fr 30px;gap:8px;display:grid;position:relative}.reader-paragraph p{text-align:justify;overflow-wrap:anywhere;margin:0 0 1.12em;font-size:clamp(17px,2.1vw,21px);line-height:1.9}.reader-paragraph>button{color:#0000;background:0 0;border:0;border-radius:50%;width:28px;height:28px}.reader-paragraph:hover>button,.reader-paragraph>button:focus{color:#8c6248;background:#efe4d5}.reader-image{border-radius:8px;max-width:100%;max-height:60svh;margin:18px auto;display:block}.image-loading{color:#98887d;font-style:italic}.comments-panel{background:#fffcf5b3;border-radius:18px;max-height:calc(100svh - 170px);padding:20px;position:sticky;top:82px;overflow:auto}.comments-panel h2{margin:0 0 18px;font-size:18px;font-weight:550}.comments-empty{color:#92847a;font-size:13px}.comment-thread{border-top:1px solid #ded3c8;padding:12px 0}.comment-thread p{margin:0 0 8px;line-height:1.55}.comment-thread button,.comment-form button{color:#906649;background:0 0;border:0;font:650 12px/1.3 ui-sans-serif,system-ui,sans-serif}.comment-reply{background:#f6f0e7;border-left:2px solid #d9c5b5;margin:10px 0 0 16px;padding:10px}.comment-form{gap:8px;margin-top:16px;display:grid}.comment-form label{color:#77675c;font-size:12px}.comment-form div{justify-content:flex-end;gap:8px;display:flex}.reader-footer{z-index:30;min-height:58px;padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f4f0e8eb;grid-template-columns:90px minmax(100px,420px) 90px;justify-content:center;align-items:center;display:grid;position:fixed;bottom:0;left:0;right:0}.page-track{background:#d9d0c6;border-radius:99px;height:3px;overflow:hidden}.page-track span{background:#91674c;height:100%;transition:width .18s;display:block}.drawer-backdrop{place-items:stretch start;padding:0}.toc-drawer{width:min(390px,88vw);height:100%;padding:max(24px, env(safe-area-inset-top)) 20px 30px;background:#fffaf2;overflow:auto;box-shadow:20px 0 60px #2e211a3d}.toc-drawer header{justify-content:space-between;align-items:center;display:flex}.toc-drawer h2{font-size:30px;font-weight:500}.toc-drawer header button{background:0 0;border:0;font-size:28px}.toc-drawer nav{display:grid}.toc-drawer nav button{color:#433830;text-align:left;background:0 0;border:0;border-bottom:1px solid #e8ded2;justify-content:space-between;gap:20px;padding:15px 2px;display:flex}.toc-drawer small,.drawer-empty{color:#8b7c70}.reader-loading{text-align:center;background:#f4f0e8;place-content:center;gap:16px;min-height:100svh;padding:24px;display:grid}@media (width<=760px){.shelf-page{padding-inline:18px}.shelf-header{flex-direction:column;align-items:flex-start;margin-bottom:34px}.book-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px}.book-cover{border-radius:4px 14px 14px 4px;padding:15px}.reader-page{padding:62px 0 68px}.reader-header{grid-template-columns:54px minmax(0,1fr) 108px;padding-inline:6px}.reader-layout{display:block}.reader-surface{min-height:calc(100svh - 130px);box-shadow:none;border:0;border-radius:0;padding:28px 20px 42px}.reader-paragraph{grid-template-columns:1fr 22px}.reader-paragraph p{font-size:18px;line-height:1.85}.reader-paragraph>button{color:#b79b86}.comments-panel{border-top:1px solid #ded3c8;border-radius:0;max-height:none;margin:0;position:static}.reader-footer{grid-template-columns:70px minmax(100px,1fr) 70px;padding-inline:6px}.import-modal{padding:30px 22px}}
