.text-reader{--book-sheet:color-mix(in srgb,hsl(var(--card)) 95%,#e8c98a);width:100vw;max-width:none;height:100dvh;max-height:none;padding:0;margin:0;overflow:hidden;color:hsl(var(--foreground));background:transparent}.text-reader::backdrop{background:hsl(var(--background)/.92);backdrop-filter:blur(3px)}.text-reader[open]{display:grid;place-items:center;animation:text-reader-enter .3s cubic-bezier(.2,.7,.2,1)}.text-reader-sheet{display:flex;flex-direction:column;width:min(calc(var(--text-measure, 46rem) + 6rem),100vw - 32px);height:calc(100dvh - 32px);overflow:hidden;background:var(--book-sheet);border:1px solid hsl(var(--border));border-radius:10px;box-shadow:0 24px 60px -20px #00000080}.text-reader-bar{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:8px 8px 8px 20px;border-bottom:1px solid hsl(var(--border))}.text-reader-bar h2{overflow:hidden;text-overflow:ellipsis;font-size:15px;font-weight:600;white-space:nowrap}.text-reader-tools{display:flex;flex-shrink:0}.text-reader-status button,.text-reader-tools button{display:grid;place-items:center;min-width:44px;min-height:44px;font-family:Times New Roman,Times,serif;border-radius:8px;transition:background-color .12s}.text-reader-status button:hover,.text-reader-tools button:hover:not(:disabled){background:hsl(var(--accent))}.text-reader-tools button:disabled{opacity:.35}.text-reader-status button:focus-visible,.text-reader-tools button:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:2px}.text-reader-page{flex:1;padding:36px 48px 64px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.text-reader-page .book-prose{max-width:40em;margin:0 auto;overflow-wrap:anywhere}.text-contents,.text-source{max-width:40em;padding:1em 1.2em;margin:0 auto 2em;font-size:.9em;line-height:1.6;border:1px solid hsl(var(--border));border-radius:6px}.text-source{font-size:13px;color:hsl(var(--muted-foreground))}.text-contents summary,.text-source summary{font-weight:600;cursor:pointer}.text-contents a,.text-source a{color:inherit;text-decoration:underline;text-underline-offset:3px}.text-contents[open]>ol{max-height:45vh;overflow-y:auto}.text-reader-page .book-prose .verse{text-align:left;white-space:pre-wrap}.text-reader-page .book-prose .drama{margin:.4em 0 1.4em 1em;text-align:left}.text-reader-page .book-prose pre{padding:1em;overflow-x:auto;font-size:.8em;line-height:1.5;background:hsl(var(--muted)/.4);border-radius:4px}.text-reader-page .book-prose figure{margin:2em 0;text-align:center}.text-reader-page .book-prose img{display:block;max-width:100%;height:auto;margin:0 auto;background:white}.text-reader-page .book-prose figcaption{margin-top:.75em;font-size:.85em;line-height:1.5}.text-reader-page .book-prose math[display=block]{display:block;max-width:100%;padding:.5em 0;margin:1.5em 0;overflow-x:auto}.text-reader-page .book-prose :is(h1,h2,h3){scroll-margin-top:1em}.text-reader-page .book-prose table{display:block;max-width:100%;overflow-x:auto}.text-reader-page .book-prose .centred{margin:1.4em 0 .6em;font-weight:700;text-align:center;-moz-column-break-after:avoid;break-after:avoid}.text-reader-page .book-prose .centred+.centred{margin-top:0}.text-reader-status{display:grid;gap:12px;place-items:center;padding:48px 0;font-size:14px;color:hsl(var(--muted-foreground))}.text-reader-status button{padding:0 16px;font-family:inherit;color:hsl(var(--foreground));border:1px solid hsl(var(--border))}@keyframes text-reader-enter{0%{opacity:0;transform:translateY(16px) scale(.985)}}@media (max-width:640px){.text-reader-sheet{width:100vw;height:100dvh;border:0;border-radius:0}.text-reader-page{padding:24px 22px 48px}}@media (prefers-reduced-motion:reduce){.text-reader[open]{animation:none}}.text-shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:1.5rem 1rem}.text-shelf>li{display:flex;flex-direction:column;min-width:0}@media (max-width:640px){.text-shelf{display:flex;gap:.875rem;padding:.5rem .25rem 1rem;margin-inline:-.25rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none}.text-shelf>li{flex:0 0 8.25rem;scroll-snap-align:start}}.text-cover{--text-cover:#fbf5e6;--text-cover-ink:#c93600;position:relative;display:flex;flex-direction:column;width:100%;aspect-ratio:.669;padding:14% 12% 12%;container-type:inline-size;overflow:hidden;font-family:Times New Roman,Times,Georgia,serif;color:var(--text-cover-ink);text-align:center;background:var(--text-cover);border-radius:3px 5px 5px 3px;box-shadow:inset 0 0 0 1px #00000014,0 10px 22px -10px #00000066;transition:transform .22s cubic-bezier(.2,.7,.2,1),box-shadow .22s ease}.text-cover[data-kind=history]{--text-cover:#f1e6c8}.text-cover[data-kind=science]{--text-cover:#fbe0cf}.dark .text-cover{--text-cover:#080808;--text-cover-ink:#ff4500}.dark .text-cover[data-kind=history]{--text-cover:#17110a}.dark .text-cover[data-kind=science]{--text-cover:#240d03}.dark .text-cover{box-shadow:inset 0 0 0 1px #ffffff1f,0 10px 22px -10px #000000b3}.text-cover:before{inset:5.5%;border:1px solid;border-radius:1px;opacity:.55}.text-cover:after,.text-cover:before{position:absolute;pointer-events:none;content:""}.text-cover:after{inset:0 auto 0 0;width:7%;background:linear-gradient(90deg,#00000038,#ffffff12 45%,#0000001f 70%,transparent)}.text-cover:not([data-ready]){opacity:.5}.text-cover-title{display:-webkit-box;-webkit-box-orient:vertical;margin-block:auto;overflow:hidden;-webkit-line-clamp:7;font-size:16cqw;font-weight:700;line-height:1.12;text-wrap:balance}.text-cover-title[data-scale=medium]{font-size:13cqw}.text-cover-title[data-scale=long]{font-size:10.4cqw}.text-cover-author{padding-top:8%;font-size:7.4cqw;font-style:italic;line-height:1.2;border-top:1px solid color-mix(in srgb,currentcolor 45%,transparent)}.text-cover-button{display:block;width:100%;cursor:pointer;border-radius:3px 5px 5px 3px}.text-cover-button:focus-visible .text-cover,.text-cover-button:hover .text-cover{box-shadow:inset 0 0 0 1px #00000014,0 22px 34px -14px #00000080;transform:translateY(-6px)}.text-cover-button:active .text-cover{transform:translateY(-2px)}.text-cover-button:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:3px}@media (prefers-reduced-motion:reduce){.text-cover{transition:none}.text-cover-button:active .text-cover,.text-cover-button:focus-visible .text-cover,.text-cover-button:hover .text-cover{transform:none}}