/* =====================================================
 * SAB single product page
 * Same design as millionmemoryproject.org's product page, in SAB's colours
 * and fonts: cover in a cream frame, then status pill, title, subtitle,
 * byline, price, short description and buy row; folder tabs below; related
 * books as compact store cards (card styles: styles/shop-loop.css).
 * Element order in the summary: style.css.
 * ===================================================== */

/* --- Cover --- */

.single-product div.product div.images.woocommerce-product-gallery {
	width: 44% !important;
	box-sizing: border-box;
	background: var(--sab-frame);
	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(51, 46, 43, 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 {
	justify-content: flex-start;
	margin: 0 0 1rem;
}

/* Feed Store like every other page title (Kevin, 2026-10-24); was Roboto bold. */
.single-product .summary .product_title {
	font-family: "Feed Store", Georgia, serif !important;
	font-size: clamp(1.9rem, 3vw, 2.6rem) !important;
	font-weight: normal !important;
	line-height: 1.1 !important;
	text-transform: none !important;
	color: var(--sab-dark) !important;
	margin: 0 0 0.35rem !important;
}

/* Subtitle under the title, read as part of it. */
.single-product .summary .sab-book-subtitle--single {
	font-size: clamp(1.15rem, 1.8vw, 1.45rem);
	font-style: normal;
	line-height: 1.25;
	color: var(--sab-dark);
	margin: 0 0 0.85rem;
}

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

.single-product .summary .mmp-product-byline p {
	font-size: 1.05rem;
	font-style: italic;
	font-weight: 400;
	color: var(--sab-muted);
}

.single-product .summary .price {
	font-size: 1.5rem !important;
	font-weight: 800;
	color: var(--sab-dark) !important;
	margin: 0 0 1.25rem !important;
}

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

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

/* --- Buy row: quantity + dark pill button. Simple books: the form itself;
   tiered books: the row under the tier picker (the Supporter name field,
   when shown, takes a full line above). --- */

.single-product .summary form.cart:not(.variations_form),
.single-product .summary .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
}

.single-product .summary form.cart:not(.variations_form) {
	margin: 0 0 1.25rem !important;
}

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

.single-product .summary #display-name-field {
	flex: 1 0 100%;
}

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

.single-product .summary form.cart .quantity .qty {
	width: 76px;
	height: 53px;
	padding: 0 !important;
	text-align: center;
	font-weight: 700;
	color: var(--sab-dark);
	background: #fff;
	border: 1px solid var(--sab-border) !important;
	border-radius: 999px !important;
}

/* Choices (ticket levels, editions): rounded like the shop's sort menu,
   as tall as the quantity box and button. */
.single-product .summary table.variations select {
	-webkit-appearance: none;
	appearance: none;
	height: 53px;
	padding: 0 2.6em 0 1.2em;
	border: 1px solid var(--sab-border);
	border-radius: var(--sab-button-radius);
	background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%23332E2B' stroke-width='1.5'/></svg>") no-repeat right 1.2em center / 0.65em auto;
	color: var(--sab-dark);
	font-size: var(--sab-button-size);
}

/* The site's one button (styles/sections.css): navy pill, 0.95rem bold. */
.single-product .summary .single_add_to_cart_button {
	float: none !important;
	flex: 1 1 220px;
	max-width: 340px;
	background: var(--sab-navy) !important;
	color: #fff !important;
	border: 1px solid var(--sab-navy) !important;
	border-radius: var(--sab-button-radius) !important;
	font-size: var(--sab-button-size) !important;
	font-weight: var(--sab-button-weight) !important;
	letter-spacing: var(--sab-button-tracking);
	line-height: var(--sab-button-line) !important;
	text-transform: none;
	padding: var(--sab-button-padding) !important;
}

.single-product .summary .single_add_to_cart_button:hover,
.single-product .summary .single_add_to_cart_button:focus-visible {
	background: var(--sab-cream) !important;
	border-color: var(--sab-cream) !important;
	color: var(--sab-dark) !important;
}

/* --- Tabs: 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,
.single-product .woocommerce-tabs ul.tabs li::before,
.single-product .woocommerce-tabs ul.tabs li::after {
	display: none !important;
}

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

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

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

.single-product .woocommerce-tabs ul.tabs li.active {
	z-index: 2 !important;
	background: #fff !important;
	margin-bottom: -1px !important;
	padding-bottom: 1px !important;
}

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

.single-product .woocommerce-tabs .panel {
	background: #fff !important;
	border: 1px solid var(--sab-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(--sab-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(--sab-dark);
}

/* Book details tab: small label/value rows. */
.sab-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;
}

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

.sab-book-details dd {
	margin: 0.15rem 0 0;
	color: var(--sab-dark);
}

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

/* --- Callout bar (MMP Books Core; inc/callout.php): full width between the
   cover and buy row and the tabs, on books that switch it on. As on MMP:
   the Available Now pill's light green, heading and bold in its dark green,
   grey text (5.0:1). --- */

/* 21px below: with the tabs' own 34px it matches the 55px above (the
   summary's margins). */
.single-product .mmp-book-callout {
	clear: both;
	margin: 0 0 21px;
	padding: clamp(1.75rem, 4vw, 3.2rem) clamp(1.5rem, 4vw, 3.2rem);
	border-radius: 18px;
	background: var(--sab-status-available-bg);
	color: var(--sab-muted);
	font-size: var(--sab-text);
	line-height: var(--sab-text-line);
}

.single-product .mmp-book-callout__heading {
	font-family: "Feed Store", Georgia, serif !important;
	font-weight: normal !important;
	font-size: clamp(1.3rem, 1.8vw, 1.5rem) !important;
	line-height: 1.25;
	color: var(--sab-status-available-text) !important;
	margin: 0 0 0.75rem !important;
}

.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(--sab-status-available-text);
}

/* Links: the bar's green, underlined so they read as links. */
.single-product .mmp-book-callout__text a {
	color: var(--sab-status-available-text);
	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 light cream (--sab-frame, dark
   text 11.9:1; 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(--sab-frame);
	color: var(--sab-dark);
}

.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(--sab-dark) !important;
}

.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 !important;                      /* 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;
	}
}

/* 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 related books' 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;
}

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

.single-product :is(.mmp-glimpse__heading, .mmp-levels__heading) {
	font-family: "Feed Store", Georgia, serif !important;
	font-weight: normal !important;
	font-size: clamp(1.4rem, 2vw, 1.75rem) !important;
	line-height: 1.2;
	color: var(--sab-dark) !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). */
.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;
}

/* 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) {
	box-shadow: none;
}

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

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

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

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

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

.mmp-glimpse__sample + .mmp-glimpse__images {
	margin-top: calc(var(--sab-gap) * 1.5);
}

/* "Read a sample": the site's one button, a navy pill (style.css). */
.mmp-glimpse__sample-label {
	display: inline-block;
	margin-top: 1rem;
	padding: var(--sab-button-padding);
	border: 1px solid var(--sab-navy);
	border-radius: var(--sab-button-radius);
	background: var(--sab-navy);
	color: #fff;
	font-size: var(--sab-button-size);
	font-weight: var(--sab-button-weight);
	letter-spacing: var(--sab-button-tracking);
	line-height: var(--sab-button-line);
}

.mmp-glimpse__sample:is(:hover, :focus-visible) .mmp-glimpse__sample-label {
	background: var(--sab-cream);
	border-color: var(--sab-cream);
	color: var(--sab-dark);
}

.mmp-glimpse__images {
	display: grid;
	gap: calc(var(--sab-gap) * 1.5);
	margin: 0;
	padding: 0;
	list-style: none;
}

.mmp-glimpse__figure {
	margin: 0;
}

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

.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: calc(var(--sab-gap) * 1.5);
		align-items: start;
	}
}

@media (max-width: 921px) {
	.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 card per level, lifted, with a Launch Circle gold
   stripe and the price in a gold pill (Kevin's option A). */
.mmp-levels {
	color: var(--sab-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;
}


.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). */
:is(.mmp-level, .mmp-book-extra) {
	margin: 0;
	padding: 1rem 1.15rem;
	border: 1px solid var(--sab-border);
	border-left: 5px solid var(--sab-status-launch-bg);
	border-radius: 12px;
	background: #fff;
	box-shadow: var(--sab-lift-shadow);
}

.single-product .mmp-level__name {
	font-family: "Feed Store", Georgia, serif !important;
	font-weight: normal !important;
	font-size: 1rem !important;
	line-height: 1.3;
	color: var(--sab-dark) !important;
	margin: 0 !important;
}

.single-product .mmp-level__price {
	display: inline-block;
	margin-left: 0.3rem;
	padding: 2px 9px;
	border-radius: 999px;
	background: var(--sab-status-launch-bg);
	color: var(--sab-status-launch-text);
	font-family: inherit;
	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. */
.mmp-level__sold-out {
	display: inline-block;
	margin-top: 0.5rem;
	padding: 5px 10px;
	border: 1px solid var(--sab-status-border);
	border-radius: 999px;
	font-size: 0.66rem;
	font-weight: 800;
	letter-spacing: 0.12em;
	line-height: 1;
	text-transform: uppercase;
	color: var(--sab-status-text);
}

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

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

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

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

.mmp-level__perks strong {
	color: var(--sab-dark);
}

/* The site's outlined pill, with less padding to fit the column. */
:is(.mmp-level__button, .mmp-book-extra__button) {
	display: inline-block;
	margin-top: 0.75rem;
	padding: 7px 18px;
	border: 1px solid var(--sab-navy);
	border-radius: var(--sab-button-radius);
	color: var(--sab-navy);
	font-size: 0.85rem;
	font-weight: var(--sab-button-weight);
	letter-spacing: var(--sab-button-tracking);
	line-height: var(--sab-button-line);
	text-decoration: none;
	transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

:is(.mmp-level__button, .mmp-book-extra__button):is(:hover, :focus-visible) {
	background: var(--sab-cream);
	border-color: var(--sab-cream);
	color: var(--sab-dark);
}

/* 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(--sab-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: "Feed Store", Georgia, serif !important;
	font-weight: normal !important;
	font-size: 1.3rem !important;
	line-height: 1.25;
	color: var(--sab-dark) !important;
	margin: 0 0 0.5rem !important;
}

.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 !important;                      /* 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(--sab-dark);
}

.single-product .mmp-book-extra a:not(.mmp-book-extra__button) {
	color: var(--sab-navy);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

/* 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(--sab-dark);
	color: var(--sab-cream);
	overflow: hidden;
}

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

.mmp-glimpse-modal::backdrop {
	background: rgba(15, 20, 23, 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;
}

.mmp-glimpse-modal__status {
	margin: 0;
	font-size: 0.85rem;
	letter-spacing: 0.04em;
}

.mmp-glimpse-modal button {
	margin: 0;
	border: 1px solid rgba(229, 219, 194, 0.5);
	border-radius: var(--sab-button-radius);
	background: transparent;
	color: var(--sab-cream);
	font-size: var(--sab-button-size);
	font-weight: var(--sab-button-weight);
	letter-spacing: var(--sab-button-tracking);
	line-height: var(--sab-button-line);
	padding: 10px 26px;
	box-shadow: none;
}

.mmp-glimpse-modal button:is(:hover, :focus-visible):not(:disabled) {
	background: var(--sab-cream);
	border-color: var(--sab-cream);
	color: var(--sab-dark);
}

.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;
}

/* 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(--sab-cream);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.mmp-glimpse-modal__pdf:is(:hover, :focus-visible) {
	color: #fff;
}

.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%;
	margin: 0;
}

.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(--sab-text-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: #fff;
}

.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 18px;
	}
}

/* --- Ended event note (inc/live-event.php), where the buy form was. --- */

.single-product .summary .sab-event-ended-note {
	margin: 0 0 1.5rem;
	font-weight: 700;
	color: var(--sab-dark);
}

/* --- Related books: the shop's cards and grid (3 across, 2 on tablets, 1 on phones; styles/shop-loop.css). --- */

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

/* Feed Store as the site's other section headings (Astra's h2 forces the
   thin "feedstore" with !important). */
.single-product :is(.related.products, .up-sells.products) > h2,
.single-product .mmp-profiles__heading {
	font-family: "Feed Store", Georgia, serif !important;
	font-weight: normal !important;
}

.single-product :is(.related.products, .up-sells.products) > h2 {
	font-size: clamp(1.75rem, 2.6vw, 2.4rem) !important;
	color: var(--sab-dark) !important;
	margin: 0 0 1.75rem !important;
}

/* --- Responsive --- */

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

