:root { --theme-ink: #1e312c; --theme-muted: #60706a; --theme-line: #d8ddd5; --theme-accent: #3156d8; --theme-paper: #fbfaf6; }
* { box-sizing: border-box; }
body { margin: 0; color: var(--theme-ink); background: var(--theme-paper); font: 16px/1.55 Georgia, serif; }
a { color: inherit; text-underline-offset: .18em; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.skip-link { position: fixed; top: 12px; left: 12px; z-index: 20; padding: 8px 12px; color: #fff; background: var(--theme-accent); transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }
.theme-shell-header, .theme-shell-main, .theme-shell-footer { width: min(100% - 48px, 880px); margin: 0 auto; }
.theme-shell-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 90px; border-bottom: 1px solid var(--theme-line); }
.theme-shell-name { font-size: 22px; font-weight: 700; text-decoration: none; }
.theme-shell-nav { display: flex; flex-wrap: wrap; gap: 14px; font: 600 13px/1.2 system-ui, sans-serif; }
.theme-shell-main { min-height: 65vh; padding: 62px 0; }
.theme-shell-footer { display: flex; justify-content: space-between; gap: 20px; padding: 26px 0 38px; border-top: 1px solid var(--theme-line); color: var(--theme-muted); font: 12px/1.4 system-ui, sans-serif; }
.theme-kicker, .theme-meta { margin: 0 0 7px; color: var(--theme-muted); font: 600 12px/1.3 system-ui, sans-serif; letter-spacing: .05em; text-transform: uppercase; }
.theme-hero { margin-bottom: 56px; }.theme-hero h1, .theme-reading h1 { max-width: 720px; margin: 0; font-size: clamp(42px, 8vw, 70px); line-height: .98; letter-spacing: -.04em; }
.theme-hero > p:last-child { max-width: 640px; margin: 17px 0 0; color: var(--theme-muted); font-size: 20px; }
.theme-section { margin: 50px 0; }.theme-section-head { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; border-bottom: 1px solid var(--theme-line); }.theme-section h2 { margin: 0 0 12px; font-size: 29px; }
.theme-list { padding: 0; list-style: none; }.theme-list > li { padding: 24px 0; border-bottom: 1px solid var(--theme-line); }.theme-list h2, .theme-list h3 { margin: 3px 0 8px; font-size: 28px; line-height: 1.08; }.theme-list p:last-child { margin: 0; color: var(--theme-muted); }
.theme-reading { max-width: 720px; }.theme-prose { margin-top: 34px; }.theme-reading h1 + .theme-prose > p:first-child { color: var(--theme-muted); font-size: 20px; }.theme-prose p, .theme-prose li { font-size: 18px; }.theme-prose img { max-width: 100%; height: auto; }
.theme-share { margin-top: 58px; padding-top: 24px; border-top: 1px solid var(--theme-line); }.theme-share > .theme-meta { margin-bottom: 13px; }.theme-share-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 18px; }.theme-share-copy { padding: 10px 15px; border: 0; border-radius: 3px; color: #fff; background: var(--theme-accent); cursor: pointer; font: 700 13px/1.2 system-ui, sans-serif; text-decoration: none; }.theme-share-copy:hover { background: #2849ba; }.theme-share-copy:focus-visible, .theme-share-qr summary:focus-visible { outline: 2px solid var(--theme-accent); outline-offset: 3px; }.theme-share-qr { color: var(--theme-muted); font: 600 13px/1.2 system-ui, sans-serif; }.theme-share-qr summary { cursor: pointer; text-underline-offset: .18em; }.theme-share-qr-code { width: fit-content; margin-top: 16px; padding: 14px; background: #fff; box-shadow: 0 5px 14px rgba(30, 49, 44, .08); }.theme-share-qr-code img { display: block; }
.theme-subscription { margin-top: 55px; padding: 28px; border: 1px solid var(--theme-line); }.theme-subscription form { display: grid; gap: 13px; }.theme-subscription label { color: var(--theme-ink); font: 600 13px/1.35 system-ui, sans-serif; }.theme-subscription-email { display: grid; gap: 6px; }.theme-subscription input[type="email"] { width: 100%; padding: 10px; border: 1px solid var(--theme-line); font: inherit; }.theme-subscription .theme-subscription-consent { display: flex; align-items: flex-start; gap: 8px; color: var(--theme-muted); font-weight: 500; }.theme-subscription input[type="checkbox"] { flex: 0 0 1.05em; width: 1.05em; height: 1.05em; margin: .13em 0 0; accent-color: var(--theme-accent); }.theme-subscription button, .theme-subscription-action { display: inline-flex; align-items: center; justify-content: center; width: fit-content; padding: 10px 16px; border: 0; color: white; background: var(--theme-accent); cursor: pointer; font-weight: 700; text-decoration: none; }.theme-subscription button:hover, .theme-subscription-action:hover { background: #2849ba; }.theme-subscription button:focus-visible, .theme-subscription-action:focus-visible { outline: 2px solid var(--theme-accent); outline-offset: 3px; }
.theme-books { display: grid; gap: 30px; }.theme-book { display: grid; grid-template-columns: 150px 1fr; gap: 28px; align-items: start; }.theme-book h1, .theme-book h2 { margin: 0 0 10px; line-height: 1.02; letter-spacing: -.03em; }.theme-book h1 { font-size: clamp(42px, 7vw, 60px); }.theme-book h2 { font-size: clamp(25px, 4vw, 32px); }.theme-book p:not(.theme-kicker) { max-width: 54ch; margin: 0; color: var(--theme-muted); font-size: 18px; }.theme-book-description { max-width: 54ch; color: var(--theme-muted); font-size: 18px; }.theme-book-description p { margin: 0; }.theme-book-description p + p { margin-top: 1em; }.theme-cover { display: grid; min-height: 210px; place-items: center; padding: 18px; background: #e4e7de; text-align: center; }.theme-cover img { width: calc(100% + 36px); height: calc(100% + 36px); margin: -18px; object-fit: cover; }
@media (max-width: 620px) { .theme-shell-header { align-items: flex-start; flex-direction: column; padding: 24px 0; }.theme-shell-main { padding: 42px 0; }.theme-shell-footer { align-items: flex-start; flex-direction: column; }.theme-book { grid-template-columns: 1fr; }.theme-cover { width: 180px; } }

/* Uploaded covers determine their own proportions; placeholders keep the theme shape. */
.theme-cover.has-cover { min-height: 0; aspect-ratio: auto; align-self: start; padding: 0; }
.theme-cover.has-cover img { display: block; width: 100%; height: auto; min-height: 0; margin: 0; }

.stead-book-purchase { --stead-book-purchase-action: var(--theme-accent); }
