:root {
  --fs-ink: #171719;
  --fs-navy: #111722;
  --fs-blush: #f8e7e2;
  --fs-blush-line: #d4a59a;
  --fs-coral: #ae5d4b;
  --fs-muted: #5e5754;
  --fs-line: #ded9d5;
  --fs-white: #fff;
  --fs-offwhite: #fbfaf9;
  --fs-serif: 'Libre Baskerville', Georgia, 'Times New Roman', serif;
  --fs-sans: 'Source Sans 3', Arial, sans-serif;
}

html {
  scroll-behavior: smooth;
}
body {
  color: var(--fs-ink);
  background: var(--fs-white);
}
.wp-site-blocks {
  padding-right: 0;
  padding-left: 0;
}
.wp-site-blocks > * {
  margin-block-start: 0;
}
a,
button,
input,
select {
  touch-action: manipulation;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible {
  outline: 3px solid #154f7e;
  outline-offset: 3px;
}

.fs-option-b-header {
  min-height: 96px;
  border-bottom: 1px solid #eee9e6;
  background: #fff;
}
.fs-option-b-header__inner {
  min-height: 96px;
  gap: clamp(1.5rem, 4vw, 3rem);
  padding: 1rem 0;
}
.fs-brand {
  display: inline-flex;
  min-width: 210px;
  align-items: center;
  gap: 0.7rem;
  color: #071226;
  text-decoration: none;
}
.fs-brand img {
  display: block;
  width: 60px;
  height: 60px;
  flex: 0 0 60px;
  object-fit: contain;
}
.fs-brand__wordmark {
  display: inline-flex;
  flex-direction: column;
  font-family: 'Arial Narrow', Arial, sans-serif;
  font-size: 1.7rem;
  font-stretch: condensed;
  font-weight: 950;
  letter-spacing: -0.045em;
  line-height: 0.8;
  text-transform: uppercase;
}
.fs-primary-nav {
  flex: 1;
}
.fs-primary-nav a {
  font-size: 0.95rem;
  text-decoration: none;
}
.fs-header-find {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  color: var(--fs-ink);
  font-size: 0.875rem;
  font-weight: 700;
  text-decoration: none;
  text-transform: uppercase;
}
.fs-header-find svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentcolor;
  stroke-linecap: round;
  stroke-width: 1.8;
}

.fs-kicker,
.fs-find-book > label,
.fs-book-topics,
.fs-companion-row__type {
  margin: 0;
  color: #a74d3d;
  font-family: var(--fs-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.fs-kicker,
.fs-find-book > label {
  font-size: 0.8125rem;
  letter-spacing: 0.09em;
}

.fs-option-b-hero {
  padding: clamp(3rem, 7vw, 6rem) 0;
  background: var(--fs-blush);
}
.fs-option-b-hero__columns {
  gap: clamp(2.5rem, 6vw, 6rem);
}
.fs-option-b-hero h1 {
  max-width: 720px;
  margin: 0.75rem 0 0;
  font-family: var(--fs-serif);
  font-size: clamp(3.25rem, 4.7vw, 4.5rem);
  font-weight: 400;
  letter-spacing: -0.035em;
  line-height: 0.97;
}
.fs-hero-promise {
  max-width: 36rem;
  margin-top: 1.25rem;
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  line-height: 1.65;
}
.fs-series-image {
  margin: 0;
}
.fs-series-image img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 24px 25px rgb(83 45 36 / 0.14));
}

.fs-find-book {
  position: relative;
  z-index: 4;
  max-width: 650px;
  margin-top: 2rem;
}
.fs-find-book > label {
  display: block;
  margin-bottom: 0.65rem;
}
.fs-find-book__control {
  display: grid;
  grid-template-columns: 1fr auto;
  min-height: 64px;
  border: 1px solid var(--fs-blush-line);
  background: #fff;
}
.fs-find-book__control input {
  min-width: 0;
  min-height: 62px;
  padding: 0 1rem;
  border: 0;
  border-radius: 0;
  color: var(--fs-ink);
  background: transparent;
  font-size: 1rem;
}
.fs-find-book__control button {
  min-width: 110px;
  min-height: 62px;
  padding: 0 1.35rem;
  border: 0;
  color: #fff;
  background: var(--fs-coral);
  font-weight: 700;
}
.fs-find-book__results {
  position: absolute;
  z-index: 20;
  right: 0;
  left: 0;
  max-height: 26rem;
  margin: 0;
  padding: 0;
  overflow: auto;
  border: 1px solid var(--fs-blush-line);
  border-top: 0;
  background: #fff;
  box-shadow: 0 16px 30px rgb(83 45 36 / 0.15);
  list-style: none;
}
.fs-find-book__results li {
  margin: 0;
  border-bottom: 1px solid var(--fs-line);
}
.fs-find-book__results li:last-child {
  border-bottom: 0;
}
.fs-find-book__results a {
  display: block;
  min-height: 58px;
  padding: 0.8rem 1rem;
  color: var(--fs-ink);
  text-decoration: none;
}
.fs-find-book__results a:hover,
.fs-find-book__results [aria-selected='true'] a {
  background: #fff7f4;
}
.fs-find-book__results strong,
.fs-find-book__results span {
  display: block;
}
.fs-find-book__results strong {
  font-family: var(--fs-serif);
  font-size: 1rem;
}
.fs-find-book__results span {
  margin-top: 0.2rem;
  color: var(--fs-muted);
  font-size: 0.68rem;
  text-transform: capitalize;
}
.fs-find-book__empty,
.fs-find-book__loading {
  padding: 1rem;
  color: var(--fs-muted);
}

.fs-home-books,
.fs-home-promise,
.fs-catalog-results,
.fs-topic-children,
.fs-topic-books,
.fs-book-details-section,
.fs-book-related-section {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.fs-home-books {
  background: var(--fs-offwhite);
}
.fs-home-books__cta {
  width: 100%;
  max-width: 76.25rem;
  margin-right: auto;
  margin-bottom: 0;
  margin-left: auto;
}
.fs-home-books__cta .wp-block-buttons {
  width: 100%;
  justify-content: center;
  margin: 0;
}
.fs-home-books__button .wp-block-button__link {
  display: inline-flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  padding: 0.75rem 1.5rem;
  border: 1px solid var(--fs-coral);
  border-radius: 0.375rem;
  color: #fff;
  background: var(--fs-coral);
  box-shadow: none;
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.1;
  text-decoration: none;
  transition:
    background-color 150ms ease,
    border-color 150ms ease;
}
.fs-home-books__button .wp-block-button__link::after {
  content: '\2192';
  font-size: 1rem;
  line-height: 1;
  transition: transform 150ms ease;
}
.fs-home-books__button .wp-block-button__link:hover,
.fs-home-books__button .wp-block-button__link:focus-visible {
  border-color: color-mix(in srgb, var(--fs-coral) 82%, var(--fs-ink));
  color: #fff;
  background: color-mix(in srgb, var(--fs-coral) 82%, var(--fs-ink));
  text-decoration: none;
}
.fs-home-books__button .wp-block-button__link:hover::after {
  transform: translateX(2px);
}
.fs-home-promise {
  border-top: 1px solid var(--fs-line);
  background: #fff;
}
.fs-home-promise .wp-block-columns {
  gap: 7vw;
}
.fs-section-heading {
  margin-bottom: 2rem;
}
.fs-section-heading h2,
.fs-home-promise h2,
.fs-topic-children h2,
.fs-topic-books > h2 {
  max-width: 760px;
  margin: 0.55rem 0 0;
  font-size: clamp(2.1rem, 3.4vw, 3.4rem);
  font-weight: 400;
  letter-spacing: -0.04em;
  line-height: 1;
}

/* Catalog navigation cards.

   Subjects and Subcategories share one calm editorial card: warm paper, a thin
   border, a small radius, an editorial serif title, and a meta row carrying the
   Book count on the left and an Explore affordance on the right. Density is the
   only thing that varies between contexts and is set in the scoped sections
   below — never here — so the homepage, the Subjects directory and the
   Subcategory grid can differ without fighting each other. */
.fs-nav-card,
.fs-category-card,
.fs-subjects__link {
  position: relative;
  display: flex;
  box-sizing: border-box;
  height: 100%;
  flex-direction: column;
  gap: 0.6rem;
  border: 1px solid var(--fs-line);
  border-radius: 10px;
  background: var(--fs-offwhite);
  box-shadow: none;
  text-decoration: none;
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease,
    transform 160ms ease;
}
.fs-nav-card__meta,
.fs-category-card__count,
.fs-subjects__count {
  display: flex;
  margin: auto 0 0;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  color: var(--fs-coral);
  font-family: var(--fs-sans);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.2;
}
/* Decorative drill-down affordance. The accessible name comes from the card's
   own link text, and the Book count beside it is real markup, so this generated
   text adds a visual cue without carrying meaning of its own. */
.fs-category-card__count::after,
.fs-subjects__count::after {
  color: var(--fs-muted);
  content: 'Explore \2192';
  font-size: 0.85rem;
  font-weight: 600;
  white-space: nowrap;
}

/* The card is one tab stop: Core stretches the title link across the whole
   category card, and a Subcategory card is itself the link. Focus is therefore
   shown on the card, not on a bare inline anchor. */
.fs-category-card:focus-within,
.fs-subjects__link:focus-visible {
  outline: 3px solid #154f7e;
  outline-offset: 3px;
}
@media (hover: hover) {
  .fs-category-card:hover,
  .fs-subjects__link:hover {
    border-color: var(--fs-blush-line);
    box-shadow: 0 12px 24px -20px rgb(62 35 29 / 0.55);
    transform: translateY(-2px);
  }
}

.fs-grid--categories {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  border: 0;
}
.fs-grid--categories > li {
  border: 0;
}
.fs-category-card {
  min-height: 150px;
  padding: 1.35rem;
}
.fs-category-card__rule,
.fs-category-card__description {
  display: none;
}
.fs-category-card__title {
  font-family: var(--fs-serif);
  font-size: 1.15rem;
  font-weight: 400;
  letter-spacing: -0.01em;
  line-height: 1.3;
  overflow-wrap: anywhere;
  text-wrap: pretty;
}

/* The Subjects directory lists all 50 Subjects, so it runs denser and narrower
   than the twelve featured on the homepage. */
.fs-subjects-directory .fs-grid--categories {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem;
}
.fs-subjects-directory .fs-category-card {
  min-height: 96px;
  padding: 1rem 1.15rem;
}
.fs-subjects-directory .fs-category-card__title {
  font-size: 1.05rem;
}

/* Shared editorial Book listing. Query Loops use the theme's catalog-card
   block; Core grids use the same .fs-card markup and therefore inherit this
   exact presentation without duplicating catalog rules in the theme. */
.fs-book-query,
.fs-grid--books {
  width: 100%;
  max-width: 76.25rem;
  margin-right: auto;
  margin-left: auto;
}
.fs-book-query .fs-book-grid,
.fs-grid.fs-grid--books {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(1.35rem, 2.5vw, 2rem);
  margin: 0;
  padding: 0;
  list-style: none;
}
.fs-book-grid > .wp-block-post,
.fs-grid--books > .fs-grid__item,
.fs-catalog-card-block {
  min-width: 0;
  height: 100%;
  margin: 0;
}
.fs-card {
  position: relative;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  min-width: 0;
  flex-direction: column;
  padding: clamp(1rem, 1.8vw, 1.35rem);
  border: 1px solid #e4ddda;
  border-radius: 0.4rem;
  background: #fff;
  box-shadow: 0 12px 28px -28px rgb(62 35 29 / 0.65);
  transition:
    border-color 180ms ease,
    box-shadow 180ms ease,
    transform 180ms ease;
}
.fs-card::after {
  position: absolute;
  right: 1.25rem;
  bottom: 1.1rem;
  color: var(--fs-coral);
  content: '\2192';
  font-family: var(--fs-sans);
  font-size: 1.15rem;
  line-height: 1;
  pointer-events: none;
}
.fs-card__cover-link {
  display: grid;
  min-height: clamp(17rem, 27vw, 21rem);
  margin: 0 0 1.25rem;
  padding: clamp(1.1rem, 2.4vw, 1.65rem);
  place-items: center;
  border: 1px solid #eee2de;
  border-radius: 0.2rem;
  background: #fbf2ef;
  text-decoration: none;
}
.fs-card .fs-cover {
  overflow: hidden;
  width: min(72%, 14rem);
  aspect-ratio: 2 / 3;
  border: 0;
  border-radius: 0.12rem;
  background: transparent;
  box-shadow: none;
}
.fs-card .fs-cover__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 14px 15px rgb(83 45 36 / 0.16));
}
.fs-card .fs-cover--empty {
  display: grid;
  padding: 1rem;
  place-items: center;
  border: 1px solid #c9c5bf;
  border-top: 7px solid #315b4e;
  color: #655e5b;
  background: #efeee9;
  box-shadow: 0 14px 20px -18px rgb(83 45 36 / 0.45);
}
.fs-card .fs-cover--empty span {
  max-width: 8rem;
  padding: 0.5rem;
  font-family: var(--fs-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  line-height: 1.45;
  text-align: center;
  text-transform: uppercase;
}
.fs-card__body {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  padding: 0 0 1.75rem;
}
.fs-card__eyebrow {
  margin: 0 0 0.5rem;
  overflow: visible;
  color: #9b4f41;
  font-family: var(--fs-sans);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1.4;
  text-overflow: clip;
  text-transform: uppercase;
  white-space: normal;
}
.fs-card__title {
  margin: 0;
  font-family: var(--fs-serif);
  font-size: clamp(1.35rem, 1.15rem + 0.35vw, 1.65rem);
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1.15;
  overflow-wrap: anywhere;
  text-wrap: pretty;
}
.fs-card__title a {
  color: var(--fs-ink);
  text-decoration: none;
}
.fs-card__title a::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  content: '';
}
.fs-card__title a:focus-visible {
  outline: 0;
}
.fs-card:focus-within {
  outline: 3px solid #154f7e;
  outline-offset: 3px;
}
.fs-card:not(.fs-card--search-result) .fs-card__summary {
  display: none;
}
.fs-card--search-result .fs-card__summary {
  margin: 0.75rem 0 0;
  color: var(--fs-muted);
  font-size: 0.9rem;
  line-height: 1.55;
}
.fs-card__meta {
  margin: auto 0 0;
  padding-top: 1.15rem;
}
.fs-card .fs-badge {
  font-size: 0.68rem;
  letter-spacing: 0.07em;
}
@media (hover: hover) {
  .fs-card:hover {
    border-color: #d2b7af;
    box-shadow: 0 20px 36px -28px rgb(62 35 29 / 0.48);
    transform: translateY(-2px);
  }
  .fs-card:hover .fs-card__title a {
    color: #873f33;
  }
}
@media (min-width: 700px) {
  .fs-book-query .fs-book-grid,
  .fs-grid.fs-grid--books {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 1100px) {
  .fs-book-query .fs-book-grid,
  .fs-grid.fs-grid--books {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.fs-catalog-pagination {
  position: static;
  display: flex;
  width: 100%;
  max-width: 100%;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin: 44px auto 0;
  padding: 0;
  overflow: visible;
}
.fs-catalog-pagination .wp-block-query-pagination-numbers {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  margin: 0;
}
.fs-catalog-pagination :is(a, .page-numbers) {
  box-sizing: border-box;
  display: inline-flex;
  min-width: 44px;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  padding: 0.65rem;
  border: 1px solid var(--fs-line);
  border-radius: 0.3rem;
  color: #744137;
  background: #fff;
  font-family: var(--fs-sans);
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
}
.fs-catalog-pagination :is(.wp-block-query-pagination-previous, .wp-block-query-pagination-next) {
  padding-right: 0.95rem;
  padding-left: 0.95rem;
}
.fs-catalog-pagination :is(a:hover, a:focus-visible) {
  border-color: var(--fs-blush-line);
  color: var(--fs-ink);
  background: var(--fs-blush);
  text-decoration: none;
}
.fs-catalog-pagination .page-numbers.current,
.fs-catalog-pagination [aria-current='page'] {
  border-color: var(--fs-coral);
  color: #fff;
  background: var(--fs-coral);
}
.fs-catalog-pagination .page-numbers.dots {
  min-width: 1.5rem;
  border-color: transparent;
  color: var(--fs-muted);
  background: transparent;
}
.fs-search-results {
  margin-bottom: 4rem;
}

.fs-catalog-hero,
.fs-topic-hero,
.fs-book-hero {
  background: var(--fs-blush);
}
.fs-catalog-hero {
  padding: 3rem 0 4rem;
}
.fs-catalog-hero h1 {
  margin: 0.65rem 0 0;
  font-size: clamp(3rem, 5.2vw, 5.4rem);
  font-weight: 400;
  letter-spacing: -0.055em;
  line-height: 0.94;
}
.fs-catalog-results > h2 {
  font-size: clamp(2rem, 3vw, 3rem);
  font-weight: 400;
}
.fs-book-listing-container {
  width: 100%;
  max-width: 76.25rem;
  margin-right: auto;
  margin-left: auto;
}

.fs-topic-hero {
  padding: 1.75rem 0 3.5rem;
}
.fs-topic-hero .wp-block-query-title {
  max-width: 900px;
  margin: 1rem 0 0;
  font-size: clamp(3rem, 5.2vw, 5.4rem);
  font-weight: 400;
  letter-spacing: -0.055em;
  line-height: 0.94;
  overflow-wrap: anywhere;
}
.fs-topic-hero .wp-block-term-description {
  max-width: 48rem;
  margin-top: 1rem;
}
.fs-topic-hero .fs-find-book {
  margin-top: 2rem;
}
.fs-topic-children {
  padding-bottom: 2rem;
}
.fs-topic-children:not(:has(.fs-subjects)) {
  display: none;
}
/* Subcategories inside a Subject. Core ships these as inline pills; the theme
   restyles them as the same navigation card used everywhere else, numbered with
   a CSS counter so no sequence data is stored anywhere. */
.fs-subjects {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem;
  margin-top: 2rem;
  padding: 0;
  border: 0;
  counter-reset: fs-subcategory;
  list-style: none;
}
.fs-subjects li {
  margin: 0;
  border: 0;
  counter-increment: fs-subcategory;
}
.fs-subjects__link {
  min-height: 122px;
  align-items: stretch;
  padding: 1.15rem 1.25rem;
  color: var(--fs-ink);
  font-family: var(--fs-serif);
  font-size: 1.15rem;
  line-height: 1.3;
  overflow-wrap: anywhere;
  text-wrap: pretty;
}
.fs-subjects__link::before {
  color: var(--fs-muted);
  content: counter(fs-subcategory, decimal-leading-zero);
  font-family: var(--fs-sans);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1;
}

.fs-book-hero {
  padding: 1.75rem 0 4.35rem;
}
.fs-breadcrumbs {
  margin-bottom: 2rem;
  color: #745e59;
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
/* Subject and Subcategory pages lead with the breadcrumb, so it is set larger
   and in sentence case there. The Book page keeps its compact uppercase trail
   and its phone-only simplification. */
.fs-topic-page .fs-breadcrumbs {
  margin-bottom: 1.25rem;
  font-family: var(--fs-sans);
  font-size: 0.85rem;
  letter-spacing: 0;
  line-height: 1.5;
  text-transform: none;
}
.fs-topic-page .fs-breadcrumbs a {
  color: var(--fs-coral);
  text-decoration: none;
}
.fs-topic-page .fs-breadcrumbs a:hover {
  text-decoration: underline;
}
.fs-topic-page .fs-breadcrumbs [aria-current='page'] {
  color: var(--fs-ink);
  font-weight: 600;
}
.fs-book-hero__columns {
  max-width: 1180px;
  gap: clamp(3rem, 6.5vw, 5.5rem);
}
.fs-book-hero__cover .fs-cover {
  position: relative;
  width: 100%;
  max-width: 390px;
  margin: auto;
}
.fs-book-hero__cover .fs-cover::after {
  position: absolute;
  z-index: -1;
  right: -1.75rem;
  bottom: -1.5rem;
  width: 76%;
  height: 76%;
  border: 1px solid #c98c7d;
  content: '';
}
.fs-book-topics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-bottom: 1rem;
}
.fs-book-topics span {
  color: #8b5145;
}
.fs-book-topics a {
  color: inherit;
  text-decoration: none;
}
.fs-book-title {
  max-width: 800px;
  margin: 0.85rem 0 0;
  font-family: var(--fs-serif);
  font-size: clamp(2.75rem, 4.3vw, 4.65rem);
  font-weight: 400;
  letter-spacing: -0.052em;
  line-height: 0.95;
  overflow-wrap: anywhere;
}
.fs-book-title small {
  display: block;
  margin-top: 0.5rem;
  color: #5e4e4a;
  font-size: 0.36em;
  font-weight: 400;
  letter-spacing: -0.02em;
}
.fs-byline {
  margin-top: 0.8rem;
}
.fs-byline__credits {
  font-family: var(--fs-serif);
  font-style: italic;
}
.fs-byline__series,
.fs-byline__role {
  display: none;
}
.fs-book-summary {
  max-width: 680px;
  margin-top: 1.15rem;
  font-size: 1.05rem;
  line-height: 1.7;
}
.fs-book-hero__copy > .wp-block-post-content {
  max-width: 680px;
  margin-top: 1rem;
}
.fs-purchase {
  max-width: 700px;
  margin-top: 1.35rem;
  padding: 1.35rem;
  border: 0;
  background: #fff;
}
.fs-purchase__badges {
  margin-bottom: 1rem;
}
.fs-badge {
  border-radius: 0;
}
.fs-purchase__heading p {
  margin: 0;
  color: #9a4e40;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.fs-purchase__heading h2 {
  margin: 0.2rem 0 0;
  font-size: 1.55rem;
  font-weight: 400;
}
.fs-purchase__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-top: 1rem;
}
.fs-button,
.fs-purchase__buttons a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding: 0.7rem 1rem;
  border: 1px solid var(--fs-coral);
  border-radius: 0;
  color: #744137;
  background: #fffaf8;
  font-size: 0.75rem;
  font-weight: 700;
  text-decoration: none;
}
.fs-notice {
  border-radius: 0;
}
.fs-purchase .fs-notice {
  margin-top: 0.5rem;
  border-left: 3px solid var(--fs-coral);
  background: rgb(255 255 255 / 0.65);
}

.fs-book-details-section:empty,
.fs-book-companion-section:empty {
  display: none;
}
.fs-book-details-section:not(:has(.fs-details, .fs-scope)),
.fs-book-companion-section:not(:has(.fs-companions, .fs-claim-block)),
.fs-book-related-section:not(:has(.fs-grid)) {
  display: none;
}
.fs-book-companion-section {
  background: #fff;
}
.fs-companions {
  display: grid;
  grid-template-columns: 0.72fr 1.28fr;
  gap: 7vw;
  padding: 4rem 0;
}
.fs-companions__intro h2 {
  margin: 0.55rem 0 0;
  font-size: clamp(2.1rem, 3.4vw, 3.4rem);
  font-weight: 400;
  letter-spacing: -0.04em;
  line-height: 1;
}
.fs-companions__list {
  border-top: 1px solid var(--fs-line);
}
.fs-companion-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1.5rem;
  align-items: center;
  padding: 1.55rem 0;
  border-bottom: 1px solid var(--fs-line);
}
.fs-companion-row h3 {
  margin: 0.3rem 0 0;
  font-family: var(--fs-serif);
  font-size: 1.35rem;
  font-weight: 500;
}
.fs-companion-row h3 a {
  text-decoration: none;
}
.fs-companion-row p:not(.fs-companion-row__type) {
  margin: 0.45rem 0 0;
  color: var(--fs-muted);
  font-size: 0.85rem;
}
.fs-companion-row__buy {
  display: flex;
  align-items: center;
  gap: 0.8rem;
}
.fs-companion-row__buy .wp-element-button {
  min-height: 46px;
  border-radius: 0;
}
.fs-companions__empty {
  align-self: center;
  margin: 0;
  padding: 1.35rem 0;
  border-top: 1px solid var(--fs-line);
  border-bottom: 1px solid var(--fs-line);
  color: var(--fs-muted);
}
.fs-book-related-section {
  border-top: 1px solid var(--fs-line);
}
.fs-book-related-section .fs-section + .fs-section {
  margin-top: 4rem;
  padding-top: 3rem;
  border-top: 1px solid var(--fs-line);
}

.fs-option-b-footer {
  padding: 3.2rem 0 2.4rem;
  color: #fff;
  background: var(--fs-navy);
}
.fs-option-b-footer h2,
.fs-option-b-footer .wp-block-site-title,
.fs-option-b-footer a {
  color: #fff;
}
.fs-option-b-footer p,
.fs-option-b-footer li {
  color: #c6cad0;
  font-size: 0.85rem;
}
.fs-option-b-footer a {
  text-decoration: none;
}
.fs-option-b-footer .wp-block-separator {
  margin-top: 2rem;
  border-color: #3c424e;
}
.fs-footer-tagline {
  font-family: var(--fs-serif);
}

@media (max-width: 900px) {
  .fs-option-b-header,
  .fs-option-b-header__inner {
    min-height: 78px;
  }
  .fs-option-b-header__inner {
    padding: 0.7rem 1.15rem;
  }
  .fs-brand {
    min-width: 126px;
  }
  .fs-brand img {
    width: 52px;
    height: 52px;
  }
  .fs-header-find {
    width: 44px;
    min-width: 44px;
    padding: 0;
    overflow: hidden;
    color: transparent;
    white-space: nowrap;
  }
  .fs-header-find svg {
    flex: 0 0 18px;
    color: var(--fs-ink);
  }
  .fs-primary-nav {
    flex: 0 0 auto;
  }
  .fs-option-b-hero {
    padding: 2.75rem 0;
  }
  .fs-option-b-hero__columns {
    gap: 2rem;
  }
  .fs-option-b-hero h1 {
    font-size: clamp(2.65rem, 12vw, 4rem);
  }
  .fs-series-image {
    max-width: 520px;
    margin: auto;
  }
  /* Tablet: every catalog navigation grid drops to two columns. */
  .fs-grid--categories,
  .fs-subjects-directory .fs-grid--categories,
  .fs-subjects {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .fs-category-card {
    min-height: 138px;
  }
  .fs-subjects-directory .fs-category-card {
    min-height: 92px;
  }
  .fs-subjects__link {
    min-height: 116px;
  }
  .fs-topic-hero .wp-block-query-title,
  .fs-catalog-hero h1 {
    font-size: clamp(2.45rem, 11vw, 3.8rem);
  }
  .fs-book-hero {
    padding-bottom: 2.75rem;
  }
  .fs-book-hero__columns {
    gap: 2.5rem;
  }
  .fs-book-hero__cover {
    flex-basis: 34% !important;
  }
  .fs-book-title {
    font-size: clamp(2.35rem, 8vw, 3.4rem);
  }
  .fs-companions {
    grid-template-columns: 1fr;
    gap: 1.75rem;
  }
}

@media (max-width: 600px) {
  .fs-option-b-header__inner {
    padding-right: 1rem;
    padding-left: 1rem;
  }
  .fs-brand img {
    width: 52px;
    height: 52px;
  }
  .fs-option-b-hero__columns,
  .fs-book-hero__columns {
    display: flex;
    flex-direction: column;
  }
  .fs-option-b-hero__columns {
    flex-direction: column-reverse;
  }
  .fs-option-b-hero,
  .fs-catalog-hero,
  .fs-topic-hero,
  .fs-book-hero {
    padding-right: 1.25rem;
    padding-left: 1.25rem;
  }
  .fs-option-b-hero h1 {
    font-size: 2.8rem;
  }
  .fs-find-book__control {
    min-height: 58px;
  }
  .fs-find-book__control input {
    min-height: 56px;
  }
  .fs-find-book__control button {
    min-width: 86px;
    min-height: 56px;
    padding: 0 0.85rem;
  }
  .fs-home-books,
  .fs-home-promise,
  .fs-catalog-results,
  .fs-topic-children,
  .fs-topic-books,
  .fs-book-details-section,
  .fs-book-related-section {
    padding: 2.75rem 1.25rem;
  }
  .fs-catalog-results,
  .fs-topic-books {
    padding-bottom: 3.5rem;
  }
  .fs-search-results {
    margin-bottom: 3.5rem;
  }
  .fs-catalog-pagination {
    row-gap: 0.75rem;
  }
  .fs-catalog-pagination .wp-block-query-pagination-numbers {
    order: 3;
    flex: 0 0 100%;
  }
  .fs-catalog-pagination .wp-block-query-pagination-previous {
    order: 1;
  }
  .fs-catalog-pagination .wp-block-query-pagination-next {
    order: 2;
  }
  .fs-section-heading h2,
  .fs-home-promise h2,
  .fs-topic-children h2,
  .fs-topic-books > h2 {
    font-size: 2.15rem;
  }
  .fs-home-books__cta .wp-block-buttons,
  .fs-home-books__button {
    width: 100%;
  }
  .fs-home-books__button {
    max-width: 22rem;
  }
  .fs-home-books__button .wp-block-button__link {
    width: 100%;
  }
  .fs-topic-hero .wp-block-query-title {
    font-size: 2.45rem;
    line-height: 0.96;
  }
  /* Phones: every catalog navigation grid becomes one compact card per row.
     Cards keep their border and radius rather than collapsing into hairline
     rows, so a Subject and a Subcategory still read as the same tappable
     object they are on larger screens. */
  .fs-grid--categories,
  .fs-subjects-directory .fs-grid--categories,
  .fs-subjects {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.7rem;
  }
  .fs-category-card,
  .fs-subjects-directory .fs-category-card,
  .fs-subjects__link {
    min-height: 0;
    gap: 0.5rem;
    padding: 0.95rem 1.05rem;
  }
  .fs-category-card__title,
  .fs-subjects-directory .fs-category-card__title,
  .fs-subjects__link {
    font-size: 1.05rem;
  }
  .fs-category-card__count,
  .fs-subjects__count {
    font-size: 0.9rem;
  }
  .fs-category-card__count::after,
  .fs-subjects__count::after {
    font-size: 0.82rem;
  }
  .fs-book-hero {
    padding-top: 1.25rem;
    padding-bottom: 2.75rem;
  }
  .fs-breadcrumbs {
    margin-bottom: 1.25rem;
    font-size: 0.58rem;
    line-height: 1.5;
  }
  /* Single-Book breadcrumb on phones: Home / Books / most specific topic.
     The final crumb is the current Book, whose title is repeated as the page
     heading directly below, and the parent Subject is dropped only when a
     Subcategory is also present. `:nth-child(3):nth-last-child(3)` matches the
     third crumb only in a five-crumb trail (Home, Books, Subject, Subcategory,
     Book), so a Book with no Subcategory keeps its Subject. Positional only —
     no term name is referenced. Structured data is built separately from
     `Render::book_crumbs()` and is unaffected. */
  .fs-single-book .fs-breadcrumbs li:last-child,
  .fs-single-book .fs-breadcrumbs li:nth-child(3):nth-last-child(3) {
    display: none;
  }
  .fs-single-book .fs-breadcrumbs li:nth-last-child(2) .fs-breadcrumbs__sep {
    display: none;
  }
  .fs-book-hero__columns {
    gap: 2rem;
  }
  /* One cover width for every publication state on phones. The wider
     placeholder used to push the Book title below the fold, and a
     cover-forthcoming panel has no more to show than a real cover. Only this
     container is sized: the 2:3 ratio comes from Core's `.fs-cover`, so the
     panel and any future artwork scale down together. */
  .fs-book-hero__cover {
    width: 62%;
    flex-basis: auto !important;
    align-self: center;
  }
  /* Cap the cover element itself, not just its column. The column is a
     `wp-block-column`, and while it is stacked its width comes from
     flex-basis, so a `width` on the column has no effect — the cover kept
     filling the content box. The cap is viewport-relative (the content box is
     the viewport less the hero's 2.5rem of horizontal padding) so it does not
     compound with whatever width the column resolves to. `width: 100%`,
     `margin: auto` and Core's `aspect-ratio: 2 / 3` on `.fs-cover` are
     untouched, so the panel stays centred and stays 2:3. */
  .fs-book-hero__cover .fs-cover {
    max-width: calc(0.62 * (100vw - 2.5rem));
  }
  .fs-book-hero__cover .fs-cover::after {
    right: -14px;
    bottom: -14px;
  }
  .fs-book-topics {
    margin-bottom: 0.85rem;
    line-height: 1.5;
  }
  .fs-book-title {
    margin-top: 0.7rem;
    font-size: 2.25rem;
    line-height: 0.98;
  }
  .fs-byline {
    margin-top: 0.65rem;
  }
  .fs-book-summary {
    margin-top: 1rem;
    font-size: 0.95rem;
    line-height: 1.6;
  }
  .fs-purchase {
    margin-top: 1rem;
    padding: 1rem;
  }
  .fs-purchase__buttons {
    flex-direction: column;
  }
  .fs-purchase__buttons a {
    justify-content: center;
    min-height: 44px;
  }
  .fs-companions {
    padding: 2.75rem 1.25rem;
  }
  .fs-companion-row {
    grid-template-columns: 1fr;
    gap: 0.85rem;
    padding: 1.35rem 0;
  }
  .fs-companion-row__buy {
    align-items: stretch;
    flex-direction: column;
  }
  .fs-companion-row__buy .wp-element-button {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
  }
  .fs-option-b-footer {
    padding: 2.5rem 1.25rem 2rem;
  }
  /* Footer statistics on phones. Each of the three columns is about 101px
     wide here, and "Subcategories" at 0.75rem with 0.12em tracking needs
     roughly 112px, so it broke mid-word. Trimming the size and most of the
     tracking brings it to about 91px and keeps all three labels on one line.
     The extra class in the selector is deliberate: these rules live in Core's
     blocks.css at (0,1,1) and neither stylesheet depends on the other, so the
     Theme cannot rely on source order to win. */
  .fs-stats .fs-stats__item dt {
    font-size: 0.68rem;
    letter-spacing: 0.04em;
  }
  /* Book cards on phones: a narrower cover and a tighter vertical rhythm, so a
     1,500-Book catalog is browsable rather than one Book per screen. The
     one-column layout, the 2:3 cover ratio, the centring (from the cover
     panel's `place-items: center`) and the badge/arrow positions are
     deliberately left as they are. */
  .fs-card {
    padding: 0.9rem;
  }
  .fs-card__cover-link {
    min-height: 0;
    margin-bottom: 0.85rem;
    padding: 0.65rem;
  }
  .fs-card .fs-cover {
    width: 56%;
  }
  .fs-card__eyebrow {
    margin-bottom: 0.35rem;
  }
  /* The badge row closes the card, sharing its line with the bottom-right
     arrow rather than reserving a full empty band above it. The right padding
     keeps a long badge clear of the arrow's lane; neither moves. */
  .fs-card__body {
    padding-bottom: 0.5rem;
  }
  .fs-card__meta {
    padding-top: 0.55rem;
    padding-right: 2rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  .fs-home-books__button .wp-block-button__link,
  .fs-home-books__button .wp-block-button__link::after {
    transition: none;
  }
  .fs-category-card,
  .fs-subjects__link {
    transition: none;
  }
  .fs-category-card:hover,
  .fs-subjects__link:hover {
    transform: none;
  }
}
