/*
 * storyvoy.com's book pages (/bocker/), rendered by the site Worker
 * (services/api/src/site/pages.ts). Built on home.css: its fonts, colours,
 * header, footer, sections and cover grid.
 */
.page-title {
  font-size: clamp(2.2rem, 5vw, 3.2rem);
  letter-spacing: -1px;
}

/* A cover that links to its book. */
.covers.linked a {
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: var(--ink);
  text-decoration: none;
}
.covers.linked a:hover .card-title {
  text-decoration: underline;
}
.covers.linked img {
  margin-bottom: 2px;
}
.card-title {
  font: 600 15px/1.3 var(--display);
}
.card-meta {
  font: 500 13px/1.3 var(--display);
  color: var(--muted);
}
.shelf h2 {
  font-size: 1.35rem;
  display: flex;
  align-items: baseline;
  gap: 12px;
}
.shelf h2 span {
  font: 600 15px var(--display);
  color: var(--muted);
}

/* One book. */
.book {
  padding-top: 8px;
  padding-bottom: 80px;
  display: flex;
  flex-direction: column;
  gap: 56px;
}
.crumbs {
  font: 600 15px var(--display);
  color: var(--muted);
  margin-bottom: -32px;
}
.crumbs a {
  color: var(--sea);
  text-decoration: none;
}
.book-top {
  display: grid;
  gap: 32px;
  align-items: start;
}
@media (min-width: 900px) {
  .book-top {
    grid-template-columns: 1.1fr 1fr;
    gap: 56px;
  }
}
.book-cover {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 24px;
  box-shadow: var(--shadow);
  background: var(--sunken);
}
.book-text {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.book-text h1 {
  font-size: clamp(2rem, 4.4vw, 3rem);
  letter-spacing: -1px;
  line-height: 1.08;
}
.facts-row {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.facts-row li {
  font: 600 14px var(--display);
  padding: 4px 12px;
  border-radius: 999px;
  background: var(--sunken);
  color: var(--ink);
}
.book-text .lead {
  font-size: 1.2rem;
  line-height: 1.6;
}
.book-text .summary {
  color: var(--muted);
}
.access {
  font: 600 16px/1.4 var(--display);
  color: var(--aurora);
}
.book .soon {
  font: 600 15px var(--display);
  color: var(--muted);
}
.book h2 {
  font-size: clamp(1.5rem, 3vw, 2rem);
  letter-spacing: -0.5px;
  margin-bottom: 20px;
}

/* The characters, cut from the character sheet as in the app. */
.cast ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 20px 16px;
  max-width: 760px;
}
.cast li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  font: 600 16px var(--display);
  text-align: center;
}
.portrait {
  position: relative;
  display: block;
  width: min(140px, 100%);
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  background: #f4ecdc;
  border: 4px solid var(--raised);
  box-shadow: var(--shadow);
}
.portrait img {
  position: absolute;
  max-width: none;
  width: auto;
}

.how p {
  max-width: 40rem;
  color: var(--muted);
}
.how a {
  font-weight: 600;
}
