books: immersive reader route, PDF resume fix, scalable placeholder covers, read-only books mount in prod deploy, README

This commit is contained in:
2026-10-24 01:18:17 +00:00
parent 9c46e281c2
commit 9c8f20a618
5 changed files with 268 additions and 211 deletions

View File

@@ -51,6 +51,7 @@
aspect-ratio: 2 / 3;
width: 100%;
overflow: hidden;
container-type: inline-size;
border-radius: 0.375rem 0.625rem 0.625rem 0.375rem;
background: var(--site-hover);
box-shadow:
@@ -99,31 +100,26 @@
font-family: Georgia, 'Times New Roman', serif;
font-weight: 600;
line-height: 1.15;
font-size: 1rem;
/* Scale with the cover's width so thumbnails don't break words mid-way. */
font-size: clamp(0.55rem, 12cqi, 1.6rem);
display: -webkit-box;
-webkit-line-clamp: 6;
line-clamp: 6;
-webkit-box-orient: vertical;
overflow: hidden;
overflow-wrap: anywhere;
overflow-wrap: break-word;
hyphens: auto;
}
.g-author {
font-size: 0.7rem;
font-size: clamp(0.5rem, 6.5cqi, 0.85rem);
letter-spacing: 0.04em;
text-transform: uppercase;
opacity: 0.8;
}
.cover-sm .g-title {
font-size: 0.6rem;
}
.cover-sm .g-author {
display: none;
}
.cover-lg .g-title {
font-size: 1.5rem;
}
.cover-lg .g-author {
font-size: 0.85rem;
@container (max-width: 90px) {
.g-author {
display: none;
}
}
.is-placeholder {
box-shadow: none;

View File

@@ -127,6 +127,9 @@
let lastScale = 0;
$effect(() => {
const s = scale;
// The first scale with pages loaded is the baseline; the initial jump to the saved
// position happens in onMount and must not be undone by a "keep position" here.
if (!pages.length || !width) return;
if (!lastScale) {
lastScale = s;
return;