/*
 * The Launch shop (spec shop-woocommerce §7): WooCommerce's standard markup in the site's personality.
 * Tokens only (the --launch-* custom properties of style.css): one accent (the emphasis), soft white
 * cards on the warm field, the pill button, the layout's display face for titles. Phone first.
 * Loaded only on shop pages (inc/shop.php), after WooCommerce's own stylesheets.
 */

/* ---------- Frame: a solid header (no hero on shop pages), one content column ---------- */

body.launch-shop-page .launch-header {
	position: sticky;
	top: 0;
	background: var(--launch-deep);
}

body.launch-shop-page .launch-site {
	min-height: 60vh;
}

.launch-shop {
	max-width: var(--launch-content);
	margin-inline: auto;
	padding: clamp(1.5rem, 4vw, 3rem) var(--launch-gutter) var(--launch-section-y);
}

.launch-shop--page {
	max-width: 56rem;
}

.launch-shop--page .launch-shop__title,
body.launch-shop-page .woocommerce-products-header__title,
body.launch-shop-page .product_title {
	font-family: var(--launch-display);
	font-weight: 500;
	font-size: var(--wp--preset--font-size--2xl, clamp(2rem, 5vw, 3rem));
	line-height: 1.05;
	letter-spacing: -0.01em;
	color: var(--launch-ink);
}

body.launch-layout-trades.launch-shop-page :is(.launch-shop__title, .woocommerce-products-header__title, .product_title, .woocommerce-loop-product__title) {
	font-weight: 800;
	text-transform: uppercase;
	line-height: 0.92;
}

.launch-shop__title {
	margin-bottom: clamp(1.25rem, 3vw, 2rem);
}

.launch-shop__content > * + * {
	margin-top: 1rem;
}

/* The demo banner (spec §8): plain words, never alarming, always visible. */
.launch-shop-demo {
	margin: 0;
	padding: 0.75rem var(--launch-gutter);
	background: var(--launch-card);
	border-bottom: 1px solid var(--launch-rule);
	color: var(--launch-ink);
	font-size: 0.9375rem;
	font-weight: 600;
	text-align: center;
}

/* ---------- Breadcrumb, result count, ordering ---------- */

body.launch-shop-page .woocommerce-breadcrumb {
	margin: 0 0 1rem;
	color: var(--launch-muted);
	font-size: 0.875rem;
}

body.launch-shop-page .woocommerce-breadcrumb a {
	color: var(--launch-muted);
}

body.launch-shop-page .woocommerce-products-header {
	margin-bottom: 1.25rem;
}

body.launch-shop-page .woocommerce-result-count {
	margin: 0 0 1.25rem;
	color: var(--launch-muted);
	font-size: 0.875rem;
}

body.launch-shop-page .woocommerce-ordering {
	margin: 0 0 1.5rem;
}

@media (min-width: 40rem) {
	body.launch-shop-page .woocommerce-result-count {
		float: left;
		line-height: 2.75rem;
	}

	body.launch-shop-page .woocommerce-ordering {
		float: right;
	}

	body.launch-shop-page ul.products {
		clear: both;
	}
}

/* ---------- Form controls ---------- */

body.launch-shop-page :is(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], input[type="search"], select, textarea),
body.launch-shop-page form .form-row :is(.input-text, select, textarea),
body.launch-shop-page .select2-container .select2-selection {
	min-height: 2.75rem;
	padding: 0.625rem 0.875rem;
	border: 1px solid var(--launch-rule);
	border-radius: 12px;
	background: var(--launch-card);
	color: var(--launch-ink);
	font: 400 1rem/1.4 var(--launch-body);
}

body.launch-shop-page :is(input, select, textarea):focus-visible {
	outline: 2px solid var(--launch-deep);
	outline-offset: 2px;
	border-color: var(--launch-deep);
}

body.launch-shop-page label {
	color: var(--launch-ink);
	font-weight: 600;
	font-size: 0.9375rem;
}

body.launch-shop-page .required {
	color: var(--launch-deep);
	text-decoration: none;
}

/* ---------- Buttons: the personality's pill (primary) and a quiet secondary ---------- */
/* :not(#_) lifts these above WooCommerce's deep button selectors (an id-weight, matching nothing). */

body.launch-shop-page:not(#_) :is(.button, button.button, input.button, a.button, .single_add_to_cart_button, .checkout-button) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3rem;
	padding: 0.875rem 1.5rem;
	border: 0;
	border-radius: 999px;
	background: var(--launch-card);
	color: var(--launch-deep);
	box-shadow: inset 0 0 0 1px var(--launch-rule);
	font: 700 1rem/1 var(--launch-body);
	text-decoration: none;
	cursor: pointer;
	transition: transform var(--launch-fast) var(--launch-ease), filter var(--launch-fast) var(--launch-ease);
}

body.launch-shop-page:not(#_) :is(.button.alt, button.button.alt, .add_to_cart_button, .single_add_to_cart_button, .checkout-button) {
	background: var(--launch-emphasis);
	color: var(--launch-on-emphasis);
	box-shadow: none;
}

body.launch-shop-page:not(#_) .button:hover {
	transform: translateY(-1px);
	filter: brightness(1.04);
	background: var(--launch-card);
	color: var(--launch-deep);
}

body.launch-shop-page:not(#_) :is(.button.alt, .add_to_cart_button, .single_add_to_cart_button, .checkout-button):hover {
	background: var(--launch-emphasis);
	color: var(--launch-on-emphasis);
}

body.launch-shop-page:not(#_) .button:focus-visible {
	outline: 2px solid var(--launch-deep);
	outline-offset: 3px;
}

body.launch-shop-page :is(.button, button):disabled,
body.launch-shop-page .button.disabled {
	opacity: 0.55;
	cursor: not-allowed;
	transform: none;
}

/* ---------- Product grid: soft white cards on the warm field ---------- */

body.launch-shop-page ul.products {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(0.875rem, 2.5vw, 1.5rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

body.launch-shop-page ul.products::before,
body.launch-shop-page ul.products::after {
	display: none;
}

@media (min-width: 48rem) {
	body.launch-shop-page ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 72rem) {
	body.launch-shop-page ul.products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

body.launch-shop-page ul.products[class] li.product,
body.launch-shop-page ul.products[class*="columns-"] li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	width: auto;
	float: none;
	clear: none;
	margin: 0;
	padding: 0 0 1rem;
	border-radius: var(--launch-radius-card);
	background: var(--launch-card);
	overflow: hidden;
	text-align: left;
}

body.launch-shop-page ul.products li.product a.woocommerce-LoopProduct-link {
	display: flex;
	flex-direction: column;
	flex: 1;
	color: var(--launch-ink);
	text-decoration: none;
}

body.launch-shop-page ul.products li.product a img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
	margin: 0 0 0.875rem;
	background: var(--launch-field);
}

body.launch-shop-page ul.products li.product .woocommerce-loop-product__title {
	padding: 0 1rem;
	margin: 0 0 0.375rem;
	font-family: var(--launch-display);
	font-weight: 500;
	font-size: clamp(1.0625rem, 2.4vw, 1.3125rem);
	line-height: 1.2;
	color: var(--launch-ink);
}

body.launch-shop-page ul.products li.product .price {
	display: block;
	padding: 0 1rem;
	margin: 0 0 0.875rem;
	color: var(--launch-ink);
	font-size: 0.9375rem;
	font-weight: 600;
}

body.launch-shop-page:not(#_) ul.products li.product .button {
	align-self: flex-start;
	margin: auto 1rem 0;
	min-height: 2.75rem;
	padding: 0.625rem 1rem;
	font-size: 0.875rem;
	white-space: nowrap;
}

body.launch-shop-page ul.products li.product a.woocommerce-LoopProduct-link:hover .woocommerce-loop-product__title {
	text-decoration: underline;
	text-underline-offset: 0.2em;
	text-decoration-thickness: 1px;
}

body.launch-shop-page ul.products li.product a.woocommerce-LoopProduct-link:focus-visible {
	outline: 2px solid var(--launch-deep);
	outline-offset: -2px;
}

/* ---------- Prices and the sale badge (the deep colour, never a warning colour) ---------- */

body.launch-shop-page :is(div.product, ul.products) .price del {
	color: var(--launch-muted);
	font-weight: 400;
	opacity: 1;
}

body.launch-shop-page :is(div.product, ul.products) .price ins {
	text-decoration: none;
	font-weight: 700;
}

body.launch-shop-page .woocommerce-price-suffix {
	color: var(--launch-muted);
	font-size: 0.8125rem;
	font-weight: 400;
}

body.launch-shop-page :is(ul.products li.product, div.product) span.onsale {
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	right: auto;
	z-index: 2;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0.3125rem 0.625rem;
	border-radius: 999px;
	background: var(--launch-deep);
	color: var(--launch-card);
	font: 700 0.75rem/1.2 var(--launch-body);
	letter-spacing: 0;
	text-transform: none;
}

/* ---------- Single product ---------- */

body.launch-shop-page div.product {
	position: relative;
	display: grid;
	gap: clamp(1.5rem, 4vw, 3.5rem);
}

@media (min-width: 56rem) {
	body.launch-shop-page div.product {
		grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
		align-items: start;
	}

	body.launch-shop-page div.product > :is(.woocommerce-tabs, .related, .upsells, .product_meta) {
		grid-column: 1 / -1;
	}
}

body.launch-shop-page div.product :is(.woocommerce-product-gallery, .summary) {
	float: none;
	width: auto;
	margin: 0;
}

body.launch-shop-page .woocommerce-product-gallery {
	position: relative;
}

body.launch-shop-page .woocommerce-product-gallery__wrapper {
	margin: 0;
}

body.launch-shop-page .woocommerce-product-gallery__image img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--launch-radius-card);
	background: var(--launch-card);
}

body.launch-shop-page .woocommerce-product-gallery__image:not(:first-child) {
	display: inline-block;
	width: calc((100% - 1.5rem) / 4);
	margin: 0.5rem 0.5rem 0 0;
}

body.launch-shop-page .woocommerce-product-gallery__image:nth-child(5n) {
	margin-right: 0;
}

body.launch-shop-page .summary {
	display: grid;
	gap: 1.125rem;
	align-content: start;
}

body.launch-shop-page .summary > * {
	margin: 0;
}

body.launch-shop-page div.product .summary :is(p.price, span.price) {
	color: var(--launch-ink);
	font-size: 1.375rem;
	font-weight: 600;
}

body.launch-shop-page .woocommerce-product-details__short-description {
	color: var(--launch-ink);
	font-size: 1.0625rem;
}

body.launch-shop-page form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.75rem;
	margin: 0;
	padding: 0;
}

body.launch-shop-page form.cart.variations_form {
	display: grid;
	gap: 0;
}

body.launch-shop-page form.cart .single_variation:empty,
body.launch-shop-page form.cart .woocommerce-variation:empty {
	display: none;
}

body.launch-shop-page form.cart .woocommerce-variation-price {
	margin-bottom: 0.75rem;
	font-weight: 600;
}

body.launch-shop-page form.cart .single_variation_wrap .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: flex-end;
}

body.launch-shop-page .quantity .qty {
	width: 5rem;
	text-align: center;
}

body.launch-shop-page table.variations {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
}

body.launch-shop-page table.variations :is(th, td) {
	display: block;
	padding: 0 0 0.375rem;
	border: 0;
	background: none;
	text-align: left;
}

body.launch-shop-page table.variations td.value {
	padding-bottom: 0.5rem;
}

body.launch-shop-page table.variations select {
	width: 100%;
	max-width: 22rem;
}

body.launch-shop-page .reset_variations {
	display: inline-block;
	margin-top: 0.25rem;
	color: var(--launch-deep);
	font-size: 0.875rem;
}

body.launch-shop-page div.product .stock {
	color: var(--launch-deep);
	font-weight: 600;
}

body.launch-shop-page div.product .stock.out-of-stock {
	color: var(--launch-muted);
}

body.launch-shop-page .product_meta {
	display: grid;
	gap: 0.25rem;
	color: var(--launch-muted);
	font-size: 0.875rem;
}

body.launch-shop-page .product_meta a {
	color: var(--launch-muted);
}

/* Tabs as plain sections: the description reads like the rest of the site. */
body.launch-shop-page div.product .woocommerce-tabs ul.tabs {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 1.25rem;
	padding: 0;
	border-bottom: 1px solid var(--launch-rule);
	list-style: none;
	overflow-x: auto;
}

body.launch-shop-page div.product .woocommerce-tabs ul.tabs::before,
body.launch-shop-page div.product .woocommerce-tabs ul.tabs li::before,
body.launch-shop-page div.product .woocommerce-tabs ul.tabs li::after {
	display: none;
}

body.launch-shop-page div.product .woocommerce-tabs ul.tabs li {
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
}

body.launch-shop-page div.product .woocommerce-tabs ul.tabs li a {
	display: inline-block;
	padding: 0.75rem 0.25rem;
	margin-bottom: -1px;
	border-bottom: 2px solid transparent;
	color: var(--launch-muted);
	font-weight: 600;
	text-decoration: none;
}

body.launch-shop-page div.product .woocommerce-tabs ul.tabs li.active a {
	border-bottom-color: var(--launch-deep);
	color: var(--launch-ink);
}

body.launch-shop-page .woocommerce-Tabs-panel {
	max-width: 44rem;
}

body.launch-shop-page .woocommerce-Tabs-panel > h2:first-child {
	display: none;
}

body.launch-shop-page .woocommerce-Tabs-panel p + p {
	margin-top: 1rem;
}

body.launch-shop-page .related > h2,
body.launch-shop-page .upsells > h2 {
	margin-bottom: 1.25rem;
	font-family: var(--launch-display);
	font-weight: 500;
	font-size: clamp(1.5rem, 3.5vw, 2rem);
}

/* ---------- Tables: cart, order review, account ---------- */

body.launch-shop-page table.shop_table {
	width: 100%;
	margin: 0 0 1.5rem;
	border: 0;
	border-collapse: separate;
	border-spacing: 0;
	border-radius: var(--launch-radius-card);
	background: var(--launch-card);
	overflow: hidden;
}

body.launch-shop-page table.shop_table :is(th, td) {
	padding: 0.875rem 1rem;
	border: 0;
	border-top: 1px solid var(--launch-rule);
	color: var(--launch-ink);
	text-align: left;
	vertical-align: middle;
}

body.launch-shop-page table.shop_table thead th {
	border-top: 0;
	color: var(--launch-muted);
	font-size: 0.875rem;
	font-weight: 600;
}

body.launch-shop-page table.shop_table img {
	width: 4rem;
	height: 4rem;
	object-fit: cover;
	border-radius: 10px;
}

body.launch-shop-page table.cart td.product-name a {
	color: var(--launch-ink);
	font-weight: 600;
}

body.launch-shop-page table.cart a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: 999px;
	color: var(--launch-deep) !important;
	font-size: 1.5rem;
	font-weight: 400;
}

body.launch-shop-page table.cart a.remove:hover {
	background: var(--launch-field);
	color: var(--launch-deep) !important;
}

body.launch-shop-page table.cart td.actions {
	background: var(--launch-card);
}

body.launch-shop-page table.cart td.actions .coupon {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}

body.launch-shop-page table.cart td.actions .coupon .input-text {
	width: auto;
	min-width: 10rem;
}

/* Small screens: WooCommerce stacks the cart rows (smallscreen.css); keep the card look. */
@media (max-width: 47.99rem) {
	body.launch-shop-page table.shop_table_responsive tr td {
		border-top: 0;
	}

	body.launch-shop-page table.shop_table_responsive tbody tr {
		border-top: 1px solid var(--launch-rule);
	}

	body.launch-shop-page table.shop_table_responsive tbody tr:first-child {
		border-top: 0;
	}

	body.launch-shop-page table.cart td.actions .coupon .input-text {
		flex: 1;
	}
}

body.launch-shop-page .cart-collaterals .cart_totals {
	float: none;
	width: 100%;
	max-width: 30rem;
	margin-left: auto;
}

body.launch-shop-page #ship-to-different-address {
	font-family: var(--launch-body);
	font-size: 1rem;
	font-weight: 600;
}

body.launch-shop-page .cart_totals h2,
body.launch-shop-page #order_review_heading,
body.launch-shop-page .woocommerce-billing-fields h3,
body.launch-shop-page .woocommerce-shipping-fields h3,
body.launch-shop-page .woocommerce-additional-fields h3 {
	margin: 0 0 1rem;
	font-family: var(--launch-display);
	font-weight: 500;
	font-size: 1.5rem;
}

body.launch-shop-page .wc-proceed-to-checkout {
	padding: 0;
}

body.launch-shop-page .wc-proceed-to-checkout .checkout-button {
	width: 100%;
	margin: 0;
}

body.launch-shop-page .includes_tax {
	color: var(--launch-muted);
	font-size: 0.8125rem;
}

/* ---------- Checkout ---------- */

body.launch-shop-page form.checkout .col2-set {
	display: grid;
	gap: 1.5rem;
	width: auto;
	float: none;
}

body.launch-shop-page form.checkout .col2-set :is(.col-1, .col-2) {
	float: none;
	width: auto;
}

body.launch-shop-page .form-row {
	margin: 0 0 1rem;
	padding: 0;
}

body.launch-shop-page .form-row label {
	display: block;
	margin-bottom: 0.375rem;
}

body.launch-shop-page .form-row :is(input.input-text, textarea, select) {
	width: 100%;
}

body.launch-shop-page #payment {
	border-radius: var(--launch-radius-card);
	background: var(--launch-card);
}

body.launch-shop-page #payment ul.payment_methods {
	padding: 1rem;
	border-bottom: 1px solid var(--launch-rule);
}

body.launch-shop-page #payment div.form-row {
	padding: 1rem;
}

body.launch-shop-page:not(#_) #payment #place_order {
	width: 100%;
}

body.launch-shop-page .woocommerce-privacy-policy-text,
body.launch-shop-page .woocommerce-terms-and-conditions-wrapper {
	color: var(--launch-muted);
	font-size: 0.875rem;
}

/* ---------- Notices: WooCommerce's live regions, in the site's colours ---------- */

body.launch-shop-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews, p.no-comments) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	border: 1px solid var(--launch-rule);
	border-radius: 12px;
	background: var(--launch-card);
	color: var(--launch-ink);
	font-style: normal;
	list-style: none;
}

body.launch-shop-page :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before {
	display: none;
}

body.launch-shop-page .woocommerce-error li {
	margin: 0;
}

body.launch-shop-page:not(#_) :is(.woocommerce-message, .woocommerce-info) .button {
	order: 2;
	min-height: 2.75rem;
	padding: 0.625rem 1.125rem;
	font-size: 0.9375rem;
}

/* ---------- My account ---------- */

body.launch-shop-page .woocommerce-MyAccount-navigation ul {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
}

body.launch-shop-page .woocommerce-MyAccount-navigation a {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	padding: 0.5rem 1rem;
	border-radius: 999px;
	background: var(--launch-card);
	color: var(--launch-ink);
	text-decoration: none;
}

body.launch-shop-page .woocommerce-MyAccount-navigation .is-active a {
	background: var(--launch-deep);
	color: var(--launch-card);
}

body.launch-shop-page :is(.woocommerce-MyAccount-navigation, .woocommerce-MyAccount-content) {
	float: none;
	width: auto;
}

body.launch-shop-page form.login,
body.launch-shop-page form.register {
	margin: 0 0 1.5rem;
	padding: 1.5rem;
	border: 0;
	border-radius: var(--launch-radius-card);
	background: var(--launch-card);
}

/* ---------- Policy pages ---------- */

body.launch-shop-page .launch-policy {
	display: grid;
	gap: 1rem;
	padding: clamp(1.25rem, 4vw, 2.5rem);
	border-radius: var(--launch-radius-card);
	background: var(--launch-card);
}

body.launch-shop-page .launch-policy h2 {
	margin-top: 0.75rem;
	font-family: var(--launch-display);
	font-weight: 500;
	font-size: 1.5rem;
}

body.launch-shop-page .launch-policy h2:first-child {
	margin-top: 0;
}

body.launch-shop-page .launch-policy ul {
	display: grid;
	gap: 0.5rem;
	margin: 0;
	padding-left: 1.25rem;
}

body.launch-shop-page .launch-policy a {
	color: var(--launch-deep);
	font-weight: 600;
}

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

body.launch-shop-page .woocommerce-pagination ul.page-numbers {
	display: flex;
	justify-content: center;
	gap: 0.5rem;
	margin: 2rem 0 0;
	border: 0;
}

body.launch-shop-page .woocommerce-pagination ul.page-numbers li {
	border: 0;
}

body.launch-shop-page .woocommerce-pagination .page-numbers :is(a, span) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	min-height: 2.75rem;
	border-radius: 999px;
	background: var(--launch-card);
	color: var(--launch-ink);
}

body.launch-shop-page .woocommerce-pagination .page-numbers .current {
	background: var(--launch-deep);
	color: var(--launch-card);
}

/* ---------- Round 1 of the visual review ---------- */

/* The shop root needs no "Home / Shop" above "Shop". */
body.launch-shop-page.post-type-archive-product .woocommerce-breadcrumb {
	display: none;
}

/* Native controls in the site's colour, never the browser's blue. */
body.launch-shop-page :is(input[type="radio"], input[type="checkbox"]) {
	accent-color: var(--launch-deep);
	width: 1.125rem;
	height: 1.125rem;
}

/* Customers do not need the stock-keeping code. */
body.launch-shop-page div.product .product_meta {
	display: none;
}

/* Quantity and Add to cart on one line, the button taking the rest. */
body.launch-shop-page form.cart:not(.variations_form) .single_add_to_cart_button,
body.launch-shop-page .woocommerce-variation-add-to-cart .single_add_to_cart_button {
	flex: 1;
}

body.launch-shop-page:not(#_) :is(button.button.alt, .single_add_to_cart_button, .button):is(:disabled, .disabled) {
	background: var(--launch-rule);
	color: var(--launch-muted);
	box-shadow: none;
	opacity: 1;
}

/* The shipping calculator's truck glyph. */
body.launch-shop-page .shipping-calculator-button::after {
	display: none;
}

/* Login and coupon prompts at checkout: one quiet line each. */
body.launch-shop-page :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) .woocommerce-info {
	margin-bottom: 0.75rem;
	padding: 0.75rem 1rem;
	font-size: 0.9375rem;
}

/* The cart coupon on one line. */
body.launch-shop-page table.cart td.actions .coupon {
	flex-wrap: nowrap;
}

body.launch-shop-page table.cart td.actions .coupon .input-text {
	flex: 1;
	min-width: 0;
}

body.launch-shop-page:not(#_) table.cart td.actions .coupon .button {
	flex-shrink: 0;
	width: auto;
}

body.launch-shop-page:not(#_) table.cart td.actions > .button {
	box-shadow: none;
	background: none;
	text-decoration: underline;
	text-underline-offset: 0.2em;
	font-weight: 600;
}

/* Phones: each cart line is a compact media row, not four labelled rows. */
@media (max-width: 47.99rem) {
	body.launch-shop-page table.cart tr.cart_item {
		display: grid;
		grid-template-columns: 4rem minmax(0, 1fr) auto;
		grid-template-areas:
			"thumb name remove"
			"thumb price price"
			"thumb qty subtotal";
		column-gap: 0.875rem;
		row-gap: 0.375rem;
		align-items: center;
		padding: 1rem;
	}

	body.launch-shop-page table.cart tr.cart_item td {
		display: block;
		padding: 0;
		border: 0;
		background: none;
		/* WooCommerce's small-screen sheet right-aligns these with !important. */
		text-align: left !important;
	}

	body.launch-shop-page table.cart tr.cart_item td::before {
		display: none;
	}

	body.launch-shop-page table.cart tr.cart_item td.product-thumbnail {
		display: block;
		grid-area: thumb;
		align-self: start;
	}

	body.launch-shop-page table.cart tr.cart_item td.product-name {
		grid-area: name;
	}

	body.launch-shop-page table.cart tr.cart_item td.product-remove {
		grid-area: remove;
		justify-self: end;
	}

	body.launch-shop-page table.cart tr.cart_item td.product-price {
		grid-area: price;
		color: var(--launch-muted);
		font-size: 0.875rem;
	}

	body.launch-shop-page table.cart tr.cart_item td.product-quantity {
		grid-area: qty;
	}

	body.launch-shop-page table.cart tr.cart_item td.product-subtotal {
		grid-area: subtotal;
		justify-self: end;
		text-align: right !important;
		font-weight: 700;
	}

	body.launch-shop-page table.cart td.actions {
		display: grid;
		gap: 0.5rem;
	}

	/* Totals: the shipping choices take the full card width. */
	body.launch-shop-page .cart_totals .woocommerce-shipping-methods {
		margin: 0;
		padding: 0;
		list-style: none;
	}
}

/* The header's call to action stays on one line next to the menu button. */
body.launch-shop-page .launch-nav__cta {
	white-space: nowrap;
}

body.launch-shop-page form.cart .single_variation_wrap {
	margin-top: 0.5rem;
}

/* Round 2 of the visual review. */

/* Phones: the result count and the sort order share one line. */
body.launch-shop-page .launch-shop > :is(.woocommerce-result-count, .woocommerce-ordering) {
	display: inline-flex;
	align-items: center;
	min-height: 2.75rem;
	vertical-align: middle;
}

body.launch-shop-page .launch-shop > .woocommerce-ordering {
	float: right;
}

body.launch-shop-page .launch-shop > .woocommerce-ordering select {
	max-width: 11rem;
}

body.launch-shop-page ul.products {
	clear: both;
}

/* Update cart appears only once a quantity has changed (WooCommerce enables it then). */
body.launch-shop-page table.cart button[name="update_cart"]:disabled {
	display: none;
}

/* The second street line sits with the first, under one label. */
body.launch-shop-page #billing_address_2_field,
body.launch-shop-page #shipping_address_2_field {
	margin-top: -0.625rem;
}

/* The payment area: one quiet callout, not a box in a box. */
body.launch-shop-page #payment ul.payment_methods {
	padding: 1rem 1rem 0;
	border: 0;
}

body.launch-shop-page #payment ul.payment_methods li.woocommerce-notice,
body.launch-shop-page #payment ul.payment_methods li :is(.woocommerce-info, .woocommerce-notice) {
	margin: 0;
	padding: 0.75rem 0.875rem;
	border: 0;
	border-radius: 10px;
	background: var(--launch-field);
	font-size: 0.875rem;
}

/* WooCommerce hides "Clear" with visibility (it would still hold a line): take it out until a choice is made. */
body.launch-shop-page .reset_variations[style*="hidden"] {
	display: none;
}

/* Round 3 of the visual review. */

/* Cards: "incl. GST" on its own line under every price, so ranges and sale prices never wrap mid-way. */
body.launch-shop-page ul.products li.product .price .woocommerce-price-suffix {
	display: block;
	margin-top: 0.125rem;
}

/* The tax note sits right-aligned under the total, in the cart and at checkout alike. */
body.launch-shop-page :is(.cart_totals, .woocommerce-checkout-review-order-table) .order-total td {
	text-align: right;
}

body.launch-shop-page :is(.cart_totals, .woocommerce-checkout-review-order-table) .includes_tax {
	display: block;
}

/* The coupon: input and button the same height; the button on the warm field so it reads as a control. */
body.launch-shop-page:not(#_) table.cart td.actions .coupon :is(.input-text, .button) {
	min-height: 2.75rem;
}

body.launch-shop-page:not(#_) table.cart td.actions .coupon .button {
	background: var(--launch-field);
}

/* Checkout: the two checkboxes close together, clear space before the next section. */
body.launch-shop-page .woocommerce-account-fields,
body.launch-shop-page #ship-to-different-address {
	margin: 0.5rem 0 0;
}

body.launch-shop-page .woocommerce-additional-fields {
	margin-top: 2rem;
}

/* Round 4 of the visual review: desktop cart and checkout use the full content width, in two columns. */
body.launch-shop-page:is(.woocommerce-cart, .woocommerce-checkout) .launch-shop--page {
	max-width: var(--launch-content);
}

body.launch-shop-page .cart_totals table.shop_table td {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

body.launch-shop-page .cart_totals .woocommerce-shipping-methods li {
	text-align: right;
}

body.launch-shop-page table.cart :is(th, td):is(.product-price, .product-subtotal) {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

body.launch-shop-page table.cart th.product-quantity {
	text-align: center;
}

body.launch-shop-page :is(.woocommerce-form-login-toggle, .woocommerce-form-coupon-toggle) .woocommerce-info {
	justify-content: flex-start;
	gap: 0.5rem;
}

@media (min-width: 64rem) {
	body.launch-shop-page.woocommerce-cart .launch-shop__content > .woocommerce {
		display: grid;
		grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
		gap: 0 3rem;
		align-items: start;
	}

	body.launch-shop-page.woocommerce-cart .launch-shop__content > .woocommerce > .woocommerce-notices-wrapper {
		grid-column: 1 / -1;
	}

	body.launch-shop-page.woocommerce-cart .cart-collaterals {
		position: sticky;
		top: calc(var(--launch-header-h) + 1.5rem);
	}

	body.launch-shop-page.woocommerce-cart .cart-collaterals .cart_totals {
		max-width: none;
	}

	/* Row 1: notices (empty until a submit fails); the order card beside the form, the form's extra height in the last row. */
	body.launch-shop-page form.checkout {
		display: grid;
		grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
		grid-template-rows: auto auto auto 1fr;
		gap: 0 3rem;
		align-items: start;
	}

	body.launch-shop-page form.checkout > :not(#customer_details, #order_review_heading, #order_review) {
		grid-column: 1 / -1;
		grid-row: 1;
	}

	body.launch-shop-page form.checkout #customer_details {
		grid-column: 1;
		grid-row: 2 / span 3;
	}

	body.launch-shop-page form.checkout #order_review_heading {
		grid-column: 2;
		grid-row: 2;
	}

	body.launch-shop-page form.checkout #order_review {
		grid-column: 2;
		grid-row: 3;
		position: sticky;
		top: calc(var(--launch-header-h) + 1.5rem);
	}
}

body.launch-shop-page .woocommerce-checkout-review-order-table :is(td, th.product-total) {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

body.launch-shop-page .woocommerce-checkout-review-order-table td.product-name {
	text-align: left;
}
