.book-year { padding: 28px 0 12px; border-top: 1px solid var(--border-soft); }
.book-year h2 { font-size: 1.2rem; margin: 0 0 26px; }
.book-cover-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(min(100%,140px),140px)); gap: 36px 28px; padding: 0 0 48px; }
.book-cover { margin: 0; min-width: 0; width: 100%; max-width: 140px; display: grid; grid-template-rows: auto 1fr; align-content: start; gap: 12px; }
.book-cover img { display: block; width: 100%; height: auto; aspect-ratio: 2 / 3; object-fit: contain; object-position: bottom; image-rendering: auto; }

@media(hover:hover) {
  .book-cover { transition:transform 160ms ease; }
  .book-cover:hover { transform:translateY(-4px); }
}
@media(prefers-reduced-motion:reduce) { .book-cover { transition:none; } .book-cover:hover { transform:none; } }

.book-cover-fallback { width: 100%; aspect-ratio: 2 / 3; display: flex; flex-direction: column; justify-content: center; text-align: center; gap: 16px; padding: 18px; border: 1px solid var(--border-soft); background: var(--surface); }
.book-cover-fallback small { font-size: .75rem; color: var(--text-muted); }
.book-cover [hidden] { display: none; }
.books-empty { grid-column: 1 / -1; padding: 32px 0; }
@media(max-width:560px) { .book-cover-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px 14px; } .book-cover-fallback { padding: 8px; font-size: .8rem; } }

.book-caption { text-align: center; font-size: .95rem; line-height: 1.35; overflow-wrap: anywhere; }

.book-rating { display: inline-block; margin-left: .5em; font-size: .55rem; line-height: 1; letter-spacing: .04em; color: #85734b; white-space: nowrap; vertical-align: .12em; }


button.book-cover { padding:0; border:0; background:none; color:inherit; font:inherit; text-align:inherit; cursor:pointer; }
.book-cover-fallback { color:var(--text); }
.book-recommendation { display:block; margin:0; font-size:.7rem; text-align:center; color:var(--accent); letter-spacing:.02em; }
.book-modal-open { overflow:hidden; }
.book-detail { width:min(720px,calc(100vw - 32px)); max-height:calc(100dvh - 40px); padding:44px 32px 32px; border:1px solid var(--border); background:var(--bg); color:var(--text); overscroll-behavior:contain; }
.book-detail::backdrop { background:rgba(30,26,20,.72); }
.book-detail-close { position:absolute; right:12px; top:10px; padding:5px 10px; border:0; background:transparent; font-size:1.5rem; color:var(--text); cursor:pointer; }
.book-detail [data-book-content] { display:grid; grid-template-columns:160px minmax(0,1fr); align-items:start; gap:28px; }
.book-detail [hidden] { display:none; }
.book-detail-cover img { width:100%; height:auto; object-fit:contain; }
.book-detail-copy h2 { font-size:1.6rem; line-height:1.35; overflow-wrap:anywhere; }
.book-detail-copy .eyebrow { margin:0 0 12px; font-size:.7rem; }
.book-author { margin:10px 0 14px; }
.book-detail-meta { display:flex; flex-wrap:wrap; align-items:center; gap:12px; font-size:.85rem; }
.book-detail-meta .book-rating { margin:0; font-size:.85rem; }
.book-detail .book-recommendation { width:fit-content; margin-top:14px; font-size:.8rem; border-bottom:1px solid var(--border-soft); }
.book-note { margin-top:24px; padding-top:20px; border-top:1px solid var(--border-soft); }
.book-note h3 { font-size:.9rem; }
.book-note p { white-space:pre-wrap; overflow-wrap:anywhere; margin:12px 0 0; }
.book-no-note { font-style:italic; }
.book-star-half { position:relative; display:inline-block; }
.book-star-half::before { content:"★"; position:absolute; inset:0; clip-path:inset(0 50% 0 0); }
@media(max-width:540px) { .book-detail {padding:44px 22px 24px;} .book-detail [data-book-content] {grid-template-columns:1fr;gap:20px;} .book-detail-cover {width:110px;} .book-detail-copy h2 {font-size:1.4rem;} }

.book-detail:focus { outline:none; }
