/* Shop POS theme: WooCommerce pages. WooCommerce's own layout CSS stays underneath; this sets the look.
   Product cards come in kinds set by the style (body classes): card-plain, card-tile, card-framed, card-tall, card-menu,
   with photo shapes img-square, img-portrait, img-arch. */

.woocommerce, .woocommerce-page { --gap: clamp(12px, 2vw, 22px); }
.shop-wrap .woocommerce-products-header { margin-bottom: 8px; }
.woocommerce-products-header__title.page-title { margin: 0 0 6px; }
.term-description { color: var(--c-sub); max-width: 60ch; }

/* Result count and sort on one line */
.woocommerce .woocommerce-result-count, .woocommerce-page .woocommerce-result-count { float: none; margin: 0; color: var(--c-sub); font-size: 14px; }
.woocommerce .woocommerce-ordering, .woocommerce-page .woocommerce-ordering { float: none; margin: 0; }
.shop-wrap .woocommerce-notices-wrapper + .woocommerce-result-count, .shop-wrap .woocommerce-result-count { display: inline-block; margin: 0 0 16px; }
.shop-wrap .woocommerce-ordering { display: inline-block; float: right !important; margin: 0 0 16px; }
.woocommerce-ordering select { min-height: 42px; width: auto; padding: 8px 38px 8px 14px; font-size: 14px; border-radius: var(--r-btn); }

/* ---------- Product grid ---------- */
.woocommerce ul.products, .woocommerce-page ul.products {
	display: grid !important; grid-template-columns: repeat(var(--spt-cols-phone, 2), minmax(0, 1fr)); gap: var(--gap); margin: 0 0 32px !important; padding: 0; clear: both;
}
@media (min-width: 720px) { .woocommerce ul.products, .woocommerce-page ul.products, ul.products { grid-template-columns: repeat(var(--spt-cols-tab, 3), minmax(0, 1fr)); } }
/* Products per row on a computer: Customize > Shop style */
@media (min-width: 1080px) { .woocommerce ul.products, .woocommerce-page ul.products, ul.products { grid-template-columns: repeat(var(--spt-cols, 4), minmax(0, 1fr)); } }
.woocommerce ul.products::before, .woocommerce ul.products::after, .woocommerce-page ul.products::before, .woocommerce-page ul.products::after { display: none !important; }
.woocommerce ul.products li.product, .woocommerce-page ul.products li.product {
	position: relative; display: flex; flex-direction: column; width: auto !important; float: none !important; margin: 0 !important; padding: 0;
	text-align: left; min-width: 0;
}
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link { display: flex; flex-direction: column; flex: 1; color: var(--c-ink); text-decoration: none; }
.woocommerce ul.products li.product a img {
	width: 100% !important; margin: 0 0 10px !important; aspect-ratio: 1; object-fit: cover; border-radius: var(--r-img); background: var(--c-soft);
	box-shadow: none !important;
}
.img-portrait.woocommerce ul.products li.product a img, .img-portrait .woocommerce ul.products li.product a img { aspect-ratio: 4 / 5; }
.img-arch.woocommerce ul.products li.product a img, .img-arch .woocommerce ul.products li.product a img { border-radius: 999px 999px var(--r-img) var(--r-img); aspect-ratio: 4 / 5; }
.woocommerce ul.products li.product .woocommerce-loop-product__title, .woocommerce ul.products li.product h3 {
	padding: 0 !important; margin: 0 0 4px; font-family: var(--f-body); font-size: 15px !important; font-weight: 600; line-height: 1.35; letter-spacing: 0; color: var(--c-ink);
}
.woocommerce ul.products li.product .price {
	display: block; margin: 0 0 10px !important; color: var(--c-ink) !important; font-size: 16px !important; font-weight: 700;
}
.woocommerce ul.products li.product .price del { color: var(--c-sub); font-weight: 400; opacity: 1; font-size: .88em; margin-right: 4px; }
.woocommerce ul.products li.product .price ins { text-decoration: none; color: var(--c-sale); }
.woocommerce ul.products li.product .star-rating { font-size: 12px; margin: 0 0 6px; }
.woocommerce .star-rating span::before, .woocommerce p.stars a { color: var(--c-accent-text); }

/* Sale badge */
.woocommerce span.onsale {
	top: 10px !important; left: 10px !important; right: auto !important; z-index: 2; min-width: 0; min-height: 0; margin: 0 !important; padding: 4px 10px;
	border-radius: var(--r-btn); background: var(--c-sale); color: var(--c-on-sale); font: 700 12px/1.4 var(--f-body);
}
.single-product .woocommerce span.onsale, .single-product span.onsale { top: 14px !important; left: 14px !important; }

/* Add to cart in the grid: a round + button beside the price (the button keeps its spoken label) */
.woocommerce ul.products li.product .button {
	margin: auto 0 0 !important; align-self: flex-start; min-height: 40px; padding: 0 16px; font-size: 14px;
	display: inline-flex; align-items: center; justify-content: center; line-height: 1.2;
	border-radius: var(--r-btn); background: var(--c-accent); color: var(--c-on-accent);
}
.woocommerce ul.products li.product .button.loading { opacity: .6; }
.woocommerce ul.products li.product .added_to_cart { display: inline-block; margin-top: 6px; font-size: 13px; font-weight: 600; color: var(--c-accent-text); }
.woocommerce a.button.added::after { margin-left: 6px; }

body.card-tile ul.products li.product .button, body.card-framed ul.products li.product .button, body.card-menu ul.products li.product .button {
	position: absolute; right: 12px; bottom: 12px; width: 36px; min-height: 36px; height: 36px; padding: 0; border-radius: 18px; font-size: 0; overflow: hidden;
}
body.card-tile ul.products li.product .button::before, body.card-framed ul.products li.product .button::before, body.card-menu ul.products li.product .button::before {
	content: ""; width: 18px; height: 18px; background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat;
}
body.card-tile ul.products li.product .button.added::after, body.card-framed ul.products li.product .button.added::after, body.card-menu ul.products li.product .button.added::after { display: none; }
body.card-tile ul.products li.product .added_to_cart, body.card-framed ul.products li.product .added_to_cart { position: relative; z-index: 1; margin: 2px 0 0; }
/* Grocery shows the word "Add" too, as the mock-ups do */
body.style-grocery.card-framed ul.products li.product .button { width: auto; padding: 0 14px 0 10px; font-size: 14px; gap: 4px; }
body.style-grocery.card-framed ul.products li.product .button::before { width: 16px; height: 16px; }
/* Products to choose options for: an arrow instead of + */
body.card-tile ul.products li.product .button.product_type_variable::before, body.card-framed ul.products li.product .button.product_type_variable::before, body.card-menu ul.products li.product .button.product_type_variable::before,
body.card-tile ul.products li.product .button.product_type_grouped::before, body.card-framed ul.products li.product .button.product_type_grouped::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
}

/* Tile: each card on a soft tone, photo inset (pet shop, baby) */
body.card-tile ul.products li.product { padding: 10px 10px 14px; border-radius: var(--r-card); background: var(--tone-1); }
body.card-tile ul.products li.product.tone-2 { background: var(--tone-2); }
body.card-tile ul.products li.product.tone-3 { background: var(--tone-3); }
body.card-tile ul.products li.product.tone-4 { background: var(--tone-4); }
body.card-tile ul.products li.product a img { background: rgba(255, 255, 255, .55); }
body.card-tile ul.products li.product .woocommerce-loop-product__title, body.card-tile ul.products li.product .price { padding: 0 4px !important; }
body.card-tile ul.products li.product .price { margin-bottom: 4px !important; padding-right: 48px !important; font-weight: 800; }
body.card-tile ul.products li.product .woocommerce-loop-product__title { font-weight: 700; }

/* Framed: white card with a line (beauty, electronics, grocery) */
body.card-framed ul.products li.product { padding: 10px 10px 14px; border-radius: var(--r-card); background: var(--c-surface); border: 1px solid var(--c-line); }
body.style-beauty.card-framed ul.products li.product { box-shadow: 0 8px 22px rgba(80, 50, 60, .06); }
body.card-framed ul.products li.product .price { margin-bottom: 4px !important; padding-right: 48px; }
body.card-framed ul.products li.product .woocommerce-loop-product__title { font-weight: 500; }

/* Plain: no frame, the name in the heading font (florist, Classic) */
body.card-plain ul.products li.product .woocommerce-loop-product__title { font-family: var(--f-head) !important; font-weight: var(--head-weight); font-size: 19px !important; letter-spacing: var(--head-track); }
body.style-classic.card-plain ul.products li.product .woocommerce-loop-product__title { font-family: var(--f-body) !important; font-size: 15px !important; font-weight: 600; }
body.card-plain ul.products li.product .price { font-weight: 500; color: var(--c-sub) !important; }

/* Tall: big portrait photos, small quiet text, no button until hover (clothing) */
body.card-tall .woocommerce ul.products, body.card-tall.woocommerce ul.products, body.card-tall ul.products { row-gap: 32px !important; column-gap: 10px !important; }
body.card-tall ul.products li.product a img { aspect-ratio: 3 / 4; border-radius: 0; margin-bottom: 12px !important; }
body.card-tall ul.products li.product .woocommerce-loop-product__title { font-weight: 400; font-size: 13px !important; letter-spacing: .03em; text-transform: uppercase; }
body.card-tall ul.products li.product .price { font-weight: 400; font-size: 14px !important; color: var(--c-sub) !important; }
body.card-tall ul.products li.product .button { background: transparent; color: var(--c-ink); box-shadow: inset 0 0 0 1px var(--c-ink); border-radius: 0; min-height: 38px; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; }
@media (hover: hover) {
	/* On computers the button appears over the bottom of the photo on hover, so it leaves no empty space under the card */
	body.card-tall ul.products li.product { container-type: inline-size; }
	body.card-tall ul.products li.product .button { position: absolute; left: 10px; right: 10px; top: calc(133.333cqw - 50px); margin: 0 !important; background: var(--c-surface); z-index: 2; }
	body.card-tall ul.products li.product .button { opacity: 0; transition: opacity .2s; }
	body.card-tall ul.products li.product:hover .button, body.card-tall ul.products li.product .button:focus-visible { opacity: 1; }
}

/* Menu: a list with dotted leaders, like a café menu board */
body.card-menu .woocommerce ul.products, body.card-menu ul.products { grid-template-columns: 1fr !important; gap: 0 !important; max-width: 820px; }
@media (min-width: 1080px) { body.card-menu ul.products { grid-template-columns: 1fr 1fr !important; column-gap: 40px !important; max-width: none; } }
body.card-menu ul.products li.product { border-top: 1px solid var(--c-line); padding: 12px 52px 12px 0; }
body.card-menu ul.products li.product a.woocommerce-LoopProduct-link { display: grid; grid-template-columns: 64px 1fr auto; grid-template-rows: auto auto; align-items: center; column-gap: 14px; }
body.card-menu ul.products li.product a img { grid-row: 1 / span 2; width: 64px !important; height: 64px; margin: 0 !important; border-radius: var(--r-img); }
body.card-menu ul.products li.product .woocommerce-loop-product__title { grid-column: 2; display: flex; align-items: baseline; gap: 8px; margin: 0; font-size: 16px !important; }
body.card-menu ul.products li.product .woocommerce-loop-product__title::after { content: ""; flex: 1; border-bottom: 2px dotted var(--c-line); transform: translateY(-4px); }
body.card-menu ul.products li.product .price { grid-column: 3; grid-row: 1; margin: 0 !important; }
body.card-menu ul.products li.product .star-rating { grid-column: 2; }
body.card-menu ul.products li.product span.onsale { top: 8px !important; left: -6px !important; padding: 2px 8px; font-size: 11px; }
body.card-menu ul.products li.product .button { top: 50%; bottom: auto; right: 0; transform: translateY(-50%); }
body.card-menu ul.products li.product .added_to_cart { grid-column: 2; }
/* The homepage keeps photo cards for the café too; only the shop pages are a menu */
body.card-menu .spos-h ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; max-width: none; }
@media (min-width: 900px) { body.card-menu .spos-h ul.products { grid-template-columns: repeat(var(--spt-cols, 4), minmax(0, 1fr)) !important; } }
body.card-menu .spos-h ul.products li.product { border-top: 0; padding: 0; }
body.card-menu .spos-h ul.products li.product a.woocommerce-LoopProduct-link { display: flex; }
body.card-menu .spos-h ul.products li.product a img { width: 100% !important; height: auto; margin: 0 0 10px !important; }
body.card-menu .spos-h ul.products li.product .woocommerce-loop-product__title::after { display: none; }
body.card-menu .spos-h ul.products li.product .button { position: static; transform: none; width: auto; height: auto; min-height: 40px; padding: 0 16px; font-size: 14px; }
body.card-menu .spos-h ul.products li.product .button::before { display: none; }

/* The plugin's homepage product sections use the same cards (the plugin clears card padding for other themes; it comes back here) */
body.spt .spos-h__products ul.products li.product a img { border-radius: var(--r-img); }
body.spt.card-tile .spos-h__products ul.products li.product, body.spt.card-framed .spos-h__products ul.products li.product { padding: 10px 10px 14px !important; }
body.spt.card-tile .spos-h__products ul.products li.product .button, body.spt.card-framed .spos-h__products ul.products li.product .button { margin: 0 !important; }

/* Grocery's labelled "Add to cart" sits on its own line under the price, full width, so it never covers the name or price */
body.style-grocery.card-framed ul.products li.product .button {
	position: static !important; width: 100%; height: auto; min-height: 40px; margin: 10px 0 0 !important; padding: 0 14px; align-self: stretch; border-radius: var(--r-btn) !important;
}
body.style-grocery.card-framed ul.products li.product .price { padding-right: 0 !important; }
body.style-grocery.card-framed ul.products li.product .added_to_cart { margin: 6px 0 0; text-align: center; }
body.spt.card-tall .spos-h__products ul.products li.product a img { border-radius: 0; aspect-ratio: 3 / 4; }
body.spt .spos-h__products ul.products li.product .button { border-radius: var(--r-btn) !important; }
body.spt.card-tile .spos-h__products ul.products li.product .button, body.spt.card-framed .spos-h__products ul.products li.product .button { border-radius: 18px !important; }

/* ---------- Product page ---------- */
.single-product div.product { display: grid; gap: clamp(20px, 4vw, 56px); grid-template-columns: 1fr; position: relative; }
@media (min-width: 900px) { .single-product div.product { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); align-items: start; } }
.single-product div.product .woocommerce-product-gallery, .single-product div.product .summary { width: auto !important; float: none !important; margin: 0 !important; }
.single-product div.product > *:not(.woocommerce-product-gallery):not(.summary):not(.onsale) { grid-column: 1 / -1; }
/* The summary used to stay stuck while scrolling, which slid it over the description and tabs below. It now scrolls with the page. */
.woocommerce-product-gallery__wrapper img, .woocommerce div.product div.images img { border-radius: var(--r-img); }
.img-arch.single-product .woocommerce-product-gallery__image:first-child img { border-radius: 999px 999px var(--r-img) var(--r-img); }
.card-tall.single-product .woocommerce-product-gallery img { border-radius: 0; }
.woocommerce div.product div.images .flex-control-thumbs { display: flex; gap: 8px; margin-top: 8px; }
.woocommerce div.product div.images .flex-control-thumbs li { width: 72px !important; }
.woocommerce div.product div.images .flex-control-thumbs img { border-radius: calc(var(--r-img) / 2); opacity: .6; }
.woocommerce div.product div.images .flex-control-thumbs img.flex-active, .woocommerce div.product div.images .flex-control-thumbs img:hover { opacity: 1; }
.woocommerce div.product .woocommerce-product-gallery__trigger { border-radius: 50%; background: var(--c-surface); }
.woocommerce div.product .product_title { font-size: clamp(28px, 3.6vw, 40px); margin: 0 0 10px; }
.woocommerce div.product p.price, .woocommerce div.product span.price { color: var(--c-ink); font-size: 24px; font-weight: 700; margin: 0 0 16px; }
.woocommerce div.product p.price ins, .woocommerce div.product span.price ins { text-decoration: none; color: var(--c-sale); }
.woocommerce div.product p.price del { color: var(--c-sub); font-size: .7em; font-weight: 400; }
.woocommerce-product-details__short-description { color: var(--c-sub); font-size: 17px; }
.woocommerce div.product form.cart { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px; margin: 20px 0 18px; }
.woocommerce div.product form.cart::before, .woocommerce div.product form.cart::after { display: none; }
.woocommerce div.product form.cart .button { flex: 1 1 120px; min-height: 52px; font-size: 17px; float: none; }
.woocommerce div.product form.cart.variations_form { display: block; }
.woocommerce div.product form.cart .woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; gap: 10px; }
.woocommerce div.product form.cart table.variations { margin-bottom: 12px; border: 0; }
.woocommerce div.product form.cart table.variations th, .woocommerce div.product form.cart table.variations td { display: block; padding: 0; text-align: left; line-height: 1.4; }
.woocommerce div.product form.cart table.variations th label { font-size: 14px; margin-bottom: 6px; display: block; }
.woocommerce div.product form.cart table.variations td { margin-bottom: 12px; }
.woocommerce div.product form.cart .reset_variations { display: inline-block; margin-top: 6px; font-size: 13px; }
.woocommerce div.product .woocommerce-variation-price { margin-bottom: 8px; }
.woocommerce .stock { font-weight: 600; }
.woocommerce div.product .stock.in-stock { color: var(--c-accent-text); }
.woocommerce div.product .stock.out-of-stock { color: var(--c-sale); }

/* Quantity: − 1 + */
.quantity { display: inline-flex; align-items: center; border: 1px solid var(--c-line); border-radius: var(--r-btn); background: var(--c-surface); overflow: hidden; }
.woocommerce .quantity .qty { width: 52px; min-height: 48px; border: 0; padding: 0; text-align: center; background: transparent; font-weight: 600; -moz-appearance: textfield; border-radius: 0; }
.quantity .qty::-webkit-inner-spin-button, .quantity .qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.qty-btn { width: 44px; min-height: 48px; border: 0; background: transparent; color: var(--c-ink); font-size: 20px; line-height: 1; cursor: pointer; }
.qty-btn:hover { background: var(--c-soft); }
.quantity:focus-within { outline: 2px solid var(--c-accent-text); outline-offset: 1px; }
.quantity .qty:focus { outline: none; }

.product_meta { font-size: 14px; color: var(--c-sub); display: grid; gap: 4px; padding-top: 16px; border-top: 1px solid var(--c-line); }
.product_meta a { color: var(--c-ink); }

/* Tabs: a row of words, underlined when chosen */
.woocommerce div.product .woocommerce-tabs { margin-top: clamp(24px, 4vw, 48px); }
.woocommerce div.product .woocommerce-tabs ul.tabs { display: flex; gap: 6px; padding: 0 !important; margin: 0 0 20px !important; overflow-x: auto; border-bottom: 1px solid var(--c-line); }
.woocommerce div.product .woocommerce-tabs ul.tabs::before, .woocommerce div.product .woocommerce-tabs ul.tabs li::before, .woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none !important; }
.woocommerce div.product .woocommerce-tabs ul.tabs li { margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; border-radius: 0 !important; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { display: block; padding: 12px 14px !important; color: var(--c-sub) !important; font-weight: 600 !important; white-space: nowrap; border-bottom: 2px solid transparent; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--c-ink) !important; border-bottom-color: var(--c-accent); }
@media (max-width: 599px) { .woocommerce div.product .woocommerce-tabs ul.tabs li a { padding: 12px 10px !important; font-size: 15px; } }
.woocommerce div.product .woocommerce-tabs .panel { margin: 0 0 24px; font-size: 16px; line-height: 1.7; max-width: 760px; }
.woocommerce table.shop_attributes { border: 0; }
.woocommerce table.shop_attributes th, .woocommerce table.shop_attributes td { border: 0; border-bottom: 1px solid var(--c-line); background: none !important; padding: 10px 0; font-style: normal; }
.woocommerce table.shop_attributes th { width: 34%; text-align: left; color: var(--c-sub); font-weight: 600; }
.woocommerce #reviews #comments ol.commentlist li .comment-text { border-color: var(--c-line); border-radius: var(--r-card); }
.woocommerce #review_form #respond textarea { min-height: 120px; }
.related.products > h2, .upsells.products > h2, .cross-sells > h2 { font-size: clamp(22px, 2.6vw, 28px); margin: 0 0 16px; }

/* Phones: the add-to-cart button stays in reach */
@media (max-width: 899px) {
	.single-product .summary form.cart:not(.variations_form) .button, .single-product .woocommerce-variation-add-to-cart .button { flex: 1 1 0; min-width: 0; }
	/* quantity, Add to cart and the heart share one row */
	.single-product .summary form.cart .quantity .qty { width: 44px; }
}

/* ---------- Notices ---------- */
.woocommerce-message, .woocommerce-info, .woocommerce-error, .wc-block-components-notice-banner {
	border: 0 !important; border-radius: var(--r-card) !important; background: var(--c-soft) !important; color: var(--c-ink) !important;
	padding: 14px 18px 14px 50px !important; margin: 0 0 20px !important; font-size: 15px; line-height: 1.5; list-style: none;
}
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { top: 14px !important; left: 18px !important; color: var(--c-accent-text) !important; }
.woocommerce-error { background: #FDECEC !important; }
.woocommerce-error::before { color: #B42318 !important; }
.is-dark .woocommerce-error { background: #3A1E1E !important; }
.woocommerce-message .button, .woocommerce-info .button, .woocommerce-error .button { float: right; min-height: 36px; padding: 0 14px; font-size: 14px; margin-left: 12px; }
.woocommerce-message a:not(.button), .woocommerce-info a:not(.button) { color: var(--c-accent-text); font-weight: 600; }
.wc-block-components-notice-banner { padding-left: 18px !important; }
.wc-block-components-notice-banner > svg { fill: var(--c-accent-text); background: none; }

/* ---------- Cart and checkout (block and classic) ---------- */
.shop-flow { padding-bottom: clamp(32px, 6vw, 72px); }
.woocommerce-cart .page-head, .woocommerce-checkout .page-head { padding-bottom: 4px; }
.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout { --wp--preset--color--contrast: var(--c-ink); }
.wc-block-components-button:not(.is-link), .wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button {
	border-radius: var(--r-btn) !important; background: var(--c-accent) !important; color: var(--c-on-accent) !important; min-height: 52px; font-weight: 600 !important; font-family: var(--f-body);
}
.wc-block-components-button.outlined, .wc-block-components-button.is-link { background: transparent !important; color: var(--c-accent-text) !important; }
.wc-block-components-text-input input, .wc-block-components-combobox .wc-block-components-combobox-control input, .wc-blocks-components-select .wc-blocks-components-select__select, .wc-block-components-textarea {
	border-radius: min(var(--r-btn), 14px) !important; border-color: var(--c-line) !important; background: var(--c-surface) !important; color: var(--c-ink) !important;
}
.wc-block-components-text-input input:focus { border-color: var(--c-accent-text) !important; box-shadow: 0 0 0 1px var(--c-accent-text) !important; }
.wc-block-components-radio-control__input:checked, .wc-block-components-checkbox__input:checked { border-color: var(--c-accent) !important; background: var(--c-accent) !important; }
.wc-block-components-radio-control__input:checked::before { background: var(--c-on-accent) !important; }
.wc-block-components-checkbox .wc-block-components-checkbox__mark { fill: var(--c-on-accent); }
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
.wc-block-components-radio-control--highlight-checked label.wc-block-components-radio-control__option--checked-option-highlighted { box-shadow: inset 0 0 0 2px var(--c-accent) !important; border-radius: min(var(--r-card), 16px); }
.wc-block-components-radio-control--highlight-checked { border-radius: min(var(--r-card), 16px) !important; }
.wc-block-cart-items, .wc-block-components-sidebar .wc-block-components-panel, .wp-block-woocommerce-checkout-order-summary-block, .wc-block-components-totals-wrapper { border-color: var(--c-line) !important; }
.wp-block-woocommerce-checkout-order-summary-block, .wc-block-components-sidebar .wp-block-woocommerce-cart-order-summary-block { background: var(--c-surface); border-radius: var(--r-card); }
.wc-block-cart-item__image img, .wc-block-components-order-summary-item__image img { border-radius: calc(var(--r-img) / 2); }
.wc-block-components-product-name { color: var(--c-ink) !important; font-weight: 600; text-decoration: none; }
.wc-block-components-quantity-selector { border-radius: var(--r-btn) !important; border-color: var(--c-line) !important; overflow: hidden; }
.wc-block-components-quantity-selector::after { border: 0 !important; }
.wc-block-components-quantity-selector { border: 1px solid var(--c-line) !important; background: var(--c-surface); width: auto !important; min-width: 112px; }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button { color: var(--c-ink) !important; opacity: 1 !important; min-width: 36px; font-size: 18px; }
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:disabled { color: var(--c-sub) !important; opacity: .5 !important; }
.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input { color: var(--c-ink) !important; font-weight: 600; }
.wc-block-cart-item__image img { min-width: 64px; }
.wc-block-components-product-badge { border-radius: var(--r-btn); border-color: var(--c-sale) !important; color: var(--c-sale) !important; }
.wc-block-components-sale-badge { background: var(--c-sale) !important; color: var(--c-on-sale) !important; border: 0 !important; }
.wc-block-components-title.wc-block-components-title, .wc-block-checkout__form h2, .wc-block-components-checkout-step__title { font-family: var(--f-head) !important; font-weight: var(--head-weight) !important; }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value, .wc-block-components-totals-footer-item .wc-block-components-totals-item__label { font-size: 20px; }
.wc-block-cart__empty-cart__title { font-family: var(--f-head); }
.wp-block-woocommerce-empty-cart-block .wp-block-separator { display: none; }
.is-dark .wc-block-components-panel, .is-dark .wc-block-components-sidebar, .is-dark .wc-block-components-totals-wrapper, .is-dark .wc-block-components-order-summary { color: var(--c-ink); }

/* Classic cart and checkout (shortcode pages) */
.woocommerce table.shop_table { border: 1px solid var(--c-line); border-radius: var(--r-card); border-collapse: separate; overflow: hidden; background: var(--c-surface); }
.woocommerce table.shop_table th { font-weight: 700; padding: 12px 14px; }
.woocommerce table.shop_table td { padding: 12px 14px; border-top: 1px solid var(--c-line); }
.woocommerce table.shop_table img { width: 64px; border-radius: calc(var(--r-img) / 2); }
.woocommerce a.remove { color: var(--c-sub) !important; border-radius: 50%; }
.woocommerce a.remove:hover { background: var(--c-sale); color: var(--c-on-sale) !important; }
.woocommerce .cart-collaterals .cart_totals, .woocommerce-page .cart-collaterals .cart_totals { float: none; width: 100%; max-width: 460px; margin-left: auto; }
.woocommerce .cart-collaterals .cross-sells { float: none; width: 100%; }

/* Classic cart in two columns on a computer: items, buttons and suggestions on the left, totals and coupon on the right */
.woocommerce:has(.cart-coupon) .woocommerce-cart-form td.actions .coupon { display: none !important; } /* the coupon box lives under the totals */
.woocommerce-cart-form td.actions { text-align: left !important; }
.woocommerce-cart-form td.actions > .button { float: none !important; }
.woocommerce-cart-form td.actions .cart-back { float: left; margin-right: 12px; background: transparent; color: var(--c-accent-text, var(--c-accent)); box-shadow: inset 0 0 0 1.5px currentColor; }
.woocommerce-cart-form td.actions .cart-back:hover { background: var(--c-soft); color: var(--c-accent-text, var(--c-accent)); filter: none; }
.woocommerce .cart_totals h2 { font-size: 18px; margin: 0 0 6px; padding-bottom: 12px; border-bottom: 3px solid var(--c-line); }
.woocommerce .cart_totals table.shop_table { border: 0; border-radius: 0; background: transparent; }
.woocommerce .cart_totals table.shop_table th, .woocommerce .cart_totals table.shop_table td { padding: 14px 0; border-top: 0; border-bottom: 1px solid var(--c-line); background: transparent; }
.woocommerce .cart_totals table.shop_table th { font-weight: 400; color: var(--c-sub); }
.woocommerce .cart_totals table.shop_table td { text-align: right; }
.woocommerce .cart_totals .order-total th, .woocommerce .cart_totals .order-total td { border-bottom-width: 3px; }
/* Shipping: the label on its own line, the choices under it on the left (cart and checkout).
   The totals tables are laid out as plain rows, so the shipping row can use the column's full width. */
.woocommerce .cart_totals table.shop_table, .woocommerce .cart_totals table.shop_table tbody,
.woocommerce-checkout #order_review table.shop_table, .woocommerce-checkout #order_review table.shop_table > * { display: block; width: 100%; }
.woocommerce .cart_totals table.shop_table tr, .woocommerce-checkout #order_review table.shop_table tr { padding: 0; display: flex; justify-content: space-between; align-items: baseline; gap: 16px; border-bottom: 1px solid var(--c-line); }
.woocommerce .cart_totals table.shop_table tr > *, .woocommerce-checkout #order_review table.shop_table tr > * { display: block; border-bottom: 0 !important; }
.woocommerce .cart_totals table.shop_table tr > td, .woocommerce-checkout #order_review table.shop_table tr > td { flex: 1 1 auto; min-width: 0; }
.woocommerce .cart_totals table.shop_table tr > th, .woocommerce-checkout #order_review table.shop_table tr > th { flex: none; }
.woocommerce-checkout #order_review table.shop_table tr > .product-name { flex: 1 1 auto; text-align: left; }
.woocommerce-checkout #order_review table.shop_table tr > .product-total { flex: none; }
.woocommerce .cart_totals .order-total, .woocommerce-checkout #order_review .order-total { border-bottom-width: 3px !important; }
.woocommerce .cart_totals tr.woocommerce-shipping-totals, .woocommerce-checkout #order_review tr.woocommerce-shipping-totals { flex-direction: column; align-items: stretch; gap: 0; }
.woocommerce .cart_totals table.shop_table tr.woocommerce-shipping-totals > *, .woocommerce-checkout #order_review table.shop_table tr.woocommerce-shipping-totals > * { display: block !important; width: 100%; text-align: left !important; } /* shown on phones too */
.woocommerce .cart_totals tr.woocommerce-shipping-totals th, .woocommerce-checkout #order_review tr.woocommerce-shipping-totals th { padding-bottom: 6px; }
.woocommerce .cart_totals tr.woocommerce-shipping-totals td, .woocommerce-checkout #order_review tr.woocommerce-shipping-totals td { padding-top: 6px; }
.woocommerce .cart_totals tr td::before, .woocommerce-checkout #order_review tr td::before { content: none !important; }
.woocommerce ul#shipping_method { margin: 0; padding: 0; list-style: none; text-align: left; }
.woocommerce ul#shipping_method li { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 12px; padding: 0; text-indent: 0; }
.woocommerce ul#shipping_method li input { flex: none; margin: 4px 0 0; }
.woocommerce ul#shipping_method li label { font-weight: 600; }
.woocommerce .cart_totals .woocommerce-shipping-destination, .woocommerce .cart_totals .woocommerce-shipping-calculator { text-align: left; }
.woocommerce .cart_totals .wc-proceed-to-checkout .checkout-button { width: 100%; min-height: 54px; font-size: 18px; margin-bottom: 0; }
.cart-coupon { display: grid; gap: 12px; margin-top: 28px; }
.cart-coupon-title { display: flex; align-items: center; gap: 8px; margin: 0; padding-bottom: 12px; border-bottom: 3px solid var(--c-line); font-size: 18px; }
.cart-coupon-title .spos-icon { color: var(--c-sub); }
.cart-coupon .input-text { width: 100%; min-height: 50px; padding: 0 18px; box-sizing: border-box; border: 1px solid var(--c-line); border-radius: var(--r-btn); background: var(--c-surface); color: var(--c-ink); }
.cart-coupon .button { width: 100%; min-height: 50px; background: transparent; color: var(--c-ink); box-shadow: inset 0 0 0 1.5px var(--c-line); }
.cart-coupon .button:hover { background: var(--c-soft); color: var(--c-ink); filter: none; }
@media (min-width: 900px) {
	/* The two columns come from the theme's wrappers (inc/woocommerce.php); notices stay above, full width. */
	.cart-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); column-gap: clamp(28px, 4vw, 56px); align-items: start; }
	.cart-layout > .cart-main { min-width: 0; }
	.cart-layout > .cart-collaterals { width: auto; padding-left: clamp(28px, 4vw, 56px); border-left: 1px solid var(--c-line); position: sticky; top: 24px; }
	.woocommerce .cart-layout .cart-collaterals .cart_totals { float: none; width: 100%; max-width: none; margin: 0; }
}
.woocommerce #payment { background: var(--c-surface) !important; border: 1px solid var(--c-line); border-radius: var(--r-card) !important; }
.woocommerce #payment div.payment_box { background: var(--c-soft) !important; color: var(--c-ink) !important; border-radius: 12px; }
.woocommerce #payment div.payment_box::before { border-bottom-color: var(--c-soft) !important; }
/* Payment methods: one tidy row each (radio, name, card logos in a line), the chosen one marked */
.woocommerce-checkout #payment ul.payment_methods { margin: 0; padding: 8px; border-bottom: 1px solid var(--c-line); list-style: none; }
.woocommerce-checkout #payment ul.payment_methods li { display: grid; grid-template-columns: 22px minmax(0, 1fr); column-gap: 12px; align-items: start; margin: 0; padding: 14px 12px; border-radius: 12px; line-height: 1.4; text-align: left; }
.woocommerce-checkout #payment ul.payment_methods li + li { margin-top: 4px; }
.woocommerce-checkout #payment ul.payment_methods li:has(> input:checked) { background: var(--c-soft); }
.woocommerce-checkout #payment ul.payment_methods li > input.input-radio { grid-column: 1; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--c-accent); }
.woocommerce-checkout #payment ul.payment_methods li > input.input-radio:focus { outline: none; }
.woocommerce-checkout #payment ul.payment_methods li > input.input-radio:focus-visible { outline: 2px solid var(--c-accent-text); outline-offset: 2px; border-radius: 50%; }
.woocommerce-checkout #payment ul.payment_methods li > label { grid-column: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 0; font-weight: 600; color: var(--c-ink); cursor: pointer; }
.woocommerce-checkout #payment ul.payment_methods li > label img { display: inline-block; float: none !important; width: auto !important; max-width: 52px; height: 24px !important; max-height: 24px !important; margin: 0 !important; padding: 2px 4px; object-fit: contain; border: 1px solid var(--c-line); border-radius: 5px; background: #fff; box-sizing: border-box; vertical-align: middle; }
.woocommerce-checkout #payment ul.payment_methods li > label > :is(span, div):has(img) { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; } /* gateways that wrap their logos */
.woocommerce-checkout #payment ul.payment_methods li > label img:first-of-type { margin-left: 2px !important; }
.woocommerce-checkout #payment ul.payment_methods li > div.payment_box { grid-column: 1 / -1; margin: 12px 0 0; padding: 14px 16px; background: var(--c-surface) !important; border: 1px solid var(--c-line); font-size: 14px; line-height: 1.55; }
.woocommerce-checkout #payment ul.payment_methods li > div.payment_box::before { display: none; }
.woocommerce-checkout #payment ul.payment_methods li > div.payment_box p:last-child { margin-bottom: 0; }
.woocommerce-checkout #payment div.form-row.place-order { margin: 0; padding: 16px; }
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select { border-radius: min(var(--r-btn), 14px); }
.select2-container--default .select2-selection--single { min-height: 48px; border-color: var(--c-line) !important; border-radius: min(var(--r-btn), 14px) !important; background: var(--c-surface) !important; }
.select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 46px !important; color: var(--c-ink) !important; padding-left: 14px !important; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 46px !important; }
.woocommerce-checkout #place_order { width: 100%; min-height: 54px; font-size: 17px; }

/* Classic checkout in two columns on a computer, like the cart: billing and shipping on the left, the order and payment on the right */
.woocommerce-checkout #order_review_heading { font-size: 18px; margin: 0 0 6px; padding-bottom: 12px; border-bottom: 3px solid var(--c-line); }
.woocommerce-checkout #order_review table.shop_table { border: 0; border-radius: 0; background: transparent; }
.woocommerce-checkout #order_review table.shop_table th, .woocommerce-checkout #order_review table.shop_table td { padding: 12px 0; border-top: 0; border-bottom: 1px solid var(--c-line); background: transparent; }
.woocommerce-checkout #order_review table.shop_table thead th { color: var(--c-sub); font-weight: 600; }
.woocommerce-checkout #order_review table.shop_table td.product-total, .woocommerce-checkout #order_review table.shop_table tfoot td { text-align: right; }
.woocommerce-checkout #order_review table.shop_table tfoot th { font-weight: 400; color: var(--c-sub); }
.woocommerce-checkout #order_review .order-total th, .woocommerce-checkout #order_review .order-total td { border-bottom-width: 3px; font-weight: 700; color: var(--c-ink); }
.woocommerce-checkout #order_review .woocommerce-shipping-methods { margin: 0; padding: 0; list-style: none; text-align: left; }
@media (min-width: 900px) {
	form.woocommerce-checkout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, 440px); grid-auto-flow: row dense; column-gap: clamp(28px, 4vw, 56px); align-items: start; }
	form.woocommerce-checkout > * { grid-column: 1 / -1; min-width: 0; }
	form.woocommerce-checkout > #customer_details { grid-column: 1; grid-row: span 2; }
	form.woocommerce-checkout > #order_review_heading, form.woocommerce-checkout > #order_review { grid-column: 2; padding-left: clamp(28px, 4vw, 56px); border-left: 1px solid var(--c-line); }
	form.woocommerce-checkout > #order_review_heading { margin: 0; padding-top: 0; padding-bottom: 12px; border-bottom: 0; box-shadow: inset 0 -3px var(--c-line); }
	form.woocommerce-checkout > #order_review { padding-top: 6px; }
	/* billing, then "ship to a different address" under it, each full width in the left column */
	.woocommerce-checkout #customer_details.col2-set .col-1, .woocommerce-checkout #customer_details.col2-set .col-2 { float: none; width: 100%; }
	.woocommerce-checkout #customer_details.col2-set .col-2 { margin-top: 20px; }
}

/* Order received */
.woocommerce-order { max-width: 860px; }
.woocommerce ul.order_details { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; padding: 0; margin: 0 0 28px; }
.woocommerce ul.order_details::before, .woocommerce ul.order_details::after { display: none; }
.woocommerce ul.order_details li { float: none; margin: 0; padding: 14px 16px; border: 1px solid var(--c-line) !important; border-radius: var(--r-card); background: var(--c-surface); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--c-sub); }
.woocommerce ul.order_details li strong { display: block; margin-top: 4px; font-size: 16px; text-transform: none; letter-spacing: 0; color: var(--c-ink); }
.woocommerce-order .woocommerce-notice--success, .woocommerce-thankyou-order-received { font-family: var(--f-head); font-size: clamp(22px, 3vw, 30px); font-weight: var(--head-weight); margin: 0 0 18px; }
.woocommerce-customer-details address { border: 1px solid var(--c-line) !important; border-radius: var(--r-card); padding: 16px !important; background: var(--c-surface); font-style: normal; }

/* ---------- My account ---------- */
.woocommerce-account .woocommerce { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 900px) { .woocommerce-account.logged-in .woocommerce { grid-template-columns: 240px 1fr; align-items: start; } }
.woocommerce-account .woocommerce-MyAccount-navigation, .woocommerce-account .woocommerce-MyAccount-content { float: none !important; width: auto !important; }
/* Phones and tablets: every item shows at once, two (or three) to a row; computers: a list down the side */
.woocommerce-MyAccount-navigation ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 600px) { .woocommerce-MyAccount-navigation ul { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 900px) { .woocommerce-MyAccount-navigation ul { display: flex; flex-direction: column; gap: 4px; } }
.woocommerce-MyAccount-navigation a { display: flex; align-items: center; min-height: 44px; padding: 10px 14px; border-radius: var(--r-btn); color: var(--c-ink); text-decoration: none; font-weight: 600; line-height: 1.25; background: var(--c-surface); border: 1px solid var(--c-line); overflow-wrap: anywhere; }
.woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--c-sub); font-weight: 500; }
@media (min-width: 900px) { .woocommerce-MyAccount-navigation a { border: 0; background: transparent; } }
.woocommerce-MyAccount-navigation .is-active a { background: var(--c-accent); color: var(--c-on-accent); border-color: var(--c-accent); }
.woocommerce-MyAccount-navigation a:hover { background: var(--c-soft); }
.woocommerce-MyAccount-navigation .is-active a:hover { background: var(--c-accent); }
.woocommerce-account .u-columns.col2-set { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 900px) { .woocommerce-account .u-columns.col2-set { grid-template-columns: 1fr 1fr; } }
.woocommerce-account .u-columns .u-column1, .woocommerce-account .u-columns .u-column2 { width: auto !important; float: none !important; }
.woocommerce form.login, .woocommerce form.register, .woocommerce form.checkout_coupon, .woocommerce form.lost_reset_password {
	border: 1px solid var(--c-line) !important; border-radius: var(--r-card) !important; background: var(--c-surface); padding: clamp(18px, 3vw, 28px) !important; margin: 0 0 20px !important;
}
.woocommerce-account .addresses .title { display: flex; justify-content: space-between; align-items: baseline; }
.woocommerce-account .addresses .title .edit { float: none; }
.woocommerce-account .woocommerce-Addresses { display: grid; gap: 16px; grid-template-columns: 1fr; }
@media (min-width: 760px) { .woocommerce-account .woocommerce-Addresses { grid-template-columns: 1fr 1fr; } }
.woocommerce-account .woocommerce-Addresses .woocommerce-Address { width: auto !important; float: none !important; border: 1px solid var(--c-line); border-radius: var(--r-card); padding: 16px; background: var(--c-surface); }
.woocommerce-orders-table .button, .woocommerce-account table .button { min-height: 36px; padding: 0 14px; font-size: 14px; margin: 2px; }
/* Phones: tables like My orders become one card per row, each value with its label, nothing cut off at the side */
@media (max-width: 767px) {
	.woocommerce table.shop_table_responsive thead, .woocommerce-page table.shop_table_responsive thead { display: none; }
	.woocommerce table.shop_table_responsive, .woocommerce table.shop_table_responsive tbody, .woocommerce-page table.shop_table_responsive tbody { display: block; width: 100%; }
	.woocommerce table.shop_table_responsive tr, .woocommerce-page table.shop_table_responsive tr { display: block; padding: 8px 14px; border-top: 1px solid var(--c-line); }
	.woocommerce table.shop_table_responsive tr:first-child, .woocommerce-page table.shop_table_responsive tr:first-child { border-top: 0; }
	.woocommerce table.shop_table_responsive tr td, .woocommerce-page table.shop_table_responsive tr td, .woocommerce table.shop_table_responsive tr th {
		display: block; padding: 6px 0 !important; border-top: 0; text-align: right !important; background: none !important; overflow: hidden;
	}
	.woocommerce table.shop_table_responsive tr td::before, .woocommerce-page table.shop_table_responsive tr td::before { content: attr(data-title); float: left; margin-right: 12px; font-weight: 600; color: var(--c-sub); text-align: left; }
	.woocommerce table.shop_table_responsive tr td:not([data-title])::before { content: none; }
	.woocommerce table.shop_table_responsive tr td.woocommerce-orders-table__cell-order-actions { padding-top: 10px !important; }
	.woocommerce table.shop_table_responsive tr td.woocommerce-orders-table__cell-order-actions::before { content: none; }

	/* Classic cart ([woocommerce_cart]): each item as a compact card, picture left, name and price beside it, quantity and line total below */
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item {
		display: grid !important; grid-template-columns: 72px minmax(0, 1fr) auto; column-gap: 12px; row-gap: 6px; align-items: center; padding: 14px !important;
	}
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item td { padding: 0 !important; text-align: left !important; }
	.woocommerce-cart-form table.shop_table_responsive tr.cart_item td::before { content: none !important; }
	.woocommerce-cart-form tr.cart_item td.product-thumbnail { display: block !important; grid-column: 1; grid-row: 1 / span 3; align-self: start; }
	.woocommerce-cart-form tr.cart_item td.product-thumbnail img { width: 72px !important; height: 72px; object-fit: cover; border-radius: 12px; margin: 0; }
	.woocommerce-cart-form tr.cart_item td.product-name { grid-column: 2; grid-row: 1; font-weight: 600; line-height: 1.35; }
	.woocommerce-cart-form tr.cart_item td.product-name a { text-decoration: none; color: var(--c-ink); }
	.woocommerce-cart-form tr.cart_item td.product-remove { grid-column: 3; grid-row: 1; align-self: start; text-align: right !important; }
	.woocommerce-cart-form tr.cart_item td.product-remove a.remove { margin-left: auto; }
	.woocommerce-cart-form tr.cart_item td.product-price { grid-column: 2 / span 2; grid-row: 2; color: var(--c-sub); font-size: 14px; }
	.woocommerce-cart-form tr.cart_item td.product-quantity { grid-column: 2; grid-row: 3; }
	.woocommerce-cart-form tr.cart_item td.product-quantity .quantity { margin: 0 !important; }
	.woocommerce-cart-form tr.cart_item td.product-subtotal { grid-column: 3; grid-row: 3; text-align: right !important; font-weight: 700; }
	/* Coupon and update: the code box gets the room, Update cart on its own line */
	.woocommerce-cart-form table.shop_table_responsive tr td.actions { padding: 14px !important; text-align: left !important; }
	.woocommerce-cart-form td.actions .coupon { display: flex !important; gap: 8px; width: 100%; float: none !important; margin: 0 0 10px; }
	.woocommerce-cart-form td.actions .coupon .input-text { flex: 1 1 auto; min-width: 0; width: auto !important; margin: 0 !important; }
	.woocommerce-cart-form td.actions .coupon .button { flex: none; width: auto !important; margin: 0 !important; white-space: nowrap; }
	.woocommerce-cart-form td.actions > .button { display: block; width: 100% !important; float: none !important; margin: 0 !important; }
	/* Cart totals: one label per line (the table's own heading is hidden, the label beside the value stays) */
	/* (cart totals keep their labels on phones: each row is the label and its value side by side) */
	.woocommerce .cart_totals table.shop_table_responsive tr td { text-align: right !important; border-top: 0 !important; }
	.woocommerce .cart_totals .woocommerce-shipping-methods { margin: 0 0 4px; padding: 0; list-style: none; }
	.woocommerce .cart_totals .woocommerce-shipping-destination, .woocommerce .cart_totals .woocommerce-shipping-calculator { clear: both; }
	.woocommerce .cart_totals .wc-proceed-to-checkout .checkout-button { display: flex !important; align-items: center; justify-content: center; width: 100%; min-height: 50px; padding: 0 20px !important; margin: 0 !important; line-height: 1.2; }
}
/* Everywhere: the classic cart's coupon box wide enough to read its hint */
.woocommerce-cart-form td.actions .coupon .input-text { min-width: 140px; }

/* ---------- Dark style tidy-ups for WooCommerce's light defaults ---------- */
.is-dark .woocommerce form .form-row input.input-text, .is-dark .woocommerce form .form-row textarea, .is-dark .select2-dropdown { background: var(--c-surface); color: var(--c-ink); border-color: var(--c-line); }
.is-dark .woocommerce div.product .woocommerce-tabs ul.tabs li { background: none; }
.is-dark .woocommerce .quantity .qty { color: var(--c-ink); }
.is-dark .woocommerce table.shop_table, .is-dark .woocommerce table.shop_table td, .is-dark .woocommerce table.shop_table th { color: var(--c-ink); }
.is-dark .woocommerce-message, .is-dark .woocommerce-info { background: var(--c-soft) !important; }
.is-dark .woocommerce ul.products li.product a img { background: var(--tone-1); }
.is-dark .woocommerce-product-gallery__wrapper img { background: var(--tone-1); }

/* Round add buttons: the + must be a block to have a size */
body.card-tile ul.products li.product .button, body.card-framed ul.products li.product .button, body.card-menu ul.products li.product .button {
	display: inline-flex !important; align-items: center; justify-content: center; line-height: 0;
}
body.card-tile ul.products li.product .button::before, body.card-framed ul.products li.product .button::before, body.card-menu ul.products li.product .button::before { display: block; flex: none; }

/* Grids never grow wider than the screen because of a wide child (gallery slider, scrolling tabs) */
.single-product div.product { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .single-product div.product { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); } }
.woocommerce-account .woocommerce { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .woocommerce-account.logged-in .woocommerce { grid-template-columns: 240px minmax(0, 1fr); } }
/* Notices and anything else WooCommerce adds go across the top; the menu is always the side column, the page beside it */
.woocommerce-account .woocommerce > :not(.woocommerce-MyAccount-navigation):not(.woocommerce-MyAccount-content) { grid-column: 1 / -1; }
.woocommerce-account .woocommerce > .woocommerce-notices-wrapper:empty { display: none; }
@media (min-width: 900px) {
	.woocommerce-account.logged-in .woocommerce > .woocommerce-MyAccount-navigation { grid-column: 1; position: sticky; top: 90px; }
	.woocommerce-account.logged-in .woocommerce > .woocommerce-MyAccount-content { grid-column: 2; }
}
.woocommerce-account .woocommerce-MyAccount-navigation, .woocommerce-account .woocommerce-MyAccount-content { min-width: 0; }

/* WooCommerce's own button rules are more specific than ours: match them, so every button is the shop's */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt,
.woocommerce-page a.button, .woocommerce-page button.button {
	display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 20px; line-height: 1.2;
	border-radius: var(--r-btn); background: var(--c-accent); color: var(--c-on-accent); font-family: var(--f-body); font-weight: 600; font-size: 15px; border: 0; text-align: center;
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button:hover, .woocommerce #respond input#submit:hover {
	background: var(--c-accent); color: var(--c-on-accent); filter: brightness(.94);
}
.woocommerce button.button.alt.disabled, .woocommerce button.button.alt:disabled, .woocommerce button.button:disabled, .woocommerce button.button.disabled, .woocommerce a.button.disabled,
.woocommerce button.button:disabled[disabled], .woocommerce button.button.alt:disabled[disabled] {
	/* A button that can't be used yet: calm and readable, not a faded copy of the main colour. */
	background: var(--c-soft); color: var(--c-sub); opacity: 1; cursor: not-allowed; padding: 0 20px; filter: none;
}
/* Update cart is a second step, not the main action: an outline, coloured only once there is something to update. */
.woocommerce-cart-form button[name="update_cart"] { background: transparent; color: var(--c-accent-text, var(--c-accent)); box-shadow: inset 0 0 0 1.5px currentColor; }
.woocommerce-cart-form button[name="update_cart"]:hover:not(:disabled) { background: var(--c-soft); color: var(--c-accent-text, var(--c-accent)); filter: none; }
.woocommerce-cart-form button[name="update_cart"]:disabled, .woocommerce .woocommerce-cart-form button.button[name="update_cart"]:disabled[disabled] { opacity: 1; background: transparent; color: var(--c-sub); box-shadow: inset 0 0 0 1.5px var(--c-line); }
.woocommerce div.product form.cart .button { min-height: 50px; font-size: 17px; }

/* Nothing found: the style's icon and a friendly line, centred */
.woocommerce-no-products-found { text-align: center; padding: clamp(24px, 5vw, 56px) 0; }
.woocommerce-no-products-found::before {
	content: ""; display: block; width: 88px; height: 88px; margin: 0 auto 16px; border-radius: 50%; background: var(--c-soft);
	-webkit-mask: none; mask: none;
}
.woocommerce-no-products-found { position: relative; }
.woocommerce-no-products-found::after {
	content: ""; position: absolute; top: calc(clamp(24px, 5vw, 56px) + 22px); left: 50%; width: 44px; height: 44px; margin-left: -22px; background: var(--c-accent-text);
	-webkit-mask: var(--motif) center / contain no-repeat; mask: var(--motif) center / contain no-repeat;
}
.woocommerce-no-products-found .woocommerce-info { display: inline-block; background: none !important; padding: 0 !important; font-size: 17px; }
.woocommerce-no-products-found .woocommerce-info::before { display: none; }

/* "Related products", "You may also like" and cart suggestions: calm cards in the page's own colours, not the style's tones */
.related.products ul.products li.product, .upsells.products ul.products li.product, .cross-sells ul.products li.product {
	background: var(--c-surface) !important; border: 1px solid var(--c-line); box-shadow: none !important;
}
body.card-plain .related.products ul.products li.product, body.card-tall .related.products ul.products li.product,
body.card-plain .upsells.products ul.products li.product, body.card-tall .upsells.products ul.products li.product { border: 0; background: transparent !important; }
.related.products ul.products li.product a img, .upsells.products ul.products li.product a img, .cross-sells ul.products li.product a img { background: var(--c-bg) !important; }
.related.products ul.products li.product .price ins, .upsells.products ul.products li.product .price ins { color: var(--c-ink); }
/* Café menu: related items stay menu rows, without card frames */
body.card-menu .related.products ul.products li.product, body.card-menu .upsells.products ul.products li.product, body.card-menu .cross-sells ul.products li.product { border: 0; border-top: 1px solid var(--c-line); background: transparent !important; border-radius: 0; }
/* Florist: homepage product photos get the same arch as the shop pages */
body.spt.img-arch .spos-h__products ul.products li.product a img { border-radius: 999px 999px var(--r-img) var(--r-img) !important; aspect-ratio: 4 / 5; }

.single-product .summary form.cart .spos-heart.is-page { flex: none; }

/* Café menu list: the heart sits beside the + button instead of on top of it */
body.card-menu ul.products li.product { padding-right: 96px; }
body.card-menu ul.products li.product .spos-heart.is-card { top: 50%; right: 46px; transform: translateY(-50%); width: 36px; height: 36px; box-shadow: none; background: transparent; }
body.card-menu ul.products li.product .spos-heart.is-card:hover { transform: translateY(-50%) scale(1.06); }
/* ...but the homepage keeps photo cards, with space between them and text lined up with the button */
body.card-menu .spos-h ul.products { gap: var(--gap, 16px) !important; }
body.card-menu .spos-h ul.products li.product { padding-right: 0; text-align: left !important; }
body.card-menu .spos-h ul.products li.product .spos-heart.is-card { top: 10px; right: 10px; transform: none; width: 38px; height: 38px; background: rgba(255, 255, 255, .92); box-shadow: 0 1px 3px rgba(0, 0, 0, .12); }
/* the cart's quantity control at a natural width */
.wc-block-components-quantity-selector { max-width: 132px; }

/* Classic checkout, cart and account forms on phones (the theme lays out small screens itself, so WooCommerce's
   small-screen sheet is not loaded; these are the parts of it the classic pages need) */
@media (max-width: 767px) {
	.woocommerce .col2-set .col-1, .woocommerce .col2-set .col-2, .woocommerce-page .col2-set .col-1, .woocommerce-page .col2-set .col-2,
	.woocommerce form .form-row-first, .woocommerce form .form-row-last, .woocommerce-page form .form-row-first, .woocommerce-page form .form-row-last,
	.woocommerce .cart-collaterals .cart_totals, .woocommerce .cart-collaterals .cross-sells, .woocommerce-page .cart-collaterals .cart_totals {
		float: none !important; width: 100% !important;
	}
	.woocommerce .col2-set .col-2 { margin-top: 8px; }
	.woocommerce form .form-row { padding: 0; margin: 0 0 12px; }
	.woocommerce form .form-row .input-text, .woocommerce form .form-row select:not(.select2-hidden-accessible), .woocommerce form .form-row textarea,
	.woocommerce form .form-row .select2-container { width: 100% !important; max-width: 100%; box-sizing: border-box; }
	.woocommerce-checkout #order_review_heading, .woocommerce-checkout #order_review { float: none !important; width: 100% !important; }
	.woocommerce-checkout #payment .place-order .button, .woocommerce-checkout #place_order { width: 100%; float: none !important; }
	.woocommerce-checkout .woocommerce-form-coupon .form-row-first, .woocommerce-checkout .woocommerce-form-coupon .form-row-last { width: 100% !important; }
}
