/* ==========================================================================
   MMP — Books page
   File: assets/css/books.css
   ========================================================================== */

/* ==========================================================================
   STOREFRONT (2026-10-15)
   /books/ is the store home: masthead, live WooCommerce product grid,
   Coming Soon (Launch Circle feature + upcoming title), closing CTA.
   Sections share the page gutter (--mmp-container-padding) so all text starts on one edge.
   ========================================================================== */

.mmp-store-section {
  padding: clamp(4rem, 6vw, 5.5rem) 0 !important;
  margin: 0 !important;
}

.mmp-store-wrap.mmp-container-wide {
  padding-inline: 0 !important; /* .mmp-container-wide already sets the gutter (page grid, 2026-10-19) */
  box-sizing: border-box;
}

.mmp-store-head {
  margin: 0 0 2rem !important;
}

.mmp-store-head .mmp-kicker {
  margin: 0 0 10px !important;
}

.mmp-store-head h2 {
  font-size: clamp(2rem, 3.2vw, 3rem) !important;
  line-height: var(--mmp-h2-line-height) !important;
  letter-spacing: var(--mmp-h2-tracking);
  color: var(--mmp-page-ink) !important;
  margin: 0 !important;
}

/* ---- Product grid ------------------------------------------------------ */

.mmp-store-shop {
  background: #fff;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  margin: 0 !important;
  padding: 0 !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products::before,
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products::after {
  display: none !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products li.product {
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  float: none !important;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--mmp-page-border-light);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 14px 34px rgba(48, 43, 40, 0.08);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products li.product:hover {
  transform: translateY(-4px);
  box-shadow: 0 22px 46px rgba(48, 43, 40, 0.14);
}

/* Cover in a cream square frame; hide Astra's on-image bag button.
   Thumbnails are uncropped (WooCommerce setting), so every trim size
   (6x9, 7x10, 8.5x11, 8x8) is scaled to fit the same square without
   cropping: portrait books fill the height and sit centered. The cover
   is absolutely positioned so a tall image can never stretch the frame. */
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-thumbnail-wrap {
  position: relative;
  aspect-ratio: 1 / 1;
  background: var(--mmp-page-cream);
  margin: 0 !important;
  padding: 0 !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-thumbnail-wrap > a.woocommerce-LoopProduct-link {
  /* !important: Astra's woocommerce-grid.css sets position: relative with a more specific selector */
  position: absolute !important;
  inset: 28px !important;
  display: block;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-thumbnail-wrap img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  max-width: none;
  object-fit: contain;
  object-position: center;
  margin: 0 !important;
  filter: drop-shadow(0 12px 18px rgba(48, 43, 40, 0.2));
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .ast-on-card-button {
  display: none !important;
}

/* SAB (external) card buttons open in a new tab: mark them like other external links. */
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) a.button.product_type_external::after {
  content: " ↗";
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  padding: 28px 28px 30px !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .ast-woo-product-category {
  font-family: var(--mmp-font-body);
  font-size: 0.7rem !important;
  font-weight: 700;
  letter-spacing: var(--mmp-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--mmp-page-blue) !important;
  opacity: 1 !important;
  margin: 0 0 10px !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .woocommerce-loop-product__title {
  font-family: var(--mmp-font-heading) !important;
  font-size: 1.2rem !important;
  font-weight: 700 !important;
  line-height: var(--mmp-h3-line-height) !important;
  color: var(--mmp-page-ink) !important;
  margin: 0 0 14px !important;
  padding: 0 !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .price {
  font-family: var(--mmp-font-body);
  font-size: 1rem !important;
  font-weight: 800;
  color: var(--mmp-page-ink) !important;
  margin: 0 0 24px !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap .button {
  margin-top: auto !important;
  width: 100%;
  text-align: center;
  background: var(--mmp-page-ink) !important;
  color: var(--mmp-page-paper) !important;
  border: 1px solid var(--mmp-page-ink) !important;
  border-radius: 999px !important;
  font-family: var(--mmp-font-body);
  font-size: 0.82rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 14px 20px !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap .button:hover {
  background: var(--mmp-page-gold) !important;
  border-color: var(--mmp-page-gold) !important;
  color: var(--mmp-page-ink) !important;
}

/* Coming Soon "Learn More": outlined, so the dark buttons read as the
   ways to buy, preorder or back a book. */
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap .button.mmp-btn-subtle {
  background: #fff !important;
  color: var(--mmp-page-ink) !important;
  border-color: var(--mmp-page-border) !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap .button.mmp-btn-subtle:hover,
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap .button.mmp-btn-subtle:focus-visible {
  background: var(--mmp-page-cream) !important;
  border-color: var(--mmp-page-ink) !important;
  color: var(--mmp-page-ink) !important;
}

/* Upcoming Releases ([mmp_upcoming_releases]): featured Launch Circle card,
   then every other upcoming book as a store card. */
.mmp-store-coming-feature-row + .mmp-store-upcoming {
  margin-top: 28px;
}

.mmp-store-coming-feature-row .mmp-store-coming-card--launch .mmp-store-cover {
  flex-basis: 36%;
}

/* Byline under the title: author(s), then organization(s) (inc/mmp-catalog.php) */
.mmp-product-byline {
  margin: -6px 0 14px;
}

.mmp-product-byline p {
  font-family: var(--mmp-font-body);
  line-height: 1.4;
  margin: 0 !important;
}

.mmp-product-author {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--mmp-page-ink);
}

.mmp-product-organization {
  font-size: 0.82rem;
  color: var(--mmp-page-muted) !important;
  margin-top: 2px !important;
}

.mmp-store-coming-card--launch .mmp-product-byline {
  margin: 0 0 12px;
}

.mmp-store-coming-card--launch .mmp-product-author,
.mmp-store-coming-card--launch .mmp-product-organization {
  color: rgba(255, 250, 241, 0.86) !important;
}

/* Release status + imprint badges (inc/mmp-catalog.php) */
.mmp-product-badges {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px 10px;
  margin: 0 0 18px;
}

.mmp-product-status {
  flex-shrink: 0;
  font-family: var(--mmp-font-body);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  line-height: 1;
  border-radius: 999px;
  padding: 6px 10px;
  border: 1px solid var(--mmp-page-border);
  color: var(--mmp-page-blue);
}

.mmp-product-status--preorder {
  border-style: dashed;
}

.mmp-product-status--published {
  background: var(--mmp-page-green-tint);
  border-color: var(--mmp-page-green-tint);
  color: var(--mmp-page-green);
}

.mmp-product-status--launch-circle {
  background: var(--mmp-page-gold);
  border-color: var(--mmp-page-gold);
  color: var(--mmp-page-ink);
}

.mmp-product-imprint {
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--mmp-font-body);
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--mmp-page-muted);
}

/* Imprint logo at the right end of the badge row. The logos are cream (for
   dark backgrounds) or ink, so all are shown as ink silhouettes to read on
   the white card. */
.mmp-product-imprint-logo {
  flex-shrink: 0;
  display: block;
  width: 24px !important;
  height: 24px !important;
  object-fit: contain;
  margin: -4px 0 -4px auto !important;
  filter: brightness(0);
  opacity: 0.82;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .added_to_cart {
  display: block;
  margin-top: 10px;
  text-align: center;
  font-weight: 800;
  color: var(--mmp-page-blue);
}

/* ---- Coming soon ------------------------------------------------------- */

.mmp-store-coming {
  background:
    radial-gradient(circle at 88% 12%, rgba(216, 180, 106, 0.14), transparent 34%),
    var(--mmp-page-cream);
}

.mmp-store-coming-card {
  height: 100%;
  background: #fff;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 14px 34px rgba(48, 43, 40, 0.08);
  display: flex;
  flex-direction: column;
}

.mmp-store-coming-card--launch {
  flex-direction: row;
  background: var(--mmp-page-ink);
  color: var(--mmp-page-paper);
}

.mmp-store-cover {
  margin: 0 !important;
  background: var(--mmp-page-cream);
  padding: 28px;
  box-sizing: border-box;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

.mmp-store-coming-card--launch .mmp-store-cover {
  flex: 0 0 42%;
  aspect-ratio: auto;
  background: rgba(255, 250, 241, 0.06);
}

.mmp-store-cover img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 12px 18px rgba(0, 0, 0, 0.25));
}

.mmp-store-coming-body {
  padding: 26px 26px 28px !important;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}

.mmp-store-coming-body h3 {
  font-size: clamp(1.4rem, 2vw, 1.8rem) !important;
  line-height: var(--mmp-h3-line-height) !important;
  color: var(--mmp-page-ink) !important;
  margin: 12px 0 8px !important;
}

.mmp-store-coming-body p {
  color: var(--mmp-page-muted);
  line-height: 1.65;
  margin: 0 0 12px !important;
}

.mmp-store-coming-card--launch .mmp-store-coming-body h3 {
  color: var(--mmp-page-paper) !important;
}

.mmp-store-coming-card--launch .mmp-store-coming-body p {
  color: rgba(255, 250, 241, 0.86);
}

.mmp-store-tagline {
  font-family: var(--mmp-font-editorial);
  font-style: italic;
  font-size: 1.1rem;
}

.mmp-store-status {
  align-self: flex-start;
  font-family: var(--mmp-font-body);
  font-size: 0.68rem !important;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  line-height: 1 !important;
  border-radius: 999px;
  padding: 7px 11px;
  margin: 0 !important;
  border: 1px dashed var(--mmp-page-border);
  color: var(--mmp-page-blue) !important;
}

.mmp-store-coming-card--launch .mmp-store-status {
  background: var(--mmp-page-gold);
  border: 1px solid var(--mmp-page-gold);
  color: var(--mmp-page-ink) !important;
}

.mmp-store-explainer {
  border-left: 3px solid var(--mmp-page-gold);
  padding-left: 16px !important;
  margin: 8px 0 18px !important;
}

.mmp-store-explainer h4 {
  font-size: 0.95rem !important;
  color: var(--mmp-page-paper) !important;
  margin: 0 0 6px !important;
}

.mmp-store-explainer p {
  font-size: 0.92rem;
  margin: 0 !important;
}

/* ---- Buttons ----------------------------------------------------------- */

.mmp-store-btn-row {
  display: flex !important;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: auto !important;
}

.mmp-store-btn .wp-block-button__link {
  background: var(--mmp-page-gold) !important;
  color: var(--mmp-page-ink) !important;
  border: 1px solid var(--mmp-page-gold) !important;
  border-radius: 999px !important;
  font-family: var(--mmp-font-body);
  font-size: 0.85rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none !important;
  padding: 14px 24px;
}

.mmp-store-btn .wp-block-button__link:hover {
  background: var(--mmp-page-gold-light) !important;
  border-color: var(--mmp-page-gold-light) !important;
}

.mmp-store-btn-outline .wp-block-button__link {
  background: transparent !important;
  color: var(--mmp-page-paper) !important;
  border-color: rgba(255, 250, 241, 0.5) !important;
}

.mmp-store-btn-outline .wp-block-button__link:hover {
  background: rgba(255, 250, 241, 0.1) !important;
  border-color: rgba(255, 250, 241, 0.8) !important;
}

/* ---- Closing ----------------------------------------------------------- */

.mmp-store-closing {
  background:
    radial-gradient(circle at 85% 18%, rgba(199, 151, 77, 0.2), transparent 34%),
    var(--mmp-page-ink);
  color: var(--mmp-page-paper);
  text-align: center;
  padding: clamp(4rem, 6vw, 5.5rem) 0 !important;
  margin: 0 !important;
}

.mmp-store-closing .mmp-kicker {
  color: var(--mmp-page-gold);
  margin: 0 0 12px !important;
}

.mmp-store-closing h2 {
  color: var(--mmp-page-paper) !important;
  font-size: clamp(2rem, 3.4vw, 3.2rem) !important;
  line-height: var(--mmp-h2-line-height) !important;
  letter-spacing: var(--mmp-h2-tracking);
  margin: 0 0 16px !important;
}

.mmp-store-closing p {
  color: rgba(255, 250, 241, 0.82);
  max-width: 640px;
  margin: 0 auto !important;
}

.mmp-store-closing .mmp-store-btn-row {
  justify-content: center;
  margin-top: 28px !important;
}

/* ---- Responsive -------------------------------------------------------- */

@media (max-width: 1100px) {
  .mmp-store-coming-card--launch {
    flex-direction: column;
  }

  .mmp-store-coming-card--launch .mmp-store-cover {
    flex: 0 0 auto;
    aspect-ratio: 16 / 9;
    width: 100%; /* Safari otherwise widens the frame to keep 16:9 at the 420px min-height (747px on a phone) */
  }
}

@media (max-width: 920px) {
  :is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 560px) {
  :is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) ul.products {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* Storefront fixes: covers are positioned inside their frames so the
   frame (not the image's natural size) sets the card height. */
.mmp-store-cover {
  position: relative;
  min-height: 0;
  overflow: hidden;
}

.mmp-store-cover img {
  position: absolute;
  inset: 28px;
  width: calc(100% - 56px) !important;
  height: calc(100% - 56px) !important;
}

.mmp-store-coming-card--launch .mmp-store-cover {
  min-height: 420px;
}

.mmp-store-closing .mmp-store-wrap > p {
  margin-left: auto !important;
  margin-right: auto !important;
}

/* ==========================================================================
   FILTER BAR (2026-10-16) — [mmp_book_filters], inc/mmp-book-filters.php
   ========================================================================== */

.mmp-book-filter {
  background: #fff;
  border-bottom: 1px solid var(--mmp-page-border-light);
  padding: 22px 0;
}

.mmp-book-filter-wrap {
  padding-inline: 0; /* .mmp-container-wide already sets the gutter (page grid, 2026-10-19) */
  box-sizing: border-box;
}

/* Shortcode output sits directly in .entry-content, where an Astra inline
   rule (page-builder layout) sets max-width: none on its children. Restore
   the 1440px page container so the bar and results line up with the
   masthead and the other sections. */
.mmp-book-filter-wrap.mmp-container-wide,
.mmp-store-results > .mmp-store-wrap.mmp-container-wide,
.mmp-store-coming > .mmp-store-wrap.mmp-container-wide {
  max-width: var(--mmp-container-wide-width) !important;
  margin-inline: auto !important;
}

.mmp-book-filter-form {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) repeat(3, minmax(0, 1fr)) auto;
  align-items: end;
  gap: 14px;
  margin: 0;
}

.mmp-book-filter-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
  min-width: 0;
}

.mmp-book-filter-label {
  font-family: var(--mmp-font-body);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: var(--mmp-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--mmp-page-muted);
}

.mmp-book-filter select,
.mmp-book-filter input[type="search"] {
  width: 100%;
  height: var(--mmp-field-height);
  box-sizing: border-box;
  font-family: var(--mmp-font-body);
  font-size: 0.95rem;
  color: var(--mmp-page-ink);
  background-color: var(--mmp-field-bg);
  border: var(--mmp-field-border);
  border-radius: var(--mmp-field-radius);
  padding: 0 var(--mmp-field-padding-x);
  margin: 0;
  box-shadow: none;
}

.mmp-book-filter select {
  appearance: none;
  padding-right: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23302b28' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  cursor: pointer;
}

.mmp-book-filter select:focus,
.mmp-book-filter input[type="search"]:focus {
  outline: 2px solid var(--mmp-field-focus);
  outline-offset: 1px;
  border-color: var(--mmp-field-focus);
}

.mmp-book-filter-search-box {
  position: relative;
  display: block;
}

.mmp-book-filter-search-box input[type="search"] {
  padding-right: 104px;
}

.mmp-book-filter-search-box button {
  position: absolute;
  top: 5px;
  right: 5px;
  bottom: 5px;
  padding: 0 18px;
  border: 0;
  border-radius: 999px;
  background: var(--mmp-page-ink);
  color: var(--mmp-page-paper);
  font-family: var(--mmp-font-body);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
}

.mmp-book-filter-search-box button:hover,
.mmp-book-filter-search-box button:focus-visible {
  background: var(--mmp-page-gold);
  color: var(--mmp-page-ink);
}

.mmp-book-filter-clear {
  align-self: center;
  margin-top: 20px;
  font-family: var(--mmp-font-body);
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--mmp-page-blue);
  white-space: nowrap;
}

/* The phone panel's parts (Kevin, 2026-10-27). Wider screens: the dropdowns
   sit in the bar's grid as before, and the panel's extras stay hidden. */
.mmp-book-filter-panel {
  display: contents;
}

.mmp-book-filter-toggle,
.mmp-book-filter-backdrop,
.mmp-book-filter-panel-head,
.mmp-book-filter-show,
.mmp-book-filter-search-icon {
  display: none;
}

/* Filtering: one results grid replaces the default sections */
.mmp-books-filtered .mmp-store-shop,
.mmp-books-filtered .mmp-store-coming {
  display: none !important;
}

.mmp-store-results {
  background: #fff;
}

.mmp-book-filter-empty {
  font-family: var(--mmp-font-body);
  color: var(--mmp-page-muted);
}

@media (max-width: 960px) {
  .mmp-book-filter-form {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .mmp-book-filter-search {
    grid-column: 1 / -1;
  }

  .mmp-book-filter-clear {
    grid-column: 1 / -1;
    margin-top: 0;
  }
}

@media (max-width: 600px) {
  .mmp-book-filter-form {
    grid-template-columns: minmax(0, 1fr);
  }

  /* Phones: a short search line with a Filters button that opens the
     dropdowns in a panel from the bottom (assets/js/book-filters.js sets
     data-sheet; without the script the bar stays stacked as above). */
  .mmp-book-filter-form[data-sheet] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
  }

  [data-sheet] .mmp-book-filter-search {
    flex: 1 1 0;
  }

  [data-sheet] :is(.mmp-book-filter-search > .mmp-book-filter-label, .mmp-book-filter-search-text) {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  [data-sheet] .mmp-book-filter-search-box input[type="search"] {
    padding-right: 50px;
  }

  [data-sheet] .mmp-book-filter-search-box button {
    width: 36px;
    padding: 0;
    display: grid;
    place-items: center;
  }

  [data-sheet] .mmp-book-filter-search-icon {
    display: block;
  }

  .mmp-book-filter [data-sheet] .mmp-book-filter-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--mmp-field-height);
    padding: 0 16px;
    background: transparent;
    color: var(--mmp-page-ink);
    border: 1px solid var(--mmp-page-ink);
    border-radius: 999px;
    font-family: var(--mmp-font-body);
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    line-height: 1;
    text-transform: uppercase;
    white-space: nowrap;
    cursor: pointer;
  }

  .mmp-book-filter [data-sheet] .mmp-book-filter-toggle:is(:hover, :focus-visible) {
    background: var(--mmp-page-ink);
    color: var(--mmp-page-paper);
  }

  .mmp-book-filter-count {
    padding: 2px 7px;
    border-radius: 999px;
    background: var(--mmp-page-gold);
    color: var(--mmp-page-ink);
    letter-spacing: 0;
  }

  [data-sheet] .mmp-book-filter-clear {
    flex-basis: 100%;
    margin-top: 0;
  }

  [data-sheet] .mmp-book-filter-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 100000;
    background: rgba(48, 43, 40, 0.45);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, visibility 0s linear 0.25s;
  }

  [data-sheet] .mmp-book-filter-panel {
    display: flex;
    flex-direction: column;
    gap: 14px;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 100001;
    max-height: 85vh;
    overflow-y: auto;
    padding: 18px var(--mmp-container-padding) calc(24px + env(safe-area-inset-bottom));
    background: #fff;
    border-radius: 20px 20px 0 0;
    box-shadow: var(--mmp-page-shadow);
    transform: translateY(100%);
    visibility: hidden;
    transition: transform 0.25s ease, visibility 0s linear 0.25s;
    outline: none; /* focused on opening, for screen readers */
  }

  [data-sheet].is-open :is(.mmp-book-filter-panel, .mmp-book-filter-backdrop) {
    visibility: visible;
    transition-delay: 0s;
  }

  [data-sheet].is-open .mmp-book-filter-panel {
    transform: none;
  }

  [data-sheet].is-open .mmp-book-filter-backdrop {
    opacity: 1;
  }

  [data-sheet] .mmp-book-filter-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  [data-sheet] .mmp-book-filter-panel-head h2 {
    margin: 0;
    font-size: 1.6rem;
  }

  .mmp-book-filter [data-sheet] .mmp-book-filter-close {
    width: 40px;
    height: 40px;
    padding: 0;
    background: transparent;
    color: var(--mmp-page-ink);
    border: 1px solid var(--mmp-page-border);
    border-radius: 50%;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
  }

  .mmp-book-filter [data-sheet] .mmp-book-filter-show {
    display: block;
    height: 50px;
    margin-top: 6px;
    background: var(--mmp-page-ink);
    color: var(--mmp-page-paper);
    border: 1px solid var(--mmp-page-ink);
    border-radius: 999px;
    font-family: var(--mmp-font-body);
    font-size: 0.85rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
  }

  .mmp-book-filter [data-sheet] .mmp-book-filter-show:is(:hover, :focus-visible) {
    background: var(--mmp-page-gold);
    border-color: var(--mmp-page-gold);
    color: var(--mmp-page-ink);
  }
}

/* The page behind the open panel doesn't scroll. */
html.mmp-book-filter-locked,
html.mmp-book-filter-locked body {
  overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
  :is(.mmp-book-filter-panel, .mmp-book-filter-backdrop) {
    transition: none !important;
  }
}

/* ==========================================================================
   SEARCH RESULTS (2026-10-16) — search.php
   Masthead + store cards for books + compact cards for everything else.
   ========================================================================== */

.mmp-search .mmp-search-form {
  margin: 20px 0 0;
  max-width: 560px;
}

.mmp-search .mmp-search-form input[type="search"] {
  width: 100%;
  height: 50px;
  box-sizing: border-box;
  font-family: var(--mmp-font-body);
  font-size: 1rem;
  color: var(--mmp-page-ink);
  background: #fff;
  border: var(--mmp-field-border);
  border-radius: var(--mmp-field-radius);
  padding: 0 110px 0 20px;
  margin: 0;
}

.mmp-search .mmp-search-form input[type="search"]:focus {
  outline: 2px solid var(--mmp-field-focus);
  outline-offset: 1px;
  border-color: var(--mmp-field-focus);
}

.mmp-search-pages {
  background: var(--mmp-page-cream);
}

.mmp-search-page-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  list-style: none;
  margin: 0 !important;
  padding: 0 !important;
}

.mmp-search-page-card {
  margin: 0;
}

.mmp-search-page-card a {
  display: flex;
  flex-direction: column;
  height: 100%;
  box-sizing: border-box;
  padding: 24px;
  background: #fff;
  border: 1px solid var(--mmp-page-border-light);
  border-radius: 18px;
  box-shadow: 0 14px 34px rgba(48, 43, 40, 0.08);
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.mmp-search-page-card a:hover,
.mmp-search-page-card a:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 22px 46px rgba(48, 43, 40, 0.14);
}

.mmp-search-page-type {
  font-family: var(--mmp-font-body);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: var(--mmp-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--mmp-page-blue);
  margin: 0 0 8px;
}

.mmp-search-page-title {
  font-family: var(--mmp-font-heading);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1.15;
  color: var(--mmp-page-ink);
  margin: 0 0 10px;
}

.mmp-search-page-excerpt {
  font-family: var(--mmp-font-body);
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--mmp-page-muted);
  margin: 0 0 18px;
}

.mmp-search-page-more {
  margin-top: auto;
  font-family: var(--mmp-font-body);
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--mmp-page-ink);
}

.mmp-search-empty {
  font-family: var(--mmp-font-body);
  color: var(--mmp-page-muted);
}

@media (max-width: 960px) {
  .mmp-search-page-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .mmp-search-page-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ==========================================================================
   PRODUCT PAGE: related books / up-sells use the store cards above.
   ========================================================================== */

.single-product :is(.related.products, .up-sells.products, .mmp-profiles) {
  clear: both;
  margin-top: clamp(3rem, 6vw, 4.5rem);
  padding-top: clamp(2.5rem, 5vw, 3.5rem);
  border-top: 1px solid var(--mmp-page-border-light);
}

.single-product :is(.related.products, .up-sells.products, .mmp-profiles) > h2 {
  font-family: var(--mmp-font-heading) !important;
  font-size: clamp(1.75rem, 2.6vw, 2.4rem) !important;
  line-height: var(--mmp-h2-line-height) !important;
  letter-spacing: var(--mmp-h2-tracking);
  color: var(--mmp-page-ink) !important;
  margin: 0 0 1.75rem !important;
}

/* Card typography (Books page grids, search results, More Books): status,
   title, byline, price, button. The category line is dropped so the card
   has one label above the title. The byline is quiet (Lora italic, lighter
   colour) so the title and teaser lead; px, not rem, like the teaser,
   because the root font size shrinks on tablets. */
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .ast-woo-product-category {
  display: none !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .mmp-product-badges {
  margin-bottom: 10px;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .mmp-product-status {
  font-size: 0.56rem;
  letter-spacing: 0.1em;
  padding: 4px 8px;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .woocommerce-loop-product__title {
  font-size: 1.02rem !important;
  line-height: var(--mmp-h3-line-height) !important;
  letter-spacing: var(--mmp-h3-tracking);
  margin-bottom: 8px !important;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .mmp-product-byline {
  margin: 0 0 10px;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .mmp-product-byline p,
.single-product .summary .mmp-product-byline p {
  font-family: var(--mmp-font-editorial);
  font-style: italic;
  font-size: 12.5px;
  font-weight: 400;
  line-height: 1.4;
  color: var(--mmp-page-quiet) !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .price {
  font-size: 0.82rem !important;
  font-weight: 700;
  margin-bottom: 14px !important;
}

:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .astra-shop-summary-wrap .button {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0;
  text-transform: none;
  line-height: 1.25;
  padding: 6px 12px !important;
}

/* Store card subtitle (cards with a teaser; filter mmp_product_card_subtitle)
   and the product page title: the Release Subtitle on its own line under the
   Release Title, in the title's font at regular weight, so the two read as
   one title. A card title with a subtitle isn't clamped to 3 lines, so the
   subtitle is never cut off. */
:is(.mmp-store-shop, .mmp-store-upcoming, .mmp-store-results, .mmp-store-home, .related.products, .up-sells.products) .woocommerce-loop-product__title.mmp-has-subtitle {
  display: block;
  -webkit-line-clamp: none;
  overflow: visible;
}

:is(.woocommerce-loop-product__title, .product_title) .mmp-product-subtitle {
  display: block;
  margin-top: 0.2em;
  font-family: var(--mmp-font-heading);
  font-weight: 400;
  font-size: 0.86em;
  line-height: 1.25;
  letter-spacing: 0;
  color: var(--mmp-page-ink);
}

/* Homepage featured books ([mmp_home_featured_books]): three across, like the
   Books page (the shared grid above), with the card teaser under the byline (the Books page cards share the teaser
   style). Teaser is 12px on
   desktop/tablet and 13px on phones (one card per row, more room); px, not
   rem, because the root font size shrinks on tablets. */
:is(.mmp-store-home, .mmp-store-shop, .mmp-store-upcoming, .mmp-store-results) .mmp-product-teaser {
  font-family: var(--mmp-font-body);
  font-size: 12px;
  line-height: 1.5;
  color: var(--mmp-page-muted);
  margin: 0 0 12px !important;
}

@media (max-width: 560px) {
  :is(.mmp-store-home, .mmp-store-shop, .mmp-store-upcoming, .mmp-store-results) .mmp-product-teaser {
    font-size: 13px;
  }
}

/* More Books: compact cards, 6 up on desktop, 3 on tablet, 2 on phones.
   The imprint name and logo don't fit at this size; the status pill stays. */
.single-product :is(.related.products, .up-sells.products) ul.products {
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 18px;
}

.single-product :is(.related.products, .up-sells.products) ul.products li.product {
  border-radius: 14px;
  box-shadow: 0 10px 24px rgba(48, 43, 40, 0.07);
}

.single-product :is(.related.products, .up-sells.products) .astra-shop-thumbnail-wrap > a.woocommerce-LoopProduct-link {
  inset: 14px !important;
}

.single-product :is(.related.products, .up-sells.products) .astra-shop-thumbnail-wrap img {
  filter: drop-shadow(0 8px 12px rgba(48, 43, 40, 0.2));
}

.single-product :is(.related.products, .up-sells.products) .astra-shop-summary-wrap {
  padding: 14px 14px 16px !important;
}

.single-product :is(.related.products, .up-sells.products) :is(.mmp-product-imprint, .mmp-product-imprint-logo) {
  display: none !important;
}

@media (max-width: 1024px) {
  .single-product :is(.related.products, .up-sells.products) ul.products {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 544px) {
  .single-product :is(.related.products, .up-sells.products) ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px;
  }
}

/* ==========================================================================
   PRODUCT PAGE: cover + summary (inc/mmp-product-page.php)
   ========================================================================== */

.single-product #primary {
  margin-top: clamp(1.5rem, 3vw, 2.25rem) !important;
}

/* Breadcrumb: full-width trail above the product. */
.single-product .woocommerce-breadcrumb {
  font-family: var(--mmp-font-body);
  font-size: 0.8rem !important;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--mmp-page-muted) !important;
  margin: 0 0 clamp(1.5rem, 3vw, 2.25rem) !important;
  padding: 0 0 1rem !important;
  border-bottom: 1px solid var(--mmp-page-border-light);
}

.single-product .woocommerce-breadcrumb a {
  color: var(--mmp-page-blue) !important;
  text-decoration: none;
}

.single-product .woocommerce-breadcrumb a:hover {
  color: var(--mmp-page-clay) !important;
}

.single-product .woocommerce-breadcrumb .mmp-crumb-sep {
  margin: 0 0.55em;
  color: var(--mmp-page-gold);
}

/* Cover: same cream frame as the store cards. */
.single-product div.product div.images.woocommerce-product-gallery {
  width: 44% !important;
  box-sizing: border-box;
  background: var(--mmp-page-cream);
  border-radius: 22px;
  padding: clamp(1.5rem, 4vw, 3rem);
  margin-bottom: 2rem !important;
}

.single-product div.product div.images .woocommerce-product-gallery__image img {
  border-radius: 4px;
  box-shadow: 0 22px 48px rgba(48, 43, 40, 0.22);
}

.single-product div.product div.images .flex-control-thumbs {
  margin-top: 1rem !important;
}

.single-product div.product div.summary.entry-summary {
  width: 50% !important;
}

/* Summary */
.single-product .summary .mmp-product-badges {
  margin-bottom: 1rem;
}

/* On the product page the logo sits beside the imprint name. */
.single-product .summary .mmp-product-imprint-logo {
  margin: -4px 0 !important;
}

.single-product .summary .product_title {
  font-family: var(--mmp-font-heading) !important;
  font-size: clamp(1.9rem, 3vw, 2.6rem) !important;
  font-weight: 700 !important;
  line-height: var(--mmp-display-line-height) !important;
  letter-spacing: var(--mmp-display-tracking);
  color: var(--mmp-page-ink) !important;
  margin: 0 0 0.85rem !important;
}

.single-product .summary .mmp-product-byline {
  margin: 0 0 1.5rem;
}

/* Byline as on the cards (Lora italic, quiet), sized for the larger title. */
.single-product .summary .mmp-product-byline p {
  font-size: 1.05rem;
}

.single-product .summary .price {
  font-family: var(--mmp-font-body);
  font-size: 1.5rem !important;
  font-weight: 800;
  color: var(--mmp-page-ink) !important;
  margin: 0 0 1.25rem !important;
}

.single-product .summary .woocommerce-product-details__short-description {
  color: var(--mmp-page-muted);
  font-size: 1rem;
  line-height: 1.7;
  margin-bottom: 2.5rem;
}

.single-product .summary .woocommerce-product-details__short-description p {
  margin: 0 0 1em;
}

/* One grey for paragraphs and lists (primary.css gives p its own). */
.single-product .summary .woocommerce-product-details__short-description :is(p, li) {
  color: inherit;
}

/* A heading here introduces what follows: a small label, well under the
   title, with more space above than below. h5/h6 are left alone (Conrad's
   shipping note is an h6). */
.single-product .summary .woocommerce-product-details__short-description :is(h2, h3, h4) {
  margin: 1.75rem 0 0.625rem;
  font-family: var(--mmp-font-heading);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--mmp-page-ink);
}

.single-product .summary .woocommerce-product-details__short-description :is(h2, h3, h4):first-child {
  margin-top: 0;
}

.single-product .summary .woocommerce-product-details__short-description :is(ul, ol) {
  margin: 0 0 1em;
  padding-left: 1.25rem;
}

.single-product .summary .woocommerce-product-details__short-description li + li {
  margin-top: 0.5rem;
}

.single-product .summary .woocommerce-product-details__short-description :is(b, strong) {
  color: var(--mmp-page-ink);
}

/* Buy row: quantity + dark pill button, as on the cards. */
.single-product .summary form.cart {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 12px;
  margin: 0 0 1.25rem !important;
}

.single-product .summary form.cart::before,
.single-product .summary form.cart::after {
  display: none !important;
}

.single-product .summary form.cart .quantity {
  margin: 0 !important;
  float: none !important;
}

.single-product .summary form.cart .quantity .qty {
  width: 76px;
  height: 50px;
  padding: 0 !important;
  text-align: center;
  font-family: var(--mmp-font-body);
  font-weight: 700;
  color: var(--mmp-page-ink);
  background: var(--mmp-page-paper);
  border: 1px solid var(--mmp-page-border) !important;
  border-radius: 999px !important;
}

.single-product .summary .single_add_to_cart_button {
  float: none !important;
  flex: 1 1 220px;
  max-width: 340px;
  height: 50px;
  background: var(--mmp-page-ink) !important;
  color: var(--mmp-page-paper) !important;
  border: 1px solid var(--mmp-page-ink) !important;
  border-radius: 999px !important;
  font-family: var(--mmp-font-body);
  font-size: 0.85rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0 28px !important;
}

.single-product .summary .single_add_to_cart_button:hover,
.single-product .summary .single_add_to_cart_button:focus-visible {
  background: var(--mmp-page-gold) !important;
  border-color: var(--mmp-page-gold) !important;
  color: var(--mmp-page-ink) !important;
}

.single-product .summary :is(.mmp-coming-soon-note, .mmp-sab-note) {
  font-family: var(--mmp-font-body);
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--mmp-page-muted);
  margin: 0 0 1.5rem;
}

.single-product .summary .mmp-coming-soon-note {
  color: var(--mmp-page-blue);
  font-weight: 700;
}

.single-product .summary .mmp-sab-note a {
  color: var(--mmp-page-blue);
  font-weight: 700;
}

/* Topics */
.mmp-product-topics {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding-top: 1.25rem;
  border-top: 1px solid var(--mmp-page-border-light);
}

.mmp-product-topics-label {
  font-family: var(--mmp-font-body);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: var(--mmp-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--mmp-page-blue);
  margin-right: 4px;
}

.mmp-product-topic {
  font-family: var(--mmp-font-body);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--mmp-page-ink) !important;
  background: var(--mmp-page-cream);
  border-radius: 999px;
  padding: 6px 12px;
  text-decoration: none !important;
}

.mmp-product-topic:hover {
  background: var(--mmp-page-gold);
}

/* Description (+ Book details on published books): folder tabs on an
   outlined panel. The active tab is white and overlaps the panel's top
   border by 1px, so it joins the panel; inactive tabs sit behind in cream. */
.single-product .woocommerce-tabs {
  clear: both;
  max-width: 760px;
  padding-top: clamp(2rem, 4vw, 3rem);
}

.single-product .woocommerce-tabs ul.tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  overflow: visible !important;
  border: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.single-product .woocommerce-tabs ul.tabs::before {
  display: none !important;
}

.single-product .woocommerce-tabs ul.tabs li {
  position: relative;
  z-index: 1 !important;
  border: 1px solid var(--mmp-page-border) !important;
  border-bottom: 0 !important;
  border-radius: 10px 10px 0 0 !important;
  background: var(--mmp-page-cream) !important;
  margin: 0 !important;
  padding: 0 !important;
}

.single-product .woocommerce-tabs ul.tabs li a {
  display: block !important;
  font-family: var(--mmp-font-body);
  font-size: 0.75rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--mmp-page-muted) !important;
  padding: 0.85rem 1.25rem !important;
}

.single-product .woocommerce-tabs ul.tabs li:not(.active) a:hover {
  color: var(--mmp-page-ink) !important;
}

.single-product .woocommerce-tabs ul.tabs li.active {
  z-index: 2 !important;
  background: var(--mmp-white) !important;
  margin-bottom: -1px !important;
  padding-bottom: 1px !important;
}

.single-product .woocommerce-tabs ul.tabs li.active a {
  color: var(--mmp-page-blue) !important;
}

.single-product .woocommerce-tabs ul.tabs li::before,
.single-product .woocommerce-tabs ul.tabs li::after {
  display: none !important;
}

.single-product .woocommerce-tabs .panel {
  background: var(--mmp-white) !important;
  border: 1px solid var(--mmp-page-border) !important;
  border-radius: 0 18px 18px 18px !important;
  padding: clamp(1.25rem, 3vw, 2rem) clamp(1.25rem, 3vw, 2.25rem) !important;
  margin: 0 !important;
  color: var(--mmp-page-muted);
  font-size: 1.02rem;
  line-height: 1.75;
}

.single-product .woocommerce-tabs .panel > :last-child {
  margin-bottom: 0;
}

.single-product .woocommerce-tabs .panel :is(b, strong) {
  color: var(--mmp-page-ink);
}

/* Book details tab (published books): small label/value rows. */
.single-product .mmp-book-details {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));
  gap: 1rem 2rem;
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.5;
}

.single-product .mmp-book-details dt {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--mmp-page-muted);
}

.single-product .mmp-book-details dd {
  margin: 0.15rem 0 0;
  color: var(--mmp-page-ink);
}

/* A glimpse inside (MMP Books Core; hooked in inc/mmp-product-page.php): on
   books with glimpse content the tabs take two thirds of the row and this
   column the last third; below the tabs under 922px. The sample PDF's cover
   and button first, then the images with captions; each opens the popup. */

/* 2em: the space Astra gives the tabs (its rule outranks the clamp above). */
.single-product .mmp-product-more {
  clear: both;
  padding-top: 2em;
}

/* The tabs' own top space and Astra's bottom margin (which used to merge
   with the next section's margin) go: the wrapper keeps the same spacing. */
.woocommerce.single-product div.product .mmp-product-more > .woocommerce-tabs {
  max-width: none;
  padding-top: 0;
  margin-bottom: 0;
}

.single-product .mmp-glimpse {
  color: var(--mmp-page-muted);
  font-size: 1.02rem;
  line-height: 1.75;
}

.single-product :is(.mmp-glimpse__heading, .mmp-levels__heading) {
  font-family: var(--mmp-font-heading) !important;
  font-size: clamp(1.4rem, 2vw, 1.75rem) !important;
  line-height: var(--mmp-h3-line-height) !important;
  letter-spacing: var(--mmp-h3-tracking);
  color: var(--mmp-page-ink) !important;
  margin: 0 0 1rem !important;
}

/* The sample and the images: a picture in the cover frame, nothing else of
   a button's look (Astra styles every button). */
.single-product .mmp-glimpse :is(.mmp-glimpse__sample, .mmp-glimpse__thumb) {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: inherit;
  text-align: left;
  box-shadow: none;
  cursor: zoom-in;
}

.single-product .mmp-glimpse__sample {
  cursor: pointer !important;
}

/* "Read a sample" centred under the cover (Kevin, 2026-10-26). */
.single-product .mmp-glimpse .mmp-glimpse__sample {
  text-align: center;
}

.single-product .mmp-glimpse :is(.mmp-glimpse__cover, .mmp-glimpse__thumb) {
  display: block;
  overflow: hidden;
  border: 1px solid var(--mmp-page-border);
  border-radius: 10px;
  background: var(--mmp-page-cream);
}

.single-product .mmp-glimpse :is(.mmp-glimpse__cover, .mmp-glimpse__thumb) img,
.single-product .mmp-glimpse__cover-canvas {
  display: block;
  width: 100%;
  height: auto;
}

/* Until the first page is drawn: a cream page shape (US trade size). */
.single-product .mmp-glimpse__cover-canvas:not(.is-drawn) {
  aspect-ratio: 6 / 9;
}

/* "Read a sample": the product page's buy button style. */
.single-product .mmp-glimpse__sample-label {
  display: inline-block;
  margin-top: 1rem;
  padding: 14px 28px;
  border: 1px solid var(--mmp-page-ink);
  border-radius: 999px;
  background: var(--mmp-page-ink);
  color: var(--mmp-page-paper);
  font-family: var(--mmp-font-body);
  font-size: 0.85rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1.4;
  text-transform: uppercase;
}

.single-product .mmp-glimpse__sample:is(:hover, :focus-visible) .mmp-glimpse__sample-label {
  background: var(--mmp-page-gold);
  border-color: var(--mmp-page-gold);
  color: var(--mmp-page-ink);
}

.single-product .mmp-glimpse__sample + .mmp-glimpse__images {
  margin-top: 3rem;
}

.single-product .mmp-glimpse__images {
  display: grid;
  gap: 3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* No shadow round the figures (Astra's inline .ast-article-single figure
   rule gives every figure one). */
.single-product :is(.mmp-glimpse__figure, .mmp-glimpse-modal__figure) {
  margin: 0;
  box-shadow: none;
}

.single-product .mmp-glimpse__figure figcaption {
  margin-top: 0.6rem;
  font-size: 0.9rem;
  line-height: 1.5;
}

.single-product .mmp-glimpse__thumb:is(:hover, :focus-visible) {
  opacity: 0.9;
}

@media (min-width: 922px) {
  .single-product .mmp-product-more {
    display: grid;
    grid-template-columns: 2fr 1fr;
    column-gap: 3rem;
    align-items: start;
  }
}

@media (max-width: 921px) {
  .single-product :is(.mmp-glimpse, .mmp-levels) {
    margin-top: clamp(2rem, 4vw, 3rem);
  }
}

/* Launch Circle levels (MMP Books Core): the glimpse column's place on a
   Launch Circle book; one bordered box per level. SAB books' levels come
   from SAB (inc/mmp-sab-levels.php). */
.single-product .mmp-levels {
  color: var(--mmp-page-muted);
  font-size: 0.85rem;
  line-height: 1.5;
}

/* Smaller than the glimpse heading it shares a rule with (Kevin). */
.single-product .mmp-levels__heading {
  font-size: 1.15rem !important;
  margin-bottom: 0.75rem !important;
}


.single-product .mmp-levels__list {
  display: grid;
  gap: 0.75rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

/* The card: also the Extra info box below (Kevin's option A for both). */
.single-product :is(.mmp-level, .mmp-book-extra) {
  margin: 0;
  padding: 1rem 1.15rem;
  border: 1px solid var(--mmp-page-border);
  border-left: 5px solid var(--mmp-page-gold); /* the Launch Circle pill's gold (Kevin's option A) */
  border-radius: 12px;
  background: var(--mmp-white);
  box-shadow: var(--mmp-lift-shadow);
}

.single-product .mmp-level__name {
  font-family: var(--mmp-font-heading) !important;
  font-size: 1rem !important;
  line-height: var(--mmp-h3-line-height) !important;
  letter-spacing: var(--mmp-h3-tracking);
  color: var(--mmp-page-ink) !important;
  margin: 0 !important;
}

.single-product .mmp-level__price {
  display: inline-block;
  margin-left: 0.3rem;
  padding: 2px 9px;
  border-radius: 999px;
  background: var(--mmp-page-gold);
  color: var(--mmp-page-ink);
  font-family: var(--mmp-font-body);
  font-size: 0.75rem;
  font-weight: 800;
  line-height: 1.4;
  vertical-align: 0.15em;
  white-space: nowrap;
}

.single-product .mmp-level__price :is(del, ins) {
  color: inherit;
  text-decoration-color: currentColor;
}

.single-product .mmp-level__price del {
  opacity: 0.7;
}

/* Sold out: the status pills' outlined look. */
.single-product .mmp-level__sold-out {
  display: inline-block;
  margin-top: 0.5rem;
  padding: 5px 10px;
  border: 1px solid var(--mmp-page-border);
  border-radius: 999px;
  font-family: var(--mmp-font-body);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  line-height: 1;
  text-transform: uppercase;
  color: var(--mmp-page-blue);
}

.single-product .mmp-level.is-sold-out .mmp-level__name {
  color: var(--mmp-page-muted) !important;
}

.single-product .mmp-level__description {
  margin: 0.35rem 0 0;
}

.single-product .mmp-level__perks {
  margin: 0.5rem 0 0 1rem;
  padding: 0;
}

.single-product .mmp-level__perks li + li {
  margin-top: 0.15rem;
}

.single-product .mmp-level__perks strong {
  color: var(--mmp-page-ink);
}

/* The site's outline button (primary.css, Buttons, which sets its type and
   colours); here only its place in the box. */
.single-product :is(.mmp-level__button, .mmp-book-extra__button) {
  display: inline-block;
  margin-top: 0.75rem;
  padding: 7px 14px;
  font-size: 0.75rem;
}

/* Extra info (MMP Books Core): the level card at full width, between the
   tabs and their column and the profiles. */
.single-product .mmp-book-extra {
  clear: both;
  margin: clamp(2rem, 4vw, 3rem) 0 0;
  padding: clamp(1.25rem, 3vw, 2rem) clamp(1.25rem, 3vw, 2.25rem);
  color: var(--mmp-page-muted);
  font-size: 0.95rem;
  line-height: 1.6;
}

.single-product .mmp-book-extra :is(h2, h3, h4) {
  clear: none; /* Astra clears floats before headings; they sit beside the image */
  font-family: var(--mmp-font-heading);
  font-size: 1.25rem;
  line-height: var(--mmp-h3-line-height);
  letter-spacing: var(--mmp-h3-tracking);
  color: var(--mmp-page-ink);
  margin: 0 0 0.5rem;
}

.single-product .mmp-book-extra :is(p, ul, ol) {
  margin: 0 0 0.75rem;
}

.single-product .mmp-book-extra__body > :last-child {
  margin-bottom: 0;
}

/* The image floats left; the text and button keep to a column beside it.
   Phones: the image above, full width. */
.single-product .mmp-book-extra__image {
  float: left;
  width: clamp(160px, 22%, 240px);
  height: auto;
  margin: 0 clamp(1.25rem, 3vw, 2rem) 0.5rem 0;
  border-radius: 8px;
  box-shadow: none; /* Astra shadows every image on a product page */
}

.single-product .mmp-book-extra__body {
  display: flow-root;
}

@media (max-width: 544px) {
  .single-product .mmp-book-extra__image {
    float: none;
    display: block;
    width: 100%;
    margin: 0 0 1rem;
  }
}

.single-product .mmp-book-extra :is(ul, ol) {
  padding-left: 1.1rem;
}

.single-product .mmp-book-extra strong {
  color: var(--mmp-page-ink);
}

.single-product .mmp-book-extra a:not(.mmp-book-extra__button) {
  color: var(--brand-accent);
  text-decoration: underline;
}

/* The popup: dark, nearly the whole window; a status line and close button
   on top, the image or flipbook, then previous / next (and Open the PDF). */
.mmp-glimpse-modal {
  width: calc(100vw - 2rem);
  max-width: 1400px;
  height: calc(100dvh - 2rem);
  max-height: none;
  margin: auto;
  padding: 0;
  border: 0;
  border-radius: 18px;
  background: var(--mmp-page-ink);
  color: var(--mmp-page-paper);
  font-family: var(--mmp-font-body);
  overflow: hidden;
}

.mmp-glimpse-modal[open] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
}

.mmp-glimpse-modal::backdrop {
  background: rgba(20, 18, 16, 0.75);
}

.mmp-glimpse-modal__bar,
.mmp-glimpse-modal__nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 1rem 0.75rem 1.5rem;
}

.mmp-glimpse-modal__nav {
  padding: 1rem 1.5rem 1.25rem;
}

/* The popup's own colour (primary.css gives every p the muted text colour). */
.mmp-glimpse-modal__status {
  margin: 0;
  color: inherit;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
}

.mmp-glimpse-modal button {
  margin: 0;
  border: 1px solid rgba(255, 250, 241, 0.5);
  border-radius: 999px;
  background: transparent;
  color: var(--mmp-page-paper);
  font-family: var(--mmp-font-body);
  font-size: 0.85rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  line-height: 1.4;
  text-transform: uppercase;
  padding: 10px 24px;
  box-shadow: none;
}

.mmp-glimpse-modal button:is(:hover, :focus-visible):not(:disabled) {
  background: var(--mmp-page-gold);
  border-color: var(--mmp-page-gold);
  color: var(--mmp-page-ink);
}

.mmp-glimpse-modal button:disabled {
  opacity: 0.35;
  cursor: default;
}

.mmp-glimpse-modal .mmp-glimpse-modal__close {
  width: 44px;
  height: 44px;
  padding: 0;
  border-color: transparent;
  font-size: 1.75rem;
  line-height: 1;
  text-transform: none;
}

/* Open the PDF: with the flipbook only. */
.mmp-glimpse-modal:not([data-mode="pdf"]) .mmp-glimpse-modal__pdf {
  display: none;
}

.mmp-glimpse-modal__pdf {
  font-size: 0.85rem;
  color: var(--mmp-page-paper);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.mmp-glimpse-modal__pdf:is(:hover, :focus-visible) {
  color: var(--mmp-page-gold);
}

.mmp-glimpse-modal__body {
  min-height: 0;
  padding: 0 1.5rem;
}

/* The image as large as fits, its caption right below it, both centred. */
.mmp-glimpse-modal__figure {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
}

.mmp-glimpse-modal__figure img {
  flex: 0 1 auto;
  min-height: 0;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

.mmp-glimpse-modal__figure figcaption {
  max-width: var(--mmp-container-narrow-width);
  margin-top: 0.75rem;
  font-size: 0.95rem;
  line-height: 1.5;
  text-align: center;
}

.mmp-glimpse-modal__book {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

/* StPageFlip sizes its wrapper by a padding ratio (75%), which runs over the
   buttons; it fills the book area instead (the book is fitted inside). */
.mmp-glimpse-modal__book .stf__wrapper {
  height: 100%;
  padding-bottom: 0 !important;
}

.mmp-glimpse-modal__page {
  background: var(--mmp-white);
}

.mmp-glimpse-modal__page canvas {
  display: block;
  width: 100%;
  height: 100%;
}

/* No page scroll behind the popup. */
html:has(.mmp-glimpse-modal[open]) {
  overflow: hidden;
}

@media (max-width: 544px) {
  .mmp-glimpse-modal {
    width: 100vw;
    height: 100dvh;
    border-radius: 0;
  }

  .mmp-glimpse-modal__body {
    padding: 0 0.75rem;
  }

  .mmp-glimpse-modal__nav {
    padding: 0.75rem;
  }

  .mmp-glimpse-modal button {
    padding: 10px 16px;
  }
}

/* Callout bar (MMP Books Core), full width between the cover and buy row
   and the tabs, on books that switch it on. Modelled on Rebuild Hot Springs'
   proceeds bar: band, small bold heading, grey text, key phrase in bold.
   The Available Now pill's light green (muted text 5.0:1). */
.single-product .mmp-book-callout {
  clear: both;
  margin: 0;
  padding: clamp(1.75rem, 4vw, 3.2rem) clamp(1.5rem, 4vw, 3.2rem);
  border-radius: 18px;
  background: var(--mmp-page-green-tint);
  color: var(--mmp-page-muted);
  font-size: 1rem;
  line-height: 1.7;
}

.single-product .mmp-book-callout__heading {
  margin: 0 0 0.75rem;
  font-family: var(--mmp-font-heading);
  font-size: 1.375rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--mmp-page-green); /* as the Available Now pill's text, 6.6:1 */
}

.single-product .mmp-book-callout__text p {
  margin: 0 0 1em;
  color: inherit;
}

.single-product .mmp-book-callout__text > :last-child {
  margin-bottom: 0;
}

.single-product .mmp-book-callout__text :is(b, strong) {
  color: var(--mmp-page-green);
}

/* Links: the bar's green (6.6:1), underlined so they read as links. */
.single-product .mmp-book-callout__text a {
  color: var(--mmp-page-green);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.single-product .mmp-book-callout__text a:is(:hover, :focus-visible) {
  text-decoration-thickness: 2px;
}

/* Launch Circle style: the same bar on the page cream, ink text (the grey
   would be too faint), the Launch Circle logo floated left. Phones: the
   logo above, centred. */
.single-product .mmp-book-callout--launch-circle {
  display: flow-root;
  background: var(--mmp-page-cream);
  color: var(--mmp-page-ink);
}

.single-product .mmp-book-callout--launch-circle :is(.mmp-book-callout__heading, .mmp-book-callout__text :is(b, strong), .mmp-book-callout__text a) {
  color: var(--mmp-page-ink);
}

.single-product .mmp-book-callout__logo {
  float: left;
  width: 110px;
  height: auto;
  margin: 0 clamp(1.25rem, 3vw, 2rem) 0.5rem 0;
  box-shadow: none; /* Astra shadows every image on a product page */
}

/* Astra clears floats before headings; here the heading sits beside the
   logo, and the text keeps to a column rather than wrapping under it. */
.single-product .mmp-book-callout--launch-circle .mmp-book-callout__heading {
  clear: none;
}

.single-product .mmp-book-callout--launch-circle :is(.mmp-book-callout__heading, .mmp-book-callout__text) {
  display: flow-root;
}

@media (max-width: 544px) {
  .single-product .mmp-book-callout__logo {
    float: none;
    display: block;
    width: 90px;
    margin: 0 auto 1rem;
  }
}

/* "About the …" contributor photos and bios (MMP Books Core), below the tabs.
   The section and its h2 share the related-products rules above. */
.single-product .mmp-profiles__list {
  display: grid;
  gap: 2rem;
}

@media (min-width: 768px) {
  .single-product .mmp-profiles__list:has(> .mmp-profile + .mmp-profile) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.single-product .mmp-profile {
  display: flex;
  align-items: flex-start;
  gap: 1.25rem;
}

.single-product .mmp-profile__photo {
  flex: 0 0 auto;
  width: var(--mmp-profile-photo-size);
  height: var(--mmp-profile-photo-size);
  border-radius: 50%;
  object-fit: cover;
}

.single-product .mmp-profile__name {
  margin: 0;
  font-size: 1.1rem;
  color: var(--mmp-page-ink);
}

.single-product .mmp-profile__role {
  margin: 0.15rem 0 0.6rem;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: var(--mmp-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--mmp-page-muted);
}

/* 14px at every width, as SAB's (px: the root font size shrinks on phones). */
.single-product .mmp-profile__bio {
  font-size: 14px;
  line-height: 1.6;
  color: var(--mmp-page-ink);
}

.single-product .mmp-profile__bio > :last-child {
  margin-bottom: 0;
}

/* Descriptions pasted from email carry inline Georgia; use the site font. */
.single-product :is(.woocommerce-tabs .panel, .woocommerce-product-details__short-description) [style*="font-family"] {
  font-family: inherit !important;
}

@media (max-width: 921px) {
  .single-product div.product div.images.woocommerce-product-gallery,
  .single-product div.product div.summary.entry-summary {
    width: 100% !important;
    float: none !important;
  }
}

@media (max-width: 544px) {
  .single-product div.product div.images.woocommerce-product-gallery {
    border-radius: 16px;
  }

  .single-product .summary .single_add_to_cart_button {
    max-width: none;
  }
}

/* ==========================================================================
   Imprint pages: featured books ([mmp_imprint_books], 2026-10-19)
   Store cards (via .mmp-store-home, the shared three-across grid) and a
   "Show all books" link below.
   ========================================================================== */

.mmp-imprint-books {
  margin-top: 36px;
}

.mmp-imprint-books-all {
  margin: 32px 0 0 !important;
  text-align: center;
}

.mmp-imprint-books-all a {
  color: var(--mmp-page-blue);
  font-weight: 800;
  text-decoration: none;
}

.mmp-imprint-books-all a:hover,
.mmp-imprint-books-all a:focus-visible {
  color: var(--mmp-page-gold);
}

/* CART CROSS-SELLS ("You may be interested in…", mmp_render_cart_cross_sells()):
   store cards, with small cream buttons so Proceed to Checkout stays the one
   strong button on the cart; not shown on phones (as on SAB, 2026-10-25). */
.mmp-cart-cross-sells .mmp-store-home .astra-shop-summary-wrap .button {
  background: var(--mmp-page-cream) !important;
  border-color: var(--mmp-page-cream) !important;
  color: var(--mmp-page-ink) !important;
  font-size: 0.68rem !important;
  padding: 9px 14px !important;
}

.mmp-cart-cross-sells .mmp-store-home .astra-shop-summary-wrap .button:hover,
.mmp-cart-cross-sells .mmp-store-home .astra-shop-summary-wrap .button:focus-visible {
  background: var(--mmp-page-ink) !important;
  border-color: var(--mmp-page-ink) !important;
  color: var(--mmp-page-paper) !important;
}

@media (max-width: 560px) {
  .mmp-cart-cross-sells {
    display: none;
  }
}
