/* ==========================================================================
   Pickwell - design tokens
   ========================================================================== */

/* Default scheme: forest. Each body.pw-scheme-* below swaps only these six
   tokens; every other rule is written against them. */
:root {
	--pw-ink: #123529;
	--pw-ink-soft: #1d4a3a;
	--pw-paper: #f9f8f3;
	--pw-accent: #ff6a3d;
	--pw-accent-dark: #e04f24;
	--pw-accent-soft: #fff0eb;
	--pw-accent-shadow: rgba(255, 106, 61, .3);
	--pw-line: #e7e4d9;
	--pw-line-strong: #d5d0c0;

	--pw-card: #ffffff;
	--pw-gold: #f2a007;
	--pw-muted: #6d7a88;
	--pw-muted-light: #98a4b0;
	--pw-radius: 16px;
	--pw-radius-sm: 12px;
	--pw-pill: 999px;
	--pw-shadow: 0 2px 6px rgba(20, 27, 36, .05);
	--pw-shadow-lift: 0 14px 30px rgba(20, 27, 36, .13);
	--pw-display: "Fraunces", Georgia, "Times New Roman", serif;
	--pw-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

body.pw-scheme-midnight {
	--pw-ink: #18213f;
	--pw-ink-soft: #26315a;
	--pw-paper: #f7f9fc;
	--pw-accent: #f5a524;
	--pw-accent-dark: #d98b0e;
	--pw-accent-soft: #fff6e6;
	--pw-accent-shadow: rgba(245, 165, 36, .32);
	--pw-line: #e4e8f0;
	--pw-line-strong: #cdd4e0;
}

body.pw-scheme-aubergine {
	--pw-ink: #2e1b33;
	--pw-ink-soft: #43284b;
	--pw-paper: #fbf7fa;
	--pw-accent: #ff5d8f;
	--pw-accent-dark: #e13c71;
	--pw-accent-soft: #ffeef4;
	--pw-accent-shadow: rgba(255, 93, 143, .3);
	--pw-line: #ece3ea;
	--pw-line-strong: #dccdd8;
}

body.pw-scheme-espresso {
	--pw-ink: #2a1f1a;
	--pw-ink-soft: #3d2e26;
	--pw-paper: #fbf7f2;
	--pw-accent: #d9793f;
	--pw-accent-dark: #bd5f28;
	--pw-accent-soft: #fdf0e6;
	--pw-accent-shadow: rgba(217, 121, 63, .3);
	--pw-line: #ece4da;
	--pw-line-strong: #dbcebe;
}

body.pw-scheme-ink {
	--pw-ink: #141b24;
	--pw-ink-soft: #27323f;
	--pw-paper: #fbf9f6;
	--pw-accent: #ff5a35;
	--pw-accent-dark: #e0421f;
	--pw-accent-soft: #fff1ec;
	--pw-accent-shadow: rgba(255, 90, 53, .3);
	--pw-line: #e9e3da;
	--pw-line-strong: #d8cfc2;
}

/* ==========================================================================
   Base
   ========================================================================== */

body.pw,
body.pw .site {
	background-color: var(--pw-paper);
	color: var(--pw-ink);
	font-family: var(--pw-body);
}

body.pw h1,
body.pw h2,
body.pw h3 {
	font-family: var(--pw-display);
	color: var(--pw-ink);
	letter-spacing: -.01em;
}

.pw-icon {
	width: 20px;
	height: 20px;
	flex: 0 0 auto;
}

/* ==========================================================================
   Header
   ========================================================================== */

.site-header {
	background-color: var(--pw-ink) !important;
	border-bottom: 0;
	padding: 0 !important;
	/* Storefront sets a large em-based margin here. */
	margin-bottom: 0 !important;
	position: sticky;
	top: 0;
	z-index: 120;
}

.site-header .col-full {
	padding: 0 20px;
	max-width: 1280px;
}

.pw-bar {
	display: flex;
	align-items: center;
	gap: 18px;
	min-height: 74px;
	padding: 12px 0;
}

.pw-bar__burger,
.pw-bar__action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 0;
	border-radius: var(--pw-pill);
	background: transparent;
	color: #fff;
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease;
}

.pw-bar__burger:hover,
.pw-bar__burger:focus-visible,
.pw-bar__action:hover,
.pw-bar__action:focus-visible {
	background: rgba(255, 255, 255, .12);
	color: #fff;
	outline: none;
}

.pw-bar__burger .pw-icon {
	width: 24px;
	height: 24px;
}

/* Brand lockup */

.pw-bar__brand {
	flex: 0 0 auto;
}

.pw-brand {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	color: #fff;
	text-decoration: none;
}

.pw-brand:hover {
	color: #fff;
	text-decoration: none;
}

.pw-brand__mark {
	width: 40px;
	height: 40px;
	flex: 0 0 auto;
	color: var(--pw-ink);
}

.pw-brand__mark-bg {
	fill: var(--pw-accent);
}

.pw-brand__mark-dot {
	fill: #fff;
}

.pw-brand__text {
	display: flex;
	flex-direction: column;
	line-height: 1.1;
}

.pw-brand__name {
	font-family: var(--pw-display);
	font-size: 1.45rem;
	font-weight: 700;
	letter-spacing: -.02em;
}

.pw-brand__tag {
	color: rgba(255, 255, 255, .58);
	font-size: .7rem;
	font-weight: 500;
	letter-spacing: .02em;
	margin-top: 2px;
}

/* Inline search */

.pw-bar__search {
	flex: 1 1 auto;
	min-width: 0;
}

.pw-search {
	position: relative;
	display: flex;
	align-items: center;
	max-width: 540px;
	margin: 0 auto;
}

.pw-search__icon {
	position: absolute;
	left: 16px;
	color: var(--pw-muted);
	pointer-events: none;
	width: 18px;
	height: 18px;
}

.pw-search .pw-search__input {
	width: 100%;
	height: 46px;
	margin: 0;
	padding: 0 104px 0 44px;
	border: 1px solid transparent;
	border-radius: var(--pw-pill);
	background-color: rgba(255, 255, 255, .95);
	color: var(--pw-ink);
	font-family: var(--pw-body);
	font-size: .95rem;
	box-shadow: none;
	-webkit-appearance: none;
	appearance: none;
}

.pw-search .pw-search__input::placeholder {
	color: var(--pw-muted-light);
}

.pw-search .pw-search__input:focus {
	outline: none;
	border-color: var(--pw-accent);
	background-color: #fff;
	box-shadow: 0 0 0 3px var(--pw-accent-shadow);
}

.pw-search__submit {
	position: absolute;
	right: 5px;
	height: 36px;
	padding: 0 18px;
	border: 0;
	border-radius: var(--pw-pill);
	background: var(--pw-ink);
	color: #fff;
	font-family: var(--pw-body);
	font-size: .82rem;
	font-weight: 600;
	cursor: pointer;
	transition: background-color .15s ease;
}

.pw-search__submit:hover {
	background: var(--pw-accent);
	color: #fff;
}

.pw-bar__actions {
	display: flex;
	align-items: center;
	gap: 2px;
	flex: 0 0 auto;
}

.pw-cart {
	position: relative;
}

.pw-cart__count {
	position: absolute;
	top: 2px;
	right: 0;
	min-width: 19px;
	height: 19px;
	padding: 0 5px;
	border-radius: var(--pw-pill);
	background: var(--pw-accent);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	line-height: 19px;
	text-align: center;
}

.pw-cart__count.is-empty {
	background: rgba(255, 255, 255, .22);
}

/* ==========================================================================
   Category navigation: one button opens a panel with every category, so none
   of the 19 is hidden behind a horizontal scrollbar.
   ========================================================================== */

.pw-nav {
	position: relative;
	padding-bottom: 14px;
}

.pw-nav__row {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
}

.pw-nav__toggle {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	height: 40px;
	padding: 0 16px 0 14px;
	border: 1px solid rgba(255, 255, 255, .28);
	border-radius: var(--pw-pill);
	background: rgba(255, 255, 255, .1);
	color: #fff;
	font-family: var(--pw-body);
	font-size: .88rem;
	font-weight: 600;
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease;
}

.pw-nav__toggle:hover,
.pw-nav__toggle:focus-visible {
	background: rgba(255, 255, 255, .18);
	border-color: rgba(255, 255, 255, .5);
	outline: none;
}

.pw-nav__toggle.is-current,
.pw-nav__toggle[aria-expanded="true"] {
	background: var(--pw-accent);
	border-color: var(--pw-accent);
	color: #fff;
}

.pw-nav__toggle-icon {
	width: 18px;
	height: 18px;
}

.pw-nav__chevron {
	width: 16px;
	height: 16px;
	transition: transform .18s ease;
}

.pw-nav__toggle[aria-expanded="true"] .pw-nav__chevron {
	transform: rotate(180deg);
}

.pw-nav__divider {
	width: 1px;
	height: 22px;
	flex: 0 0 auto;
	background: rgba(255, 255, 255, .22);
	margin: 0 4px;
}

/* The panel */

.pw-catpanel {
	position: absolute;
	top: calc(100% - 4px);
	left: 0;
	right: 0;
	z-index: 20;
	padding: 20px 22px 22px;
	border-radius: var(--pw-radius);
	background: var(--pw-card);
	box-shadow: 0 20px 44px rgba(12, 20, 28, .26);
	max-height: min(70vh, 560px);
	overflow-y: auto;
	animation: pw-panel-in .16s ease-out;
}

.pw-catpanel[hidden] {
	display: none;
}

@keyframes pw-panel-in {
	from { opacity: 0; transform: translateY(-6px); }
	to   { opacity: 1; transform: translateY(0); }
}

.pw-catpanel__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 14px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--pw-line);
}

.pw-catpanel__title {
	margin: 0;
	color: var(--pw-ink);
	font-family: var(--pw-display);
	font-size: 1.05rem;
	font-weight: 700;
}

.pw-catpanel__all {
	color: var(--pw-accent-dark);
	font-size: .85rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

.pw-catpanel__all:hover {
	color: var(--pw-accent-dark);
	text-decoration: underline;
}

.pw-catpanel__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pw-catpanel__grid li {
	margin: 0;
	list-style: none;
}

.pw-cat {
	display: flex;
	align-items: center;
	gap: 11px;
	height: 100%;
	padding: 9px 11px;
	border-radius: var(--pw-radius-sm);
	color: var(--pw-ink);
	text-decoration: none;
	transition: background-color .13s ease;
}

.pw-cat:hover,
.pw-cat:focus-visible {
	background: var(--pw-accent-soft);
	color: var(--pw-ink);
	text-decoration: none;
	outline: none;
}

.pw-cat.is-active {
	background: var(--pw-accent-soft);
	box-shadow: inset 0 0 0 1px var(--pw-accent);
}

.pw-cat__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--pw-paper);
	color: var(--pw-ink);
}

.pw-cat:hover .pw-cat__icon,
.pw-cat.is-active .pw-cat__icon {
	background: var(--pw-accent);
	color: #fff;
}

.pw-cat__icon .pw-icon {
	width: 17px;
	height: 17px;
}

.pw-cat__body {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.pw-cat__name {
	font-size: .86rem;
	font-weight: 600;
	line-height: 1.25;
}

.pw-cat__count {
	color: var(--pw-muted-light);
	font-size: .73rem;
	line-height: 1.4;
}

/* Click-anywhere-else backdrop, behind the panel but over the page. */
.pw-catpanel-backdrop {
	position: fixed;
	inset: 0;
	z-index: 110;
	background: rgba(10, 16, 22, .3);
}

.pw-catpanel-backdrop[hidden] {
	display: none;
}

.pw-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
	height: 36px;
	padding: 0 16px;
	border: 1px solid rgba(255, 255, 255, .2);
	border-radius: var(--pw-pill);
	background: transparent;
	color: rgba(255, 255, 255, .84);
	font-size: .84rem;
	font-weight: 500;
	white-space: nowrap;
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.pw-chip:hover,
.pw-chip:focus-visible {
	background: rgba(255, 255, 255, .1);
	border-color: rgba(255, 255, 255, .42);
	color: #fff;
	text-decoration: none;
	outline: none;
}

.pw-chip.is-active {
	background: var(--pw-accent);
	border-color: var(--pw-accent);
	color: #fff;
	font-weight: 600;
}

.pw-chip .pw-icon {
	width: 17px;
	height: 17px;
	opacity: .9;
}

/* ==========================================================================
   Drawer
   ========================================================================== */

.pw-drawer {
	position: fixed;
	inset: 0;
	z-index: 500;
}

.pw-drawer[hidden] {
	display: none;
}

.pw-drawer__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(10, 16, 22, .5);
}

.pw-drawer__panel {
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	width: min(330px, 86vw);
	background: var(--pw-card);
	box-shadow: 4px 0 30px rgba(10, 16, 22, .24);
	display: flex;
	flex-direction: column;
	animation: pw-slide-in .18s ease-out;
}

@keyframes pw-slide-in {
	from { transform: translateX(-100%); }
	to   { transform: translateX(0); }
}

.pw-drawer__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 18px 20px;
	background: var(--pw-ink);
	color: #fff;
}

.pw-drawer__title {
	font-family: var(--pw-display);
	font-size: 1.2rem;
	font-weight: 700;
}

.pw-drawer__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	border: 0;
	border-radius: var(--pw-pill);
	background: rgba(255, 255, 255, .12);
	color: #fff;
	cursor: pointer;
}

.pw-drawer__menu {
	margin: 0;
	padding: 8px 0;
	list-style: none;
	overflow-y: auto;
}

.pw-drawer__menu li {
	margin: 0;
	list-style: none;
}

.pw-drawer__menu a {
	display: block;
	padding: 14px 22px;
	border-bottom: 1px solid var(--pw-line);
	color: var(--pw-ink);
	font-weight: 500;
	text-decoration: none;
}

.pw-drawer__menu a:hover {
	background: var(--pw-accent-soft);
	color: var(--pw-accent-dark);
}

.pw-drawer__menu .sub-menu {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pw-drawer__menu .sub-menu a {
	padding-left: 38px;
	font-weight: 400;
}

/* Paired with scrollLock in pickwell.js: the offset is pinned through `top`
   so the page cannot jump to the start while an overlay is open. */
body.pw-locked {
	position: fixed;
	left: 0;
	right: 0;
	width: 100%;
	overflow: hidden;
}

/* ==========================================================================
   Content area
   ========================================================================== */

.site-content {
	padding-top: 32px;
}

.site-content .col-full {
	max-width: 1280px;
	padding-left: 20px;
	padding-right: 20px;
}

.content-area {
	width: 100%;
	float: none;
	margin-right: 0;
}

#secondary,
.widget-area {
	display: none;
}

/* The shop page hides its title, leaving Storefront's tall, empty archive
   header. It holds only whitespace, so :empty cannot match it. */
body.post-type-archive-product .woocommerce-products-header {
	display: none;
}

body.woocommerce .woocommerce-products-header {
	padding: 0;
	margin-bottom: 1.4rem;
	text-align: left;
}

body.woocommerce .woocommerce-products-header .woocommerce-products-header__title,
body.woocommerce .woocommerce-products-header h1 {
	position: relative;
	margin: 0 0 .6rem;
	padding: 0 0 .5rem;
	color: var(--pw-ink);
	font-family: var(--pw-display);
	font-size: 2rem;
	font-weight: 700;
	text-align: left;
	text-shadow: none;
}

/* Accent rule under section headings. */
body.woocommerce .woocommerce-products-header .woocommerce-products-header__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 54px;
	height: 4px;
	border-radius: var(--pw-pill);
	background: var(--pw-accent);
}

body.woocommerce .woocommerce-products-header .term-description {
	color: var(--pw-muted);
	font-size: .95rem;
	max-width: 62ch;
}

/* ==========================================================================
   Product grid
   ========================================================================== */

.woocommerce ul.products,
ul.products {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	margin: 0 0 2rem;
	padding: 0;
	border: 0;
	list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none;
}

.woocommerce ul.products li.product,
ul.products li.product {
	width: 100% !important;
	float: none !important;
	clear: none !important;
	margin: 0 !important;
	padding: 14px 14px 18px;
	border: 1px solid var(--pw-line);
	border-radius: var(--pw-radius);
	background: var(--pw-card);
	box-shadow: var(--pw-shadow);
	display: flex;
	flex-direction: column;
	position: relative;
	text-align: left;
	transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

.woocommerce ul.products li.product:hover,
ul.products li.product:hover {
	transform: translateY(-3px);
	border-color: var(--pw-line-strong);
	box-shadow: var(--pw-shadow-lift);
}

.woocommerce ul.products li.product a.woocommerce-LoopProduct-link {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	text-decoration: none;
}

/* Image well */

.pw-card__media {
	position: relative;
	border-radius: var(--pw-radius-sm);
	background: linear-gradient(160deg, #f7f4ef 0%, #f2eee7 100%);
	overflow: hidden;
	margin-bottom: 14px;
}

.woocommerce ul.products li.product .pw-card__media img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	display: block;
	margin: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	mix-blend-mode: multiply;
}

.pw-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 3;
	padding: 4px 10px;
	border-radius: var(--pw-pill);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .01em;
	line-height: 1.4;
}

.pw-badge--sale {
	background: var(--pw-accent);
	color: #fff;
	box-shadow: 0 2px 8px var(--pw-accent-shadow);
}

/* Storefront's own sale flash is replaced by .pw-badge in the loop. */
.woocommerce ul.products li.product .onsale {
	display: none;
}

/* Title */

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	margin: 0 0 10px;
	padding: 0;
	color: var(--pw-ink);
	font-family: var(--pw-body);
	font-size: .92rem;
	font-weight: 500;
	line-height: 1.4;
	min-height: 2.8em;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.woocommerce ul.products li.product:hover .woocommerce-loop-product__title {
	color: var(--pw-accent-dark);
}

/* Price: WooCommerce prints the struck-through price first, the sale leads here. */

.woocommerce ul.products li.product .price {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 8px;
	margin: auto 0 6px;
	color: var(--pw-ink);
	font-family: var(--pw-display);
	font-size: 1.22rem;
	font-weight: 700;
	line-height: 1.2;
}

.woocommerce ul.products li.product .price ins {
	order: 1;
	background: transparent;
	color: var(--pw-ink);
	font-weight: 700;
	text-decoration: none;
}

.woocommerce ul.products li.product .price del {
	order: 2;
	color: var(--pw-muted-light);
	font-family: var(--pw-body);
	font-size: .8rem;
	font-weight: 400;
	opacity: 1;
}

.woocommerce ul.products li.product .price .screen-reader-text {
	order: 3;
}

/* Rating */

.woocommerce ul.products li.product .pw-rating {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 4px;
	min-height: 1.3em;
}

.woocommerce ul.products li.product .star-rating {
	margin: 0;
	float: none;
	font-size: .88em;
}

/* Storefront colours the stars from the link colour; override both layers. */
.woocommerce .star-rating::before,
.woocommerce .star-rating span::before,
.star-rating::before,
.star-rating span::before {
	color: var(--pw-gold);
}

/* Keeps the row's height so every card lines up, shows nothing. */
.star-rating--empty,
.woocommerce ul.products li.product .star-rating--empty {
	visibility: hidden;
}

.star-rating--empty::before,
.woocommerce .star-rating--empty::before {
	content: ";;;;;";
	visibility: hidden;
}

.woocommerce ul.products li.product .pw-rating__count {
	color: var(--pw-muted);
	font-size: .78rem;
	line-height: 1;
}

/* Actions: buy now leads, add to cart is the quieter secondary. */

.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart,
.woocommerce ul.products li.product .pw-buy {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	margin-top: 10px;
	padding: 10px 16px;
	border-radius: var(--pw-pill);
	font-family: var(--pw-body);
	font-size: .82rem;
	font-weight: 600;
	text-align: center;
	text-decoration: none;
	line-height: 1.25;
}

.woocommerce ul.products li.product .pw-buy {
	width: 100%;
	background: var(--pw-accent);
	color: #fff;
	font-weight: 700;
	box-shadow: 0 4px 12px var(--pw-accent-shadow);
	transition: background-color .15s ease, box-shadow .15s ease;
}

.woocommerce ul.products li.product .pw-buy:hover,
.woocommerce ul.products li.product .pw-buy:focus-visible {
	background: var(--pw-accent-dark);
	color: #fff;
	box-shadow: 0 6px 16px var(--pw-accent-shadow);
}

.pw-buy__arrow {
	transition: transform .15s ease;
}

.pw-buy:hover .pw-buy__arrow {
	transform: translateX(3px);
}

.woocommerce ul.products li.product .pw-buy--options {
	background: var(--pw-accent-soft);
	color: var(--pw-accent-dark);
	box-shadow: none;
}

.woocommerce ul.products li.product .pw-buy--options:hover {
	background: var(--pw-accent);
	color: #fff;
}

.woocommerce ul.products li.product .button,
.woocommerce ul.products li.product .added_to_cart {
	width: 100%;
	margin-top: 8px;
	background: transparent;
	border: 1px solid var(--pw-line-strong);
	color: var(--pw-ink);
}

.woocommerce ul.products li.product .button:hover,
.woocommerce ul.products li.product .added_to_cart:hover {
	background: var(--pw-ink);
	border-color: var(--pw-ink);
	color: #fff;
}

.woocommerce ul.products li.product .button.loading::after {
	top: auto;
}

/* Product page: buy now sits beside the add-to-cart button. */

.single-product div.product form.cart .pw-buy--single {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-left: 10px;
	padding: 12px 26px;
	border: 0;
	border-radius: var(--pw-pill);
	background: var(--pw-accent);
	color: #fff;
	font-family: var(--pw-body);
	font-size: .95rem;
	font-weight: 700;
	cursor: pointer;
	box-shadow: 0 6px 16px var(--pw-accent-shadow);
	transition: background-color .15s ease;
}

.single-product div.product form.cart .pw-buy--single:hover {
	background: var(--pw-accent-dark);
	color: #fff;
}

/* ==========================================================================
   Load more + ad gate
   ========================================================================== */

.pw-more {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	margin: 8px 0 44px;
	text-align: center;
}

.pw-more__count {
	margin: 0;
	color: var(--pw-muted);
	font-size: .88rem;
}

.pw-more__button {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-width: 230px;
	justify-content: center;
	padding: 15px 34px;
	border: 0;
	border-radius: var(--pw-pill);
	background: var(--pw-accent);
	color: #fff;
	font-family: var(--pw-body);
	font-size: 1rem;
	font-weight: 700;
	cursor: pointer;
	box-shadow: 0 8px 20px var(--pw-accent-shadow);
	transition: background-color .15s ease, transform .15s ease, box-shadow .15s ease;
}

.pw-more__button:hover {
	background: var(--pw-accent-dark);
	transform: translateY(-1px);
	box-shadow: 0 12px 26px var(--pw-accent-shadow);
}

.pw-more__button.is-loading {
	opacity: .75;
	cursor: progress;
}

.pw-more__button[hidden] {
	display: none;
}

.pw-more__chevron {
	width: 18px;
	height: 18px;
}

.pw-more__button.is-loading .pw-more__chevron {
	animation: pw-spin .9s linear infinite;
}

@keyframes pw-spin {
	to { transform: rotate(360deg); }
}

.pw-more__note {
	margin: 0;
	color: var(--pw-muted-light);
	font-size: .76rem;
}

.pw-more__error {
	margin: 0;
	color: var(--pw-accent-dark);
	font-size: .85rem;
}

.pw-more__error[hidden] {
	display: none;
}

/* With JS the grid pages through the button, so the numbered pager is hidden
   but still rendered for crawlers and no-JS visitors. */
.pw-js .woocommerce-pagination {
	display: none;
}

.woocommerce-pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	justify-content: center;
	border: 0;
}

.woocommerce-pagination ul.page-numbers li {
	border: 0;
}

.woocommerce-pagination .page-numbers a,
.woocommerce-pagination .page-numbers span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 12px;
	border-radius: var(--pw-pill);
	background: #fff;
	border: 1px solid var(--pw-line);
	color: var(--pw-ink);
	font-weight: 600;
	text-decoration: none;
}

.woocommerce-pagination .page-numbers .current {
	background: var(--pw-ink);
	border-color: var(--pw-ink);
	color: #fff;
}

/* Ad dialog */

.pw-ad {
	position: fixed;
	inset: 0;
	z-index: 600;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

.pw-ad[hidden] {
	display: none;
}

.pw-ad__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(10, 16, 22, .62);
	backdrop-filter: blur(2px);
}

.pw-ad__panel {
	position: relative;
	width: min(420px, 100%);
	max-height: calc(100vh - 40px);
	overflow-y: auto;
	background: var(--pw-card);
	border-radius: 20px;
	box-shadow: 0 24px 60px rgba(10, 16, 22, .4);
	animation: pw-pop .18s ease-out;
}

@keyframes pw-pop {
	from { transform: scale(.96); opacity: 0; }
	to   { transform: scale(1); opacity: 1; }
}

.pw-ad__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 12px 14px 12px 18px;
	border-bottom: 1px solid var(--pw-line);
}

.pw-ad__label {
	margin: 0;
	color: var(--pw-muted-light);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.pw-ad__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: var(--pw-pill);
	background: transparent;
	color: var(--pw-muted);
	cursor: pointer;
}

.pw-ad__close:hover {
	background: var(--pw-line);
	color: var(--pw-ink);
}

.pw-ad__slot {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 250px;
	padding: 18px;
	overflow: hidden;
}

.pw-ad__slot img,
.pw-ad__slot iframe {
	max-width: 100%;
}

.pw-ad__house {
	width: 100%;
	padding: 26px 20px;
	border: 2px dashed var(--pw-line-strong);
	border-radius: var(--pw-radius);
	background: var(--pw-accent-soft);
	text-align: center;
}

.pw-ad__kicker {
	margin: 0 0 8px;
	color: var(--pw-accent-dark);
	font-family: var(--pw-display);
	font-size: 1.15rem;
	font-weight: 700;
}

.pw-ad__lead {
	margin: 0 0 8px;
	color: var(--pw-ink);
	font-size: .88rem;
	line-height: 1.5;
}

.pw-ad__hint {
	margin: 0;
	color: var(--pw-muted);
	font-size: .76rem;
	line-height: 1.5;
}

.pw-ad__foot {
	padding: 0 18px 18px;
}

.pw-ad__continue {
	width: 100%;
	padding: 14px 20px;
	border: 0;
	border-radius: var(--pw-pill);
	background: var(--pw-ink);
	color: #fff;
	font-family: var(--pw-body);
	font-size: .95rem;
	font-weight: 700;
	cursor: pointer;
	transition: background-color .15s ease, opacity .15s ease;
}

.pw-ad__continue:hover:not(:disabled) {
	background: var(--pw-accent);
}

.pw-ad__continue:disabled {
	background: var(--pw-line-strong);
	color: var(--pw-muted);
	cursor: default;
}

/* ==========================================================================
   WooCommerce notices
   ========================================================================== */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	border-radius: var(--pw-radius);
	font-family: var(--pw-body);
	font-size: .92rem;
}

/*
 * Storefront gives the inline "View cart" button `padding: 0 0 0 16px`, so its
 * trailing arrow (a ::after icon glyph) runs into the pill's rounded right edge
 * and gets clipped. Restore padding on all four sides and leave room for it.
 */
.woocommerce-message a.button,
.woocommerce-info a.button,
.woocommerce-error a.button {
	display: inline-flex;
	align-items: center;
	padding: 9px 20px;
	margin-left: 18px;
	border-radius: var(--pw-pill);
	background-color: var(--pw-ink);
	color: #fff;
	font-size: .84rem;
	font-weight: 600;
	line-height: 1.25;
	white-space: nowrap;
}

.woocommerce-message a.button:hover,
.woocommerce-info a.button:hover,
.woocommerce-error a.button:hover {
	background-color: var(--pw-accent);
	color: #fff;
}

/* The glyph is sized from the font; give it its own breathing room instead of
   relying on the button's padding alone. */
.woocommerce-message a.button::after,
.woocommerce-info a.button::after,
.woocommerce-error a.button::after {
	margin-left: 9px;
	line-height: 1;
}

/* ==========================================================================
   Shop chrome
   ========================================================================== */

/* Storefront floats the count and the dropdown, which have different heights,
   so their baselines never line up. One flex row fixes it. */
.storefront-sorting {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px 16px;
	margin-bottom: 1.2rem;
}

.storefront-sorting::before,
.storefront-sorting::after {
	content: none;
}

/* WooCommerce drops its notices wrapper inside this row. Empty it is still a
   flex item, which pushed the count off to the middle; give it its own line. */
.storefront-sorting > .woocommerce-notices-wrapper {
	order: 0;
	flex: 0 0 100%;
}

.storefront-sorting > .woocommerce-notices-wrapper:empty {
	display: none;
}

.woocommerce-result-count {
	order: 1;
	float: none;
	margin: 0;
	color: var(--pw-muted);
	font-size: .88rem;
	line-height: 1.4;
}

.woocommerce-ordering {
	order: 2;
	float: none;
	margin: 0;
	color: var(--pw-muted);
	font-size: .85rem;
}

/* Native control: kept for no-JS and for the form itself, hidden once the
   custom listbox is built. */
.woocommerce-ordering select {
	height: 40px;
	padding: 0 14px;
	border: 1px solid var(--pw-line);
	border-radius: var(--pw-pill);
	background-color: #fff;
	color: var(--pw-ink);
	font-family: var(--pw-body);
	font-size: .85rem;
}

.pw-select__native {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* ==========================================================================
   Custom sort dropdown
   ========================================================================== */

.pw-select {
	position: relative;
	display: inline-block;
}

.pw-select__button {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	height: 42px;
	padding: 0 14px 0 18px;
	border: 1px solid var(--pw-line-strong);
	border-radius: var(--pw-pill);
	background: var(--pw-card);
	color: var(--pw-ink);
	font-family: var(--pw-body);
	font-size: .87rem;
	font-weight: 600;
	cursor: pointer;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.pw-select__button:hover {
	border-color: var(--pw-ink);
}

.pw-select__button:focus-visible,
.pw-select__button[aria-expanded="true"] {
	outline: none;
	border-color: var(--pw-accent);
	box-shadow: 0 0 0 3px var(--pw-accent-shadow);
}

.pw-select__prefix {
	color: var(--pw-muted-light);
	font-weight: 500;
}

.pw-select__chevron {
	width: 16px;
	height: 16px;
	color: var(--pw-muted);
	transition: transform .18s ease;
}

.pw-select__button[aria-expanded="true"] .pw-select__chevron {
	transform: rotate(180deg);
}

.pw-select__menu {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	z-index: 40;
	min-width: 240px;
	margin: 0;
	padding: 6px;
	border-radius: var(--pw-radius-sm);
	background: var(--pw-card);
	box-shadow: 0 16px 36px rgba(12, 20, 28, .2);
	list-style: none;
	animation: pw-panel-in .14s ease-out;
}

.pw-select__menu[hidden] {
	display: none;
}

.pw-select__option {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin: 0;
	padding: 10px 12px;
	border-radius: 9px;
	color: var(--pw-ink);
	font-size: .87rem;
	list-style: none;
	cursor: pointer;
}

.pw-select__option:hover,
.pw-select__option.is-focused {
	background: var(--pw-accent-soft);
}

.pw-select__option.is-selected {
	color: var(--pw-accent-dark);
	font-weight: 600;
}

.pw-select__option.is-selected::after {
	content: "✓";
	font-size: .9rem;
}

/* ==========================================================================
   Breadcrumbs
   ========================================================================== */

/* The breadcrumb renders outside #content, straight in .site, so it has to
   carry the content container's width and gutters itself. */
.pw-crumbs,
.storefront-breadcrumb {
	/* content-box, to match Storefront's .col-full so the crumbs line up with
	   the grid below rather than sitting 20px in. */
	box-sizing: content-box;
	max-width: 1280px;
	margin: 0 auto;
	padding: 18px 20px 0;
	background: transparent;
}

/* Storefront decorates breadcrumb links with an icon-font house. The theme
   draws its own outline house in the markup, so that one is suppressed
   outright - !important because the parent rule outranks anything scoped here. */
.pw-crumbs .pw-crumbs__link::before,
.pw-crumbs .pw-crumbs__link::after,
.pw-crumbs .pw-crumbs__current::before,
.pw-crumbs .pw-crumbs__current::after {
	content: none !important;
	display: none !important;
}

.pw-crumbs__list {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: .84rem;
}

.pw-crumbs__item {
	display: inline-flex;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
	min-width: 0;
}

/* Chevron between items, drawn rather than typed, so it never wraps alone. */
.pw-crumbs__item + .pw-crumbs__item::before {
	content: "";
	width: 6px;
	height: 6px;
	margin: 0 9px;
	flex: 0 0 auto;
	border-right: 1.6px solid var(--pw-line-strong);
	border-bottom: 1.6px solid var(--pw-line-strong);
	transform: rotate(-45deg);
}

.pw-crumbs__link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 3px 8px;
	border-radius: 7px;
	color: var(--pw-muted);
	text-decoration: none;
	transition: background-color .13s ease, color .13s ease;
}

.pw-crumbs__link:hover,
.pw-crumbs__link:focus-visible {
	background: var(--pw-accent-soft);
	color: var(--pw-accent-dark);
	text-decoration: none;
	outline: none;
}

.pw-crumbs__home {
	width: 15px;
	height: 15px;
}

.pw-crumbs__current {
	display: block;
	padding: 3px 4px;
	color: var(--pw-ink);
	font-weight: 600;
	max-width: 46ch;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* ==========================================================================
   Search suggestions
   ========================================================================== */

.pw-suggest {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	right: 0;
	z-index: 200;
	max-height: min(66vh, 460px);
	overflow-y: auto;
	padding: 6px;
	border-radius: var(--pw-radius);
	background: var(--pw-card);
	box-shadow: 0 20px 44px rgba(12, 20, 28, .28);
	animation: pw-panel-in .14s ease-out;
}

.pw-suggest[hidden] {
	display: none;
}

.pw-suggest__status {
	padding: 16px 14px;
	color: var(--pw-muted);
	font-size: .87rem;
	text-align: center;
}

.pw-suggest__item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 9px 10px;
	border-radius: var(--pw-radius-sm);
	color: var(--pw-ink);
	text-decoration: none;
}

.pw-suggest__item:hover,
.pw-suggest__item.is-focused {
	background: var(--pw-accent-soft);
	color: var(--pw-ink);
	text-decoration: none;
}

.pw-suggest__thumb {
	width: 48px;
	height: 48px;
	flex: 0 0 auto;
	border-radius: 9px;
	object-fit: contain;
	background: var(--pw-paper);
}

.pw-suggest__body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
	flex: 1 1 auto;
}

.pw-suggest__name {
	font-size: .88rem;
	font-weight: 500;
	line-height: 1.3;
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp: 1;
	line-clamp: 1;
	-webkit-box-orient: vertical;
}

.pw-suggest__name mark {
	padding: 0;
	background: transparent;
	color: var(--pw-accent-dark);
	font-weight: 700;
}

.pw-suggest__cat {
	color: var(--pw-muted-light);
	font-size: .74rem;
}

.pw-suggest__price {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	flex: 0 0 auto;
	color: var(--pw-ink);
	font-family: var(--pw-display);
	font-size: .92rem;
	font-weight: 700;
	line-height: 1.25;
	white-space: nowrap;
}

.pw-suggest__was {
	color: var(--pw-muted-light);
	font-family: var(--pw-body);
	font-size: .72rem;
	font-weight: 400;
}

.pw-suggest__all {
	display: block;
	margin-top: 4px;
	padding: 12px 10px;
	border-top: 1px solid var(--pw-line);
	color: var(--pw-accent-dark);
	font-size: .86rem;
	font-weight: 600;
	text-align: center;
	text-decoration: none;
}

.pw-suggest__all:hover {
	color: var(--pw-accent-dark);
	background: var(--pw-accent-soft);
	border-radius: var(--pw-radius-sm);
}

.woocommerce .button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt {
	border-radius: var(--pw-pill);
	background-color: var(--pw-ink);
	color: #fff;
	font-family: var(--pw-body);
	font-weight: 600;
	text-shadow: none;
}

.woocommerce .button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover {
	background-color: var(--pw-accent);
	color: #fff;
}

/* ==========================================================================
   Single product
   ========================================================================== */

.single-product div.product .product_title {
	font-family: var(--pw-display);
	font-size: 2rem;
	font-weight: 700;
	line-height: 1.18;
}

.single-product div.product .summary > .price {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 10px;
	color: var(--pw-ink);
	font-family: var(--pw-display);
	font-weight: 700;
}

.single-product div.product .summary > .price ins {
	order: 1;
	background: transparent;
	color: var(--pw-ink);
	text-decoration: none;
}

.single-product div.product .summary > .price del {
	order: 2;
	color: var(--pw-muted-light);
	font-family: var(--pw-body);
	font-size: .8em;
	font-weight: 400;
}

.single-product div.product span.onsale {
	display: inline-block;
	position: static;
	min-width: auto;
	min-height: auto;
	margin-bottom: 10px;
	padding: 4px 12px;
	border-radius: var(--pw-pill);
	background: var(--pw-accent);
	color: #fff;
	font-size: .74rem;
	font-weight: 700;
	line-height: 1.5;
}

/* With gallery slider support enabled, the viewport has to clip its slides. */
.woocommerce div.product .woocommerce-product-gallery,
.woocommerce div.product .woocommerce-product-gallery .flex-viewport {
	overflow: hidden;
}

.woocommerce div.product .woocommerce-product-gallery__image img {
	border-radius: var(--pw-radius-sm);
	background: linear-gradient(160deg, #f7f4ef 0%, #f2eee7 100%);
}

/* ==========================================================================
   Footer
   ========================================================================== */

/* Storefront styles the footer from the Customizer with selectors such as
   `.site-footer a` and `.site-footer h2`, so these rules stay prefixed to win. */
.site-footer {
	background-color: var(--pw-ink) !important;
	color: #b9c3cd !important;
	padding: 0;
	margin-top: 0;
	font-size: .92rem;
}

.site-footer .col-full {
	max-width: 1280px;
	padding: 0 20px;
}

.site-footer .pw-footer__cols {
	display: grid;
	grid-template-columns: 1.1fr 1fr 1fr;
	gap: 36px;
	padding: 48px 0 30px;
}

.site-footer .pw-footer__brand {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
	color: #fff;
}

.site-footer .pw-footer__wordmark {
	font-family: var(--pw-display);
	font-size: 1.5rem;
	font-weight: 700;
	color: #fff;
	letter-spacing: -.02em;
}

.site-footer .pw-footer__heading {
	margin: 0 0 14px;
	color: #fff;
	font-family: var(--pw-display);
	font-size: 1.05rem;
	font-weight: 700;
}

.site-footer .pw-footer__subheading {
	margin: 18px 0 10px;
	color: #fff;
	font-family: var(--pw-body);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.site-footer .pw-footer__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer .pw-footer__list li {
	margin: 0 0 10px;
	list-style: none;
}

.site-footer .pw-footer a,
.site-footer a {
	color: #b9c3cd !important;
	text-decoration: none;
}

.site-footer .pw-footer a:hover,
.site-footer a:hover {
	color: var(--pw-accent) !important;
	text-decoration: none;
}

.site-footer .pw-footer,
.site-footer .pw-footer p,
.site-footer .pw-footer li,
.site-footer .pw-footer strong {
	color: #b9c3cd;
}

.site-footer .pw-footer__address {
	margin: 0;
	line-height: 1.7;
}

.site-footer .pw-pay {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer .pw-pay__item {
	margin: 0;
	padding: 6px 11px;
	border: 1px solid rgba(255, 255, 255, .16);
	border-radius: 7px;
	background: rgba(255, 255, 255, .05);
	color: #d3dce4;
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .04em;
	list-style: none;
}

.site-footer .pw-footer__bottom {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 18px 0 30px;
	border-top: 1px solid rgba(255, 255, 255, .1);
	color: #7f8e9c;
	font-size: .8rem;
	text-align: center;
}

/* A supplier SKU is a random identifier to a shopper - it stays in the admin.
   Storefront sets display:block with a heavier selector, so this matches it. */
.single-product div.product .product_meta .sku_wrapper {
	display: none;
}

/* ==========================================================================
   Product page
   ========================================================================== */

/* Gallery and summary share the width more evenly than Storefront's 41/52:
   supplier photos are the strongest thing on the page. */
@media (min-width: 900px) {
	.single-product div.product .woocommerce-product-gallery,
	.storefront-full-width-content.single-product div.product .woocommerce-product-gallery {
		width: 50%;
		margin-right: 5%;
	}

	.single-product div.product .summary,
	.storefront-full-width-content.single-product div.product .summary {
		width: 45%;
		margin-right: 0;
	}
}

.pw-eyebrow {
	display: inline-block;
	margin: 0 0 10px;
	color: var(--pw-accent-dark);
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	text-decoration: none;
}

.pw-eyebrow:hover {
	color: var(--pw-ink);
}

.single-product div.product .product_title {
	font-size: clamp(1.4rem, 1.1rem + 1.2vw, 2rem);
	line-height: 1.22;
}

/* Assurances: four promises, each one a policy page in miniature. */
.pw-assure {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px 18px;
	margin: 18px 0 20px;
	padding: 16px 18px;
	list-style: none;
	border: 1px solid var(--pw-line);
	border-radius: var(--pw-radius);
	background: var(--pw-card);
}

.pw-assure__item {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin: 0;
}

.pw-assure__icon {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	margin-top: 1px;
	color: var(--pw-accent);
}

.pw-assure__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
	font-size: .8rem;
	line-height: 1.35;
	color: var(--pw-muted);
}

.pw-assure__text strong {
	color: var(--pw-ink);
	font-size: .88rem;
	font-weight: 700;
}

/* Highlights: the supplier's bullet labels as a checklist. */
.pw-highlights {
	margin: 0 0 6px;
	padding: 0;
	list-style: none;
}

.pw-highlights li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 0 8px;
	color: var(--pw-ink);
	font-size: .94rem;
	line-height: 1.45;
}

.pw-highlights__icon {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin-top: 2px;
	color: #2f9e6a;
	stroke-width: 2.4;
}

.pw-highlights__more {
	display: inline-block;
	margin: 0 0 20px 28px;
	color: var(--pw-accent-dark);
	font-size: .86rem;
	font-weight: 600;
}

/* Delivery date: the single most asked question on a dropshipping store. */
.pw-delivery {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 18px 0 12px;
	padding: 14px 16px;
	border-radius: var(--pw-radius-sm);
	background: var(--pw-accent-soft);
}

.pw-delivery__icon {
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	color: var(--pw-accent-dark);
}

.pw-delivery__title {
	margin: 0 0 3px;
	color: var(--pw-ink);
	font-size: .95rem;
	line-height: 1.4;
}

.pw-delivery__note {
	margin: 0;
	color: var(--pw-muted);
	font-size: .78rem;
	line-height: 1.45;
}

/* Payment marks under the buttons. */
.pw-paymarks {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	margin: 0 0 20px;
}

.pw-paymarks__label {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--pw-muted);
	font-size: .78rem;
	font-weight: 600;
}

.pw-paymarks__icon {
	width: 15px;
	height: 15px;
}

.pw-pay--compact {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pw-pay--compact .pw-pay__item {
	margin: 0;
	padding: 4px 8px;
	border: 1px solid var(--pw-line-strong);
	border-radius: 6px;
	background: var(--pw-card);
	color: var(--pw-ink);
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .04em;
	list-style: none;
}

/* The eyebrow already names the category; the meta line only repeated it. */
.single-product div.product .product_meta .posted_in {
	display: none;
}

/* Tabs: horizontal and full width, the way shoppers expect them, instead of
   Storefront's vertical list squeezed into a sidebar. */
.single-product .woocommerce-tabs {
	clear: both;
	padding-top: 12px;
}

.single-product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: nowrap;
	gap: 4px;
	float: none;
	width: 100%;
	margin: 0 0 28px;
	padding: 0;
	overflow-x: auto;
	border-bottom: 1px solid var(--pw-line);
	scrollbar-width: none;
}

.single-product .woocommerce-tabs ul.tabs::-webkit-scrollbar {
	display: none;
}

.single-product .woocommerce-tabs ul.tabs li {
	flex: 0 0 auto;
	margin: 0;
	border: 0;
}

.single-product .woocommerce-tabs ul.tabs li::after,
.single-product .woocommerce-tabs ul.tabs li a::after {
	display: none;
}

.single-product .woocommerce-tabs ul.tabs li a {
	display: block;
	padding: 12px 16px;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	color: var(--pw-muted);
	font-size: .95rem;
	font-weight: 600;
	white-space: nowrap;
	text-decoration: none;
}

.single-product .woocommerce-tabs ul.tabs li a:hover {
	color: var(--pw-ink);
}

.single-product .woocommerce-tabs ul.tabs li.active a {
	border-bottom-color: var(--pw-accent);
	color: var(--pw-ink);
}

.single-product .woocommerce-tabs .panel {
	float: none;
	width: 100%;
	max-width: 860px;
	margin: 0 0 40px;
}

.single-product .woocommerce-tabs .panel > h2:first-child {
	margin-top: 0;
	font-size: 1.3rem;
}

/* Policy facts inside the tabs. */
.pw-facts {
	margin: 0 0 18px;
	border: 1px solid var(--pw-line);
	border-radius: var(--pw-radius-sm);
	background: var(--pw-card);
	overflow: hidden;
}

.pw-facts > div {
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 12px;
	padding: 12px 16px;
	border-top: 1px solid var(--pw-line);
}

.pw-facts > div:first-child {
	border-top: 0;
}

.pw-facts dt {
	margin: 0;
	color: var(--pw-muted);
	font-size: .86rem;
	font-weight: 600;
}

.pw-facts dd {
	margin: 0;
	color: var(--pw-ink);
	font-size: .92rem;
}

.pw-facts__links a {
	color: var(--pw-accent-dark);
	font-weight: 600;
}

/* The gallery column grew; let the photo fill it. */
.single-product div.product .woocommerce-product-gallery__image img {
	width: 100%;
	height: auto;
}

/* Related products: one row of four on desktop. */
@media (min-width: 900px) {
	.single-product .related.products ul.products,
	.single-product .upsells.products ul.products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.single-product .related.products > h2,
.single-product .upsells.products > h2 {
	margin: 10px 0 20px;
	font-size: 1.4rem;
}

/* ==========================================================================
   Reviews
   ========================================================================== */

.pw-reviews__summary {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 26px 40px;
	padding: 20px 22px;
	margin: 0 0 26px;
	border: 1px solid var(--pw-line);
	border-radius: var(--pw-radius);
	background: var(--pw-card);
	box-shadow: var(--pw-shadow);
}

.pw-reviews__score {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	min-width: 132px;
}

.pw-reviews__average {
	font-family: var(--pw-display);
	font-size: 2.6rem;
	line-height: 1;
	color: var(--pw-ink);
}

.pw-reviews__summary .star-rating {
	float: none;
	margin: 0;
	font-size: 1em;
}

.pw-reviews__count {
	color: var(--pw-muted);
	font-size: .85rem;
}

.pw-reviews__bars {
	flex: 1 1 260px;
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 7px;
}

.pw-reviews__bar {
	display: grid;
	grid-template-columns: 34px 1fr 34px;
	align-items: center;
	gap: 10px;
	margin: 0;
	font-size: .8rem;
	color: var(--pw-muted);
}

.pw-reviews__bar-label {
	color: var(--pw-ink);
	font-weight: 600;
	white-space: nowrap;
}

.pw-reviews__bar-track {
	height: 7px;
	border-radius: var(--pw-pill);
	background: var(--pw-line);
	overflow: hidden;
}

.pw-reviews__bar-fill {
	display: block;
	height: 100%;
	border-radius: inherit;
	background: var(--pw-gold);
}

.pw-reviews__bar-count {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.pw-reviews__empty {
	padding: 26px 24px;
	margin: 0 0 24px;
	border: 1px dashed var(--pw-line-strong);
	border-radius: var(--pw-radius);
	background: var(--pw-accent-soft);
	text-align: center;
}

.pw-reviews__empty-title {
	margin: 0 0 6px;
	font-family: var(--pw-display);
	font-size: 1.16rem;
	color: var(--pw-ink);
}

.pw-reviews__empty-text {
	margin: 0;
	color: var(--pw-muted);
	font-size: .92rem;
}

/* ==========================================================================
   Responsive

   Three steps down from the desktop layout: tablets lose the widest columns,
   handhelds get a compact header and a thumb-reachable buy flow, and small
   phones tighten the type. Everything below 768px assumes one hand and a
   45px-wide thumb, so nothing tappable is smaller than 44px.
   ========================================================================== */

@media (max-width: 1100px) {
	.pw-brand__tag {
		display: none;
	}

	.pw-catpanel__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.pw-bar {
		flex-wrap: wrap;
		gap: 10px;
		padding: 12px 0 0;
	}

	.pw-bar__brand {
		flex: 1 1 auto;
	}

	.pw-bar__search {
		order: 3;
		flex: 1 1 100%;
		padding-bottom: 10px;
	}

	.pw-search {
		max-width: none;
	}

	.woocommerce ul.products,
	ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 16px;
	}

	.pw-catpanel__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.site-footer .pw-footer__cols {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* --------------------------------------------------------------------------
   Handheld
   -------------------------------------------------------------------------- */

@media (max-width: 768px) {

	/* Storefront puts a fixed action bar at the bottom of every handheld page;
	   the last row of content has to clear it, plus the home indicator. */
	body.woocommerce-page,
	body {
		padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
	}

	/* Storefront gives .col-full a 1.41575em margin on small screens, which
	   insets the header, the grid and the footer by ~23px each side and makes
	   the dark header look narrower than the screen. Gutters come from padding
	   here instead, so the header really does run edge to edge. */
	.col-full,
	.site-header .col-full,
	.site-content .col-full,
	.site-footer .col-full {
		margin-left: 0;
		margin-right: 0;
		max-width: none;
		padding-left: 16px;
		padding-right: 16px;
	}

	/* The sort menu is wider than its button and hangs off the right edge of
	   it; on a phone that puts it past the edge of the screen. Full width
	   solves both, and reads better under a thumb. */
	.storefront-sorting .pw-select,
	.pw-select {
		display: block;
		width: 100%;
	}

	.pw-select__button {
		width: 100%;
		justify-content: space-between;
	}

	.pw-select__menu {
		left: 0;
		right: 0;
		min-width: 0;
		width: auto;
	}

	/* Header: one 48px row of controls, one search row, one category row. */
	.pw-bar {
		gap: 8px;
		padding-top: 10px;
	}

	.pw-bar__burger,
	.pw-bar__action {
		width: 44px;
		height: 44px;
	}

	.pw-brand__mark {
		width: 32px;
		height: 32px;
	}

	.pw-brand__name {
		font-size: 1.16rem;
	}

	.pw-bar__search {
		padding-bottom: 8px;
	}

	.pw-search__input {
		height: 44px;
		font-size: 16px; /* iOS zooms the page for anything smaller. */
	}

	.pw-search__submit {
		height: 36px;
		padding: 0 16px;
	}

	/* The category row scrolls sideways instead of wrapping onto three lines. */
	.pw-nav__row {
		flex-wrap: nowrap;
		overflow-x: auto;
		overflow-y: hidden;
		gap: 8px;
		padding-bottom: 10px;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
		scroll-snap-type: x proximity;
	}

	.pw-nav__row::-webkit-scrollbar {
		display: none;
	}

	.pw-nav__row > * {
		flex: 0 0 auto;
		scroll-snap-align: start;
	}

	.pw-nav__divider {
		display: none;
	}

	.pw-nav__toggle {
		height: 40px;
		font-size: .84rem;
	}

	.pw-chip {
		height: 36px;
		padding: 0 14px;
		font-size: .82rem;
	}

	/* The category picker reads better as a sheet that rises from the thumb
	   than as a panel hanging off a control at the top of the screen. */
	.pw-catpanel {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		top: auto;
		width: auto;
		margin: 0;
		border-radius: 20px 20px 0 0;
		border-bottom: 0;
		max-height: 82vh;
		padding: 14px 16px calc(16px + env(safe-area-inset-bottom, 0px));
		box-shadow: 0 -18px 40px rgba(20, 27, 36, .22);
		overflow-y: auto;
		/* Reaching the end of the list must not start scrolling the page. */
		overscroll-behavior: contain;
	}

	/* The sheet lives inside the sticky header, so its own z-index only ranks
	   it within the header's layer (120). The dimmer is a child of <body> and
	   has to clear Storefront's handheld bar (9999), which put it on top of
	   the whole header - sheet included - and swallowed every tap. While the
	   sheet is open the header itself is lifted above both. */
	.pw-catpanel-open .site-header {
		z-index: 10001;
	}

	.pw-catpanel-backdrop {
		z-index: 10000;
		touch-action: none;
	}

	/* A grab handle, so the sheet reads as something you can dismiss. */
	.pw-catpanel::before {
		content: "";
		display: block;
		width: 40px;
		height: 4px;
		margin: 0 auto 12px;
		border-radius: 999px;
		background: var(--pw-line-strong);
	}

	.pw-catpanel__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
	}

	/* Breadcrumbs stay on one line and scroll rather than stacking. */
	.pw-crumbs {
		padding: 14px 16px 0;
	}

	.pw-crumbs__list {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		white-space: nowrap;
	}

	.pw-crumbs__list::-webkit-scrollbar {
		display: none;
	}

	.pw-crumbs__item {
		flex: 0 0 auto;
	}

	/* Result count and sorting share a line instead of stacking. */
	.storefront-sorting {
		gap: 10px 12px;
		align-items: center;
	}

	.woocommerce-result-count {
		flex: 1 1 auto;
		font-size: .82rem;
		margin: 0;
	}

	/* The sort control takes its own line at full width: the custom menu is
	   wider than a shrink-to-fit button, and anchoring it to a narrow button
	   is what pushed it off the side of the screen. */
	.woocommerce-ordering,
	.storefront-sorting > form.woocommerce-ordering {
		flex: 1 1 100%;
		width: 100%;
		margin: 0;
	}

	/* Nothing has been reviewed yet, and the grid keeps cards level on its own,
	   so the reserved rating line is dead height on a phone. */
	.woocommerce ul.products li.product .star-rating--empty {
		display: none;
	}

	.woocommerce-ordering select,
	.pw-sort__button {
		height: 40px;
		font-size: .84rem;
	}

	/* Catalogue cards: two per row, and short enough that the second row is
	   visible without scrolling. */
	.woocommerce ul.products,
	ul.products {
		gap: 12px;
	}

	.woocommerce ul.products li.product,
	ul.products li.product {
		padding: 8px 8px 12px;
		border-radius: 14px;
	}

	.woocommerce ul.products li.product .woocommerce-loop-product__title {
		font-size: .86rem;
		line-height: 1.35;
		min-height: 2.7em;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
	}

	.woocommerce ul.products li.product .price {
		font-size: 1.05rem;
	}

	.woocommerce ul.products li.product .pw-buy,
	.woocommerce ul.products li.product .button {
		width: 100%;
		min-height: 42px;
		padding: 0 12px;
		font-size: .84rem;
	}

	/* Secondary action reads as secondary, and costs less height. */
	.woocommerce ul.products li.product .add_to_cart_button,
	.woocommerce ul.products li.product .added_to_cart {
		min-height: 38px;
		font-size: .8rem;
	}

	.pw-more__button {
		width: 100%;
		min-width: 0;
		min-height: 48px;
	}

	/* Long page titles - the policy pages have some - should not fill the
	   screen before a word of the page itself is visible. */
	.page .entry-title,
	.single-post .entry-title,
	.page-title {
		font-size: 1.5rem;
		line-height: 1.24;
		margin-bottom: 14px;
	}

	.entry-content h2,
	.page .entry-content h2 {
		font-size: 1.2rem;
		line-height: 1.3;
		margin-top: 28px;
	}

	.entry-content h3,
	.page .entry-content h3 {
		font-size: 1.02rem;
		margin-top: 20px;
	}

	.entry-content ul,
	.entry-content ol {
		padding-left: 20px;
	}

	.entry-content li {
		margin-bottom: 8px;
	}

	/* Single product ------------------------------------------------------ */

	.pw-assure {
		gap: 12px 12px;
		padding: 14px;
	}

	.pw-assure__text {
		font-size: .76rem;
	}

	.pw-facts > div {
		grid-template-columns: 1fr;
		gap: 2px;
	}

	.single-product .woocommerce-tabs ul.tabs li a {
		padding: 10px 12px;
		font-size: .9rem;
	}

	.single-product div.product .product_title {
		font-size: 1.36rem;
		line-height: 1.3;
		margin-bottom: 10px;
	}

	.single-product div.product .summary .price {
		font-size: 1.5rem;
	}

	.single-product div.product .woocommerce-product-gallery {
		margin-bottom: 18px;
	}

	.single-product div.product .woocommerce-product-gallery[class*="--columns-"] .flex-control-thumbs {
		display: grid;
		grid-template-columns: repeat(5, minmax(0, 1fr));
		gap: 6px;
	}

	/* WooCommerce sizes these thumbs with per-column percentages and a heavier
	   selector; inside a grid those percentages resolve to a few pixels. */
	.single-product div.product .woocommerce-product-gallery[class*="--columns-"] .flex-control-thumbs li {
		width: auto;
		float: none;
		margin: 0;
	}

	/* Quantity and "add to cart" share a line; "buy now" takes the next one. */
	.single-product div.product form.cart {
		display: flex;
		flex-wrap: wrap;
		align-items: stretch;
		gap: 10px;
	}

	.single-product div.product form.cart .quantity {
		flex: 0 0 74px;
		margin: 0;
	}

	.single-product div.product form.cart .quantity input.qty {
		width: 100%;
		height: 50px;
		font-size: 16px;
	}

	.single-product div.product form.cart .single_add_to_cart_button {
		flex: 1 1 140px;
		min-height: 50px;
		margin: 0;
	}

	/* The desktop rule offsets it from the add-to-cart button; on its own row
	   that margin just pushes it past the edge. */
	.single-product div.product .pw-buy--single {
		flex: 1 1 100%;
		width: auto;
		min-height: 50px;
		margin: 0;
	}

	.single-product div.product .woocommerce-product-gallery[class*="--columns-"] .flex-control-thumbs li img {
		width: 100%;
		aspect-ratio: 1 / 1;
		object-fit: cover;
		border-radius: 10px;
	}

	.woocommerce-tabs ul.tabs li a,
	.woocommerce-tabs .wc-tab h2 {
		font-size: .95rem;
	}

	.pw-reviews__summary {
		gap: 18px;
		padding: 16px;
	}

	.pw-reviews__score {
		flex-direction: row;
		align-items: baseline;
		gap: 10px;
		min-width: 0;
	}

	.pw-reviews__average {
		font-size: 2rem;
	}

	.pw-reviews__bars {
		flex-basis: 100%;
	}

	.pw-reviews__empty {
		padding: 20px 16px;
	}

	/* Cart, checkout and account ------------------------------------------ */

	.woocommerce table.shop_table_responsive tr td,
	.woocommerce-page table.shop_table_responsive tr td {
		padding: 10px 12px;
	}

	.woocommerce .cart-collaterals .cart_totals,
	.woocommerce-page .cart-collaterals .cart_totals {
		width: 100%;
		float: none;
	}

	.woocommerce form .form-row input.input-text,
	.woocommerce form .form-row select,
	.woocommerce form .form-row textarea {
		min-height: 46px;
		font-size: 16px;
	}

	.woocommerce #respond input#submit,
	.woocommerce a.button,
	.woocommerce button.button,
	.woocommerce input.button {
		min-height: 46px;
	}

	/* Storefront's handheld bar, in the shop's own colours. */
	.storefront-handheld-footer-bar {
		background: var(--pw-ink);
		border-top: 0;
		box-shadow: 0 -6px 20px rgba(20, 27, 36, .18);
		padding-bottom: env(safe-area-inset-bottom, 0px);
	}

	.storefront-handheld-footer-bar ul li > a,
	.storefront-handheld-footer-bar ul li > a::before {
		color: #fff;
		height: 60px;
		line-height: 60px;
	}

	.storefront-handheld-footer-bar ul li {
		border-color: rgba(255, 255, 255, .14);
	}

	/* Our catalogue button draws an inline SVG rather than a glyph from
	   Storefront's icon font, so the icon-font rules are switched off for it. */
	.storefront-handheld-footer-bar ul li.pw-catalog > a {
		display: flex;
		align-items: center;
		justify-content: center;
		height: 60px;
		text-indent: 0;
	}

	.storefront-handheld-footer-bar ul li.pw-catalog > a::before {
		content: none;
	}

	.pw-handheld__icon {
		width: 23px;
		height: 23px;
	}

	.pw-handheld__label {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
		border: 0;
	}

	/* Storefront only ships widths up to three columns. */
	.storefront-handheld-footer-bar ul.columns-4 li {
		width: 25%;
	}

	.storefront-handheld-footer-bar ul li.cart .count {
		background: var(--pw-accent);
		color: #fff;
		border-color: var(--pw-ink);
		font-weight: 600;
	}

	.storefront-handheld-footer-bar ul li.search .site-search {
		background: var(--pw-ink);
		padding: 14px 16px calc(14px + env(safe-area-inset-bottom, 0px));
	}

	/* Footer: one column, tighter, and the long link lists stay readable. */
	.site-footer .pw-footer__cols {
		grid-template-columns: 1fr;
		gap: 24px;
		padding: 30px 0 18px;
	}

	.site-footer .pw-footer__col ul {
		columns: 2;
		column-gap: 18px;
	}

	.site-footer .pw-footer__col ul li {
		break-inside: avoid;
	}
}

/* --------------------------------------------------------------------------
   Small phones
   -------------------------------------------------------------------------- */

@media (max-width: 600px) {
	.site-header .col-full {
		padding-left: 14px;
		padding-right: 14px;
	}

	.pw-brand__name {
		font-size: 1.1rem;
	}

	.pw-ad {
		padding: 16px;
	}

	.woocommerce ul.products li.product .woocommerce-loop-product__title {
		font-size: .82rem;
	}

	.single-product div.product .product_title {
		font-size: 1.22rem;
	}

	.single-product div.product .woocommerce-product-gallery[class*="--columns-"] .flex-control-thumbs {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (max-width: 380px) {
	.woocommerce ul.products,
	ul.products {
		gap: 10px;
	}

	.pw-chip {
		height: 34px;
		padding: 0 12px;
		font-size: .78rem;
	}

	.woocommerce ul.products li.product .price {
		font-size: 1rem;
	}

	.site-footer .pw-footer__col ul {
		columns: 1;
	}
}

/* Coarse pointers get real targets regardless of viewport width. */
@media (pointer: coarse) {
	.pw-crumbs__link,
	.pw-cat__body,
	.woocommerce-ordering select {
		min-height: 40px;
	}
}
