/* ==========================================================================
   Cavanagh – extras on top of theme.json
   Colours and fonts come from theme.json presets, so edits in
   Appearance → Editor → Styles carry through to everything here.
   ========================================================================== */

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
::selection { background: var(--wp--preset--color--contrast); color: var(--wp--preset--color--base); }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- Header ----------------------------------------------------- */
.cav-header {
	position: sticky;
	top: 0;
	z-index: 50;
}
.admin-bar .cav-header { top: var(--wp-admin--admin-bar--height, 32px); }
@media (max-width: 600px) { .admin-bar .cav-header { top: 0; } }

.cav-header .wp-block-site-logo img { display: block; }

/* Mobile menu overlay: big serif links */
.wp-block-navigation__responsive-container.is-menu-open {
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--30);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	gap: var(--wp--preset--spacing--30);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--x-large);
	text-transform: none;
	letter-spacing: 0;
	font-weight: 400;
}

/* ---------- Block styles ---------------------------------------------- */

/* Book cover: 2:3, crisp shadow, faint spine, small lift on hover */
.is-style-book-cover { position: relative; }
/* Covers keep their own shape (no cropping) */
.is-style-book-cover img {
	width: 100%;
	height: auto;
	box-shadow: var(--wp--preset--shadow--book);
	transition: transform var(--wp--custom--transition, 200ms ease);
}
.is-style-book-cover::after {
	content: "";
	position: absolute;
	top: 0; bottom: 0; left: 0;
	width: 5%;
	background: linear-gradient(90deg, rgba(0,0,0,.22), rgba(255,255,255,.10) 55%, transparent);
	pointer-events: none;
}
.is-style-book-cover:hover img { transform: translateY(-4px); }

/* Small label above headings ("NEW RELEASE") */
p.is-style-eyebrow {
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

/* Text-link button ("Read more →") */
.wp-block-button.is-style-text-link .wp-block-button__link {
	background: transparent;
	color: currentColor;
	border: 0;
	border-bottom: 1px solid currentColor;
	padding: 0 0 0.2em;
}
.wp-block-button.is-style-text-link .wp-block-button__link::after {
	content: "\2192";
	display: inline-block;
	margin-left: .5em;
	transition: transform var(--wp--custom--transition, 200ms ease);
}
.wp-block-button.is-style-text-link .wp-block-button__link:hover { background: transparent; color: currentColor; }
.wp-block-button.is-style-text-link .wp-block-button__link:hover::after { transform: translateX(4px); }

/* Outline buttons stay black & white */
.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: currentColor;
	border: 1px solid currentColor;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--contrast);
}
/* On dark sections, invert hover */
.has-contrast-background-color .wp-block-button:not(.is-style-outline):not(.is-style-text-link) > .wp-block-button__link {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--base);
}
.has-contrast-background-color .wp-block-button:not(.is-style-outline):not(.is-style-text-link) > .wp-block-button__link:hover {
	background: transparent;
	color: var(--wp--preset--color--base);
}
.has-contrast-background-color .wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--base);
}

/* Cast cards (cover blocks): black & white until hovered */
.cav-cast-card { overflow: hidden; }
.cav-cast-card .wp-block-cover__image-background {
	filter: grayscale(100%);
	transition: filter 400ms ease, transform 600ms ease;
}
.cav-cast-card:hover .wp-block-cover__image-background { filter: grayscale(0%); transform: scale(1.04); }
.cav-cast-card .wp-block-cover__inner-container > * { margin-block: 0; }
.cav-cast-card .wp-block-cover__inner-container > * + * { margin-top: .35rem; }

/* ---------- Sections --------------------------------------------------- */

/* Section heading row: title left, link right, wraps on mobile */
.cav-section-head { row-gap: var(--wp--preset--spacing--20); }

/* Rows of books/cast scroll sideways on phones instead of stacking tall */
@media (max-width: 781px) {
	.cav-scroll-row.wp-block-columns {
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		gap: var(--wp--preset--spacing--30) !important;
		padding-bottom: .75rem;
		-webkit-overflow-scrolling: touch;
	}
	.cav-scroll-row.wp-block-columns > .wp-block-column {
		flex: 0 0 62% !important;
		scroll-snap-align: start;
	}
}

/* Blog cards */
.cav-post-card .wp-block-post-featured-image { overflow: hidden; }
.cav-post-card .wp-block-post-featured-image img { transition: transform 500ms ease; }
.cav-post-card:hover .wp-block-post-featured-image img { transform: scale(1.03); }

/* Newsletter form (plain HTML in the newsletter section).
   Uses the section's text colour, so it works on light and dark backgrounds. */
.cav-signup {
	--cav-fg: var(--wp--preset--color--contrast);
	--cav-bg: var(--wp--preset--color--base);
	display: flex;
	flex-wrap: wrap;
	max-width: 520px;
	margin: 0;
}
.has-contrast-background-color .cav-signup {
	--cav-fg: var(--wp--preset--color--base);
	--cav-bg: var(--wp--preset--color--contrast);
}
.cav-signup.aligncenter, .has-text-align-center .cav-signup { margin-inline: auto; }
.cav-signup input[type="email"] {
	flex: 1 1 240px;
	min-width: 0;
	font: inherit;
	font-size: var(--wp--preset--font-size--small);
	padding: 0.95em 1em;
	border: 1px solid var(--cav-fg);
	border-right: 0;
	background: transparent;
	color: var(--cav-fg);
	border-radius: 0;
}
.cav-signup input[type="email"]::placeholder { color: var(--cav-fg); opacity: .55; }
.cav-signup input[type="email"]:focus { outline: 2px solid var(--cav-fg); outline-offset: 2px; }
.cav-signup button {
	flex: 0 0 auto;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	padding: 0.95em 1.6em;
	border: 1px solid var(--cav-fg);
	background: var(--cav-fg);
	color: var(--cav-bg);
	cursor: pointer;
	border-radius: 0;
	transition: background 200ms ease, color 200ms ease;
}
.cav-signup button:hover { background: transparent; color: var(--cav-fg); }
.cav-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 480px) {
	.cav-signup input[type="email"] { border-right: 1px solid var(--cav-fg); flex-basis: 100%; }
	.cav-signup button { flex-basis: 100%; margin-top: .5rem; }
}

/* FAQ */
.wp-block-details summary {
	cursor: pointer;
	list-style: none;
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--large);
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; font-family: var(--wp--preset--font-family--body); transition: transform 200ms ease; }
.wp-block-details[open] summary::after { transform: rotate(45deg); }

/* Forms */
input[type="text"], input[type="email"], input[type="tel"], input[type="search"],
input[type="password"], input[type="number"], input[type="url"], textarea, select {
	font: inherit;
	border-radius: 0;
}

/* ---------- WooCommerce ------------------------------------------------ */

/* Product images behave like book covers */
.wc-block-components-product-image img,
.wp-block-woocommerce-product-image img,
.woocommerce ul.products li.product a img {
	aspect-ratio: var(--wp--custom--book-ratio, 2/3);
	object-fit: cover;
	box-shadow: var(--wp--preset--shadow--book);
	transition: transform var(--wp--custom--transition, 200ms ease);
}
.wc-block-product:hover .wc-block-components-product-image img { transform: translateY(-4px); }

.wc-block-product .wp-block-post-title,
.wp-block-woocommerce-product-template .wp-block-post-title {
	font-family: var(--wp--preset--font-family--heading);
	line-height: 1.25;
}

/* Sale badge: black square label */
.wc-block-components-product-sale-badge,
.woocommerce span.onsale {
	background: var(--wp--preset--color--contrast) !important;
	color: var(--wp--preset--color--base) !important;
	border: 0 !important;
	border-radius: 0 !important;
	font-size: 0.6875rem !important;
	font-weight: 600 !important;
	letter-spacing: .14em;
	text-transform: uppercase;
	padding: .4em .8em !important;
}

.wc-block-components-product-price { font-weight: 600; }
.wc-block-components-product-price del { color: var(--wp--preset--color--muted); font-weight: 400; }
.wc-block-components-product-price ins { text-decoration: none; }

.wc-block-components-product-rating__stars span::before,
.star-rating span::before { color: var(--wp--preset--color--contrast); }

/* Grid add-to-cart: outline, uppercase */
.wc-block-components-product-button .wp-block-button__link,
.wc-block-components-product-button__button {
	background: transparent !important;
	color: var(--wp--preset--color--contrast) !important;
	border: 1px solid var(--wp--preset--color--contrast) !important;
	border-radius: 0 !important;
	font-size: 0.6875rem !important;
	font-weight: 600 !important;
	letter-spacing: .14em !important;
	text-transform: uppercase !important;
}
.wc-block-components-product-button .wp-block-button__link:hover,
.wc-block-components-product-button__button:hover {
	background: var(--wp--preset--color--contrast) !important;
	color: var(--wp--preset--color--base) !important;
}

/* Cart / checkout main buttons */
.wc-block-components-button:not(.is-link) {
	background: var(--wp--preset--color--contrast) !important;
	color: var(--wp--preset--color--base) !important;
	border-radius: 0 !important;
	text-transform: uppercase;
	letter-spacing: .12em;
	font-weight: 600;
}

/* Single product */
.single-product .wp-block-woocommerce-product-image-gallery img { box-shadow: var(--wp--preset--shadow--book); }
.wp-block-add-to-cart-form .single_add_to_cart_button {
	background: var(--wp--preset--color--contrast) !important;
	color: var(--wp--preset--color--base) !important;
	border: 1px solid var(--wp--preset--color--contrast) !important;
	border-radius: 0 !important;
	padding: 1em 2.2em !important;
	font-size: var(--wp--preset--font-size--x-small) !important;
	font-weight: 600 !important;
	letter-spacing: .14em;
	text-transform: uppercase;
}
.wp-block-add-to-cart-form .single_add_to_cart_button:hover {
	background: var(--wp--preset--color--base) !important;
	color: var(--wp--preset--color--contrast) !important;
}
.wp-block-add-to-cart-form .quantity input.qty { width: 4.5em; text-align: center; padding: .85em .5em; border: 1px solid var(--wp--preset--color--line); }
.wp-block-add-to-cart-form table.variations select { padding: .7em; border: 1px solid var(--wp--preset--color--line); }

.wc-block-mini-cart__badge {
	background: var(--wp--preset--color--contrast) !important;
	color: var(--wp--preset--color--base) !important;
	border-color: var(--wp--preset--color--base) !important;
}

.wc-block-components-notice-banner { border-radius: 0; }

/* ---------- Small fixes ------------------------------------------------- */

/* Plain link lists (footer, book details) */
.cav-plain-list { list-style: none; }
.cav-plain-list a { text-decoration: none; }
.cav-plain-list a:hover { text-decoration: underline; }

/* Linked headings: no underline until hover */
:where(h1, h2, h3, h4) a { text-decoration: none; }
:where(h1, h2, h3, h4) a:hover { text-decoration: underline; text-underline-offset: .12em; text-decoration-thickness: 1px; }

/* Header search: icon only, no black box */
.cav-header .wp-block-search__button {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 0;
	padding: .4rem;
	margin: 0;
}
.cav-header .wp-block-search__button:hover { background: transparent; opacity: .6; }
.cav-header .wp-block-search__button svg { width: 22px; height: 22px; fill: currentColor; }
.cav-header .wp-block-search.wp-block-search__searchfield-hidden .wp-block-search__input { border-color: var(--wp--preset--color--line); }

/* "Read more" links in post cards */
.wp-block-read-more.cav-read-more {
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	border-bottom: 1px solid currentColor;
	padding-bottom: .2em;
	align-self: flex-start;
	display: inline-block;
}
.wp-block-read-more.cav-read-more::after { content: "\2192"; display: inline-block; margin-left: .5em; transition: transform 200ms ease; }
.wp-block-read-more.cav-read-more:hover::after { transform: translateX(4px); }

/* Book-shaped product images even when a block sets 1:1 inline */
.wc-block-components-product-image img { aspect-ratio: var(--wp--custom--book-ratio, 2/3) !important; }

/* Keep the hero cover a sensible size on phones */
@media (max-width: 781px) {
	.wp-block-image.aligncenter.is-style-book-cover { max-width: 240px; margin-inline: auto; }
}

/* ---------- Buy links block (v1.1) -------------------------------------- */
.cav-buy-links__heading {
	margin: 0 0 .6rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.cav-buy-links__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
}
.cav-buy-links__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: .85em 1.6em;
	border: 1px solid var(--wp--preset--color--contrast);
	background: transparent;
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	line-height: 1.2;
	transition: background 200ms ease, color 200ms ease;
}
.cav-buy-links__button:hover,
.cav-buy-links__button.is-primary {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}
.cav-buy-links__button.is-primary:hover { background: transparent; color: var(--wp--preset--color--contrast); }
a.cav-buy-links__button:focus-visible { outline: 2px solid var(--wp--preset--color--contrast); outline-offset: 3px; }

/* ---------- Single product: cover left, details right (v1.1) ------------ */
.cav-product { align-items: flex-start; }
.cav-product__cover .wp-block-post-featured-image { margin: 0; }
.cav-product__cover .wp-block-post-featured-image img {
	width: 100%;
	height: auto;
	aspect-ratio: auto !important;
	object-fit: contain;
}
@media (min-width: 782px) {
	/* Cover stays in view while reading a long description */
	.cav-product__cover { position: sticky; top: 6rem; }
}
/* Stacked (narrow screens): centred cover, not full width */
@media (max-width: 781px) {
	.cav-product__cover { max-width: 300px !important; flex-basis: auto !important; width: 100%; margin-inline: auto !important; align-self: center; }
	.cav-product__details { text-align: left; }
}
.cav-product__details .wp-block-post-excerpt__excerpt { font-size: var(--wp--preset--font-size--medium); color: var(--wp--preset--color--contrast); }
.cav-product__direct { padding-top: var(--wp--preset--spacing--30); border-top: 1px solid var(--wp--preset--color--line); }
.cav-product__direct .wp-block-add-to-cart-form form.cart { display: flex; flex-wrap: wrap; gap: .6rem; align-items: stretch; margin: 0; }

/* ---------- Book pages (v1.2) ------------------------------------------- */
.cav-book__blurb > :first-child { margin-top: 0; }
.cav-book__blurb { font-family: var(--wp--preset--font-family--reading); font-size: 1.0625rem; line-height: 1.75; }
.cav-book__blurb h3, .cav-book__blurb h4, .cav-book__blurb h6 { font-family: var(--wp--preset--font-family--heading); text-transform: none; letter-spacing: 0; }
/* Shelves: every cover the same height, each keeps its own shape,
   so titles underneath line up even when cover sizes differ. */
.cav-shelf .wp-block-image.is-style-book-cover {
	height: var(--cav-shelf-h, clamp(240px, 26vw, 400px));
	display: flex;
	align-items: flex-end;
	justify-content: flex-start;
}
.cav-shelf .wp-block-image.is-style-book-cover a { display: block; height: 100%; }
.cav-shelf .wp-block-image.is-style-book-cover img {
	height: 100%;
	width: auto;
	max-width: 100%;
	object-fit: contain;
}
.cav-shelf .wp-block-image.is-style-book-cover::after { display: none; }
@media (max-width: 781px) {
	.cav-shelf { --cav-shelf-h: 300px; }
}

/* MailPoet form on the newsletter band */
.cav-newsletter .mailpoet_form { max-width: 520px; margin-inline: auto; padding: 0 !important; }
.cav-newsletter .mailpoet_form form { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; }
.cav-newsletter .mailpoet_paragraph { margin: 0 !important; }
.cav-newsletter .mailpoet_text, .cav-newsletter input[type="email"] {
	min-width: 0; width: 100%; max-width: 340px; padding: .9em 1em !important; border: 1px solid var(--wp--preset--color--contrast) !important; border-radius: 0 !important; font: inherit;
}
.cav-newsletter .mailpoet_submit, .cav-newsletter input[type="submit"] {
	background: var(--wp--preset--color--contrast) !important; color: var(--wp--preset--color--base) !important;
	border: 1px solid var(--wp--preset--color--contrast) !important; border-radius: 0 !important;
	padding: .9em 1.6em !important; font-family: var(--wp--preset--font-family--body) !important;
	font-size: var(--wp--preset--font-size--x-small) !important; font-weight: 600 !important; letter-spacing: .14em; text-transform: uppercase; cursor: pointer;
}
.cav-newsletter .mailpoet_submit:hover { background: transparent !important; color: var(--wp--preset--color--contrast) !important; }

/* Header: switch to the menu button below 1024px so long site names and
   six-plus menu items never wrap onto two lines on tablets. */
@media (max-width: 1023px) {
	.cav-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.cav-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
}
@media (max-width: 600px) {
	.cav-header .wp-block-site-title { font-size: 1.1rem; }
}
