/* Shop archive + series landing pages. */

.shop-hero,
.series-hero.has-image {
	position: relative;
	background-size: cover;
	background-position: center;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	min-height: 62vh;
	/* The transparent nav is position:absolute, so it takes no space in flow.
	   The hero therefore starts at y=0 and only needs top padding to clear it —
	   a negative margin here would crop the top of the image. */
	padding: calc(var(--nav-h) + 80px) 5% 110px;
}
.shop-hero::before,
.series-hero.has-image::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(26,11,46,.72) 0%, rgba(26,11,46,.55) 100%);
}
/* margin-inline is what actually centres this. `.series-hero.has-image` is a
   flex container with justify-content:center, so an image-backed hero centred
   by accident. `.series-hero` without an image is a plain block, so the 760px
   inner sat hard against the left padding edge — which is why Sunbeam Saga and
   Ora (neither has a hero image set) looked left-aligned. */
.shop-hero__inner,
.series-hero__inner { position: relative; z-index: 1; max-width: 760px; margin-inline: auto; }

.shop-hero h1,
.series-hero__title {
	font-size: clamp(2.1rem, 5.5vw, 3.5rem);
	color: var(--white);
	margin: 0;
	font-weight: 900;
	text-wrap: balance;
}
.shop-hero p { font-size: 1.1rem; color: rgba(255,255,255,.8); margin: 20px 0 0; }

/* Series hero without an image falls back to the brand gradient. */
.series-hero {
	background: linear-gradient(135deg, var(--deep-purple) 0%, #2d1b4e 100%);
	padding: 70px 5%;
	text-align: center;
}
.series-hero__eyebrow {
	font-family: var(--font-display);
	font-weight: 800;
	font-size: .8rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--accent);
	margin: 0 0 12px;
}
.series-hero__tagline { color: rgba(255,255,255,.85); font-size: 1.15rem; margin: 22px 0 0; }
.series-hero__count { color: rgba(255,255,255,.6); font-size: .9rem; margin: 8px 0 0; }

.series-intro {
	max-width: 760px;
	margin: 50px auto 0;
	padding: 0 5%;
	text-align: center;
	font-size: 1.1rem;
	line-height: 1.8;
	color: #555;
}

/* Jump links between series on the shop page. */
.series-jump {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
	padding: 34px 5% 0;
}
.series-jump__link {
	display: block;
	padding: 14px 26px;
	border: 2px solid var(--hairline);
	border-radius: 50px;
	text-decoration: none;
	text-align: center;
	transition: border-color .25s ease, transform .25s ease;
}
.series-jump__link:hover { border-color: var(--accent-dark); transform: translateY(-2px); }
.series-jump__name {
	display: block;
	font-family: var(--font-display);
	font-weight: 800;
	color: var(--deep-purple);
}
.series-jump__age { display: block; font-size: .8rem; color: var(--text-muted); }

.shop-wrapper { max-width: var(--wrap); margin: 0 auto; padding: 0 3%; }

/* --- WooCommerce's own loop (search, pagination, filtered views) --- */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 30px;
	list-style: none;
	padding: 0;
	margin: 50px 0 0;
	width: 100%;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product {
	width: 100%;
	float: none;
	margin: 0;
	padding: 0;
	text-align: center;
}
.woocommerce ul.products li.product a img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border-radius: 12px;
	display: block;
	margin-bottom: 12px;
	box-shadow: 0 8px 25px rgba(0,0,0,.12);
	transition: transform .3s ease, box-shadow .3s ease;
}
.woocommerce ul.products li.product a img:hover {
	transform: translateY(-8px);
	box-shadow: 0 20px 40px rgba(0,0,0,.2);
}
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--font-display);
	font-size: 1rem;
	font-weight: 800;
	color: var(--deep-purple);
	margin: 0 0 6px;
	padding: 0;
	line-height: 1.3;
}
.woocommerce ul.products li.product .jubix-book-num {
	display: block;
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #aaa;
	margin-bottom: 6px;
}
.woocommerce ul.products li.product .price {
	font-family: var(--font-body);
	font-size: 1rem;
	color: var(--accent-dark);
	font-weight: 700;
	display: block;
	margin-bottom: 14px;
}
.woocommerce ul.products li.product .price del { color: #bbb; font-size: .85rem; margin-right: 4px; }
.woocommerce ul.products li.product .price ins { text-decoration: none; }
.woocommerce ul.products li.product .button {
	background: linear-gradient(to right, var(--accent), var(--accent-dark));
	color: var(--deep-purple);
	border: none;
	border-radius: 50px;
	padding: 12px 26px;
	font-family: var(--font-display);
	font-weight: 800;
	font-size: .92rem;
	text-decoration: none;
	display: inline-block;
	box-shadow: 0 5px 15px rgba(212,175,55,.3);
	transition: transform .2s ease, box-shadow .2s ease;
}
.woocommerce ul.products li.product .button:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px rgba(212,175,55,.4);
}

/* Sorting + result count are now visible — they work again. */
.woocommerce-result-count,
.woocommerce-ordering { margin-top: 30px; font-size: .92rem; color: var(--text-muted); }
.woocommerce-ordering select {
	padding: 8px 12px;
	border: 2px solid var(--hairline);
	border-radius: var(--radius-sm);
	font-family: var(--font-body);
}

.woocommerce nav.woocommerce-pagination { margin: 50px 0; text-align: center; }
.woocommerce nav.woocommerce-pagination ul { display: inline-flex; gap: 8px; border: 0; }
.woocommerce nav.woocommerce-pagination ul li { border: 0; }
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	min-width: 42px;
	padding: 10px 14px;
	border-radius: 50px;
	font-family: var(--font-display);
	font-weight: 800;
	color: var(--deep-purple);
	background: #faf8f2;
}
.woocommerce nav.woocommerce-pagination ul li span.current {
	background: linear-gradient(to right, var(--accent), var(--accent-dark));
}

@media (max-width: 1100px) { .woocommerce ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 700px)  { .woocommerce ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; } }
