@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600&family=Newsreader:opsz,wght@6..72,400;6..72,500&display=optional');

:root { --paper:#f5f1e8; --surface:#fbf8f1; --ink:#17150f; --night:#161c12; --green:#6e9c3c; --green-dark:#3c5f1d; --rust:#a85e1e; --muted:rgba(23,21,15,.7); --edge:rgba(23,21,15,.22); --book-corner:2px; font-family:Archivo,system-ui,sans-serif; color:var(--ink); background:var(--paper); line-height:1.5; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); }
a { color:inherit; }
.site-header { min-height:72px; padding:17px max(20px,calc((100% - 1296px)/2)); display:flex; align-items:center; gap:42px; border-bottom:1px solid rgba(23,21,15,.12); background:var(--paper); }
.logo { flex:none; }
.logo img { display:block; width:auto; height:32px; }
@media (min-width:1297px) { .logo{transform:translateX(-8px)} }
.main-nav { align-self:stretch; display:flex; align-items:center; gap:30px; }
.main-nav a { font:400 19px Newsreader,serif; text-decoration:none; padding:6px 0; color:var(--muted); }
.main-nav .active { color:var(--ink); border-bottom:2px solid var(--green); }
.site-search { width:250px; height:42px; margin-left:auto; display:flex; align-items:center; gap:9px; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 2px 0 rgba(23,21,15,.14); padding:0 13px; color:var(--muted); }
.site-search:focus-within { border-color:var(--ink); }
.site-search svg { flex:none; }
.site-search input { min-width:0; width:100%; border:0; outline:0; background:transparent; color:var(--ink); font:400 14px Archivo,sans-serif; }
.site-search input::placeholder { color:var(--muted); opacity:1; }
.site-search button { flex:none; border:0; background:var(--green); box-shadow:0 2px 0 var(--green-dark); padding:5px 9px; color:#0f140c; cursor:pointer; font:600 12px Archivo,sans-serif; }
.site-search:not(:focus-within) button { display:none; }
.site-search button:hover { background:#87b551; }
.site-search button:active { transform:translateY(1px); box-shadow:0 1px 0 var(--green-dark); }
.mobile-search { display:none; position:relative; }
.mobile-search summary { width:44px; height:44px; display:flex; align-items:center; justify-content:center; list-style:none; cursor:pointer; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 2px 0 rgba(23,21,15,.14); color:var(--muted); }
.mobile-search summary::-webkit-details-marker { display:none; }
.mobile-search[open] summary { border-color:var(--ink); color:var(--ink); }
.mobile-search form { position:absolute; z-index:30; top:calc(100% + 10px); right:0; width:min(350px,calc(100vw - 40px)); display:flex; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 3px 0 rgba(23,21,15,.2); padding:10px; }
.mobile-search input[type="search"] { min-width:0; flex:1; border:0; outline:0; background:transparent; padding:0 8px; color:var(--ink); font:400 14px Archivo,sans-serif; }
.mobile-search button { border:0; background:var(--green); box-shadow:0 3px 0 var(--green-dark); padding:9px 15px; color:var(--ink); cursor:pointer; font-weight:600; }
.header-filter { position:relative; }
.header-filter summary { height:42px; display:inline-flex; align-items:center; gap:10px; cursor:pointer; list-style:none; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 2px 0 rgba(23,21,15,.14); padding:0 12px 0 9px; }
.header-filter summary::-webkit-details-marker { display:none; }
.header-filter summary:hover,.header-filter[open] summary { border-color:var(--ink); }
.header-filter[open] summary svg { transform:rotate(180deg); }
.header-filter__book { width:13px; height:19px; flex:none; border:1px solid var(--ink); background:var(--green-dark); }
.header-filter__summary { min-width:74px; display:flex; flex-direction:column; align-items:flex-start; line-height:1.15; }
.header-filter__summary small { color:var(--muted); font:400 10px Archivo,sans-serif; }
.header-filter__summary strong { max-width:150px; overflow:hidden; color:var(--ink); font:600 14px Archivo,sans-serif; text-overflow:ellipsis; white-space:nowrap; }
.header-filter form { position:absolute; z-index:20; top:calc(100% + 10px); right:0; min-width:230px; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 3px 0 rgba(23,21,15,.2); padding:18px; }
.header-filter fieldset { display:grid; gap:11px; margin:0 0 17px; padding:0; border:0; }
.header-filter legend { margin-bottom:10px; color:var(--ink); font:400 20px Newsreader,serif; }
.header-filter label { display:flex; align-items:center; gap:10px; cursor:pointer; color:var(--ink); font:500 14px Archivo,sans-serif; }
.header-filter input { width:17px; height:17px; margin:0; accent-color:var(--green-dark); }
.header-filter button { width:100%; border:0; background:var(--green); box-shadow:0 4px 0 var(--green-dark); padding:12px 14px; color:#0f140c; cursor:pointer; font:600 14px Archivo,sans-serif; }
.header-filter button:hover { background:#87b551; }
.header-filter button:active { transform:translateY(2px); box-shadow:0 2px 0 var(--green-dark); }
.profile-switcher { height:42px; display:inline-flex; align-items:center; gap:9px; flex:none; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 2px 0 rgba(23,21,15,.14); padding:0 11px 0 8px; text-decoration:none; }
.profile-switcher__avatar { width:14px; height:20px; border:1px solid var(--ink); }
.profile-switcher>span:nth-child(2) { min-width:56px; display:flex; flex-direction:column; line-height:1.12; }
.profile-switcher small { color:var(--muted); font-size:10px; }
.profile-switcher strong { max-width:90px; overflow:hidden; font-size:14px; text-overflow:ellipsis; white-space:nowrap; }
.profile-menu { position:relative; flex:none; }
.profile-menu summary { cursor:pointer; list-style:none; }
.profile-menu summary::-webkit-details-marker { display:none; }
.profile-menu[open] .profile-switcher { border-color:var(--ink); }
.profile-menu[open] .profile-switcher svg { transform:rotate(180deg); }
.profile-menu__panel { position:absolute; z-index:20; top:calc(100% + 10px); right:0; min-width:250px; border:1px solid rgba(23,21,15,.3); background:var(--surface); box-shadow:0 3px 0 rgba(23,21,15,.2); padding:18px; }
.profile-menu__panel fieldset { display:grid; gap:11px; margin:0 0 17px; padding:0; border:0; }
.profile-menu__panel legend { margin-bottom:10px; color:var(--ink); font:400 20px Newsreader,serif; }
.profile-menu__panel label { display:flex; align-items:center; gap:10px; cursor:pointer; color:var(--ink); font:500 14px Archivo,sans-serif; }
.profile-menu__panel input[type="checkbox"] { width:17px; height:17px; margin:0; accent-color:var(--green-dark); }
.profile-menu__panel button { width:100%; border:0; background:var(--green); box-shadow:0 4px 0 var(--green-dark); padding:12px 14px; color:#0f140c; cursor:pointer; font:600 14px Archivo,sans-serif; }
.profile-menu__panel>a { display:block; margin-top:17px; color:var(--green-dark); font-size:13px; font-weight:600; text-align:center; text-underline-offset:3px; }
.login-link { flex:none; border-bottom:1px solid var(--green-dark); color:var(--green-dark); padding:4px 1px; font-size:14px; font-weight:600; text-decoration:none; }
.profile-avatar--forest { background-color:#517f28!important; }
.profile-avatar--rust { background-color:#a85e1e!important; }
.profile-avatar--sage { background-color:#f3eee3!important; }
.profile-avatar--sand { background-color:#c58a56!important; }
.profile-avatar--night { background-color:#161c12!important; }
main:not(.book-page) { max-width:1296px; margin:auto; padding:54px 36px 72px; }
footer { border-top:1px solid rgba(23,21,15,.12); max-width:1296px; margin:auto; padding:26px 36px; display:flex; justify-content:space-between; gap:20px; color:var(--muted); font:400 15px Newsreader,serif; }
footer a { text-underline-offset:3px; }
h1,h2,h3,p { margin-top:0; }
h1,h2,.section-title { font-family:Newsreader,serif; font-weight:400; }
.eyebrow { margin:0 0 8px; color:var(--green-dark); font-size:13px; font-weight:600; letter-spacing:.03em; text-transform:uppercase; }
.page-intro { max-width:760px; margin-bottom:36px; }
.page-intro h1 { margin:0; font-size:clamp(38px,5vw,56px); line-height:1.05; letter-spacing:-.025em; }
.page-intro>p:last-child { margin:14px 0 0; font:400 20px/1.5 Newsreader,serif; color:var(--muted); }
.page-intro--genre h1 { font-size:48px; }
.page-intro--search { max-width:1000px; }
.policy-page { max-width:760px; }
.policy-page p { color:var(--muted); font:400 20px/1.55 Newsreader,serif; }
.breadcrumbs { margin-bottom:24px; display:flex; gap:10px; align-items:center; color:var(--muted); font:400 16px Newsreader,serif; }
.breadcrumbs a { text-underline-offset:3px; }
.genre-grid { display:flex; flex-wrap:wrap; align-items:flex-end; column-gap:24px; row-gap:0; }
.genre-card { --book-edge:var(--green); --spine-ink:color-mix(in srgb,var(--book-edge) 25%,black); --genre-height:66px; --genre-margin-left:0px; --genre-margin-right:0px; display:block; flex:0 0 calc((100% - 108px) / 3); max-width:calc((100% - 108px) / 3); min-width:0; margin-left:var(--genre-margin-left); margin-right:var(--genre-margin-right); text-decoration:none; }
.genre-card--rust { --book-edge:var(--rust); --spine-ink:color-mix(in srgb,var(--book-edge) 18%,black); }
.genre-card--clay { --book-edge:#c58a56; }
.genre-card--sage { --book-edge:#aebb8f; }
.genre-card--paper { --book-edge:#cfc4ae; }
.genre-card__body { position:relative; min-height:var(--genre-height); padding:14px 22px 14px 26px; display:flex; align-items:center; gap:7px; border:1px solid rgba(23,21,15,.32); border-radius:var(--book-corner); background:var(--book-edge); box-shadow:inset 0 2px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(23,21,15,.14),5px 5px 0 #e1d9c7; color:var(--ink); transition:transform .15s ease,box-shadow .15s ease; }
.genre-card__body:before { content:""; position:absolute; inset:7px auto 7px 10px; width:5px; border-left:1px solid rgba(23,21,15,.2); border-right:1px solid rgba(255,255,255,.24); border-radius:1px; }
.genre-card__body:after { content:""; position:absolute; inset:7px 10px 7px auto; width:5px; border-left:1px solid rgba(23,21,15,.2); border-right:1px solid rgba(255,255,255,.24); border-radius:1px; }
.genre-card__icon { flex:0 0 30px; width:30px; height:30px; color:var(--book-edge); fill:none; stroke:currentColor; stroke-width:1.05; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(-1px -1px 0 rgba(23,21,15,.24)) drop-shadow(1px 1px 0 rgba(255,255,240,.24)); }
.genre-card:hover .genre-card__body { transform:translateY(-3px); box-shadow:inset 0 2px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(23,21,15,.14),5px 8px 0 #e1d9c7; }
.genre-card__heading { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; transform:translateY(2px); }
.genre-card__heading strong { font:400 26px/1.08 Newsreader,serif; color:var(--spine-ink); text-shadow:.65px .65px 0 rgba(255,255,255,.24); }
.genre-card__count { display:block; margin-top:6px; font-variant-numeric:tabular-nums; font-weight:600; }
.genre-card__heading small { min-width:7ch; margin-right:8px; color:currentColor; opacity:.7; font-size:13px; font-variant-numeric:tabular-nums; line-height:1; text-align:right; white-space:nowrap; }
.genre-card__tooltip { position:absolute; z-index:2; bottom:calc(100% + 10px); left:50%; width:min(280px,calc(100vw - 48px)); padding:10px 12px; border:1px solid rgba(23,21,15,.28); background:var(--surface); box-shadow:3px 3px 0 rgba(23,21,15,.14); color:var(--ink); font:400 14px/1.4 Archivo,sans-serif; opacity:0; pointer-events:none; transform:translate(-50%,4px); transition:opacity .15s ease,transform .15s ease; visibility:hidden; }
.genre-card:focus-visible .genre-card__tooltip { opacity:1; transform:translate(-50%,0); visibility:visible; }
.section-title { margin:40px 0 18px; font-size:30px; }
.genre-links { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px 12px; margin-bottom:42px; }
.genre-links a { --cover:#d3cbb9; position:relative; overflow:hidden; min-width:178px; min-height:43px; display:inline-flex; align-items:center; justify-content:space-between; gap:14px; border:1px solid rgba(23,21,15,.28); border-radius:var(--book-corner); background:var(--cover); box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(23,21,15,.1),3px 3px 0 #e1d9c7; padding:8px 14px 4px 22px; color:var(--ink); text-decoration:none; font:400 18px Newsreader,serif; transition:transform .15s ease,box-shadow .15s ease; }
.genre-links a:before { content:""; position:absolute; inset:6px auto 6px 9px; width:4px; border-left:1px solid rgba(23,21,15,.2); border-right:1px solid rgba(255,255,255,.24); border-radius:1px; }
.genre-links a:after { content:""; position:absolute; inset:6px 9px 6px auto; width:4px; border-left:1px solid rgba(255,255,255,.24); border-right:1px solid rgba(23,21,15,.2); border-radius:1px; }
.genre-links a:hover { border-color:rgba(60,95,29,.65); background:#cbc5b2; transform:translateY(-2px); box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(23,21,15,.1),3px 5px 0 #e1d9c7; }
.genre-links span { min-width:3ch; margin-right:8px; align-self:center; color:var(--green-dark); opacity:.82; font:500 12px/1 Archivo,sans-serif; font-variant-numeric:tabular-nums; text-align:center; }
.genre-links--compact { margin:0; }
.microgenre-intro { margin:8px 0 38px; max-width:850px; }
.microgenre-intro h1 { margin:0; font-size:clamp(42px,6vw,64px); line-height:1.02; letter-spacing:-.025em; }
.microgenre-intro>p:not(.eyebrow) { margin:16px 0 12px; font:400 21px/1.55 Newsreader,serif; color:var(--muted); }
.book-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:34px 24px; }
.book-tile { position:relative; min-width:0; container-type:inline-size; }
.book-person-roles { margin:12px 0 0; color:var(--ink); font:400 13px/1.45 Archivo,sans-serif; }
.book-tile__cover-wrap { position:relative; display:block; }
/* 2 mm binding + .065 mm per page, shown relative to a typical 135 mm book width. */
.book-volume-enabled { --book-depth:calc(1.4815cqw + var(--page-count) * .04815cqw); transform-style:preserve-3d; transition:transform .36s ease; }
.book-volume__front { transform:translateZ(var(--book-depth)); }
.book-volume__spine { position:absolute; z-index:0; top:0; bottom:0; left:0; width:var(--book-depth); border-radius:var(--book-corner) 0 0 var(--book-corner); background:#20261b; transform:rotateY(-90deg); transform-origin:left center; pointer-events:none; }
@media (hover:hover) and (pointer:fine) {
  .book-tile:hover .book-volume-enabled { transform:perspective(900px) translateY(-3px) rotateY(24deg); }
}
.book-tile:has(:focus-visible) .book-volume-enabled { transform:perspective(900px) translateY(-3px) rotateY(24deg); }
.reader-trace { min-height:27px; margin:12px 0 0; display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:4px; opacity:0; transition:opacity .14s ease; }
.reader-trace--persistent,.book-tile:hover .reader-trace,.book-tile:has(:focus-visible) .reader-trace,.reader-trace:has(details[open]) { opacity:1; }
.reader-trace>form { display:flex; flex:none; margin:0; }
.reader-trace__rating-menu { min-width:0; }
.reader-trace__rating-menu summary { list-style:none; }
.reader-trace__rating-menu summary::-webkit-details-marker { display:none; }
.reader-trace__rating-menu[open] { flex:1; }
.rating-menus-enabled .reader-trace__rating-menu[open] summary { display:none; }
.reader-trace:has(.reader-trace__rating-menu[open])>form { display:none; }
.reader-trace__rating-picker { display:flex; align-items:center; justify-content:center; gap:2px; margin:0; }
.reader-trace__rating-label { margin-right:2px; font:600 10px/1.3 Archivo,sans-serif; color:var(--green-dark); }
.reader-trace__rating-picker .reader-trace__score { flex:1; min-width:0; max-width:21px; }
.reader-trace__button { display:inline-flex; align-items:center; justify-content:center; gap:3px; min-height:27px; border:1px solid rgba(60,95,29,.42); background:rgba(251,248,241,.72); box-shadow:0 2px 0 rgba(23,21,15,.13); padding:4px 6px; color:var(--green-dark); cursor:pointer; font:600 10px/1.3 Archivo,sans-serif; text-align:left; transition:background .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease; }
.reader-trace__button:hover { border-color:var(--green-dark); background:var(--surface); color:var(--ink); }
.reader-trace__button:active { box-shadow:0 1px 0 rgba(23,21,15,.18); transform:translateY(1px); }
.reader-trace__button:focus-visible { outline:2px solid var(--green-dark); outline-offset:3px; }
.reader-trace__button--saved { border-color:rgba(168,94,30,.4); color:var(--rust); }
.reader-trace__button--saved:hover { border-color:var(--rust); background:#f3e5d8; color:#783c12; }
.reader-trace__button--muted { border-color:rgba(23,21,15,.25); color:var(--muted); font-weight:500; }
.reader-trace__button--rating { border-color:var(--green-dark); background:rgba(110,156,60,.12); font-size:11px; }
.reader-trace__score { width:21px; padding-right:0; padding-left:0; text-align:center; }
@container (max-width:139px) {
  .reader-trace:not(:has(details[open])) .reader-trace__button { font-size:9px; padding-inline:4px; }
}
.book-tile .reader-trace.htmx-request { opacity:.55; }
.book-tile .reader-trace form.htmx-request { opacity:.55; }
.book-cover { --cover-color:var(--night); --spine-color:#30392a; --pattern-ink:rgba(243,238,227,.045); --cover-title-max:27; --cover-title-min:13; --cover-title-floor:10; position:relative; aspect-ratio:7/10; display:block; padding:0; overflow:hidden; background-color:var(--cover-color); border:1px solid rgba(23,21,15,.32); border-radius:var(--book-corner); box-shadow:5px 5px 0 #e1d9c7; color:#f3eee3; text-decoration:none; transition:transform .15s; }
.book-cover--night { --cover-color:#161c12; --spine-color:#30392a; }
.book-cover--forest { --cover-color:#26311f; --spine-color:#517f28; }
.book-cover--paper { --cover-color:#ede6d8; --spine-color:#c7bda9; --pattern-ink:rgba(23,21,15,.045); color:var(--ink); }
.book-cover--sand { --cover-color:#d8cdb9; --spine-color:#aa9879; --pattern-ink:rgba(23,21,15,.05); color:var(--ink); }
.book-cover--rust { --cover-color:#7f461d; --spine-color:#a85e1e; }
.book-cover--pattern-dots,.profile-pattern--dots { background-image:radial-gradient(circle,var(--pattern-ink) .8px,transparent .9px); background-size:7px 7px; }
.book-cover--pattern-diagonal,.profile-pattern--diagonal { background-image:repeating-linear-gradient(135deg,transparent 0 10px,var(--pattern-ink) 10px 11px,transparent 11px 21px); }
.book-cover--pattern-weave,.profile-pattern--weave { background-image:repeating-linear-gradient(0deg,transparent 0 12px,var(--pattern-ink) 12px 13px),repeating-linear-gradient(90deg,transparent 0 12px,var(--pattern-ink) 12px 13px); }
.book-cover--pattern-pinstripe,.profile-pattern--pinstripe { background-image:repeating-linear-gradient(90deg,transparent 0 5px,var(--pattern-ink) 5px 6px,transparent 6px 15px); }
.book-cover--pattern-diamonds,.profile-pattern--diamonds { background-image:repeating-linear-gradient(45deg,transparent 0 10px,var(--pattern-ink) 10px 11px,transparent 11px 21px),repeating-linear-gradient(-45deg,transparent 0 10px,var(--pattern-ink) 10px 11px,transparent 11px 21px); }
.book-cover--pattern-speckle,.profile-pattern--speckle { background-image:radial-gradient(circle at 20% 30%,var(--pattern-ink) 0 1px,transparent 1.2px),radial-gradient(circle at 72% 68%,var(--pattern-ink) 0 .7px,transparent 1px),radial-gradient(circle at 48% 84%,var(--pattern-ink) 0 .6px,transparent .9px); background-size:19px 23px,17px 21px,23px 19px; }
.book-cover--pattern-waves,.profile-pattern--waves { background-image:radial-gradient(ellipse at 50% 100%,transparent 0 7px,var(--pattern-ink) 7.5px 8.5px,transparent 9px); background-size:20px 11px; }
.profile-pattern--zigzag { background-image:linear-gradient(135deg,var(--pattern-ink) 25%,transparent 25%),linear-gradient(225deg,var(--pattern-ink) 25%,transparent 25%),linear-gradient(315deg,var(--pattern-ink) 25%,transparent 25%),linear-gradient(45deg,var(--pattern-ink) 25%,transparent 25%); background-position:-8px 0,-8px 0,0 0,0 0; background-size:16px 16px; }
.book-cover:not(.book-volume__front):hover { transform:translateY(-4px); }
.book-cover--large:hover { transform:none; }
.book-cover__spine { position:absolute; inset:0 auto 0 0; width:8px; background:var(--spine-color); }
.book-cover small { position:absolute; top:17px; left:28px; margin:0; opacity:.7; font-size:12px; }
.book-cover__text { position:absolute; inset:26% 28px 16px; min-height:0; display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden; }
.cover-fit-enabled .book-cover__text { opacity:0; }
.cover-fit-enabled .book-cover--fitted .book-cover__text { opacity:1; transition:opacity .12s ease-out; }
.book-cover strong { flex:none; width:100%; display:block; font:400 23px/1.08 Newsreader,serif; overflow-wrap:normal; word-break:normal; hyphens:none; text-wrap:pretty; }
.book-cover--emergency-break strong { overflow-wrap:anywhere; }
.book-cover__main-title,.book-cover__subtitle { display:block; }
.book-cover__subtitle { margin-top:5px; font-size:.62em; line-height:1.08; opacity:.78; text-wrap:pretty; }
.book-cover em { display:block; margin-top:10px; padding-top:9px; border-top:1px solid currentColor; opacity:.72; font:400 11px/1.3 Archivo,sans-serif; }
.book-cover--fit-without-author .book-cover__text>em { display:none; }
.byline a { text-underline-offset:3px; text-decoration-thickness:1px; }
.byline a:hover { color:#fff; }
.pages { margin-top:48px; display:flex; gap:18px; justify-content:center; font:400 17px Newsreader,serif; }
.pages a { color:var(--green-dark); text-underline-offset:3px; }
.book-page { width:100%; }
.book-hero { position:relative; overflow:visible; padding:24px max(32px,calc((100% - 1296px)/2)) 62px; background:var(--night); color:#f3eee3; }
.book-hero:before { content:""; position:absolute; inset:0; background:radial-gradient(70% 90% at 85% -10%,rgba(168,94,30,.25),transparent 60%); pointer-events:none; }
.book-breadcrumbs { position:relative; display:flex; gap:8px; margin-bottom:26px; color:rgba(243,238,227,.7); font:400 16px Newsreader,serif; }
.book-hero__grid { position:relative; display:grid; grid-template-columns:260px minmax(0,720px); gap:64px; align-items:start; }
.book-cover--large { --cover-title-max:34; --cover-title-min:18; --cover-title-floor:12; width:252px; height:auto; aspect-ratio:7/10; box-shadow:12px 12px 0 rgba(11,14,9,.55); }
.book-cover--large small { top:26px; left:38px; }
.book-cover--large .book-cover__text { inset:26% 30px 22px 38px; }
.book-cover--large .book-cover__subtitle { margin-top:8px; }
.book-cover--large em { font-size:13px; }
.book-cover--image { width:100%; height:auto; aspect-ratio:var(--cover-ratio,auto); padding:0; object-fit:contain; background:#e7dfd0; }
.cover-loading-enabled .book-cover--image { opacity:0; }
.cover-loading-enabled .book-cover--image.book-cover--loaded { opacity:1; }
.published-cover { margin:0; width:100%; }
.published-cover>a { display:block; color:inherit; text-decoration:none; }
.published-cover--tile .published-cover__frame { aspect-ratio:7/10; display:flex; align-items:flex-end; justify-content:center; }
.published-cover__book { position:relative; z-index:0; height:100%; width:auto; display:inline-flex; align-items:stretch; background:#e7dfd0; border:1px solid rgba(23,21,15,.32); border-radius:var(--book-corner); box-shadow:5px 5px 0 #e1d9c7; overflow:visible; transition:transform .15s; }
.published-cover__link { position:relative; height:100%; display:flex; align-items:stretch; overflow:hidden; color:inherit; text-decoration:none; }
.published-cover__spine { flex:0 0 8px; width:8px; background:#171a15; border-right:1px solid rgba(255,255,255,.12); }
.published-cover--detail { width:260px; }
.published-cover--detail .published-cover__book { width:100%; height:auto; overflow:hidden; }
.published-cover--detail .book-cover--image { flex:1 1 auto; min-width:0; width:calc(100% - 8px); height:auto; border:0; border-radius:0; box-shadow:none; }
.published-cover--detail .published-cover__book,
.published-cover--detail .book-cover--image,
.book-cover-column>.book-cover--large { transform:none; transition:none; }
.published-cover--detail .book-cover--image:hover,
.book-cover-column>.book-cover--large:hover { transform:none; transition:none; }
.published-cover--tile .book-cover--image { position:static; flex:none; width:auto; height:100%; max-width:none; aspect-ratio:var(--cover-ratio); object-fit:contain; border:0; border-radius:0; box-shadow:none; }
.published-cover--wide .published-cover__book { width:100%; height:auto; }
.published-cover--wide .book-cover--image { flex:1 1 auto; min-width:0; width:calc(100% - 8px); height:auto; max-height:100%; }
.published-cover--tile .book-cover--image:hover { transform:none; }
.book-tile:not(.book-tile--recommendation) .published-cover--tile .published-cover__frame:hover .published-cover__book:not(.book-volume-enabled),
.book-tile:not(.book-tile--recommendation) .published-cover--tile .published-cover__frame:has(:focus-visible) .published-cover__book:not(.book-volume-enabled) { transform:translateY(-4px); }
.published-cover figcaption { margin-top:10px; color:rgba(243,238,227,.48); font-size:9px; line-height:1.4; text-align:center; overflow-wrap:anywhere; }
.published-cover--detail figcaption { margin-top:22px; }
.book-copy h1 { margin:0; font:400 clamp(42px,5vw,60px)/1.03 Newsreader,serif; letter-spacing:-.025em; }
.book-edition-label { margin:0 0 8px; color:#c5dda9; font:600 11px/1.35 Archivo,sans-serif; letter-spacing:.07em; text-transform:uppercase; }
.byline { margin:14px 0 0; display:flex; flex-wrap:wrap; align-items:baseline; gap:0 6px; color:rgba(243,238,227,.78); font-size:17px; }
.book-contributors { display:flex; flex-wrap:wrap; gap:4px 16px; margin:7px 0 0; color:rgba(243,238,227,.58); font:400 13px/1.45 Archivo,sans-serif; }
.book-contributors b { color:rgba(243,238,227,.78); font-weight:600; }
.author-prominence{margin-top:12px;color:rgba(243,238,227,.78);font:400 13px/1.5 Archivo,sans-serif}.author-prominence__label{margin:0 0 3px;font-weight:700}.author-prominence ul{margin:0;padding-left:18px}.author-prominence a{color:inherit;text-decoration-color:rgba(243,238,227,.4)}.author-prominence--page{max-width:720px;color:inherit;font-size:14px}.author-prominence--page ul{list-style:none;padding:0}.author-prominence--page li{display:flex;gap:8px 16px;flex-wrap:wrap}
.book-series-list { margin-top:24px; }
.book-series { padding-left:16px; border-left:3px solid var(--green); }
.book-series + .book-series { margin-top:22px; }
.book-series__label { margin:0 0 4px; color:rgba(243,238,227,.58); font:500 11px/1.35 Archivo,sans-serif; letter-spacing:.035em; text-transform:uppercase; }
.book-series__name { display:inline; color:#f3eee3; font:400 20px/1.25 Newsreader,serif; text-decoration-color:rgba(243,238,227,.35); text-decoration-thickness:1px; text-underline-offset:4px; }
.book-series__name:hover { color:#c5dda9; }
.book-series nav { display:flex; justify-content:space-between; gap:14px; margin-top:13px; }
.book-series nav a { color:#a8d07b; font:500 12px/1.4 Archivo,sans-serif; text-decoration:none; }
.book-series nav a[rel="next"] { margin-inline-start:auto; }
.book-series nav a:hover { text-decoration:underline; text-underline-offset:3px; }
.about { margin:32px 0 0; font:400 22px/1.6 Newsreader,serif; text-wrap:pretty; }
.experience { margin:18px 0 0; color:rgba(243,238,227,.78); font-size:16px; line-height:1.65; }
.taste-profile { margin-top:26px; }
.book-activity { margin-top:30px; padding-top:24px; border-top:1px solid rgba(243,238,227,.2); }
.taste-profile:has(.editorial-credit)+.book-activity { margin-top:14px; }
.book-activity:empty { display:none; }
.book-activity form { margin:0; }
.book-activity__prompt,.book-activity__status { margin:0 0 14px; color:rgba(243,238,227,.76); font:400 18px Newsreader,serif; }
.book-activity__status--saved { color:#d49a62; }
.book-activity__feedback { display:flex; flex-wrap:wrap; gap:12px; }
.interest-action,.reject-action { min-height:48px; display:inline-flex; align-items:center; justify-content:center; gap:9px; padding:11px 18px; cursor:pointer; font:600 15px Archivo,sans-serif; }
.interest-action { border:0; background:var(--green); box-shadow:0 4px 0 var(--green-dark); color:#0f140c; }
.interest-action svg { width:15px; height:15px; }
.interest-action:hover { background:#87b551; }
.interest-action:active { box-shadow:0 2px 0 var(--green-dark); transform:translateY(2px); }
.interest-action--selected { background:#87b551; }
.reject-action { border:1px solid rgba(243,238,227,.45); background:rgba(243,238,227,.06); box-shadow:0 3px 0 rgba(243,238,227,.2); color:#f3eee3; }
.reject-action:hover { border-color:#f3eee3; background:rgba(243,238,227,.14); }
.reject-action:active { box-shadow:0 1px 0 rgba(243,238,227,.2); transform:translateY(2px); }
.reject-action--selected { border-color:#a8d07b; color:#cce5af; }
.book-activity form.htmx-request button { box-shadow:none; transform:translateY(3px); }
.book-activity form.htmx-request button:after { content:" …"; }
.book-rating { border-bottom:1px solid rgba(23,21,15,.12); background:var(--paper); }
.book-rating__inner { max-width:1296px; margin:auto; padding:30px 36px 34px; }
.book-rating__heading h2 { margin:0; font:400 30px Newsreader,serif; }
.book-rating__hint { max-width:590px; margin:9px 0 0; color:var(--muted); font-size:14px; }
.rating-control { width:max-content; max-width:100%; margin-top:18px; }
.rating-control__choices { height:70px; display:flex; align-items:flex-end; gap:7px; }
.rating-control__choices form { margin:0; }
.rating-control__choices button { width:48px; border:1px solid rgba(23,21,15,.36); background:var(--surface); box-shadow:0 3px 0 rgba(23,21,15,.16); color:var(--ink); cursor:pointer; font:600 15px Archivo,sans-serif; transition:background .12s,transform .12s,box-shadow .12s; }
.rating-control__choices form:nth-child(1) button { height:42px; }
.rating-control__choices form:nth-child(2) button { height:49px; }
.rating-control__choices form:nth-child(3) button { height:56px; }
.rating-control__choices form:nth-child(4) button { height:63px; }
.rating-control__choices form:nth-child(5) button { height:70px; }
.rating-control__choices button:hover { border-color:var(--ink); background:#ede6d8; transform:translateY(-2px); box-shadow:0 5px 0 rgba(23,21,15,.16); }
.rating-control__choices button.selected { border-color:var(--green-dark); background:var(--green); box-shadow:0 3px 0 var(--green-dark); }
.rating-control__choices form.htmx-request button { transform:translateY(2px); box-shadow:0 1px 0 var(--green-dark); }
.rating-control__legend { margin-top:9px; display:flex; align-items:baseline; justify-content:flex-start; gap:8px; color:var(--muted); font-size:10px; }
.rating-control__legend form { margin:0; }
.rating-control__clear { border:0; background:transparent; padding:0; color:var(--green-dark); cursor:pointer; font:600 11px Archivo,sans-serif; text-decoration:underline; text-underline-offset:3px; }
.rating-control__clear:hover { color:var(--ink); }
.htmx-request { opacity:.68; pointer-events:none; }
.eyebrow--dark { color:#a6c97f; }
.dark-tags { display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; list-style:none; }
.dark-tags li { border:1px solid rgba(166,201,127,.62); border-radius:999px; background:rgba(110,156,60,.08); padding:7px 13px; color:#b9d798; font-size:13px; }
.editorial-credit { display:grid; grid-template-columns:174px minmax(0,1fr); gap:8px 14px; align-items:baseline; margin-top:22px; padding-top:18px; border-top:1px solid rgba(243,238,227,.14); }
.editorial-credit+.editorial-credit { margin-top:7px; padding-top:0; border-top:0; }
.editorial-credit__label { margin:0; color:rgba(243,238,227,.5); font:500 10px/1.4 Archivo,sans-serif; letter-spacing:.055em; text-transform:uppercase; }
.editorial-credit ul { margin:0; padding:0; list-style:none; }
.editorial-credit>ul { min-width:0; width:100%; }
.editorial-credit li { color:rgba(243,238,227,.74); font:400 14px/1.45 Newsreader,serif; }
.editorial-credit li+li { margin-top:5px; }
.editorial-credit li span { color:rgba(243,238,227,.42); white-space:nowrap; }
.editorial-credit li a { color:inherit; }
.book-prominence { margin:20px 0 24px; padding-top:12px; border-top:1px solid rgba(243,238,227,.1); text-align:left; }
.book-prominence .editorial-credit { grid-template-columns:150px minmax(0,1fr); gap:6px 16px; margin-top:0; padding-top:0; border-top:0; }
.book-prominence .editorial-credit + .editorial-credit { margin-top:8px; }
.book-prominence .editorial-credit li { color:rgba(243,238,227,.55); font:400 12px/1.5 Archivo,system-ui,sans-serif; overflow-wrap:anywhere; }
.book-prominence .editorial-credit li span { color:inherit; white-space:normal; }
.book-prominence .sales-credit__source { color:inherit!important; }
@media (max-width:640px) {
  .book-prominence .editorial-credit { grid-template-columns:1fr; gap:3px; }
}
.sales-credit__source { color:rgba(243,238,227,.78)!important; white-space:normal!important; }
.sales-credit li { display:flex; flex-wrap:wrap; align-items:baseline; }
.sales-credit__detail { white-space:normal!important; }
.sales-credit__detail::before { content:"·"; display:inline-block; margin:0 6px; color:rgba(243,238,227,.32); }
.sales-credit li>.sales-credit__detail:first-child::before { display:none; }
.book-details { max-width:1296px; margin:auto; padding:46px 36px; display:grid; grid-template-columns:1fr 1fr; gap:70px; }
.book-details--similar { display:block; padding-top:38px; padding-bottom:40px; }
.book-cover-column { width:252px; }
.book-metadata { position:relative; display:inline-block; }
.book-speech { margin:0; gap:6px; white-space:nowrap; }
.book-speech:not([hidden]) { display:inline-flex; align-items:baseline; }
.book-speech button { display:inline-flex; align-items:center; gap:4px; border:0; border-bottom:1px solid rgba(243,238,227,.3); background:transparent; padding:3px 0 2px; color:inherit; font:inherit; cursor:pointer; }
.book-speech button svg { flex:none; }
.book-speech button:hover { border-color:#a8d07b; color:#c5dda9; }
.book-speech button:focus-visible { outline:2px solid #c5dda9; outline-offset:4px; }
.book-speech-status { margin:14px 0; color:var(--paper); font-size:14px; }
.book-speech-player { width:min(100%,360px); margin:14px 0; }
.book-metadata summary { display:inline; cursor:pointer; list-style:none; padding:0 0 2px; border-bottom:1px solid rgba(243,238,227,.3); color:inherit; font:inherit; }
.book-metadata summary::-webkit-details-marker { display:none; }
.book-metadata summary:hover,.book-metadata[open] summary { border-color:#a8d07b; color:#c5dda9; }
.book-metadata__content { position:absolute; z-index:10; top:calc(100% + 10px); right:0; width:min(360px,calc(100vw - 40px)); max-height:min(60vh,520px); overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; border:1px solid rgba(243,238,227,.13); background:#1b2218; box-shadow:0 5px 0 rgba(11,14,9,.48); padding:5px 17px; }
.book-metadata dl { margin:0; }
.book-metadata dl div { padding:13px 0 12px; }
.book-metadata dl div+div { border-top:1px solid rgba(243,238,227,.13); }
.book-metadata dt { color:var(--paper); font:400 14px/1.35 Newsreader,serif; overflow-wrap:anywhere; }
.book-metadata dd { margin:3px 0 0; color:rgba(245,241,232,.62); font-size:11px; line-height:1.45; overflow-wrap:anywhere; }
.fit-list { margin:0; padding:0; list-style:none; display:flex; flex-wrap:wrap; gap:9px; }
.fit-list li { border:1px solid var(--edge); border-radius:999px; padding:8px 14px; background:var(--surface); font-size:14px; }
.library-strip { background:#efeade; border-block:1px solid rgba(23,21,15,.12); padding:36px max(36px,calc((100% - 1224px)/2)); display:flex; justify-content:space-between; align-items:center; gap:30px; }
.library-strip h2 { margin:0; font-size:30px; }
.primary-action { background:var(--green); box-shadow:0 4px 0 var(--green-dark); padding:15px 24px; text-decoration:none; font-weight:600; white-space:nowrap; }
.primary-action:hover { background:#87b551; }
.primary-action:active { transform:translateY(2px); box-shadow:0 2px 0 var(--green-dark); }

.saved-section { margin-top:46px; }
.saved-section h2,.saved-section>summary { margin:0 0 18px; font:400 31px Newsreader,serif; }
.saved-section h2 span,.saved-section>summary span { color:var(--muted); font-size:16px; }
.saved-list { display:grid; gap:12px; }
.saved-row { position:relative; min-height:116px; display:grid; grid-template-columns:64px minmax(0,1fr) auto; align-items:center; gap:20px; border:1px solid var(--edge); background:var(--surface); box-shadow:4px 4px 0 #e1d9c7; padding:12px 18px 12px 12px; transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease; }
.saved-row:hover { border-color:rgba(60,95,29,.58); box-shadow:4px 6px 0 #e1d9c7; transform:translateY(-2px); }
.saved-row__cover { width:56px; height:84px; display:block; overflow:hidden; background:#ded5c2; }
.saved-row__cover img { width:100%; height:100%; display:block; object-fit:cover; }
.saved-row__cover .book-cover { width:100%; height:100%; min-height:0; box-shadow:none; }
.saved-row__copy h3 { margin:0 0 3px; font:600 17px/1.3 Archivo,sans-serif; }
.saved-row__copy h3 a { text-decoration:none; }
.saved-row__link:after { content:""; position:absolute; z-index:1; inset:0; }
.saved-row__link:focus-visible { outline:none; }
.saved-row:has(.saved-row__link:focus-visible) { outline:2px solid var(--green-dark); outline-offset:3px; }
.saved-row__copy p { margin:0; color:var(--muted); font-size:13px; }
.saved-row__copy strong { display:block; margin-top:7px; color:var(--green-dark); font-size:12px; }
.saved-row form { position:relative; z-index:2; }
.saved-row form button { border:1px solid rgba(23,21,15,.32); background:var(--surface); box-shadow:0 2px 0 rgba(23,21,15,.16); padding:9px 12px; cursor:pointer; color:var(--ink); font:500 12px Archivo,sans-serif; }
.saved-row form button:hover,.saved-row form button:focus-visible { border-color:var(--rust); background:#f3e5d8; color:#783c12; }
.saved-row form button:active { box-shadow:0 1px 0 rgba(127,70,29,.32); transform:translateY(1px); }
.saved-row form button:focus-visible { outline:2px solid var(--rust); outline-offset:2px; }
.saved-section--hidden { margin-top:58px; padding-top:28px; border-top:1px solid var(--edge); }
.saved-section--hidden>summary { cursor:pointer; }
.saved-section--hidden>p { color:var(--muted); font-size:13px; }
.saved-empty { color:var(--muted); font:400 17px Newsreader,serif; }

/* Accounts and household profiles follow the quieter, nocturnal part of the
   emotional direction: large serif type, book-like planes, and hard shadows. */
.login-page { min-height:100vh; background:var(--night); color:#f3eee3; }
.login-shell { min-height:100vh; display:grid; grid-template-columns:minmax(340px,1fr) minmax(460px,42%); }
.login-footer { position:fixed; right:0; bottom:0; z-index:2; width:42%; box-sizing:border-box; border:0; padding:12px clamp(34px,6vw,88px); color:var(--muted); background:var(--paper); font-size:13px; }
.login-mood { position:relative; overflow:hidden; display:flex; flex-direction:column; justify-content:space-between; padding:48px clamp(36px,6vw,92px) 62px; background:radial-gradient(circle at 18% 88%,rgba(110,156,60,.22),transparent 34%),radial-gradient(circle at 88% 5%,rgba(168,94,30,.2),transparent 38%),#161c12; }
.login-mood:after { content:""; position:absolute; width:240px; height:360px; right:-55px; bottom:-90px; border:1px solid rgba(243,238,227,.12); box-shadow:-18px 18px 0 rgba(168,94,30,.13); transform:rotate(8deg); }
.login-mood img { position:relative; z-index:1; width:190px; height:auto; }
.login-mood blockquote { position:relative; z-index:1; max-width:620px; margin:auto 0 8px; font:400 clamp(44px,5vw,76px)/1.02 Newsreader,serif; letter-spacing:-.035em; }
.login-mood p { position:relative; z-index:1; margin:0; color:rgba(243,238,227,.65); font:400 18px Newsreader,serif; }
.login-panel { display:flex; align-items:center; padding:54px clamp(34px,6vw,88px); background:var(--paper); color:var(--ink); }
.login-card { width:100%; max-width:440px; margin:auto; }
.login-card h1,.profile-form-card h1 { margin:0; font:400 clamp(48px,6vw,66px)/1 Newsreader,serif; letter-spacing:-.03em; }
.login-card__intro,.profile-form-card>p { margin:16px 0 34px; color:var(--muted); font:400 19px/1.5 Newsreader,serif; }
.login-card form,.profile-form-card form { display:grid; gap:20px; }
.login-card label,.profile-form-card label { display:grid; gap:8px; font-size:13px; font-weight:600; }
.login-card input,.profile-form-card input,.profile-form-card select { width:100%; height:52px; border:1px solid rgba(23,21,15,.35); border-radius:0; outline:none; background:var(--surface); box-shadow:0 3px 0 #e1d9c7; padding:0 14px; color:var(--ink); font:400 16px Archivo,sans-serif; }
.login-card input:focus,.profile-form-card input:focus,.profile-form-card select:focus { border-color:var(--green-dark); box-shadow:0 3px 0 var(--green-dark); }
.primary-button { min-height:54px; margin-top:6px; display:flex; align-items:center; justify-content:space-between; border:0; border-radius:0; background:var(--green); box-shadow:0 4px 0 var(--green-dark); padding:0 20px; cursor:pointer; color:#0f140c; font:600 16px Archivo,sans-serif; }
.primary-button:hover { background:#87b551; }
.primary-button:active { transform:translateY(2px); box-shadow:0 2px 0 var(--green-dark); }
.form-error { border-left:4px solid var(--rust); background:rgba(168,94,30,.1); padding:12px 14px; font-size:14px; }
.field-error,.errorlist { color:#864512; font-size:12px; font-weight:500; }
.errorlist { margin:0; padding-left:18px; }
.profile-page { background:var(--night); }
.profile-page .site-header { border-bottom-color:rgba(243,238,227,.1); background:var(--night); color:#f3eee3; }
.profile-page .logo img { content:url("logo-night.21a78b518bb3.svg"); }
.profile-page .main-nav,.profile-page .site-search,.profile-page .mobile-search,.profile-page .header-filter,.profile-page .profile-menu { display:none; }
.profile-page footer { border-top-color:rgba(243,238,227,.1); color:rgba(243,238,227,.58); }
main.profile-picker-shell,main.profile-form-shell { max-width:1296px; min-height:calc(100vh - 145px); display:flex; align-items:center; padding-block:64px 88px; color:#f3eee3; }
.profile-picker { position:relative; width:100%; min-height:530px; padding-top:34px; }
.profile-picker:before { content:""; position:fixed; z-index:-1; inset:72px 0 0; background:radial-gradient(120% 75% at 50% 116%,rgba(110,156,60,.34),transparent 62%); }
.profile-picker h1 { margin:0; font-size:clamp(40px,5vw,54px); line-height:1.1; letter-spacing:-.022em; }
.profile-picker>p { margin:12px 0 46px; color:rgba(243,238,227,.8); font:400 18px Newsreader,serif; }
.profile-grid { min-height:258px; display:flex; flex-wrap:wrap; align-items:flex-end; gap:22px; }
.profile-grid form { margin:0; }
.profile-logout { margin-top:32px; }
.profile-logout button { padding:4px 0; border:0; background:none; color:inherit; font:inherit; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }
.profile-card { width:132px; height:224px; display:flex; flex-direction:column; justify-content:flex-end; border:1px solid #0b0e09; border-radius:0; background-color:#517f28; padding:16px 14px; cursor:pointer; color:#fff; text-align:left; text-decoration:none; transition:transform .16s ease; }
.profile-card--new:hover { transform:translateY(-8px); }
.profile-card strong { font:400 27px/1.1 Newsreader,serif; overflow-wrap:anywhere; }
.profile-card>span { height:1px; margin-top:8px; background:rgba(255,255,255,.4); }
.profile-card small { margin-top:8px; color:inherit; font:400 13px/1.35 Archivo,sans-serif; }
.profile-card--rust { height:258px; background-color:#a85e1e; }
.profile-card--sage { height:196px; background-color:#f3eee3; color:var(--ink); }
.profile-card--sage>span,.profile-card--sand>span { background:rgba(23,21,15,.25); }
.profile-card--sand { height:238px; background-color:#c58a56; color:var(--ink); }
.profile-card--night { height:212px; background-color:var(--night); }
.profile-card--new { height:166px; justify-content:flex-end; border:1px dashed rgba(243,238,227,.45); background:transparent; color:rgba(243,238,227,.8); }
.profile-card--new strong { font-size:22px; line-height:1.2; }
.household-link { position:absolute; left:0; bottom:0; color:rgba(243,238,227,.75); border-bottom:1px solid rgba(243,238,227,.3); font:400 16px Newsreader,serif; text-decoration:none; }
.profile-form-card { width:min(100%,560px); margin:auto; border:1px solid rgba(243,238,227,.16); background:#1b2218; box-shadow:12px 12px 0 rgba(5,8,4,.45); padding:42px; }
.profile-form-card>p { color:rgba(243,238,227,.68); }
.profile-form-card input,.profile-form-card select { background:#f5f1e8; }
.profile-choice { position:relative; }
.profile-edit-link { position:absolute; top:5px; right:5px; width:44px; height:44px; display:grid; place-items:center; color:#f3eee3; border:1px solid transparent; transition:transform .16s ease,opacity .12s ease; }
.profile-choice:has(.profile-card--sage) .profile-edit-link,.profile-choice:has(.profile-card--sand) .profile-edit-link { color:var(--ink); }
.profile-edit-link:hover { border-color:currentColor; background:rgba(127,127,127,.15); }
.profile-edit-link:focus-visible { outline:2px solid currentColor; outline-offset:1px; }
.profile-choice:hover .profile-card,.profile-choice:focus-within .profile-card,.profile-choice:hover .profile-edit-link,.profile-choice:focus-within .profile-edit-link { transform:translateY(-8px); }
@media (hover:hover) and (pointer:fine) {
  .profile-edit-link { opacity:0; pointer-events:none; }
  .profile-choice:hover .profile-edit-link,.profile-choice:focus-within .profile-edit-link { opacity:1; pointer-events:auto; }
}
.profile-card,.profile-switcher__avatar { --pattern-ink:rgba(243,238,227,.22); }
.profile-card--sage,.profile-card--sand { --pattern-ink:rgba(23,21,15,.18); }
.profile-switcher__avatar.profile-avatar--sage,.profile-switcher__avatar.profile-avatar--sand { --pattern-ink:rgba(23,21,15,.45); }
.profile-form-card { --profile-swatch-color:#517f28; --profile-pattern-ink:rgba(243,238,227,.25); }
.profile-form-card:has(input[name="avatar"][value="rust"]:checked) { --profile-swatch-color:#a85e1e; }
.profile-form-card:has(input[name="avatar"][value="sage"]:checked) { --profile-swatch-color:#f3eee3; --profile-pattern-ink:rgba(23,21,15,.25); }
.profile-form-card:has(input[name="avatar"][value="sand"]:checked) { --profile-swatch-color:#c58a56; --profile-pattern-ink:rgba(23,21,15,.25); }
.profile-form-card:has(input[name="avatar"][value="night"]:checked) { --profile-swatch-color:var(--night); }
.profile-pattern-preview { background-color:var(--profile-swatch-color); --pattern-ink:var(--profile-pattern-ink); }

.profile-colors { min-width:0; margin:0; padding:0; border:0; }
.profile-colors legend { margin-bottom:12px; font-size:13px; font-weight:600; }
.profile-color-options,.profile-pattern-options { display:flex; flex-wrap:wrap; gap:12px; }
.profile-pattern-options { column-gap:8px; }
.profile-form-card .profile-color-choice { position:relative; justify-items:center; gap:8px; min-width:44px; padding:4px 0; cursor:pointer; font-size:12px; }
.profile-form-card .profile-color-input { position:absolute; width:1px; height:1px; margin:0; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.profile-color-swatch { position:relative; display:block; width:44px; height:44px; border:1px solid rgba(243,238,227,.45); box-shadow:0 3px 0 rgba(5,8,4,.45); }
.profile-color-input:checked + .profile-color-swatch { outline:2px solid #f3eee3; outline-offset:3px; }
.profile-color-input:checked + .profile-color-swatch::after { content:"✓"; position:absolute; inset:10px; display:grid; place-items:center; background:var(--surface); color:var(--ink); font-size:16px; line-height:1; }
.profile-color-input:focus-visible + .profile-color-swatch { outline:3px solid #a8d07b; outline-offset:5px; }
.back-link { display:inline-block; margin-bottom:34px; color:#a8d07b; font-size:13px; text-underline-offset:3px; }

@media (max-width:950px) { .genre-card{flex-basis:calc((100% - 64px) / 2);max-width:calc((100% - 64px) / 2)} .book-grid{grid-template-columns:repeat(4,1fr)} .book-hero__grid{grid-template-columns:218px 1fr;gap:38px}.book-cover--large{width:210px}.book-cover-column{width:218px}.published-cover--detail{width:218px}.book-details{gap:30px} }
@media (max-width:700px) {
  body:not(.profile-page):not(.login-page){padding-bottom:calc(62px + env(safe-area-inset-bottom))}
  .site-header{min-height:64px;gap:8px;padding:14px 20px}
  .logo img{height:26px}
  .site-search{display:none}
  .main-nav{position:fixed;z-index:40;inset:auto 0 0;align-self:auto;display:flex;align-items:stretch;border-top:1px solid rgba(23,21,15,.16);background:#efeade;padding-bottom:env(safe-area-inset-bottom)}
  .main-nav a{flex:1;padding:14px 20px 18px;text-align:center}
  .main-nav .active{border-top:3px solid var(--green);border-bottom:0;margin-top:-1px;padding-top:12px}
  .mobile-search{display:block;flex:none;margin-left:auto}
  .header-filter{flex:none}
  .header-filter__summary{min-width:58px}
  .header-filter summary{height:44px;gap:7px;padding-inline:8px}
  .header-filter__summary strong{max-width:70px}
}
@media (max-width:800px) { .login-shell{grid-template-columns:1fr}.login-mood{min-height:290px;padding:30px 28px}.login-mood img{width:150px}.login-mood blockquote{margin-top:70px;font-size:42px}.login-mood p{display:none}.login-panel{padding:48px 28px 64px}.login-footer{width:100%;padding:12px 28px}.profile-grid{gap:22px 18px} }
@media (max-width:420px) { .logo img{height:23px}.header-filter__summary{min-width:48px}.header-filter__summary strong{max-width:54px}.header-filter summary{padding-inline:7px}.header-filter summary>svg{display:none} }
@media (max-width:360px) { .site-header{gap:6px;padding-inline:16px}.logo img{height:20px}.profile-switcher{gap:6px;padding-inline:7px}.profile-switcher>span:nth-child(2){min-width:0}.profile-switcher strong{max-width:48px} }
@media (max-width:640px) { main:not(.book-page){padding:32px 20px 56px}.page-intro h1{font-size:39px}.genre-grid{column-gap:0}.genre-card{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.genre-card__heading strong{font-size:24px}.book-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 16px}.book-hero{padding:20px 20px 40px}.book-hero__grid{grid-template-columns:104px minmax(0,1fr);gap:20px}.book-cover--large{--cover-title-max:18;--cover-title-min:11;--cover-title-floor:9;width:104px;box-shadow:6px 6px 0 rgba(11,14,9,.55)}.book-cover--large .book-cover__text{inset:13px 10px 12px 20px;justify-content:center}.book-cover--large small,.book-cover--large em{display:none}.book-hero__grid .book-copy{display:contents}.book-heading{grid-column:2;grid-row:1;min-width:0}.book-heading h1{font-size:31px;overflow-wrap:anywhere}.byline{font-size:13px}.book-contributors{gap:2px 10px;margin-top:5px;font-size:11px}.book-story{grid-column:1/-1;grid-row:2}.about{font-size:19px;margin-top:4px}.experience{font-size:14px}.book-details{padding:34px 20px;grid-template-columns:1fr;gap:32px}.library-strip{padding:30px 20px;align-items:flex-start;flex-direction:column}.primary-action{width:100%;text-align:center}footer{padding:22px 20px;flex-direction:column;gap:4px}.section-title{font-size:26px} }
@media (max-width:520px) { .login-mood{min-height:235px}.login-mood blockquote{font-size:34px}.profile-form-card{padding:28px 22px}.profile-picker{padding-top:12px;padding-bottom:58px}.profile-grid{display:grid;grid-template-columns:repeat(2,132px);align-items:end}.household-link{bottom:0} }
@media (max-width:640px) { .editorial-credit{grid-template-columns:1fr;gap:4px;margin-top:18px;padding-top:15px}.editorial-credit li{font-size:13px} }
@media (max-width:640px) { .book-cover:not(.book-cover--large) .book-cover__text{inset:70px 28px 16px;justify-content:flex-start} }
@media (max-width:640px) { .book-cover-column{display:contents}.book-cover-column .book-cover{grid-column:1;grid-row:1}.book-cover-column .book-series-list{grid-column:1/-1;grid-row:2;margin-top:0}.book-story{grid-row:3}.book-series nav{justify-content:flex-start;gap:28px}.book-hero__grid{row-gap:28px} }
@media (max-width:640px) {
  .book-heading { position:relative; }
  .book-metadata { position:static; }
  .book-metadata__content { left:0; right:auto; width:100%; }
}
@media (max-width:640px) {
  .book-breadcrumbs{margin-bottom:20px}
  .book-hero__grid{grid-template-columns:96px minmax(0,1fr);column-gap:16px;row-gap:20px}
  .book-cover-column>.published-cover{grid-column:1;grid-row:1;width:88px}
  .book-cover-column>.published-cover--detail{width:96px}
  .book-cover--large{width:88px;box-shadow:5px 5px 0 rgba(11,14,9,.55)}
  .published-cover--detail figcaption{margin-top:12px;font-size:8px}
  .book-heading h1{font-size:29px;line-height:1.02}
  .byline{margin-top:10px;gap:3px 5px;font-size:12px;line-height:1.5}
  .book-story{grid-row:2;margin-top:0}
  .book-hero__grid:has(.book-series-list) .book-story{grid-row:3}
  .about{margin-top:0;font-size:18px;line-height:1.52}
  .experience{margin-top:16px;font-size:13px;line-height:1.58}
  .taste-profile{margin-top:22px}
  .dark-tags{gap:7px}
  .dark-tags li{padding:6px 11px;font-size:12px}
}
@media (max-width:640px) { .saved-row{grid-template-columns:52px minmax(0,1fr);gap:14px;padding:10px}.saved-row__cover{width:48px;height:72px}.saved-row>form{grid-column:2}.saved-row>form button{padding:7px 10px}.book-activity__feedback{display:grid}.book-activity__feedback button{width:100%}.book-rating__inner{padding:26px 20px 30px}.rating-control{min-width:0;margin-top:17px}.rating-control__choices{height:64px}.rating-control__choices button{width:42px}.rating-control__choices form:nth-child(1) button{height:40px}.rating-control__choices form:nth-child(2) button{height:46px}.rating-control__choices form:nth-child(3) button{height:52px}.rating-control__choices form:nth-child(4) button{height:58px}.rating-control__choices form:nth-child(5) button{height:64px} }
@media (hover:none) { .reader-trace{opacity:1} }

.cover-preview { display:block; cursor:zoom-in; }
.cover-preview:focus-visible { outline:3px solid currentColor; outline-offset:6px; }
.cover-modal { width:fit-content; max-width:calc(100vw - 24px); max-height:calc(100dvh - 24px); margin:auto; padding:0; border:0; background:transparent; color:var(--paper); }
.cover-modal::backdrop { background:rgba(22,28,18,.94); }
.cover-modal__close { position:fixed; top:max(12px,env(safe-area-inset-top)); right:max(12px,env(safe-area-inset-right)); margin:0; }
.cover-modal__close button { display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; border-radius:var(--book-corner); background:rgba(22,28,18,.75); color:var(--paper); cursor:pointer; }
.cover-modal__close button:hover { background:var(--green-dark); }
.cover-modal__close button:focus-visible { outline:2px solid var(--paper); outline-offset:2px; }
.cover-modal__figure { margin:0; }
.cover-modal__figure img { display:block; width:auto; height:auto; max-width:100%; max-height:calc(100dvh - 64px); object-fit:contain; margin:auto; }
.cover-modal__figure figcaption { max-width:60ch; margin:10px auto 0; color:rgba(245,241,232,.65); font:400 11px/1.5 Archivo,system-ui,sans-serif; overflow-wrap:anywhere; text-align:center; }
html:has(.cover-modal[open]) { overflow:hidden; }

/* Shared category concepts, grouped by reader intent. */
.genre-stacks { flex-wrap:nowrap; align-items:flex-end; gap:40px; padding:0 10px 5px; }
.genre-stack { flex:1; min-width:0; display:flex; flex-direction:column; }
.category-section--listing .genre-stack { max-width:calc((100% - 120px) / 4); }
.genre-stack .genre-card { flex:none; max-width:none; position:relative; }
.genre-stack .genre-card__body { min-height:0; padding:6px 18px 6px 22px; box-shadow:inset 0 2px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(23,21,15,.14),4px 0 0 #e1d9c7; }
.genre-stack .genre-card:hover,.genre-stack .genre-card:focus-within { z-index:3; }
.genre-stack .genre-card:hover .genre-card__body { transform:none; background:color-mix(in srgb,var(--book-edge),white 6%); box-shadow:inset 0 2px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(23,21,15,.14),4px 0 0 #e1d9c7; }
.genre-stack .genre-card__heading strong { min-width:0; font-size:20px; hyphens:auto; overflow-wrap:anywhere; }
.genre-stack .genre-card__tooltip { left:auto; right:0; width:min(280px,100%); transform:translateY(4px); background:#f5f1e8; }
.genre-stack .genre-card:focus-visible .genre-card__tooltip { transform:translateY(0); }
.category-dimensions { display:flex; flex-wrap:wrap; gap:12px; margin:20px 0; }
.category-dimensions a { border:1px solid var(--edge); padding:8px 14px; text-decoration:none; }
.category-section { margin:42px 0; scroll-margin-top:30px; }
.page-intro + .category-section { margin-top:0; }
.category-section h2 { font:500 32px/1.2 Newsreader,serif; }
/* Full-width entry shelves. Hover styles keep responsive spine geometry intact. */
.discovery-sections { display:grid; grid-template-columns:minmax(0,1fr); gap:40px; }
.discovery-sections .category-section { margin:0; min-width:0; display:flex; flex-direction:column; }
.discovery-sections .genre-card { --spine-ink:var(--ink); }
.discovery-sections .genre-card--rust { --book-edge:color-mix(in srgb,var(--rust),var(--surface) 20%); }
.discovery-sections .genre-card__heading strong { text-shadow:none; }
.discovery-sections .genre-grid { --pile-count:3; gap:32px; align-items:flex-end; margin-top:0; position:relative; padding:0 18px 0; }
.discovery-sections .genre-grid:after,
.book-discovery-categories .genre-links:after { content:""; position:absolute; left:-10px; right:-10px; bottom:-5px; height:5px; background:#ded5c4; border-top:1px solid rgba(23,21,15,.12); box-shadow:0 1px 0 rgba(23,21,15,.08); pointer-events:none; }
.discovery-sections #stories .genre-grid,.discovery-sections #subjects .genre-grid,.discovery-sections #periods .genre-grid { --pile-count:3; gap:32px; }
@media(min-width:1151px) { .discovery-sections #subjects .genre-grid,.discovery-sections #forms .genre-grid,.discovery-sections #moods .genre-grid { --pile-count:4; } }
.discovery-sections .category-section h2 { font-size:28px; }
.discovery-sections .genre-card__heading { flex:1; width:auto; }
.discovery-sections #stories .genre-card__body { padding-top:10px; padding-bottom:10px; }
.discovery-sections .genre-card__heading strong { flex:1; min-width:0; max-width:100%; hyphens:none; overflow-wrap:anywhere; }
.category-section__heading { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:0 10px 16px; }
.category-section__heading h2 { min-width:0; margin:0; }
.category-more { flex:none; display:inline-flex; align-items:center; gap:8px; padding:5px 0 4px; border-bottom:1px solid currentColor; color:var(--green-dark); font:600 14px/1 Archivo,sans-serif; text-decoration:none; transition:gap .15s ease,color .15s ease; }
.category-more span { font-size:18px; line-height:.8; transition:transform .15s ease; }
.category-more:hover { gap:12px; color:var(--ink); }
.category-more:hover span { transform:translateX(2px); }
.category-more:focus-visible { outline:3px solid var(--green); outline-offset:5px; }
@media(min-width:801px) and (max-width:1150px) { .category-section--listing .genre-stack { max-width:calc((100% - 80px) / 3); } }
@media(min-width:641px) and (max-width:800px) { .category-section--listing .genre-stack { max-width:calc((100% - 40px) / 2); } }
@media(max-width:640px) { .category-section--listing .genre-stack { max-width:100%; } }
@media(max-width:900px) {
  .discovery-sections { grid-template-columns:1fr; gap:32px; }
  .discovery-sections .genre-grid { --pile-count:2; gap:24px; }
  .discovery-sections #stories .genre-grid,.discovery-sections #subjects .genre-grid,.discovery-sections #periods .genre-grid { --pile-count:2; }
}
@media(max-width:640px) {
  .discovery-sections .genre-grid,.discovery-sections #stories .genre-grid,.discovery-sections #subjects .genre-grid,.discovery-sections #periods .genre-grid { --pile-count:2; gap:16px; }
  .discovery-sections .genre-card { margin-left:0; margin-right:0; }
  .discovery-sections .genre-card__body { padding-left:18px; padding-right:14px; }
  .discovery-sections .genre-card__icon { flex-basis:22px; width:22px; height:22px; }
  .discovery-sections .genre-card__heading strong { font-size:17px; }
}
@media(max-width:380px) {
  .discovery-sections .genre-grid,.discovery-sections #stories .genre-grid,.discovery-sections #subjects .genre-grid,.discovery-sections #periods .genre-grid { --pile-count:1; }
}
@media(max-width:400px) { .genre-stack .genre-card__heading strong { font-size:18px; } .genre-stack .genre-card__heading small { font-size:11px; } }
@media(max-width:440px) {
  .discovery-sections #stories .genre-grid { --pile-count:1; }
  .discovery-sections #stories .genre-card__heading strong { overflow-wrap:normal; }
}
@media(max-width:360px) { .genre-stack .genre-card__heading strong { font-size:17px; } .genre-stack .genre-card__heading { gap:8px; } .genre-stack .genre-card__heading small { margin-right:0; } }
.category-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.category-card { display:block; padding:20px; border:1px solid rgba(23,21,15,.18); background:var(--surface); color:var(--ink); text-decoration:none; box-shadow:0 3px 0 rgba(23,21,15,.09); }
.category-card:hover { border-color:var(--green-dark); }
.category-card strong { display:block; font:500 25px/1.15 Newsreader,serif; }
.category-card small { display:block; margin-top:9px; color:var(--muted); }
.category-card p { font-size:14px; line-height:1.5; margin-bottom:0; }
.dark-tags a { color:inherit; text-underline-offset:3px; }
.genre-card:focus-visible,.category-card:focus-visible,.category-dimensions a:focus-visible,.dark-tags a:focus-visible { outline:3px solid var(--green); outline-offset:4px; }
@media(max-width:800px) { .category-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:520px) { .category-grid { grid-template-columns:1fr; } }
.category-refinements { margin-top:18px; }
.category-refinements summary { cursor:pointer; padding:12px 0; color:var(--green-dark); }

.category-pagination { display:flex; flex-wrap:wrap; gap:24px; align-items:center; margin:32px 0; }
.search-categories { margin-bottom:32px; }

/* Category artwork uses the same recessed ink and light edge as the spine rules. */
.genre-card__icon { color:rgba(23,21,15,.2); filter:none; }
.genre-card__icon svg { display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.05; stroke-linecap:round; stroke-linejoin:round; }
.genre-card__heading { min-width:0; }


.category-icon__light { stroke:rgba(255,255,255,.24); }
.category-icon__ink { stroke:rgba(23,21,15,.2); }

/* Touch opens the category directly; hover previews are for pointing devices. */
@media (hover:hover) {
  .genre-card:hover .genre-card__tooltip { opacity:1; transform:translate(-50%,0); visibility:visible; }
  .genre-stack .genre-card:hover .genre-card__tooltip { transform:translateY(0); }
}

.book-recommendations { max-width:1296px; margin:auto; padding:0 36px; }
.book-recommendations:has(.section-title) { padding-top:32px; padding-bottom:32px; border-top:1px solid rgba(23,21,15,.12); }
.recommendation-row { margin-top:28px; }
.recommendation-row > h3 { margin-bottom:18px; font:400 24px/1.2 Newsreader,serif; }
.recommendation-row .book-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.recommendation-copy { margin-top:16px; }
.recommendation-copy h4 { font-size:17px; margin:0 0 8px; }
.recommendation-copy p { font-size:14px; line-height:1.6; margin:0 0 12px; }
.recommendation-action { min-height:38px; padding:8px 12px; font-size:13px; font-weight:500; border-color:rgba(23,21,15,.32); color:var(--ink); background:var(--surface); }
.recommendation-action span { margin-right:4px; }
.recommendation-copy h4 a { color:var(--ink); text-decoration:none; }
.recommendation-copy h4 a:hover { color:var(--green-dark); text-decoration:underline; text-underline-offset:3px; }
.recommendation-copy h4 a:focus-visible { outline:2px solid var(--green-dark); outline-offset:3px; }
.recommendation-copy .recommendation-byline { margin-top:-3px; margin-bottom:10px; color:var(--muted); }
@media (max-width:640px) { .book-recommendations { padding-left:20px; padding-right:20px; } .recommendation-row .book-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }

.recommendation-themes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; }
.recommendation-themes .book-grid { grid-template-columns:1fr; }
@media (max-width:800px) { .recommendation-themes { grid-template-columns:1fr; } }

/* Depth is relative to the cover width, even when the explanation column is wider. */
.book-tile__visual { container-type:inline-size; }
.book-tile--recommendation .book-tile__visual { max-width:180px; }
.recommendation-actions { display:flex; flex-wrap:wrap; gap:10px 12px; margin-top:16px; }
.recommendation-actions .interest-action,.recommendation-actions .reject-action { min-height:40px; padding:9px 12px; font-size:13px; }
.recommendation-actions .reject-action { border-color:rgba(23,21,15,.32); background:var(--surface); box-shadow:0 3px 0 rgba(23,21,15,.2); color:var(--ink); }
.recommendation-actions .reject-action:hover { border-color:var(--ink); background:#efeade; }
.recommendation-actions .reject-action:active { box-shadow:0 1px 0 rgba(23,21,15,.2); }
.recommendation-actions button:focus-visible { outline:2px solid var(--green-dark); outline-offset:4px; }
/* Lift the complete cover; its image and spine remain in the same plane. */
.book-tile--recommendation .published-cover__book,
.book-tile--recommendation .book-tile__cover-wrap { transition:transform .2s ease; }
.book-tile--recommendation .book-cover,
.book-tile--recommendation .book-cover:hover { transform:none; }
@media (hover:hover) and (pointer:fine) {
  .book-tile--recommendation:hover .published-cover__book,
  .book-tile--recommendation:hover .book-tile__cover-wrap { transform:translateY(-2px); }
}
.book-tile--recommendation:has(:focus-visible) .published-cover__book,
.book-tile--recommendation:has(:focus-visible) .book-tile__cover-wrap { transform:translateY(-2px); }
@media (prefers-reduced-motion:reduce) {
  .book-tile--recommendation .published-cover__book,
  .book-tile--recommendation .book-tile__cover-wrap { transition:none; }
  .book-tile--recommendation:is(:hover,:has(:focus-visible)) .published-cover__book,
  .book-tile--recommendation:is(:hover,:has(:focus-visible)) .book-tile__cover-wrap { transform:none; }
}

/* Book presentation and reader actions form one block; discovery follows it. */
.book-page .book-hero { padding-left:max(36px,calc((100% - 1224px)/2)); padding-right:max(36px,calc((100% - 1224px)/2)); padding-bottom:36px; }
.book-reader-tools { max-width:720px; display:grid; grid-template-columns:minmax(0,1fr) 240px; gap:28px; margin-top:28px; padding-top:24px; border-top:1px solid rgba(243,238,227,.14); }
.book-reader-tools .book-activity { margin:0; padding:0; border:0; }
.book-reader-tools .book-activity__prompt,.book-reader-tools .book-activity__status { margin:0 0 12px; font-size:20px; line-height:1.2; }
.book-reader-tools .interest-action,.book-reader-tools .reject-action { min-height:48px; padding:10px 12px; font-size:13px; }
.book-reader-tools .book-rating { border:0; background:none; }
.book-reader-tools .book-rating__inner { padding:0; }
.book-reader-tools .book-rating__heading h2 { font-size:20px; line-height:1.2; color:var(--paper); }
.book-reader-tools .book-rating__hint,.book-reader-tools .rating-control__legend { color:rgba(243,238,227,.6); }
.book-reader-tools .book-rating__hint { margin:8px 0 0; font-size:12px; }
.book-reader-tools .rating-control { margin-top:12px; }
.book-reader-tools .rating-control__choices { height:48px; gap:5px; }
.book-reader-tools .rating-control__choices button { width:38px; font-size:13px; }
.book-reader-tools .rating-control__choices form:nth-child(1) button { height:32px; }
.book-reader-tools .rating-control__choices form:nth-child(2) button { height:36px; }
.book-reader-tools .rating-control__choices form:nth-child(3) button { height:40px; }
.book-reader-tools .rating-control__choices form:nth-child(4) button { height:44px; }
.book-reader-tools .rating-control__choices form:nth-child(5) button { height:48px; }
.book-reader-tools .rating-control__legend { flex-wrap:wrap; margin-top:6px; }
.book-reader-tools .rating-control__clear { color:#b9d798; border:1px solid rgba(166,201,127,.4); padding:4px 7px; background:rgba(110,156,60,.08); text-decoration:none; }
.book-reader-tools .rating-control__clear:hover { border-color:#b9d798; color:#b9d798; }
.book-acquisition { max-width:1296px; margin:auto; padding:28px 36px 40px; display:flex; align-items:center; justify-content:space-between; gap:24px; border-top:1px solid rgba(23,21,15,.12); }
.book-acquisition h2 { margin:0; font-size:28px; }
.book-discovery { position:relative; max-width:1296px; margin:-20px auto 0; padding:0 36px 32px; }
.book-discovery-sheet:has(.recommendation-row) { margin:0 -24px; padding:24px 23px; border:1px solid rgba(23,21,15,.26); background:var(--surface); box-shadow:0 6px 0 -1px #eee7d9,0 6px 0 rgba(23,21,15,.2),0 12px 0 -2px #e4dbc8,0 12px 0 -1px rgba(23,21,15,.18); }
.book-discovery:not(:has(.recommendation-row)) { margin-top:0; padding-top:24px; }
.book-discovery .book-recommendations { max-width:none; margin:0; padding:0; border:0; }
.book-discovery .book-recommendations > .section-title { margin:0 0 20px; }
.book-discovery .recommendation-themes { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; }
.book-discovery .recommendation-themes > .recommendation-row { margin-top:0; display:grid; grid-template-columns:subgrid; grid-template-rows:subgrid; grid-row:span 2; row-gap:12px; }
.book-discovery .recommendation-row { margin-top:32px; }
.book-discovery .recommendation-themes > .recommendation-row:first-child { margin-top:0; }
.book-discovery .recommendation-row > h3 { margin:0 0 12px; color:var(--green-dark); font:600 11px/1.4 Archivo,sans-serif; letter-spacing:.04em; text-transform:uppercase; }
.book-discovery .recommendation-themes > .recommendation-row > h3 { grid-column:1 / -1; margin:0; }
.book-discovery .recommendation-row .book-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 32px; }
.book-discovery .recommendation-themes .book-grid { grid-column:1 / -1; grid-template-columns:subgrid; }
.book-discovery .book-tile--recommendation { display:grid; grid-template-columns:180px minmax(0,1fr); grid-template-rows:auto auto; gap:16px 24px; align-items:start; align-content:start; }
.book-discovery .book-tile--recommendation .book-tile__visual { width:100%; max-width:none; align-self:start; }
.book-discovery .book-tile--recommendation .published-cover__frame { align-items:flex-start; }
.book-discovery .book-tile--recommendation .published-cover--wide .published-cover__frame { aspect-ratio:auto; }
.book-discovery .recommendation-copy { display:flex; flex-direction:column; width:100%; max-width:720px; margin:0; }
.book-discovery .recommendation-copy h4 { margin:0 0 8px; font:400 24px/1.15 Newsreader,serif; }
.book-discovery .recommendation-copy h4,
.book-discovery .recommendation-copy .recommendation-byline { flex:none; }
.book-discovery .recommendation-copy p { font-size:13px; line-height:1.5; }
.book-discovery .recommendation-copy .recommendation-reason { flex:0 1 auto; min-height:0; overflow:hidden; margin-bottom:0; border-left:2px solid var(--green); padding-left:10px; font:400 15px/1.45 Newsreader,serif; }
.book-discovery .recommendation-excerpt { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:var(--recommendation-description-lines,8); overflow:hidden; }
.book-discovery .recommendation-actions { grid-column:1 / -1; justify-content:center; margin:0; padding:0; }
.book-discovery-categories { margin-top:32px; padding-top:20px; border-top:1px solid rgba(23,21,15,.12); }
.book-discovery-categories .genre-links { --pile-count:3; gap:28px; align-items:flex-end; position:relative; padding:0 10px; margin-bottom:6px; }
.book-discovery-categories .genre-stack { flex:1; min-width:0; }
.book-discovery-categories .genre-links a { flex:none; min-width:0; min-height:44px; padding:7px 20px; gap:10px; margin-left:var(--spine-left,0px); margin-right:var(--spine-right,0px); font:400 18px/1.25 Newsreader,serif; }
.book-discovery-categories .genre-links a { overflow:visible; max-width:none; box-shadow:inset 0 2px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(23,21,15,.14),4px 0 0 #e1d9c7; }
.book-discovery-categories .genre-links a:hover { transform:none; background:color-mix(in srgb,var(--cover),white 6%); box-shadow:inset 0 2px 0 rgba(255,255,255,.18),inset 0 -2px 0 rgba(23,21,15,.14),4px 0 0 #e1d9c7; }
.book-discovery-categories .genre-links .genre-card__tooltip { min-width:0; margin:0; color:var(--ink); opacity:0; font:400 14px/1.45 Archivo,system-ui,sans-serif; text-align:left; }
.book-discovery-categories .genre-links a:focus-visible .genre-card__tooltip { opacity:1; visibility:visible; }
@media(hover:hover) { .book-discovery-categories .genre-links a:hover .genre-card__tooltip { opacity:1; } }
.book-discovery-categories .genre-links .category-spine-label { flex:1; display:block; min-width:0; margin:0; color:inherit; opacity:1; font:inherit; text-align:left; overflow-wrap:anywhere; }
.book-discovery-categories .genre-links .category-spine-icon { flex:none; display:block; width:24px; height:24px; min-width:0; margin:0; color:rgba(23,21,15,.55); opacity:1; }
.book-discovery-categories .category-spine-icon svg { display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.2; stroke-linecap:round; stroke-linejoin:round; }
.book-discovery-categories .category-spine-icon .category-icon__ink { stroke:rgba(23,21,15,.55); }
@media(max-width:900px) { .book-discovery-categories .genre-links { --pile-count:2; } }
@media(max-width:640px) { .book-discovery-categories .genre-links { --pile-count:1; } }
.book-discovery-sheet:not(:has(.recommendation-row)) + .book-discovery-categories { margin-top:0; padding-top:0; border:0; }
@media (min-width:1280px) {
  .book-discovery .recommendation-themes,
  .book-discovery .recommendation-row .book-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px 24px; }
  .book-discovery .recommendation-themes .book-grid { grid-template-columns:subgrid; }
  .book-discovery .book-tile--recommendation { gap:16px; }
  .book-discovery .recommendation-copy h4 { font-size:22px; }
}
.book-discovery .recommendation-themes:has(> .recommendation-row:only-child) { grid-template-columns:1fr; }
@media (min-width:801px) {
  .book-discovery .recommendation-themes:has(> .recommendation-row:nth-child(2)):not(:has(> .recommendation-row:nth-child(3))) { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .book-discovery .recommendation-row:only-child .book-tile--recommendation { grid-template-rows:auto 1fr; }
  .book-discovery .recommendation-row:only-child .book-tile__visual { grid-row:1 / span 2; }
  .book-discovery .recommendation-row:only-child .recommendation-copy { max-width:64ch; }
  .book-discovery .recommendation-row:only-child .recommendation-copy h4 { font-size:28px; }
  .book-discovery .recommendation-row:only-child .recommendation-reason { flex:none; font-size:18px; }
  .book-discovery .recommendation-row:only-child .recommendation-actions { grid-column:2; align-self:start; justify-content:flex-start; }
}
.book-discovery .recommendation-copy { overflow-wrap:anywhere; }
@media (max-width:950px) { .book-reader-tools { grid-template-columns:1fr; gap:24px; } }
@media (min-width:801px) and (max-width:1100px) { .book-discovery .book-tile--recommendation { grid-template-columns:140px minmax(0,1fr); gap:18px; } }
@media (max-width:800px) {
  .book-discovery .recommendation-themes,.book-discovery .recommendation-row .book-grid { grid-template-columns:1fr; }
  .book-discovery .recommendation-themes > .recommendation-row { grid-column:1; }
}
@media (max-width:640px) {
  .book-page .book-hero { padding-left:20px; padding-right:20px; padding-bottom:32px; }
  .book-discovery { margin-top:-12px; padding:0 20px 24px; }
  .book-discovery-sheet:has(.recommendation-row) { margin:0 -8px; padding:20px 7px; }
  .book-reader-tools { margin-top:24px; padding-top:20px; }
  .book-discovery .book-tile--recommendation { grid-template-columns:120px minmax(0,1fr); gap:16px; }
  .book-discovery .recommendation-copy h4 { font-size:23px; }
  .book-acquisition { padding:24px 20px 32px; flex-wrap:wrap; }
  .book-acquisition .primary-action { width:auto; }
  .book-discovery-categories .genre-links a { min-width:0; min-height:44px; font-size:17px; }
}

/* Keep recommendation provenance and page navigation subordinate to books. */
.pages { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.pages a,.pages [aria-current="page"] { display:inline-flex; align-items:center; justify-content:center; min-width:36px; min-height:40px; padding:6px 10px; }
.pages [aria-current="page"] { background:var(--night); color:var(--paper); }
.suggestion-invitation { margin:36px auto; max-width:1000px; }
.suggestions { max-width:1000px; margin:0 auto 64px; }
.suggestion-search label { display:block; margin-bottom:10px; font-weight:600; }
.suggestion-search__controls { display:flex; gap:12px; }
.suggestion-search input { flex:1; min-width:0; border:1px solid var(--muted); background:var(--surface); padding:13px; color:var(--ink); font:inherit; }
.suggestions button { border:1px solid var(--green-dark); background:var(--green); padding:12px 20px; color:var(--ink); font:600 15px Archivo,sans-serif; cursor:pointer; box-shadow:0 3px 0 var(--green-dark); }
.suggestions button:active { transform:translateY(2px); box-shadow:0 1px 0 var(--green-dark); }
.suggestion-help { color:var(--muted); font-size:14px; line-height:1.6; }
.suggestion-confirmation { border-left:4px solid var(--green); padding:14px 18px; background:var(--surface); }
.suggestion-list { list-style:none; padding:0; }
.suggestion-group { border-bottom:1px solid var(--edge); }
.suggestion-group>.suggestion-row { border-bottom:0; }
.suggestion-alternatives { padding:0 0 20px; }
.suggestion-alternatives summary { width:fit-content; max-width:100%; color:var(--green-dark); cursor:pointer; font-size:14px; }
.suggestion-alternatives ul { list-style:none; margin:14px 0 0; padding:0 0 0 16px; border-left:2px solid var(--edge); }
.suggestion-alternative { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:12px 0; }
.suggestion-row { display:flex; justify-content:space-between; align-items:center; gap:24px; padding:22px 0; border-bottom:1px solid var(--edge); }
.suggestion-row__details { min-width:0; overflow-wrap:anywhere; }
.suggestion-row h3 { margin:0; font:400 25px/1.25 Newsreader,serif; }
.suggestion-row p { margin:7px 0 0; color:var(--muted); }
.suggestion-row__action { flex:none; display:flex; flex-direction:column; gap:7px; align-items:flex-end; font-size:14px; }
.suggestions .sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media (max-width:600px) {
  .suggestion-row { align-items:flex-start; flex-direction:column; gap:16px; }
  .suggestion-row__action { align-items:flex-start; }
  .suggestion-alternative { align-items:flex-start; flex-direction:column; gap:8px; }
}

/* Personal tips use the same navigation treatment as other destinations. */
.recommendation-access { flex:none; align-self:stretch; display:flex; align-items:center; }
.main-nav .recommendation-progress { display:inline-flex; align-items:baseline; gap:7px; }
.recommendation-progress__count { font-size:.7em; font-variant-numeric:tabular-nums; }
progress { accent-color:var(--green-dark); }
.recommendation-onboarding { max-width:620px; padding:26px 0; }
.recommendation-onboarding h2 { font:400 28px Newsreader,serif; }
.recommendation-onboarding progress { width:100%; height:10px; }
.recommendation-onboarding .primary-action { display:inline-block; margin-top:12px; }
.personal-recommendations.book-discovery { padding:0; margin:0; max-width:none; }
.personal-recommendations__status { min-height:1.5em; margin-bottom:18px; color:var(--green-dark); }
.personal-recommendations .recommendation-themes>.recommendation-row { grid-row:span 3; }
.personal-recommendations__sources { grid-column:1/-1; font-size:12px; line-height:1.6; color:var(--muted); }
.personal-recommendations__sources summary { cursor:pointer; color:var(--green-dark); }
.personal-recommendations__sources ul { padding-left:18px; }
@media (min-width:701px) and (max-width:1100px) {
  .site-header { gap:20px; }
  .main-nav { gap:18px; }
  .site-search { min-width:140px; width:190px; }
}
@media (min-width:701px) and (max-width:950px) {
  .site-header { gap:12px; }
  .site-search { display:none; }
  .mobile-search { display:block; margin-left:auto; flex:none; }
}
@media (min-width:701px) and (max-width:800px) {
  .site-header { gap:8px; }
  .main-nav { gap:12px; }
}
@media (max-width:700px) {
  .site-header { flex-wrap:wrap; }
  .profile-switcher strong { max-width:64px; }
  .main-nav { gap:0; }
  .main-nav>a { min-width:0; padding-inline:8px; font-size:17px; }
  .main-nav .recommendation-access { flex:1; min-width:0; }
  .main-nav .recommendation-progress { width:100%; height:100%; justify-content:center; padding:14px 8px 18px; font-size:17px; }
  .main-nav .recommendation-progress.active { padding-top:12px; }
}
@media (max-width:360px) {
  .profile-switcher strong { max-width:48px; }
}
