@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f5efe6;--paper-deep:#ede5d8;--surface:#fbf8f3;--ink:#37332d;--ink-soft:#6f685e;--muted:#a39b8f;--line:#e4dbcd;--sage:#7f9c8d;--sage-deep:#5f8172;--sage-soft:#dfe8e1;--rose:#c98f88;--rose-soft:#f4e1dd;--lavender-soft:#e4e1f2;--radius:14px;--shadow-book:0 1px 2px #37332d14, 0 8px 20px -8px #37332d40;--shadow-lift:0 2px 4px #37332d14, 0 18px 32px -12px #37332d52;--font-ui:"Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Fraunces Variable", "Iowan Old Style", Georgia, serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer}svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}:focus-visible{outline:2px solid var(--sage);outline-offset:2px}.notice{text-align:center;max-width:420px;color:var(--ink-soft);font-family:var(--font-display);margin:48px auto;font-size:17px;font-style:italic}.notice-error{color:#8a4b44;background:var(--rose-soft);border-radius:var(--radius);font-style:normal;font-family:var(--font-ui);padding:14px 18px;font-size:14px}.pill{letter-spacing:.06em;border:1px solid #0000;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600;transition:background .15s,border-color .15s}.pill-epub{background:var(--sage-soft);color:#3f5a4c}.pill-pdf{background:var(--rose-soft);color:#7a4842}button.pill:hover{border-color:currentColor}.pill-static{cursor:default}.segmented{background:var(--paper-deep);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--ink-soft);background:0 0;border:0;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;transition:background .15s,color .15s}.segmented button[aria-checked=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #37332d1f}.segmented-icons button{place-items:center;padding:5px 10px;display:grid}.segmented-icons svg{width:20px;height:20px}.library{max-width:1180px;margin:0 auto;padding:40px 32px 80px}.library-header{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:28px;display:flex}.brand{align-items:center;gap:16px;display:flex}.brand-mark{background:var(--sage);border-radius:16px;place-items:center;width:52px;height:52px;display:grid;box-shadow:inset 0 -2px #00000014}.brand-mark svg{width:34px;height:34px;fill:var(--surface);stroke:none}.brand h1{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:34px;font-weight:560;line-height:1.1}.brand p{color:var(--ink-soft);margin:2px 0 0;font-size:14px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.search{background:var(--surface);border:1px solid var(--line);border-radius:999px;align-items:center;gap:8px;min-width:260px;height:40px;padding:0 14px;transition:border-color .15s,box-shadow .15s;display:flex}.search:focus-within{border-color:var(--sage);box-shadow:0 0 0 4px #7f9c8d2e}.search svg{width:17px;height:17px;color:var(--muted);flex:none}.search input{font:inherit;color:var(--ink);background:0 0;border:0;outline:0;width:100%}.search input::placeholder{color:var(--muted)}.shelf{margin-top:40px}.shelf h2{font-family:var(--font-display);color:var(--ink);margin:0 0 20px;font-size:21px;font-weight:500}.grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:36px 28px;display:grid}.card{flex-direction:column;min-width:0;display:flex}.card-cover{background:0 0;border:0;border-radius:4px 8px 8px 4px;padding:0;transition:transform .25s;position:relative}.card-cover:hover{transform:translateY(-4px)}.card-cover:hover .cover{box-shadow:var(--shadow-lift)}.cover{aspect-ratio:2/3;background:var(--paper-deep);box-shadow:var(--shadow-book);border-radius:4px 8px 8px 4px;transition:box-shadow .25s;position:relative;overflow:hidden}.cover:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000001a 0,#ffffff2e 2.5%,#0000000a 5%,#0000 9%);position:absolute;inset:0}.cover img{object-fit:cover;width:100%;height:100%;display:block}.cover-placeholder{text-align:left;flex-direction:column;justify-content:center;gap:12px;height:100%;padding:18px 16px 18px 22px;display:flex}.cover-placeholder-rule{opacity:.5;width:28px;height:2px}.cover-placeholder-title{font-family:var(--font-display);-webkit-line-clamp:6;-webkit-box-orient:vertical;font-size:17px;font-weight:560;line-height:1.2;display:-webkit-box;overflow:hidden}.cover-placeholder-author{opacity:.75;font-size:12px}.card-progress{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#fbf8f3b3;border-radius:99px;height:4px;position:absolute;bottom:8px;left:8px;right:8px;overflow:hidden}.card-progress span{background:var(--sage-deep);border-radius:inherit;height:100%;display:block}.card-body{padding-top:12px}.card-title{font-family:var(--font-display);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:15.5px;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.card-author{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin:3px 0 0;font-size:13px;overflow:hidden}.card-formats{gap:6px;margin-top:10px;display:flex}.account{align-items:center;gap:8px;min-width:0;display:flex}.avatar{background:var(--sage-soft);color:#3f5a4c;border-radius:999px;flex:none;place-items:center;width:30px;height:30px;font-size:13px;font-weight:600;display:grid}.account-email{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:13px;overflow:hidden}.login{place-items:center;min-height:100%;padding:24px 16px;display:grid}.login-card{background:var(--surface);border:1px solid var(--line);width:min(400px,100%);box-shadow:var(--shadow-book);text-align:center;border-radius:20px;flex-direction:column;align-items:center;gap:14px;padding:40px 32px 32px;display:flex}.login-card h1{font-family:var(--font-display);margin:4px 0 0;font-size:32px;font-weight:560}.login-card p{color:var(--ink-soft);margin:0;font-size:14.5px}.login-card .notice{width:100%;max-width:none;margin:4px 0 0}.google-btn{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:999px;align-items:center;gap:10px;margin-top:10px;padding:10px 20px 10px 14px;font-size:14.5px;font-weight:500;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:inline-flex}.google-btn:hover{border-color:var(--muted);box-shadow:0 2px 8px #37332d1f}.google-btn svg{stroke:none;width:20px;height:20px}.reader{background:var(--paper-deep);flex-direction:column;height:100dvh;display:flex;position:relative}.reader-bar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fbf8f3d9;grid-template-columns:1fr minmax(0,2fr) 1fr;align-items:center;gap:16px;padding:10px 16px;display:grid}.reader-lead{justify-self:start;align-items:center;gap:4px;display:flex}.ghost-btn{color:var(--ink-soft);background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:7px 12px 7px 8px;font-size:14px;font-weight:500;display:inline-flex}.ghost-btn:hover{background:var(--paper-deep);color:var(--ink)}.ghost-btn svg{width:18px;height:18px}.icon-btn{width:36px;height:36px;color:var(--ink-soft);background:0 0;border:0;border-radius:999px;place-items:center;transition:background .15s,color .15s;display:grid}.icon-btn:hover{background:var(--paper-deep);color:var(--ink)}.icon-btn[aria-pressed=true]{background:var(--sage-soft);color:#3f5a4c}.icon-btn svg{width:19px;height:19px}.text-btn{color:var(--sage-deep);background:0 0;border:0;border-radius:6px;padding:2px 4px;font-size:12px;font-weight:500}.text-btn:hover{background:var(--sage-soft)}.reader-title{text-align:center;min-width:0;line-height:1.25}.reader-title strong{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:560;display:block;overflow:hidden}.reader-title span{color:var(--ink-soft);font-size:12.5px}.reader-actions{justify-self:end;align-items:center;gap:10px;display:flex}.reader-stage{flex:1;align-items:stretch;min-height:0;display:flex;position:relative}.toc{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:none;width:300px;min-height:0;display:flex}.toc-head{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:14px 10px 10px 18px;display:flex}.toc-head h2{font-family:var(--font-display);flex:1;margin:0;font-size:17px;font-weight:500}.toc-head-actions{gap:2px;display:flex}.toc-close{display:none}.toc-tree,.toc-tree ul{margin:0;padding:0;list-style:none}.toc-tree{overscroll-behavior:contain;flex:1;padding:8px 8px 24px;overflow-y:auto}.toc-row{border-radius:8px;align-items:flex-start;gap:2px;padding-right:8px;display:flex}.toc-row:hover{background:var(--paper)}.toc-row.is-active{background:var(--sage-soft)}.toc-row.is-active .toc-link{color:#3f5a4c;font-weight:560}.toc-twisty{width:24px;height:30px;color:var(--muted);background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.toc-twisty svg{width:14px;height:14px;transition:transform .15s}.toc-twisty.is-open svg{transform:rotate(90deg)}.toc-link{text-align:left;min-width:0;color:var(--ink);background:0 0;border:0;flex:1;padding:6px 0;font-size:13.5px;line-height:1.35}.toc-page{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;padding-top:7px;font-size:12px}.toc-link:disabled{color:var(--muted);cursor:default}.toc-backdrop{display:none}.reader-surface{flex:1;min-width:0;position:relative}.turn{width:56px;color:var(--muted);background:0 0;border:0;flex:none;place-items:center;transition:color .15s,background .15s;display:grid}.turn:hover{color:var(--sage-deep);background:#7f9c8d14}.turn svg{width:26px;height:26px}.pdf-stage,.epub-stage{position:absolute;inset:0}.pdf-stage{place-items:center;display:grid;overflow:hidden}.pdf-stage .notice,.epub-stage .notice{height:fit-content;margin:auto;position:absolute;inset:0}.pdf-spread{justify-content:center;align-items:center;display:flex}.pdf-page{box-shadow:var(--shadow-book);background:#fff;border-radius:3px;display:block}.pdf-page-wrap{flex-direction:column;align-items:center;display:flex}.pdf-page-num,.epub-pagenum{color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:12px}.pdf-page-num{margin-top:8px;line-height:18px}.epub-pagenum{text-align:center;pointer-events:none;position:absolute;bottom:28px;left:0;right:0}.pdf-spread.is-two .pdf-page-wrap:first-child .pdf-page{border-radius:3px 0 0 3px;-webkit-mask-image:linear-gradient(90deg,#000 96%,#000000db);mask-image:linear-gradient(90deg,#000 96%,#000000db)}.pdf-spread.is-two .pdf-page-wrap:last-child .pdf-page{border-radius:0 3px 3px 0;-webkit-mask-image:linear-gradient(270deg,#000 96%,#000000db);mask-image:linear-gradient(270deg,#000 96%,#000000db)}.epub-stage{padding:20px 0}.epub-host{background:var(--surface);max-width:1280px;height:100%;box-shadow:var(--shadow-book);border-radius:6px;margin:0 auto;padding:32px 40px;transition:opacity .3s}.epub-host.is-single{max-width:760px}.epub-host.is-loading{opacity:0}.reader-foot{border-top:1px solid var(--line);background:#fbf8f3d9;padding:8px 20px 12px}.progress{background:var(--line);border-radius:99px;height:3px;overflow:hidden}.progress span{background:var(--sage);border-radius:inherit;height:100%;transition:width .3s;display:block}.reader-foot-row{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:12px;min-height:26px;margin-top:7px;font-size:12.5px;display:flex}.reader-status{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.page-jump{flex:none;align-items:center;gap:6px;display:flex}.page-jump input{border:1px solid var(--line);background:var(--surface);text-align:center;width:52px;height:26px;font:inherit;color:var(--ink);border-radius:8px}.page-jump input:focus{border-color:var(--sage);outline:0}.reader.is-immersive{background:#e9e1d3}.reader.is-immersive .reader-bar,.reader.is-immersive .reader-foot,.reader.is-immersive .toc,.reader.is-immersive .toc-backdrop{display:none}.reader.is-immersive .turn{z-index:3;color:#0000;background:0 0;width:22%;position:absolute;top:0;bottom:0}.reader.is-immersive .turn-prev{justify-items:start;padding-left:12px;left:0}.reader.is-immersive .turn-next{justify-items:end;padding-right:12px;right:0}@media (hover:hover){.reader.is-immersive .turn:hover{color:var(--ink-soft)}}.reader.is-immersive .epub-stage{padding:0}.reader.is-immersive .epub-host{max-width:1600px;box-shadow:none;border-radius:0;padding:24px 40px}.reader.is-immersive .epub-host.is-single{max-width:920px}.reader.is-immersive .epub-pagenum{bottom:10px}.immersive-hud{z-index:4;pointer-events:none;position:absolute;inset:0}.immersive-exit{top:max(10px, env(safe-area-inset-top));right:max(10px, env(safe-area-inset-right));pointer-events:auto;opacity:.55;background:#fbf8f3cc;transition:opacity .2s;position:absolute;box-shadow:0 1px 4px #37332d26}.immersive-exit:hover,.immersive-exit:focus-visible{opacity:1}.immersive-status{top:max(16px, env(safe-area-inset-top));max-width:60%;color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;opacity:.7;background:#fbf8f3b3;border-radius:999px;padding:3px 10px;font-size:11.5px;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)}.immersive-status:empty{display:none}.immersive-progress{background:#37332d14;height:2px;position:absolute;bottom:0;left:0;right:0}.immersive-progress span{background:var(--sage);height:100%;transition:width .3s;display:block}@media (width<=900px){.toc{z-index:5;width:min(320px,86vw);position:absolute;top:0;bottom:0;left:0;box-shadow:0 12px 40px -8px #37332d59}.toc-close{display:grid}.toc-backdrop{z-index:4;background:#37332d2e;display:block;position:absolute;inset:0}}@media (width<=720px){.library{padding:24px 16px 64px}.toolbar,.search{width:100%;min-width:0}.grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:28px 16px}.reader-bar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:8px 10px}.ghost-btn span,.reader-title span,.reader-actions .pill{display:none}.turn{z-index:3;color:#0000;background:0 0;width:18%;position:absolute;top:0;bottom:0}.turn-prev{left:0}.turn-next{right:0}.epub-stage{padding:6px 0}.epub-host{border-radius:0;padding:18px 16px}.reader.is-immersive .epub-host{padding:14px 14px 22px}}
