/* Genre pages + /genres/ hub + titles index (prerendered by
 * scripts/genre-pages.mjs). Builds on the tokens and .nav/.btn from
 * style.css; everything here is namespaced .gp-*. Redesign 2026-09-26. */

.gp-body { min-height: 100%; display: block; background: var(--bg); color: var(--text); }

.gp { max-width: 1180px; margin: 0 auto; padding: 0 24px 40px; }

/* ── Hero ─────────────────────────────────────────────────────── */
.gp-hero { position: relative; isolation: isolate; padding: 28px 0 44px; }
.gp-glow {
  position: absolute; z-index: -1; pointer-events: none;
  left: 50%; top: -120px; width: 1000px; height: 560px; transform: translateX(-60%);
  background: radial-gradient(ellipse at center, rgba(201,162,106,.11), rgba(201,162,106,0) 62%);
}
.gp-crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: .8rem; color: var(--text-3); margin-bottom: 34px; }
.gp-crumbs a { color: var(--text-3); }
.gp-crumbs a:hover { color: var(--accent); }
.gp-crumbs [aria-current] { color: var(--text-2); }

.gp-hero-inner { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); gap: 56px; align-items: center; }
.gp-hero-copy { display: flex; flex-direction: column; gap: 18px; }
.gp-eyebrow { color: var(--accent); font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.gp-title {
  font-family: var(--font-display); font-weight: 500;
  font-size: clamp(2.3rem, 5vw, 4.1rem); line-height: 1.02; letter-spacing: -.01em;
  margin: 0; text-wrap: balance;
}
.gp-title em { font-style: italic; font-weight: 400; color: var(--accent); }
.gp-tagline { font-family: var(--font-book); font-style: italic; font-size: 1.25rem; color: var(--text); margin: -4px 0 0; }
.gp-intro { color: var(--text-2); font-size: 1.05rem; line-height: 1.65; max-width: 60ch; margin: 0; }
.gp-ctas { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 4px; }
.gp-ctas .btn-primary svg { margin-right: 2px; }
.gp-points { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 22px; padding: 0; margin: 2px 0 0; color: var(--text-3); font-size: .82rem; }
.gp-points li::before { content: "✓"; color: var(--success); margin-right: 7px; font-weight: 700; }

/* Cover fan */
.gp-fan { position: relative; height: 380px; }
.gp-fan a { position: absolute; top: 50%; left: 50%; width: 190px; border-radius: 10px; overflow: hidden;
  box-shadow: 0 24px 60px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.06); transition: transform .35s ease; }
.gp-fan img { display: block; width: 100%; height: auto; aspect-ratio: 2/3; object-fit: cover; background: var(--surface-hi); }
.gp-fan-0 { transform: translate(-128%, -46%) rotate(-9deg) scale(.86); z-index: 1; }
.gp-fan-1 { transform: translate(-50%, -52%); z-index: 3; }
.gp-fan-2 { transform: translate(28%, -46%) rotate(9deg) scale(.86); z-index: 2; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .gp-fan:hover .gp-fan-0 { transform: translate(-136%, -46%) rotate(-12deg) scale(.86); }
  .gp-fan:hover .gp-fan-2 { transform: translate(36%, -46%) rotate(12deg) scale(.86); }
}

/* ── Sections ─────────────────────────────────────────────────── */
.gp-section { padding: 34px 0 6px; border-top: 1px solid var(--border); margin-top: 18px; }
.gp-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 18px; }
.gp-head-wrap { flex-wrap: wrap; justify-content: space-between; }
.gp-head h2 { font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--text); margin: 0; }
.gp-sub { color: var(--text-3); font-size: .85rem; }
.gp-more { margin-left: auto; color: var(--text-2); font-size: .85rem; }
.gp-more:hover { color: var(--accent); }

/* Cards */
.gp-card a { display: flex; flex-direction: column; gap: 6px; color: inherit; }
.gp-cover { display: block; border-radius: 8px; overflow: hidden; background: var(--surface-hi);
  aspect-ratio: 2/3; box-shadow: 0 8px 22px rgba(0,0,0,.35), 0 0 0 1px rgba(255,255,255,.04);
  transition: transform .2s ease, box-shadow .2s ease; }
.gp-cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* One of the five books a free account can keep (FREE_SHELF_GIDS), 2026-10-17. */
.gp-cover { position: relative; }
.gp-keep { position: absolute; right: 8px; bottom: 13%; padding: 3px 8px; border-radius: 999px; font-size: .64rem; font-weight: 700;
  letter-spacing: .02em; color: #13200f; background: #a6c79c; box-shadow: 0 2px 8px rgba(0,0,0,.35); pointer-events: none; }
.gp-card a:hover .gp-cover { transform: translateY(-3px); box-shadow: 0 14px 30px rgba(0,0,0,.45), 0 0 0 1px rgba(201,162,106,.35); }
.gp-card a:focus-visible { outline: none; }
.gp-card a:focus-visible .gp-cover { box-shadow: 0 0 0 2px var(--accent); }
.gp-card-title { font-size: .9rem; font-weight: 600; line-height: 1.3; margin-top: 4px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gp-card-meta { font-size: .78rem; color: var(--text-3); line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gp-card-lg .gp-card-title { font-family: var(--font-book); font-size: 1.02rem; font-weight: 700; }

/* Shelves scroll sideways on narrow screens, sit in a row on wide ones */
.gp-shelf { list-style: none; padding: 0 0 8px; margin: 0; display: grid; grid-auto-flow: column;
  grid-auto-columns: 150px; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; }
.gp-shelf > li { scroll-snap-align: start; min-width: 0; }
.gp-shelf-lg { grid-auto-columns: 172px; counter-reset: gp; }
.gp-shelf-lg > li { counter-increment: gp; position: relative; }
.gp-shelf-lg .gp-cover::after { content: counter(gp); position: absolute; left: 8px; bottom: 8px; width: 24px; height: 24px;
  border-radius: 50%; display: grid; place-items: center; font-size: .75rem; font-weight: 700;
  background: rgba(23,19,16,.82); color: var(--accent); }
.gp-shelf-lg .gp-cover { position: relative; }

/* Full grid + tools */
.gp-grid { list-style: none; padding: 0; margin: 0; display: grid; gap: 28px 20px;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
.gp-grid > li { min-width: 0; }
.gp-grid > li[hidden] { display: none; }
.gp-tools { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.gp-tools[hidden] { display: none; }
.gp-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.gp-chip { font: inherit; font-size: .8rem; padding: 6px 12px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--border); background: transparent; color: var(--text-2); }
.gp-chip:hover { border-color: var(--accent-dim); color: var(--text); }
.gp-chip[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: #1a1200; font-weight: 600; }
.gp-sort select { font: inherit; font-size: .8rem; padding: 6px 30px 6px 12px; border-radius: 999px;
  border: 1px solid var(--border); background: var(--surface); color: var(--text); cursor: pointer; }
.gp-empty { color: var(--text-3); padding: 20px 0; }

/* Authors */
.gp-authors { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.gp-authors a { display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--border); color: var(--text-2); font-size: .88rem; }
.gp-authors a:hover { border-color: var(--accent-dim); color: var(--text); }
.gp-count { font-size: .72rem; font-weight: 700; color: var(--accent); background: var(--accent-glow); padding: 1px 7px; border-radius: 999px; }

/* FAQ */
.gp-faq details { border-bottom: 1px solid var(--border); padding: 14px 0; max-width: 760px; }
.gp-faq summary { cursor: pointer; font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: 16px; }
.gp-faq summary::-webkit-details-marker { display: none; }
.gp-faq summary::after { content: "+"; color: var(--accent); font-weight: 400; font-size: 1.2rem; line-height: 1; }
.gp-faq details[open] summary::after { content: "–"; }
.gp-faq p { color: var(--text-2); line-height: 1.6; margin: 10px 0 2px; }

/* Genre tiles (related + hub) */
.gp-genres { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.gp-genre { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto 1fr; column-gap: 16px; align-items: start;
  padding: 14px; border-radius: var(--r-md); border: 1px solid var(--border); background: var(--surface); color: inherit; height: 100%;
  transition: border-color .15s, background .15s; }
.gp-genre:hover { border-color: var(--accent-dim); background: var(--surface-hi); }
.gp-mini { grid-row: 1 / span 3; position: relative; width: 92px; height: 72px; }
.gp-mini img { position: absolute; top: 0; width: 46px; height: 69px; object-fit: cover; border-radius: 4px;
  box-shadow: 0 4px 10px rgba(0,0,0,.45); background: var(--surface-hi); }
.gp-mini img:nth-child(1) { left: 0; z-index: 3; }
.gp-mini img:nth-child(2) { left: 23px; z-index: 2; transform: scale(.92); transform-origin: left center; filter: brightness(.8); }
.gp-mini img:nth-child(3) { left: 46px; z-index: 1; transform: scale(.84); transform-origin: left center; filter: brightness(.62); }
.gp-genre-name { font-weight: 700; font-size: .95rem; line-height: 1.25; }
.gp-genre-tag { font-family: var(--font-book); font-style: italic; color: var(--text-2); font-size: .85rem; line-height: 1.35; margin-top: 3px; }
.gp-genre-count { color: var(--text-3); font-size: .78rem; margin-top: 4px; }
.gp-genres-hub { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
/* Umbrella genres (2026-10-24): /genre/philosophy/, /genre/classic-novels/. */
.gp-genres-hub .gp-genre-wide { grid-column: span 2; }
@media (max-width: 640px) { .gp-genres-hub .gp-genre-wide { grid-column: auto; } }
.gp-genre-umbrella { border-color: var(--accent-dim); background: linear-gradient(135deg, var(--accent-glow), transparent 60%); }
.gp-topics { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.gp-topics a { display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--border); color: var(--text-2); font-size: .88rem; text-decoration: none; }
.gp-topics a:hover { border-color: var(--accent-dim); color: var(--text); }
.gp-hero-hub { display: flex; flex-direction: column; gap: 16px; }
.gp-hero-hub .gp-crumbs { margin-bottom: 18px; }

/* Titles A–Z (text index, kept light) */
.gp-az { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px 26px; }
.gp-az a { color: var(--text); }
.gp-az a:hover { color: var(--accent); }
.gp-az span { display: block; color: var(--text-3); font-size: .82rem; }
.gp-letters { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 18px; }
.gp-letters a { min-width: 30px; text-align: center; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--border); color: var(--text-2); font-size: .8rem; }
.gp-letters a:hover { border-color: var(--accent-dim); color: var(--text); }
.gp-letter { font-family: var(--font-display); font-size: 1.6rem; color: var(--accent); margin: 26px 0 10px; scroll-margin-top: 80px; }

/* Footer */
.gp-footer { max-width: 1180px; margin: 30px auto 0; padding: 26px 24px 40px; border-top: 1px solid var(--border);
  display: flex; flex-wrap: wrap; gap: 10px 22px; font-size: .85rem; }
.gp-footer a { color: var(--text-3); }
.gp-footer a:hover { color: var(--accent); }

/* ── Responsive ───────────────────────────────────────────────── */
@media (max-width: 860px) {
  .gp-hero-inner { grid-template-columns: 1fr; gap: 8px; }
  .gp-fan { height: 250px; order: -1; }
  .gp-fan a { width: 124px; }
}
@media (max-width: 640px) {
  .gp { padding: 0 16px 32px; }
  .gp-hero { padding-top: 18px; }
  .gp-crumbs { margin-bottom: 18px; }
  .gp-intro { font-size: 1rem; order: 2; }
  /* Keep the play button above the fold on phones: CTAs before the intro. */
  .gp-ctas { order: 1; }
  .gp-points { order: 3; }
  .gp-ctas .btn-lg { width: 100%; justify-content: center; }
  .gp-fan { height: 210px; }
  .gp-fan a { width: 108px; }
  .gp-hide-sm { display: none; }
  .gp-grid { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 22px 14px; }
  .gp-shelf { grid-auto-columns: 128px; gap: 14px; }
  .gp-shelf-lg { grid-auto-columns: 140px; }
  .gp-head { flex-wrap: wrap; gap: 6px 12px; }
  .gp-tools { width: 100%; }
  .gp-footer { padding: 22px 16px 32px; }
}

/* ── Author pages (2026-10-15) ───────────────────────────────── */
.gp-attr { margin: -6px 0 18px; font-size: .78rem; color: var(--text-3); }
.gp-attr a { color: var(--text-3); text-decoration: underline; text-underline-offset: 2px; }
.gp-author .gp-intro { max-width: 62ch; }
.gp-az span a { color: var(--text-3); }
.gp-az span a:hover { color: var(--accent); }
h3.gp-letter { font-size: 1.1rem; }

/* ── 2026-10-18 design review ─────────────────────────────────── */
/* Serif titles in the grid; durations never break ("5h 19m"). */
.gp-card-title { font-family: var(--font-display); font-weight: 600; }
.gp-dur { white-space: nowrap; }
/* Top three of a small genre, tagged in the grid (no separate shelf). */
.gp-tag { position: absolute; left: 8px; top: 8px; padding: 3px 8px; border-radius: 999px; font-size: .64rem; font-weight: 700;
  color: var(--accent); background: rgba(23,19,16,.86); box-shadow: 0 2px 8px rgba(0,0,0,.35); pointer-events: none; white-space: nowrap; }
/* Inline links read as links: gold and underlined, like the legal pages. */
.gp-intro a, .gp-faq p a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.gp-intro a:hover, .gp-faq p a:hover { text-decoration-thickness: 2px; }
@media (max-width: 640px) {
  /* Author pages: the Wikipedia credit follows the bio, under the CTA. */
  .gp-attr { order: 2; margin: -8px 0 0; }
  .gp-fan { height: 150px; }
  .gp-fan a { width: 78px; border-radius: 6px; }
}
/* The hero glow is wider than a phone: clip it sideways so the page never scrolls horizontally. */
.gp-hero { overflow-x: clip; }

/* ── Author content (2026-10-23): portraits + life line ───────────────── */
.cp-pt { display: inline-grid; place-items: center; flex: none; border-radius: 50%; overflow: hidden;
  background: radial-gradient(circle at 35% 30%, #3a2c1f, var(--surface) 72%);
  box-shadow: inset 0 0 0 1px rgba(201,162,106,.28); color: var(--accent);
  font-family: var(--font-display); font-weight: 700; letter-spacing: -.02em; line-height: 1; }
.cp-pt img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cp-pt-lg { box-shadow: 0 0 0 1px var(--border), 0 0 0 10px var(--bg), 0 0 0 11px var(--border); }
.cp-attr { font-size: .74rem; color: var(--text-3); }
.cp-attr a { color: var(--text-3); text-decoration: underline; text-underline-offset: 3px; }
.cp-line { list-style: none; margin: 24px 0 0; padding: 0; position: relative; height: 92px; }
.cp-line::before { content: ""; position: absolute; left: 0; right: 0; top: 30px; height: 2px;
  background: linear-gradient(90deg, var(--border), var(--accent-dim), var(--border)); }
.cp-tick { position: absolute; top: 0; transform: translateX(-50%); text-align: center; white-space: nowrap; }
.cp-tick > a, .cp-tick > em, .cp-tick > span { color: inherit; text-decoration: none; }
.cp-tick a { display: block; color: var(--text); }
.cp-tick a:hover span { color: var(--accent); }
.cp-tick em { display: block; font-style: normal; font-size: .72rem; color: var(--text-3); height: 18px; }
.cp-tick i { display: block; width: 10px; height: 10px; border-radius: 50%; margin: 6px auto 8px; background: var(--bg); border: 2px solid var(--text-3); box-sizing: border-box; }
.cp-tick-book i { border-color: var(--accent); background: var(--accent); }
.cp-tick-on i { width: 16px; height: 16px; margin-top: 3px; margin-bottom: 5px; box-shadow: 0 0 0 5px rgba(201,162,106,.22); }
.cp-tick span { display: block; width: 104px; margin: 0 auto; white-space: normal; line-height: 1.3; font-size: .76rem; color: var(--text-2); }
.cp-tick-start span { margin: 0; } .cp-tick-end span { margin: 0 0 0 auto; }
.cp-tick-book span { color: var(--text); }
.cp-tick-start { transform: none; text-align: left; } .cp-tick-start i { margin-left: 0; }
.cp-tick-end { transform: translateX(-100%); text-align: right; } .cp-tick-end i { margin-right: 0; }
.cp-line-long { height: 104px; }
.cp-line-long .cp-tick span { display: block; white-space: normal; width: 128px; line-height: 1.3; margin: 0 auto; }
.cp-line-long .cp-tick-start span { margin: 0; } .cp-line-long .cp-tick-end span { margin: 0 0 0 auto; }
@media (max-width: 760px) {
  .cp-mob-hide { display: none; }
}
.cp-born { font-size: .95rem; color: var(--text-3); margin: 8px 0 0; }
/* 2026-10-23: the cover fan sits on the collar, below the face. */
.cp-hero-art { position: relative; width: 410px; height: 400px; flex: none; }
.cp-hero-art .cp-pt { position: absolute; right: 18px; top: 0; box-shadow: 0 0 0 1px var(--border), 0 0 0 12px var(--bg), 0 0 0 13px var(--border), 0 40px 80px rgba(0,0,0,.5); }
.cp-cv { position: absolute; width: 100px; height: auto; border-radius: 6px; box-shadow: 0 18px 40px rgba(0,0,0,.6), 0 0 0 1px rgba(0,0,0,.4); }
.cp-cv-0 { left: -4px; bottom: 6px; transform: rotate(-8deg); }
.cp-cv-1 { left: 74px; bottom: -6px; transform: rotate(3deg); z-index: 2; }
.cp-cv-2 { left: 152px; bottom: 4px; transform: rotate(11deg); z-index: 3; }
.cp-lw .cp-line { margin-top: 18px; }
.cp-lw-note { margin: 22px 0 0; }
.gp-authors.cp-faces a { gap: 10px; padding-left: 5px; }
.gp-authors.cp-faces .cp-pt { font-size: .74rem !important; }
.cp-credit-list { list-style: none; padding: 0; margin: 0; columns: 2 320px; column-gap: 40px; font-size: .88rem; color: var(--text-2); line-height: 1.5; }
.cp-credit-list li { break-inside: avoid; padding: 6px 0; border-bottom: 1px solid var(--border); }
.cp-credit-list b { color: var(--text); font-weight: 600; }
.cp-credit-list a { color: var(--accent); }
@media (max-width: 760px) {
  .gp-author .gp-hero-inner { display: flex; flex-direction: column; }
  .cp-hero-art { order: -1; width: 100%; height: 150px; margin: 4px 0 18px; }
  .cp-hero-art .cp-pt { left: 0; right: auto; width: 140px !important; height: 140px !important; box-shadow: 0 0 0 1px var(--border), 0 0 0 7px var(--bg), 0 0 0 8px var(--border); }
  .cp-cv { display: none; }
  /* Phones: the author's life line runs down the page instead of across. */
  .cp-line-long { height: auto; margin-top: 12px; }
  .cp-line-long::before { left: 5px; right: auto; top: 14px; bottom: 14px; width: 2px; height: auto;
    background: linear-gradient(180deg, var(--border), var(--accent-dim), var(--border)); }
  .cp-line-long .cp-tick, .cp-line-long .cp-mob-hide { position: relative; display: flex; align-items: center; gap: 12px; transform: none; text-align: left; padding: 7px 0; left: 0 !important; }
  .cp-line-long .cp-tick > a { display: flex; align-items: center; gap: 12px; }
  .cp-line-long .cp-tick i { order: -1; margin: 0; flex: none; }
  .cp-line-long .cp-tick-on i { margin: 0 -3px; }
  .cp-line-long .cp-tick em { height: auto; width: 44px; flex: none; font-size: .8rem; }
  .cp-line-long .cp-tick span, .cp-line-long .cp-tick-end span { width: auto; margin: 0; font-size: .9rem; }
  .cp-line-long .cp-tick-book span { font-family: var(--font-display); font-weight: 600; font-size: 1rem; }
  .cp-line-long .cp-tick-bare { gap: 5px; }
  .cp-line-long .cp-tick-bare i { margin-right: 7px; }
  .cp-line-long .cp-tick-bare em { width: auto; color: var(--text-2); font-size: .9rem; }
  .cp-line-long .cp-tick-bare em::after { content: " ·"; }
}

/* ── /genres/ hub, final layout 2026-10-24 (.gh-*). .gh-search,
   .gh-stats, .gh-pills and .gh-empty are shared with /titles/, /authors/
   and author pages. ───────────────────────────────────────────────── */
.gh [hidden] { display: none !important; }
.gh-search { display: flex; align-items: center; gap: 10px; flex: 0 1 380px; min-width: 240px; padding: 0 16px; height: 46px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); color: var(--text-3); }
.gh-search:focus-within { border-color: var(--accent-dim); }
.gh-search input { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: transparent; color: var(--text); font: inherit; font-size: .95rem; }
.gh-search input::placeholder { color: var(--text-3); }
.gh-stats { margin-top: 18px; color: var(--text-3); font-size: .82rem; }
.gh-stats b { color: var(--text); font-weight: 600; }
.gh-stats span { margin: 0 9px; }
.gh .gp-sub { color: var(--text-3); font-size: .9rem; }
.gh-eye { color: var(--accent); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.gh-empty { margin: 30px 0; color: var(--text-2); }
.gh-pills { list-style: none; padding: 0; margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.gh-pills a { display: inline-block; padding: 9px 14px; border-radius: 10px; border: 1px solid var(--border); background: var(--surface-hi); color: var(--text); font-size: .88rem; }
.gh-pills a:hover { border-color: var(--accent-dim); }
.gh-pills span, .gh-chips span { color: var(--text-3); margin-left: 3px; }

/* Hero */
.gh-hero { padding-bottom: 26px; }
.gh-hrow { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; }
.gh-tiles { display: flex; gap: 10px; margin: 0; flex: none; }
.gh-tiles div { display: flex; flex-direction: column-reverse; gap: 2px; padding: 12px 18px; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); }
.gh-tiles dt { color: var(--text-3); font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.gh-tiles dd { margin: 0; font-family: var(--font-display); font-size: 1.6rem; line-height: 1.1; color: var(--text); }
.gh-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-top: 24px; }
.gh-jump { display: flex; flex-wrap: wrap; gap: 8px; }
.gh-jump a { padding: 9px 15px; border-radius: 999px; border: 1px solid var(--border); color: var(--text-2); font-size: .85rem; }
.gh-jump a:hover { border-color: var(--accent-dim); color: var(--text); }

/* Umbrella shelf cards */
.gh-top { border-top: 0; margin-top: 0; padding-top: 8px; }
.gh-umbs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.gh-ucard { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 22px; align-items: center; padding: 20px 22px; border-radius: 16px; border: 1px solid var(--accent-dim); background: linear-gradient(135deg, var(--accent-glow), transparent 65%), var(--surface); }
.gh-ucovers { display: flex; gap: 6px; }
.gh-ucovers img { width: 62px; height: 93px; object-fit: cover; border-radius: 4px; box-shadow: 0 6px 14px rgba(0,0,0,.4); }
.gh-ucopy { min-width: 0; }
.gh-ucard h3 { font-family: var(--font-display); font-weight: 500; font-size: 1.6rem; line-height: 1.1; margin: 4px 0 2px; }
.gh-ucard h3 a { color: var(--text); }
.gh-ucard h3 a:hover { color: var(--accent); }
.gh-tag { font-family: var(--font-book); font-style: italic; color: var(--text-2); font-size: .9rem; margin: 0; }
.gh-chips { list-style: none; padding: 0; margin: 10px 0 12px; display: flex; flex-wrap: wrap; gap: 6px; }
.gh-chips a { display: inline-block; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--border); background: rgba(255,255,255,.03); color: var(--text); font-size: .76rem; }
.gh-chips a:hover { border-color: var(--accent-dim); }
.gh-uctas { display: flex; align-items: center; gap: 8px 16px; }
.gh-play { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: .85rem; color: var(--text); min-width: 0; }
.gh-play-i { width: 26px; height: 26px; flex: none; border-radius: 50%; background: var(--accent); position: relative; }
.gh-play-i::after { content: ""; position: absolute; left: 10px; top: 7.5px; border-left: 8px solid #1a1200; border-top: 5.5px solid transparent; border-bottom: 5.5px solid transparent; }
.gh-play:hover { color: var(--accent); }
.gh-more { margin-left: auto; color: var(--accent); font-size: .85rem; white-space: nowrap; }

/* Free-book band */
.gh-free { display: grid; grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: 30px; align-items: center; margin-top: 22px; padding: 26px 28px; border-radius: 18px; border: 1px solid rgba(127,163,119,.45); background: linear-gradient(120deg, rgba(127,163,119,.14), transparent 60%), var(--surface); }
.gh-free .gh-eye { color: var(--success); }
.gh-free h2 { font-family: var(--font-display); font-weight: 500; font-size: 1.75rem; line-height: 1.15; margin: 6px 0 8px; letter-spacing: 0; text-transform: none; }
.gh-free p { color: var(--text-2); font-size: .9rem; line-height: 1.55; margin: 0 0 16px; }
.gh-free-books { list-style: none; padding: 0; margin: 0; display: flex; justify-content: flex-end; gap: 14px; }
.gh-free-books li { flex: none; }
.gh-free-books a { display: flex; flex-direction: column; gap: 6px; width: 104px; color: var(--text-2); font-size: .74rem; line-height: 1.25; }
.gh-free-books span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gh-free-books a:hover { color: var(--text); }
.gh-free-books img { width: 104px; height: 156px; object-fit: cover; border-radius: 5px; box-shadow: 0 8px 18px rgba(0,0,0,.45); }

/* Quick-pick shelves */
.gh-shw { position: relative; }
.gh-shelf { list-style: none; padding: 0 0 6px; margin: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 132px; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.gh-shelf::-webkit-scrollbar { display: none; }
.gh-shelf li { scroll-snap-align: start; min-width: 0; }
.gh-shelf a { display: flex; flex-direction: column; gap: 3px; color: var(--text); }
.gh-shelf img { width: 132px; height: 198px; object-fit: cover; border-radius: 6px; margin-bottom: 6px; box-shadow: 0 8px 18px rgba(0,0,0,.4); }
.gh-shelf a:hover .gh-st { color: var(--accent); }
.gh-st { font-weight: 600; font-size: .86rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gh-sm { color: var(--text-3); font-size: .76rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gh-shw::after { content: ""; position: absolute; top: 0; right: 0; bottom: 40px; width: 80px; pointer-events: none; background: linear-gradient(90deg, rgba(23,19,16,0), var(--bg)); transition: opacity .2s; }
.gh-shw.gh-end::after { opacity: 0; }
.gh-arr { position: absolute; top: 79px; z-index: 1; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border); background: var(--surface-hi); color: var(--text); font-size: 1.05rem; cursor: pointer; box-shadow: 0 6px 16px rgba(0,0,0,.5); }
.gh-arr:hover { border-color: var(--accent-dim); }
.gh-next { right: -14px; }
.gh-prev { left: -14px; }

/* Genre cards */
.gh-grid { list-style: none; padding: 0; margin: 0; display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.gh-card { display: flex; flex-direction: column; gap: 14px; height: 100%; padding: 18px; border-radius: 16px; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.gh-card:hover { border-color: var(--accent-dim); background: var(--surface-hi); }
.gh-mini { display: flex; align-items: flex-end; gap: 5px; }
.gh-mini img { width: 58px; height: 87px; object-fit: cover; border-radius: 4px; box-shadow: 0 6px 14px rgba(0,0,0,.4); }
.gh-mini-c img { width: 40px; height: 60px; }
.gh-card-text { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.gh-name { font-family: var(--font-display); font-weight: 500; font-size: 1.15rem; line-height: 1.2; }
.gh-tagline { font-family: var(--font-book); font-style: italic; color: var(--text-2); font-size: .84rem; line-height: 1.35; }
.gh-ex { color: var(--text-3); font-size: .76rem; line-height: 1.4; margin-top: 6px; }
.gh-count { color: var(--accent); font-size: .76rem; font-weight: 700; letter-spacing: .03em; margin-top: auto; padding-top: 8px; }
.gh-also { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin-top: 14px; }
.gh-also > span { color: var(--text-3); font-size: .82rem; }
.gh-also .gh-pills { margin: 0; }
.gh-also .gh-pills a { padding: 7px 13px; border-radius: 999px; font-size: .82rem; }

/* Philosophy */
.gh-phil { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 18px; }
.gh-col { padding: 18px 20px; border-radius: 16px; border: 1px solid var(--border); background: var(--surface); }
.gh-colh { margin: 0 0 10px; color: var(--text-3); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.gh-era { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 22px; }
.gh-era a { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); color: var(--text); }
.gh-era a:hover .gh-name { color: var(--accent); }
.gh-en { color: var(--text-3); font-size: .7rem; font-variant-numeric: tabular-nums; }
.gh-era .gh-name { font-family: inherit; font-weight: 600; font-size: .88rem; }
.gh-row-t { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.gh-era .gh-tagline { font-size: .76rem; }
.gh-n { color: var(--accent); font-weight: 700; font-size: .8rem; }
.gh-ppl { margin-top: 16px; }
.gh-people { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 10px; }
.gh-people a { height: 100%; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 12px 4px; border-radius: 12px; background: var(--surface-hi); color: var(--text); text-align: center; }
.gh-people a:hover .gh-pname { color: var(--accent); }
.gh-people .cp-pt { margin-bottom: 6px; }
.gh-pname { font-size: .8rem; font-weight: 600; line-height: 1.2; }
.gh-pmeta { color: var(--text-3); font-size: .7rem; }

/* Collections */
.gh-colls { list-style: none; padding: 0; margin: 0; display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.gh-colls a { display: flex; flex-direction: column; gap: 4px; height: 100%; padding: 18px 20px; border-radius: 16px; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.gh-colls a:hover { border-color: var(--accent-dim); background: var(--surface-hi); }
.gh-colls .gh-mini { margin-bottom: 10px; }
.gh-colls .gh-name { font-family: inherit; font-weight: 600; font-size: 1rem; }

/* Search results */
.gh-res { border-top: 0; margin-top: 0; padding-top: 6px; }
.gh-ra { list-style: none; padding: 0; margin: 0 0 18px; display: flex; flex-wrap: wrap; gap: 8px; }
.gh-ra a { display: inline-block; padding: 9px 14px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface-hi); color: var(--text); font-size: .9rem; }
.gh-ra a:hover { border-color: var(--accent-dim); }
.gh-ra span { color: var(--text-3); margin-left: 4px; font-size: .8rem; }
.gh-rb { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.gh-rb a { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.gh-rb a:hover { border-color: var(--accent-dim); }
.gh-rb img { width: 36px; height: 54px; object-fit: cover; border-radius: 3px; flex: none; }
.gh-rb span { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gh-rb b { font-weight: 600; font-size: .9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gh-rb i { font-style: normal; color: var(--text-3); font-size: .78rem; }

@media (max-width: 1100px) {
  .gh-people { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gh-free { grid-template-columns: minmax(0, 1fr); }
  .gh-free-books { justify-content: flex-start; overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
}
@media (max-width: 900px) {
  .gh-umbs, .gh-phil { grid-template-columns: minmax(0, 1fr); }
  .gh-hrow { flex-direction: column; align-items: flex-start; gap: 18px; }
  .gh-arr { display: none; }
}
@media (max-width: 560px) {
  .gh-ucard { grid-template-columns: minmax(0, 1fr); padding: 16px 18px; }
  .gh-ucovers { display: none; }
  .gh-uctas { flex-wrap: wrap; }
  .gh-more { margin-left: 0; }
  .gh-era { grid-template-columns: minmax(0, 1fr); }
  .gh-tiles div { padding: 9px 12px; }
  .gh-tiles dd { font-size: 1.25rem; }
  .gh-search { flex-basis: 100%; }
  .gh-free { padding: 20px; }
  .gh-free-books a, .gh-free-books img { width: 84px; }
  .gh-free-books img { height: 126px; }
  .gh-shw::after { display: none; }
}

/* ── /titles/ A–Z, redesign 2026-10-24 (.gt-*) ───────────────────── */
.gt-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-top: 26px; }
.gt-tools[hidden] { display: none; }
.gt-sortl { margin-left: auto; color: var(--text-3); font-size: .82rem; display: flex; align-items: center; gap: 8px; }
.gt { display: grid; grid-template-columns: 30px minmax(0, 1fr) 270px; gap: 28px; align-items: start; }
.gt-rail { position: sticky; top: 76px; display: flex; flex-direction: column; align-items: center; gap: 1px; font-size: .74rem; padding-top: 18px; }
.gt-rail a, .gt-rail span { width: 26px; text-align: center; padding: 2px 0; border-radius: 6px; }
.gt-rail a { color: var(--text-2); }
.gt-rail a:hover { background: var(--accent); color: #1a1200; }
.gt-rail span, .gt-rail a.is-off { color: var(--text-3); opacity: .4; }
.gt-group { scroll-margin-top: 80px; }
.gt-letter { font-family: var(--font-display); font-weight: 500; font-size: 2.2rem; color: var(--accent); margin: 26px 0 4px; padding-bottom: 6px; border-bottom: 1px solid var(--border); }
.gt-list { list-style: none; padding: 0; margin: 0; }
.gt-flat:empty { display: none; }
.gt-sorted .gt-flat { margin-top: 18px; }
.gt-row { display: grid; grid-template-columns: 40px minmax(0, 1fr) 190px 150px 92px; gap: 16px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); }
.gt-cv img { display: block; width: 40px; height: 60px; object-fit: cover; border-radius: 3px; background: var(--surface); }
.gt-t { min-width: 0; }
.gt-t > a { color: var(--text); font-weight: 600; font-size: .95rem; }
.gt-t > a:hover { color: var(--accent); }
.gt-sub { display: block; color: var(--text-3); font-size: .8rem; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gt-free { margin-left: 8px; padding: 2px 6px; border-radius: 4px; background: var(--success); color: #10140d; font-size: .62rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; vertical-align: 2px; }
.gt-vols { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.gt-vols a { padding: 2px 8px; border-radius: 6px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: .74rem; }
.gt-vols a:hover { border-color: var(--accent-dim); color: var(--text); }
.gt-a { color: var(--text-2); font-size: .88rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gt-a a { color: var(--text-2); border-bottom: 1px solid var(--border); }
.gt-a a:hover { color: var(--accent); }
.gt-g { justify-self: start; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--border); color: var(--text-2); font-size: .72rem; }
.gt-g:hover { border-color: var(--accent-dim); color: var(--text); }
.gt-d { text-align: right; color: var(--text-2); font-size: .82rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.gt-side { position: sticky; top: 76px; display: flex; flex-direction: column; gap: 16px; padding-top: 26px; }
.gt-box { padding: 18px 20px; border-radius: 16px; border: 1px solid var(--border); background: var(--surface); }
.gt-box h2 { font-family: var(--font-display); font-weight: 500; font-size: 1.15rem; margin: 0 0 8px; }
.gt-srow { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-top: 1px solid var(--border); color: var(--text); font-size: .88rem; }
.gt-box h2 + .gt-srow { border-top: 0; }
.gt-srow img { width: 30px; height: 45px; object-fit: cover; border-radius: 2px; flex: none; }
.gt-srow i { margin-left: auto; font-style: normal; color: var(--text-3); font-size: .78rem; }
.gt-srow:hover span { color: var(--accent); }
.gt-page [hidden] { display: none !important; }
@media (max-width: 1100px) { .gt { grid-template-columns: 30px minmax(0, 1fr); } .gt-side { display: none; } }
@media (max-width: 760px) {
  .gt { grid-template-columns: minmax(0, 1fr); }
  .gt-rail { position: sticky; top: 56px; z-index: 2; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; background: var(--bg); padding: 8px 0; gap: 2px; }
  .gt-row { grid-template-columns: 40px minmax(0, 1fr) auto; gap: 12px; }
  .gt-a { grid-column: 2; grid-row: 2; margin-top: -8px; }
  .gt-g { display: none; }
  .gt-d { grid-column: 3; grid-row: 1; }
  .gt-sortl { margin-left: 0; }
}

/* ── /authors/ index, redesign 2026-10-24 (.au-*) ─────────────────── */
.au [hidden] { display: none !important; }
.au-feat { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
.au-feat a { display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; padding: 20px 12px; text-align: center; border-radius: 16px; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.au-feat a:hover { border-color: var(--accent-dim); background: var(--surface-hi); }
.au-feat .cp-pt { margin-bottom: 8px; }
.au-feat b { font-size: .95rem; line-height: 1.25; }
.au-feat i { font-style: normal; color: var(--text-3); font-size: .78rem; }
.au-feat em { font-style: normal; color: var(--accent); font-size: .78rem; font-weight: 700; margin-top: 4px; }
.au-eras { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); border: 1px solid var(--border); border-radius: 16px; overflow: hidden; background: var(--surface); position: relative; }
.au-eras::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--success), var(--accent)); }
.au-era { padding: 22px 18px 18px; border-right: 1px solid var(--border); }
.au-era:last-child { border-right: 0; }
.au-span { color: var(--text-3); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.au-era h3 { font-family: var(--font-display); font-weight: 500; font-size: 1.2rem; line-height: 1.2; margin: 6px 0 10px; }
.au-era ul { list-style: none; padding: 0; margin: 0; }
.au-era li a { display: block; padding: 3px 0; color: var(--text-2); font-size: .86rem; }
.au-era li a:hover { color: var(--accent); }
.au-en { color: var(--accent); font-size: .76rem; font-weight: 700; margin-top: 10px; }
.au-dir { columns: 4 220px; column-gap: 32px; }
.au-l { break-inside: avoid; margin-bottom: 22px; scroll-margin-top: 80px; }
.au-l h3 { font-family: var(--font-display); font-weight: 500; font-size: 1.6rem; color: var(--accent); margin: 0 0 6px; padding-bottom: 4px; border-bottom: 1px solid var(--border); }
.au-l ul { list-style: none; padding: 0; margin: 0; }
.au-l li { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 4px 0; font-size: .88rem; }
.au-l li > a:first-child { color: var(--text); flex: none; max-width: 62%; }
.au-l li > a:first-child:hover { color: var(--accent); }
.au-l li span { color: var(--text-3); font-size: .76rem; white-space: nowrap; }
.au-one > a:first-child { color: var(--text-2) !important; }
.au-bk { color: var(--text-3); font-style: italic; font-size: .76rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; text-align: right; }
.au-bk:hover { color: var(--accent); }

/* ── Author pages, round 3 2026-10-24 (.cp-facts/.cp-steps/.cp-rows) ── */
.cp-facts { display: flex; flex-wrap: wrap; gap: 14px 30px; margin: 2px 0 0; }
.cp-facts div { display: flex; flex-direction: column; gap: 3px; }
.cp-facts dt { color: var(--text-3); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.cp-facts dd { margin: 0; font-family: var(--font-display); font-size: 1.25rem; color: var(--text); }
.cp-steps { list-style: none; padding: 0; margin: 14px 0 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.cp-steps a { position: relative; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 18px; height: 100%; padding: 22px; border-radius: 18px; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.cp-steps a:hover { border-color: var(--accent-dim); background: var(--surface-hi); }
.cp-steps img { width: 96px; height: 144px; object-fit: cover; border-radius: 6px; }
.cp-step-n { position: absolute; top: -13px; left: 20px; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #1a1200; font-weight: 800; font-size: .85rem; }
.cp-step-t { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cp-step-t b { font-family: var(--font-display); font-weight: 500; font-size: 1.25rem; line-height: 1.15; }
.cp-why { color: var(--text-2); font-size: .85rem; line-height: 1.5; }
.cp-step-m { color: var(--accent); font-size: .78rem; font-weight: 700; margin-top: auto; }
.cp-rows { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.cp-rows[hidden] { display: none; }
.cp-rows a { display: grid; grid-template-columns: 54px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 12px 16px; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.cp-rows a:hover { border-color: var(--accent-dim); background: var(--surface-hi); }
.cp-rows img { width: 54px; height: 81px; object-fit: cover; border-radius: 4px; }
.cp-row-t { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cp-row-t b { font-weight: 600; font-size: .95rem; }
.cp-row-t span { color: var(--text-2); font-size: .8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cp-row-m { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; color: var(--text-3); font-size: .76rem; white-space: nowrap; }
.cp-row-m em { font-style: normal; color: var(--text); font-size: .85rem; }
.cp-more { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; }
.cp-rel { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px; }
.cp-rel a { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 16px 8px; border-radius: 14px; background: var(--surface); border: 1px solid var(--border); color: var(--text); text-align: center; }
.cp-rel a:hover { border-color: var(--accent-dim); }
.cp-rel .cp-pt { margin-bottom: 6px; }
.cp-rel b { font-size: .85rem; line-height: 1.2; }
.cp-rel span { color: var(--text-3); font-size: .74rem; }
.gp-author [hidden] { display: none !important; }
@media (max-width: 900px) { .cp-steps, .cp-more { grid-template-columns: minmax(0, 1fr); } .cp-rows { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px) { .cp-steps a { grid-template-columns: 72px minmax(0, 1fr); } .cp-steps img { width: 72px; height: 108px; } }
/* The hub, A–Z and authors heroes keep their intro under the headline on
   phones (genre pages move it below the play button). */
.gh .gp-hero-hub .gp-intro, .gt-page .gp-hero-hub .gp-intro, .au .gp-hero-hub .gp-intro { order: 0; }

