/* ==========================================================================
   Otherwise — shop, archives, search results
   ========================================================================== */

/* ---- Page head ----------------------------------------------------------- */

.ow-page-head {
	padding-top: clamp(2.5rem, 6vw, 4.5rem);
	padding-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

/* Kept compact on the shop so products appear high on the page. */
.ow-page-head--shop {
	padding-bottom: var(--ow-space-5);
	border-bottom: var(--ow-hairline);
	margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

body.ow .ow-page-head__title {
	margin: 0;
	font-size: var(--ow-fs-h1);
	text-transform: uppercase;
}

.ow-page-head__meta {
	margin: var(--ow-space-3) 0 0;
	color: var(--ow-muted);
	max-width: 56ch;
}

/* ---- Woo wrapper --------------------------------------------------------- */

.ow-woo {
	padding-bottom: var(--ow-section);
}

.ow-woo--grid > .woocommerce,
.ow-woo--grid > .products,
.ow-woo--grid .woocommerce-notices-wrapper,
.ow-woo--grid nav.woocommerce-pagination,
.ow-woo--grid .ow-shop-controls,
.ow-woo--grid .woocommerce-info,
.ow-woo--grid .woocommerce-no-products-found {
	width: 100%;
	max-width: var(--ow-container);
	margin-inline: auto;
	padding-inline: var(--ow-gutter);
}

/* The editorial band must escape the container it is nested in. */
.ow-woo--grid .ow-shop-break {
	margin-block: var(--ow-section-tight);
}

.ow-shop-break .ow-editorial__body {
	min-height: clamp(320px, 46vh, 520px);
}

/* ---- Grid ---------------------------------------------------------------- */

/* The catalogue pages run three-up on desktop so each tee gets a larger,
   more editorial frame than the four-up rows used on the homepage. */
body.ow.woocommerce-shop .ow-grid-products,
body.ow.tax-product_cat .ow-grid-products,
body.ow.search .ow-grid-products {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 1000px) {
	body.ow.woocommerce-shop .ow-grid-products,
	body.ow.tax-product_cat .ow-grid-products,
	body.ow.search .ow-grid-products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---- Controls ------------------------------------------------------------ */

.ow-shop-controls {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--ow-space-4);
	margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.ow-shop-controls__filters {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ow-space-2);
}

.ow-chip--filter {
	display: inline-flex;
	align-items: center;
	min-height: 38px;
	padding: 0 var(--ow-space-4);
	border: 1px solid var(--ow-border);
	border-radius: var(--ow-radius-sm);
	background: transparent;
	color: var(--ow-muted);
	font-size: var(--ow-fs-xs);
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	cursor: pointer;
	transition:
		border-color var(--ow-dur-fast) var(--ow-ease),
		color var(--ow-dur-fast) var(--ow-ease),
		background-color var(--ow-dur-fast) var(--ow-ease);
}

.ow-chip--filter:hover {
	border-color: var(--ow-border-strong);
	color: var(--ow-text);
}

.ow-chip--filter.is-selected {
	background: var(--ow-accent);
	border-color: var(--ow-accent);
	color: var(--ow-on-accent);
}

.ow-shop-controls__sort form,
body.ow .woocommerce-ordering {
	margin: 0;
}

body.ow .woocommerce-ordering select {
	min-width: 210px;
	min-height: 38px;
	font-size: var(--ow-fs-xs);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* ---- Loop add-to-cart ---------------------------------------------------- */

/* WooCommerce's own loop button, restyled rather than replaced. */
body.ow .ow-card__action .button,
body.ow .ow-card__action .added_to_cart {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 42px;
	padding: 0 var(--ow-space-4);
	border: 1px solid var(--ow-accent);
	border-radius: var(--ow-radius-sm);
	background: var(--ow-accent);
	color: var(--ow-on-accent);
	font-family: var(--ow-font-body);
	font-size: var(--ow-fs-xs);
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	transition: background-color var(--ow-dur-fast) var(--ow-ease);
}

body.ow .ow-card__action .button:hover {
	background: var(--ow-accent-dim);
	border-color: var(--ow-accent-dim);
}

body.ow .ow-card__action .added_to_cart {
	margin-top: var(--ow-space-2);
	background: transparent;
	color: var(--ow-text);
	border-color: var(--ow-border-strong);
}

body.ow .ow-card__action .button.loading { opacity: 0.7; }

/* ---- Pagination ---------------------------------------------------------- */

body.ow .woocommerce-pagination ul,
body.ow .ow-post-grid + .navigation .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--ow-space-2);
	margin: var(--ow-section-tight) 0 0;
	padding: 0;
	border: 0;
	list-style: none;
}

body.ow .woocommerce-pagination li { border: 0; }

body.ow .woocommerce-pagination a,
body.ow .woocommerce-pagination span,
body.ow .navigation .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	padding: 0 var(--ow-space-3);
	border: 1px solid var(--ow-border);
	border-radius: var(--ow-radius-sm);
	background: transparent;
	color: var(--ow-muted);
	font-size: var(--ow-fs-sm);
	font-weight: 700;
}

body.ow .woocommerce-pagination a:hover,
body.ow .navigation .page-numbers:hover {
	border-color: var(--ow-accent);
	color: var(--ow-accent);
}

body.ow .woocommerce-pagination .current,
body.ow .navigation .page-numbers.current {
	background: var(--ow-accent);
	border-color: var(--ow-accent);
	color: var(--ow-on-accent);
}

/* ---- Empty states -------------------------------------------------------- */

.ow-empty {
	padding-block: clamp(3rem, 9vw, 7rem);
	max-width: 40ch;
}

.ow-empty .ow-display { margin-bottom: var(--ow-space-5); }
.ow-empty .ow-lead { margin-bottom: var(--ow-space-6); }

body.ow .woocommerce-no-products-found .woocommerce-info {
	background: none;
	border: 0;
	padding: 0;
	font-family: var(--ow-font-display);
	font-size: var(--ow-fs-h2);
	text-transform: uppercase;
}

/* ---- Post grid (journal / non-product search hits) ----------------------- */

.ow-post-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1.5rem, 3vw, 2.5rem);
}

.ow-post-card__media {
	display: block;
	overflow: hidden;
	border-radius: var(--ow-radius-sm);
	margin-bottom: var(--ow-space-4);
}

body.ow .ow-post-card__title {
	font-family: var(--ow-font-body);
	font-size: var(--ow-fs-h4);
	font-weight: 800;
	margin-bottom: var(--ow-space-2);
}

.ow-post-card__title a:hover { color: var(--ow-accent); }
.ow-post-card__excerpt { color: var(--ow-muted); font-size: var(--ow-fs-sm); }

.ow-search__other { margin-top: var(--ow-section-tight); }

@media (max-width: 860px) {
	.ow-post-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	.ow-post-grid { grid-template-columns: minmax(0, 1fr); }

	.ow-shop-controls {
		flex-direction: column;
		align-items: stretch;
	}

	.ow-shop-controls__filters { justify-content: flex-start; }
	body.ow .woocommerce-ordering select { width: 100%; min-height: 44px; }

	/* Thumb-sized targets on touch. */
	.ow-chip--filter { min-height: 44px; padding-inline: var(--ow-space-5); }
}
