/* ==========================================================================
   Single product (PDP) — Amazon/OC layout: gallery left, info center,
   buy-box card on the right rail. Collapses to two columns, then one.
   ========================================================================== */

.pdp {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(280px, 3fr);
	gap: 2.5rem;
	align-items: start;
}

@media (max-width: 1100px) {
	.pdp {
		grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
	}
	.pdp__gallery {
		grid-column: 1;
	}
	.pdp__info {
		grid-column: 1;
	}
	.pdp__buybox {
		grid-column: 2;
		grid-row: 1 / span 2;
	}
}

@media (max-width: 749px) {
	.pdp {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.5rem;
	}
	.pdp__gallery,
	.pdp__info,
	.pdp__buybox {
		grid-column: 1;
		grid-row: auto;
	}
}

/* ---------- Gallery ---------- */

.pdp__media {
	background: var(--hw-card, #fff);
	border: 1px solid var(--color-border, #e5e0d8);
	border-radius: var(--radius-block, 12px);
	overflow: hidden;
	aspect-ratio: 1 / 1;
	display: flex;
	align-items: center;
	justify-content: center;
}

.pdp__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.pdp__media-placeholder {
	font-size: 4rem;
	opacity: 0.2;
}

.pdp__dots {
	display: flex;
	justify-content: center;
	gap: 0.55rem;
	margin-top: 0.85rem;
}

.pdp__dot {
	width: 11px;
	height: 11px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.18);
	cursor: pointer;
	transition: all 0.15s linear;
}

.pdp__dot:hover {
	background: rgba(0, 0, 0, 0.35);
}

.pdp__dot.is-active {
	background: var(--hw-accent, #32432d);
	transform: scale(1.25);
}

/* ---------- Info column ---------- */

.pdp__title {
	font-size: calc(var(--font-heading-scale, 1) * 1.9rem);
	line-height: 1.2;
	margin: 0 0 0.5rem;
}

.pdp__rating {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}

.pdp__stars {
	color: var(--hw-text, #1d271d);
	font-size: 1.05rem;
	letter-spacing: 1px;
}

.pdp__rating-link {
	font-size: 0.85rem;
	color: inherit;
	opacity: 0.75;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.pdp__availability {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-weight: 700;
	font-size: 0.9rem;
	margin-bottom: 1.25rem;
}

.pdp__availability--good { color: #2f7d39; }
.pdp__availability--warn { color: #b45309; }
.pdp__availability--bad  { color: #b3261e; }
.pdp__availability--info { color: #1d4ed8; }

.pdp__label {
	font-size: 0.85rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	opacity: 0.8;
	margin-bottom: 0.5rem;
}

.pdp__options {
	margin-bottom: 1.25rem;
}

.pdp__option-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.pdp__option-btn {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.1rem;
	padding: 0.55rem 0.95rem;
	border: 1.5px solid var(--color-border, #d8d2c7);
	border-radius: 10px;
	background: var(--hw-card, #fff);
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: border-color 0.12s, box-shadow 0.12s;
}

.pdp__option-btn:hover:not(:disabled) {
	border-color: var(--hw-accent, #32432d);
}

.pdp__option-btn.is-active {
	border-color: var(--hw-accent, #32432d);
	box-shadow: 0 0 0 1.5px var(--hw-accent, #32432d);
	background: color-mix(in srgb, var(--hw-accent, #32432d) 6%, var(--hw-card, #fff));
}

.pdp__option-btn.is-disabled {
	opacity: 0.45;
	cursor: not-allowed;
	text-decoration: line-through;
}

.pdp__option-price {
	font-size: 0.78rem;
	font-weight: 500;
	opacity: 0.7;
}

.pdp__meta-rows {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	font-size: 0.9rem;
}

.pdp__meta-row {
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
	opacity: 0.85;
}

.pdp__meta-row a {
	color: inherit;
}

/* ---------- Buy box ---------- */

.pdp__buybox {
	background: var(--hw-card, #fff);
	border: 1px solid var(--color-border, #e5e0d8);
	border-radius: var(--radius-block, 12px);
	padding: 1.25rem;
	display: flex;
	flex-direction: column;
	gap: 1rem;
	position: sticky;
	top: 90px;
}

@media (max-width: 749px) {
	.pdp__buybox {
		position: static;
	}
}

.buybox__purchase-modes {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}

.buybox__mode {
	display: flex;
	gap: 0.65rem;
	border: 1.5px solid var(--color-border, #d8d2c7);
	border-radius: 10px;
	padding: 0.75rem;
	cursor: pointer;
	transition: border-color 0.12s, box-shadow 0.12s;
}

.buybox__mode.is-active {
	border-color: var(--hw-accent, #32432d);
	box-shadow: 0 0 0 1.5px var(--hw-accent, #32432d);
	background: color-mix(in srgb, var(--hw-accent, #32432d) 5%, var(--hw-card, #fff));
}

.buybox__mode input[type='radio'] {
	margin-top: 0.2rem;
	accent-color: var(--hw-accent, #32432d);
}

.buybox__mode-body {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	width: 100%;
}

.buybox__mode-title {
	font-weight: 700;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	flex-wrap: wrap;
}

.buybox__save-badge {
	background: var(--hw-accent, #32432d);
	color: var(--hw-on-accent, #fff);
	font-size: 0.7rem;
	font-weight: 700;
	border-radius: 999px;
	padding: 0.15rem 0.55rem;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

.buybox__mode-price {
	font-size: 0.95rem;
	opacity: 0.85;
}

.buybox__interval {
	margin-top: 0.5rem;
	padding: 0.45rem 0.6rem;
	border: 1px solid var(--color-border, #d8d2c7);
	border-radius: 8px;
	font: inherit;
	background: var(--hw-card, #fff);
}

.buybox__price {
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
	flex-wrap: wrap;
}

.buybox__price-now {
	font-size: 1.9rem;
	font-weight: 800;
	line-height: 1;
}

.buybox__price-now.is-sale {
	color: #b3261e;
}

.buybox__price-was {
	font-size: 1.1rem;
	text-decoration: line-through;
	opacity: 0.55;
}

.buybox__price-unit {
	font-size: 0.95rem;
	opacity: 0.7;
}

.buybox__weight-note {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
	font-size: 0.85rem;
	background: color-mix(in srgb, var(--hw-accent, #32432d) 7%, var(--hw-card, #fff));
	border-radius: 8px;
	padding: 0.6rem 0.75rem;
	line-height: 1.45;
}

.buybox__limit-note {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
	font-size: 0.85rem;
	line-height: 1.45;
	margin: 0;
	color: color-mix(in srgb, var(--hw-text, #1d271d) 72%, transparent);
}

.buybox__availability {
	font-weight: 700;
	font-size: 0.9rem;
}

.buybox__qty .pdp__label {
	margin-bottom: 0.35rem;
}

.buybox__stepper {
	display: inline-flex;
	align-items: stretch;
	border: 1.5px solid var(--color-border, #d8d2c7);
	border-radius: 10px;
	overflow: hidden;
}

.buybox__stepper button {
	width: 42px;
	border: none;
	background: #f6f3ee;
	cursor: pointer;
	font-size: 1rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.buybox__stepper button:hover {
	background: #ece7de;
}

.buybox__stepper input {
	width: 72px;
	border: none;
	text-align: center;
	font: inherit;
	font-weight: 700;
	padding: 0.55rem 0.25rem;
}

.buybox__stepper input:focus {
	outline: 2px solid var(--hw-accent, #32432d);
	outline-offset: -2px;
}

.buybox__line-total {
	margin-top: 0.5rem;
	font-size: 0.95rem;
}

.buybox__add {
	width: 100%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	font-weight: 700;
	/* .button--solid resolves its text color from a header-scoped variable;
	   on the page body both text + bg land on the same dark green. Pin both. */
	background: var(--hw-accent, #32432d);
	color: var(--hw-on-accent, #fff);
	border: none;
	border-radius: 10px;
	padding: 0.85rem 1rem;
	font-size: 0.95rem;
	cursor: pointer;
}

.buybox__add:hover:not(:disabled) {
	filter: brightness(1.12);
}

.buybox__add:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

.buybox__coming-note {
	font-size: 0.8rem;
	opacity: 0.65;
	margin: -0.35rem 0 0;
	line-height: 1.4;
}

/* ---------- Description / Reviews tabs ---------- */

.product-tabs {
	margin-top: 3rem;
	border-top: 1px solid var(--color-border, #e5e0d8);
	padding-top: 1.5rem;
}

.product-tabs__nav {
	display: flex;
	gap: 0.5rem;
	margin-bottom: 1.25rem;
	flex-wrap: wrap;
}

.product-tabs__tab {
	font: inherit;
	font-weight: 700;
	padding: 0.55rem 1.1rem;
	border: 1.5px solid var(--color-border, #d8d2c7);
	border-radius: 999px;
	background: var(--hw-card, #fff);
	cursor: pointer;
}

.product-tabs__tab.is-active {
	background: var(--hw-accent, #32432d);
	border-color: var(--hw-accent, #32432d);
	color: var(--hw-on-accent, #fff);
}

.product-tabs__panel {
	display: none;
}

.product-tabs__panel.is-active {
	display: block;
}

.buybox__error {
	color: #b3261e;
	font-size: 0.85rem;
	margin: -0.35rem 0 0;
	line-height: 1.4;
}

.buybox__view-cart {
	text-align: center;
	font-weight: 700;
	color: var(--hw-accent, #32432d);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* ==========================================================================
   OC-port buy box — Amazon-style purchase widget (ported from the owner's
   OpenCart build: catalog/view/stylesheet/stylesheet.css → hw-purchase-*).
   ========================================================================== */

.purchase-widget {
	padding: 1px;
	border-radius: 0.5rem;
	/* overflow:visible (was hidden) so the Subscribe "Deliver every" dropdown isn't clipped by the
	   widget. The outer modes are rounded below to keep the widget's rounded corners. */
	overflow: visible;
	background: #d6d3cd;
}

.purchase-mode {
	position: relative;
	background: #efede8;
	transition: background-color 0.22s ease;
}
.purchase-mode:first-child {
	border-top-left-radius: calc(0.5rem - 1px);
	border-top-right-radius: calc(0.5rem - 1px);
}
.purchase-mode:last-child {
	border-bottom-left-radius: calc(0.5rem - 1px);
	border-bottom-right-radius: calc(0.5rem - 1px);
}

.purchase-mode + .purchase-mode {
	border-top: 1px solid #d4d4d8;
}

.purchase-mode.is-active {
	background: var(--hw-card, #fff);
}

.purchase-mode:first-child {
	border-top-left-radius: 0.5rem;
	border-top-right-radius: 0.5rem;
}

.purchase-mode:last-child {
	border-bottom-left-radius: 0.5rem;
	border-bottom-right-radius: 0.5rem;
}

.purchase-mode__label {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 1rem 1rem 0.85rem;
	cursor: pointer;
	width: 100%;
	margin: 0;
}

.purchase-mode__input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.purchase-mode__radio {
	flex-shrink: 0;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	border: 1.5px solid #a1a1aa;
	margin-top: 2px;
	position: relative;
	background: var(--hw-card, #fff);
	transition: all 0.2s ease;
}

.purchase-mode.is-active .purchase-mode__radio {
	border-color: var(--hw-accent, #32432d);
}

.purchase-mode.is-active .purchase-mode__radio::after {
	content: "";
	position: absolute;
	width: 10px;
	height: 10px;
	background: var(--hw-accent, #32432d);
	border-radius: 50%;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}

.purchase-mode__content {
	flex-grow: 1;
	min-width: 0;
}

.purchase-mode__title {
	display: block;
	font-size: 1rem;
	font-weight: 700;
	color: #18181b;
	margin-bottom: 0.45rem;
}

.purchase-mode__badge {
	display: inline-flex;
	align-items: center;
	margin-left: 0.45rem;
	padding: 0.15rem 0.5rem;
	border-radius: 999px;
	background: #d9e7d6;
	color: #355f43;
	font-size: 0.75rem;
	font-weight: 700;
}

.purchase-mode__price {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 0.18rem;
	color: #1f2937;
	white-space: nowrap;
}

.purchase-mode__price--subscription {
	color: #355f43;
}

.purchase-mode__price-prefix {
	font-size: 1.2rem;
	line-height: 1.2;
	font-weight: 700;
	padding-top: 0.2rem;
}

.purchase-mode__price-main {
	font-size: 2.35rem;
	line-height: 0.96;
	font-weight: 700;
}

.purchase-mode__price-fraction {
	font-size: 1rem;
	line-height: 1.1;
	font-weight: 700;
	padding-top: 0.28rem;
}

.purchase-mode__price-suffix {
	font-size: 0.9rem;
	line-height: 1.15;
	font-weight: 600;
	color: #6b7280;
	padding-top: 0.5rem;
	white-space: nowrap;
}

.purchase-mode__price-meta {
	font-size: 0.9rem;
	font-weight: 600;
	color: #5f6b63;
	padding-top: 0.5rem;
}
/* On sale: the regular price struck through (consistent with listings + cart). */
.purchase-mode__price-was {
	color: #9aa39b;
	text-decoration: line-through;
	margin-left: 0.5rem;
}

.purchase-mode__stock {
	display: block;
	margin-top: 0.7rem;
	font-size: 1rem;
	font-weight: 600;
}

.purchase-mode__stock--good { color: #15803d; }
.purchase-mode__stock--warn { color: #b45309; }
.purchase-mode__stock--bad  { color: #b3261e; }
.purchase-mode__stock--info { color: #1d4ed8; }

.purchase-mode__body {
	padding: 0 1rem;
}

.purchase-mode__slot {
	padding-bottom: 1rem;
}

.purchase-mode__deliver-label {
	font-size: 0.85rem;
	font-weight: 700;
	color: #18181b;
	margin-bottom: 0.5rem;
}

.purchase-mode__interval {
	width: 100%;
	border: 1.5px solid #e4e4e7;
	border-radius: 10px;
	padding: 0.6rem 0.85rem;
	font: inherit;
	background: var(--hw-card, #fff);
}

/* ---------- Actions: qty select + pill button ---------- */

.purchase-actions {
	margin-top: 1rem;
	display: flex;
	flex-direction: column;
	gap: 0.9rem;
}

/* Vuetify-outlined typed fields (qty 10+ overflow, weight) — same field
   language as VSelect: notched label, green 2px focus ring via ::after. */
.pdp-ofield {
	position: relative;
	display: flex;
	align-items: center;
	background: var(--hw-card, #fff);
	border: var(--hw-field-border-w, 1.5px) solid
		var(--hw-field-border, var(--color-border, #d8d2c7));
	border-radius: var(--hw-field-radius, 12px);
	min-height: 52px;
	box-sizing: border-box;
	transition: border-color 0.12s linear;
}

.pdp-ofield:hover {
	border-color: rgba(0, 0, 0, 0.45);
}

.pdp-ofield::after {
	content: '';
	position: absolute;
	inset: calc(-1 * var(--hw-field-border-w, 1.5px));
	border-radius: var(--hw-field-radius, 12px);
	border: 2px solid transparent;
	pointer-events: none;
	transition: border-color 0.12s linear;
}

.pdp-ofield:focus-within {
	border-color: transparent;
}

.pdp-ofield:focus-within::after {
	border-color: var(--hw-accent, #32432d);
}

.pdp-ofield__label {
	position: absolute;
	top: 0;
	left: 0.75rem;
	transform: translateY(-50%);
	background: var(--hw-notch-bg, #fff);
	border-radius: 4px;
	padding: 0 0.35rem;
	font-size: 0.72rem;
	font-weight: 600;
	color: rgba(0, 0, 0, 0.6);
	pointer-events: none;
	line-height: 1.2;
	margin: 0;
	z-index: 2;
}

.pdp-ofield:focus-within .pdp-ofield__label {
	color: var(--hw-accent, #32432d);
}

.pdp-ofield input {
	flex: 1;
	min-width: 0;
	border: none !important;
	outline: none !important;
	box-shadow: none !important;
	background: transparent;
	font: inherit;
	min-height: 48px;
	padding: 0 0.9rem;
}

.pdp-ofield__suffix {
	padding-right: 0.9rem;
	font-weight: 600;
	opacity: 0.6;
}

.pdp-ofield--suffix input {
	padding-right: 0.4rem;
}

/* Local-style: outline at rest, smooth fill on hover — no shadow/lift */
.purchase-actions__btn {
	width: 100%;
	border: 1.5px solid var(--hw-accent, #32432d);
	border-radius: 999px;
	padding: 1rem 1.4rem;
	background: transparent;
	color: var(--hw-accent, #32432d);
	font: inherit;
	font-size: 1rem;
	font-weight: 700;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background 0.18s ease, color 0.18s ease;
}

.purchase-actions__btn:hover:not(:disabled) {
	background: var(--hw-accent, #32432d);
	color: var(--hw-on-accent, #fff);
}

.purchase-actions__btn:disabled,
.purchase-actions__btn--disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

/* ---------- OC star effect: outline drawn over the solid fill ---------- */

.pdp__star-stack {
	position: relative;
	display: inline-block;
	width: 1.15em;
	font-size: 1.05rem;
}

.pdp__star-fill {
	color: var(--hw-text, #1d271d);
	position: absolute;
	inset: 0;
}

.pdp__star-line {
	color: var(--hw-text, #1d271d);
	position: relative;
}

.pdp__rating-links {
	font-size: 0.88rem;
}

.pdp__rating-links a {
	color: var(--hw-accent, #32432d);
	font-weight: 600;
	text-decoration: none;
}

.pdp__rating-links a:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.pdp__rating-sep {
	opacity: 0.4;
	padding: 0 0.3rem;
}

/* ---------- Option chips (OC choice cards) ---------- */

.pdp__option-label {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.35rem;
	font-size: 0.95rem;
	font-weight: 600;
	color: #6b7280;
	margin-bottom: 0.6rem;
}

.pdp__option-label-sep {
	color: #6b7280;
}

.pdp__option-selected {
	color: #111827;
	font-weight: 700;
}

.pdp__choice-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: flex-start;
}

.pdp__choice {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 34px;
	padding: 0.28rem 0.8rem;
	border: 1.5px solid #ddd4c6;
	border-radius: 8px;
	background: var(--hw-card, #fff);
	cursor: pointer;
	transition: all 0.2s ease;
	font: inherit;
	font-weight: 600;
	font-size: 0.85rem;
}

.pdp__choice:hover:not(:disabled) {
	border-color: var(--hw-accent, #32432d);
}

.pdp__choice.is-active {
	border-color: var(--hw-accent, #32432d);
	box-shadow: 0 0 0 3px rgba(93, 111, 83, 0.12);
	background: #f8fbf7;
}

.pdp__choice.is-disabled {
	opacity: 0.45;
	cursor: not-allowed;
	text-decoration: line-through;
}

.pdp__choice.is-backorder {
	border-color: #e8b563;
	color: #b45309;
}

.pdp__choice.is-backorder.is-active {
	border-color: #b45309;
	box-shadow: 0 0 0 3px rgba(180, 83, 9, 0.14);
	background: #fff8ee;
}

.pdp__choice[data-tip]:not([data-tip='']) {
	position: relative;
}

.pdp__choice[data-tip]:not([data-tip='']):hover::after {
	content: attr(data-tip);
	position: absolute;
	bottom: calc(100% + 6px);
	left: 50%;
	transform: translateX(-50%);
	white-space: nowrap;
	background: #1f2937;
	color: var(--hw-on-accent, #fff);
	font-size: 0.72rem;
	font-weight: 600;
	padding: 0.3rem 0.55rem;
	border-radius: 6px;
	pointer-events: none;
	z-index: 5;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

.pdp__choice--more {
	border-style: dashed;
	color: var(--hw-accent, #32432d);
	font-weight: 700;
}

.pdp__fdialog {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
	background: rgba(17, 24, 39, 0.5);
}

.pdp__fdialog-panel {
	width: 100%;
	max-width: 520px;
	max-height: 80vh;
	overflow: auto;
	padding: 1.5rem;
	background: var(--hw-card, #fff);
	border-radius: 18px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
}

.pdp__fdialog-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1rem;
}

.pdp__fdialog-head h3 {
	margin: 0;
	font-size: 1.15rem;
	font-weight: 800;
}

.pdp__fdialog-close {
	padding: 0.25rem 0.5rem;
	border: 0;
	background: none;
	color: #6b7280;
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
}

.pdp-fade-enter-active,
.pdp-fade-leave-active {
	transition: opacity 0.22s ease;
}

.pdp-fade-enter-from,
.pdp-fade-leave-to {
	opacity: 0;
}

.pdp-fade-enter-active .pdp__fdialog-panel,
.pdp-fade-leave-active .pdp__fdialog-panel {
	transition: transform 0.22s ease;
}

.pdp-fade-enter-from .pdp__fdialog-panel,
.pdp-fade-leave-to .pdp__fdialog-panel {
	transform: scale(0.96);
}

.pdp__price-lead-from {
	font-size: 0.46em;
	font-weight: 600;
	color: #6b7280;
	vertical-align: 0.35em;
}

.purchase-mode__price-from {
	font-size: 0.78em;
	font-weight: 600;
	color: #6b7280;
}

.pdp__choice-img {
	width: 54px;
	height: 54px;
	border-radius: 12px;
	object-fit: cover;
	border: 1px solid #ece7df;
	background: var(--hw-card, #fff);
}

.pdp__choice-name {
	display: block;
	font-weight: 700;
	color: #1f2937;
}

.pdp__choice-price {
	display: block;
	color: #6b7280;
	font-size: 0.92rem;
}

/* ---------- You may also like ---------- */

.pdp-similar {
	margin-top: 3rem;
}

.pdp-similar__title {
	font-size: 1.4rem;
	font-weight: 800;
	margin: 0 0 1.25rem;
}

.pdp-similar__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 1.25rem;
}

.pdp-similar__card {
	text-decoration: none;
	color: inherit;
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}

.pdp-similar__media {
	position: relative;
	display: block;
	aspect-ratio: 1 / 1;
	border-radius: 12px;
	overflow: hidden;
	background: var(--hw-card, #fff);
	border: 1px solid var(--color-border, #e5e0d8);
}

.pdp-similar__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.25s ease;
}

.pdp-similar__card:hover .pdp-similar__media img {
	transform: scale(1.04);
}

.pdp-similar__ph {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	font-size: 1.6rem;
	opacity: 0.25;
}

.pdp-similar__badge {
	position: absolute;
	top: 0.5rem;
	left: 0.5rem;
	background: #4a4a4a;
	color: var(--hw-on-accent, #fff);
	font-size: 0.7rem;
	font-weight: 700;
	text-transform: uppercase;
	border-radius: 999px;
	padding: 0.18rem 0.55rem;
}

.pdp-similar__name {
	font-weight: 700;
	font-size: 0.92rem;
	line-height: 1.3;
}

.pdp-similar__price {
	font-size: 0.88rem;
	opacity: 0.8;
}

/* ---------- Tab content as OC-style panels + WC reviews styling ---------- */

.product-tabs__panel.is-active {
	background: var(--hw-card, #fff);
	border: 1px solid var(--color-border, #e5e0d8);
	border-radius: 12px;
	padding: 1.5rem;
}

.product-tabs__panel .rte > :first-child {
	margin-top: 0;
}

/* WC reviews block */
.product-tabs__panel #reviews .commentlist {
	list-style: none;
	margin: 0 0 1.5rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.product-tabs__panel #reviews .commentlist > li {
	border: 1px solid var(--color-border, #eee7db);
	border-radius: 10px;
	padding: 1rem 1.1rem;
}

.product-tabs__panel #reviews .comment_container img.avatar {
	display: none;
}

.product-tabs__panel #reviews .comment-text {
	margin: 0;
	border: none;
	padding: 0;
}

.product-tabs__panel #reviews .star-rating {
	float: none;
	color: var(--hw-text, #1d271d);
	margin-bottom: 0.3rem;
}

.product-tabs__panel #reviews .meta {
	font-size: 0.85rem;
	opacity: 0.7;
	margin: 0.15rem 0 0.5rem;
}

.product-tabs__panel #review_form_wrapper {
	border-top: 1px solid var(--color-border, #eee7db);
	padding-top: 1.25rem;
}

.product-tabs__panel #reply-title {
	font-size: 1.05rem;
	font-weight: 800;
	display: block;
	margin-bottom: 0.75rem;
}

.product-tabs__panel .comment-form label {
	display: block;
	font-size: 0.85rem;
	font-weight: 700;
	margin-bottom: 0.3rem;
	opacity: 0.85;
}

.product-tabs__panel .comment-form input[type="text"],
.product-tabs__panel .comment-form input[type="email"],
.product-tabs__panel .comment-form textarea {
	width: 100%;
	border: 1.5px solid var(--color-border, #d8d2c7);
	border-radius: 10px;
	padding: 0.7rem 0.85rem;
	font: inherit;
	background: var(--hw-card, #fff);
	box-sizing: border-box;
	margin-bottom: 0.9rem;
}

.product-tabs__panel .comment-form .stars a {
	color: var(--hw-text, #1d271d);
	text-decoration: none;
	font-size: 1.1rem;
}

.product-tabs__panel .comment-form .submit,
.product-tabs__panel .comment-form input[type="submit"] {
	border: none;
	border-radius: 999px;
	background: var(--hw-accent, #32432d);
	color: var(--hw-on-accent, #fff);
	font: inherit;
	font-weight: 700;
	padding: 0.8rem 1.6rem;
	cursor: pointer;
}

.product-tabs__panel .comment-form .submit:hover {
	filter: brightness(1.12);
}

/* ---------- OC review form (hover stars) + clean review list ---------- */

.product-tabs__panel-title {
	margin: 0 0 1rem;
	font-size: 1.25rem;
	font-weight: 800;
}

.product-tabs__empty {
	opacity: 0.65;
}

.pdp-reviews__hint {
	text-align: center;
	opacity: 0.7;
	margin: 0 0 1.5rem;
}

/* The form sits in its own soft card so "your review" reads apart from
   the list below; the score summary then heads the list itself. */
.pdp-review-form {
	background: #f6f3ee;
	border: 1px solid var(--color-border, #e0d9cd);
	border-radius: 12px;
	padding: 1.25rem 1.4rem;
	margin: 0 0 1.75rem;
	/* notch chips split card-tint above the field border, white below */
	--hw-notch-bg: linear-gradient(
		180deg,
		#f6f3ee calc(50% - 2px),
		#ffffff calc(50% + 2px)
	);
}

.pdp-review-form__title {
	margin: 0 0 1rem;
	font-size: 1.35rem;
	font-weight: 800;
}

.pdp-review-form__row {
	margin: 0 0 1rem;
}

.pdp-review-form__row label {
	display: block;
	font-size: 0.88rem;
	font-weight: 700;
	margin-bottom: 0.35rem;
}

.pdp-review-form__row .required {
	color: #b3261e;
}

.pdp-review-form__row input,
.pdp-review-form__row textarea {
	width: 100%;
	border: 1.5px solid var(--color-border, #d8d2c7);
	border-radius: 10px;
	padding: 0.7rem 0.9rem;
	font: inherit;
	background: var(--hw-card, #fff);
	box-sizing: border-box;
}

.pdp-review-form__row input[readonly] {
	background: #f6f3ee;
	opacity: 0.85;
}

/* Logged-in reviewer line — plain text instead of a name input */
.pdp-review-form__as {
	margin: 0 0 1rem;
	font-size: 0.92rem;
	opacity: 0.8;
}

/* ---------- Local availability block (buy box footer) ---------- */

.pdp-availability {
	margin-top: 1.1rem;
	border-top: 1px solid var(--color-border, #eee7db);
	padding-top: 0.9rem;
}

.pdp-availability__title {
	display: flex;
	align-items: center;
	gap: 0.45rem;
	font-size: 0.8rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	opacity: 0.7;
	margin-bottom: 0.5rem;
}

.pdp-availability__rows {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}

/* Stacked layout: the buy box is a narrow (~240px) column, so a location name
   plus its status never share a line reliably — pinning the status right made
   long names collapse and wrap word-by-word. Instead put the location on its
   own line and the status indented neatly beneath it (aligned under the name,
   clear of the icon). Clean and wrap-proof at every width. */
.pdp-availability__row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	column-gap: 0.5rem;
	row-gap: 0.05rem;
	font-size: 0.88rem;
	line-height: 1.35;
}

.pdp-availability__row .mdi {
	grid-column: 1;
	grid-row: 1;
	line-height: inherit;
}

.pdp-availability__row .mdi[data-status="in"] { color: #2f7d39; }
.pdp-availability__row .mdi[data-status="low"] { color: #b45309; }
.pdp-availability__row .mdi[data-status="out"] { color: #b3261e; }

.pdp-availability__loc {
	grid-column: 2;
	grid-row: 1;
	font-weight: 600;
	min-width: 0;
	overflow-wrap: anywhere;
}

.pdp-availability__state {
	grid-column: 2;
	grid-row: 2;
	font-size: 0.82rem;
	opacity: 0.75;
}

.pdp-availability__state[data-status="in"] { color: #2f7d39; }
.pdp-availability__state[data-status="low"] { color: #b45309; opacity: 1; }
.pdp-availability__state[data-status="out"] { color: #b3261e; opacity: 1; }
.pdp-availability__state[data-status="backorder"] { color: #b45309; opacity: 1; }

.pdp-rate {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
}

.pdp-rate__cap {
	font-size: 0.85rem;
	opacity: 0.6;
	padding: 0 0.35rem;
}

.pdp-rate__star {
	border: none;
	background: transparent;
	padding: 0.1rem;
	cursor: pointer;
	font-size: 1.7rem;
	line-height: 1;
	color: #d6d0c4;
	transition: color 0.1s linear, transform 0.12s ease;
}

.pdp-rate__star:hover {
	transform: scale(1.18);
}

.pdp-rate__star.is-lit {
	color: var(--hw-text, #1d271d);
}

.pdp-rate.is-missing .pdp-rate__star {
	animation: pdp-rate-shake 0.3s ease 2;
}

@keyframes pdp-rate-shake {
	25% { transform: translateX(-2px); }
	75% { transform: translateX(2px); }
}

.pdp-review-form__actions {
	display: flex;
	justify-content: flex-end;
	border-top: 1px solid var(--color-border, #eee7db);
	padding-top: 1rem;
}

.pdp-review-form__submit {
	border: none;
	border-radius: 999px;
	background: var(--hw-accent, #32432d);
	color: var(--hw-on-accent, #fff);
	font: inherit;
	font-weight: 700;
	padding: 0.75rem 1.7rem;
	cursor: pointer;
}

.pdp-review-form__submit:hover {
	filter: brightness(1.12);
}

.pdp-reviews {
	margin-top: 1.75rem;
	display: flex;
	flex-direction: column;
	gap: 1rem;
	border-top: 1px solid var(--color-border, #eee7db);
	padding-top: 1.5rem;
}

/* Review cards pop off the panel (owner: reviews looked hidden) */
.pdp-review {
	border: 1px solid var(--color-border, #e0d9cd);
	border-radius: 12px;
	padding: 1.1rem 1.3rem;
	background: var(--hw-card, #fff);
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.pdp-review--mine {
	border-color: color-mix(in srgb, var(--hw-accent, #32432d) 45%, #e0d9cd);
}

.pdp-review__badge {
	display: inline-block;
	background: color-mix(in srgb, var(--hw-accent, #32432d) 10%, var(--hw-card, #fff));
	color: var(--hw-accent, #32432d);
	border-radius: 999px;
	padding: 0.1rem 0.55rem;
	font-size: 0.72rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	margin: 0 0.3rem;
	vertical-align: 1px;
}

/* A held review shown back to its author only (never the public) — amber, dashed,
   matching the blog comment "Pending approval" treatment. */
.pdp-review--pending {
	border-style: dashed;
	border-color: rgba(245, 196, 0, 0.5);
	background: rgba(245, 196, 0, 0.05);
}

.pdp-review__badge--pending {
	background: rgba(245, 196, 0, 0.18);
	color: #8a6d00;
}

.pdp-review__pending-note {
	margin: 0.6rem 0 0;
	font-size: 0.82rem;
	color: #8a6d00;
}

.pdp-review__edited {
	font-style: normal;
	opacity: 0.55;
	font-size: 0.82rem;
	margin-left: 0.3rem;
}

/* Overall rating header above the form/list */
.pdp-reviews__summary {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	flex-wrap: wrap;
	background: var(--hw-card, #fff);
	border: 1px solid var(--color-border, #e0d9cd);
	border-radius: 12px;
	padding: 1rem 1.3rem;
	margin-bottom: 1.25rem;
}

/* score block + star histogram side by side (stacks on small screens) */
.pdp-reviews__summary--histo {
	align-items: center;
	justify-content: space-between;
	gap: 1.25rem 2rem;
	padding: 1.2rem 1.4rem;
}

.pdp-reviews__score {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	flex-wrap: wrap;
}

.pdp-histo {
	flex: 1 1 260px;
	max-width: 380px;
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
}

.pdp-histo__row {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	border: none;
	background: transparent;
	font: inherit;
	font-size: 0.85rem;
	color: inherit;
	padding: 0.15rem 0.3rem;
	border-radius: 8px;
	cursor: pointer;
	transition: background 0.12s ease;
}

.pdp-histo__row:hover:not(:disabled),
.pdp-histo__row.is-active {
	background: #f3f0e9;
}

.pdp-histo__row.is-active .pdp-histo__label {
	font-weight: 800;
}

.pdp-histo__row:disabled {
	cursor: default;
	opacity: 0.45;
}

.pdp-histo__label {
	min-width: 3.2rem;
	text-align: left;
	font-weight: 600;
	white-space: nowrap;
}

.pdp-histo__track {
	flex: 1;
	height: 9px;
	border-radius: 999px;
	background: rgba(29, 39, 29, 0.1);
	overflow: hidden;
}

.pdp-histo__fill {
	display: block;
	height: 100%;
	border-radius: 999px;
	background: var(--hw-accent, #32432d);
}

.pdp-histo__count {
	min-width: 1.6rem;
	text-align: right;
	font-weight: 600;
	opacity: 0.65;
	font-variant-numeric: tabular-nums;
}

.pdp-histo__showing {
	margin: 0.35rem 0 0;
	font-size: 0.82rem;
	opacity: 0.8;
}

.pdp-histo__showing button {
	border: none;
	background: transparent;
	font: inherit;
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--hw-accent, #32432d);
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
	padding: 0;
}

.pdp-reviews__avg strong {
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
}

.pdp-reviews__avg span {
	font-size: 0.85rem;
	opacity: 0.6;
	margin-left: 0.25rem;
}

.pdp-reviews__avg-stars {
	color: var(--hw-text, #1d271d);
	font-size: 1.15rem;
	letter-spacing: 1px;
}

.pdp-reviews__based {
	font-size: 0.88rem;
	opacity: 0.65;
}

/* Edit-mode notices */
.pdp-review-form__pending {
	display: flex;
	align-items: baseline;
	gap: 0.4rem;
	background: rgba(180, 130, 9, 0.1);
	color: #8a6d3b;
	border-radius: 8px;
	padding: 0.6rem 0.85rem;
	font-size: 0.88rem;
	margin: 0 0 1rem;
}

.pdp-review-form__msg {
	color: #b3261e;
	font-size: 0.88rem;
	margin: 0.6rem 0 0;
}

.pdp-review__stars {
	color: var(--hw-text, #1d271d);
	font-size: 1rem;
	margin-bottom: 0.2rem;
}

.pdp-review__meta {
	font-size: 0.85rem;
	opacity: 0.7;
	margin-bottom: 0.45rem;
}

.pdp-review__text p {
	margin: 0;
	line-height: 1.6;
}

/* Guests can't write reviews — friendly sign-in prompt instead of the form */
.pdp-review-form__locked {
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
	margin: 0;
	font-size: 0.95rem;
	opacity: 0.9;
}

.pdp-review-form__locked a {
	color: var(--hw-accent, #32432d);
	font-weight: 700;
}

/* ---------- Reviews modernize round 2: avatar header rows ---------- */

.pdp-review__head {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-bottom: 0.65rem;
}

.pdp-review__avatar {
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background: color-mix(in srgb, var(--hw-accent, #32432d) 12%, var(--hw-card, #fff));
	color: var(--hw-accent, #32432d);
	font-weight: 800;
	font-size: 0.95rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.pdp-review__who {
	display: flex;
	flex-direction: column;
	gap: 0.05rem;
	min-width: 0;
	flex: 1;
}

.pdp-review__name {
	font-size: 0.95rem;
}

.pdp-review__date {
	font-size: 0.8rem;
	opacity: 0.6;
}

.pdp-review__head .pdp-review__stars {
	margin: 0;
	font-size: 0.95rem;
	white-space: nowrap;
}

/* "Reviewing as" row with avatar */
.pdp-review-form__as {
	display: flex;
	align-items: center;
	gap: 0.6rem;
}

/* outlined textarea spacing inside the form */
.pdp-review-form .hw-ofield {
	margin: 0 0 1.1rem;
}

/* Hero sale price (the "two locations") — desktop/tablet shows the sale headline next to the
   title; the buy box then shows just the plain discounted price. On mobile this hides and the
   buy box carries the full sale display (which the owner liked). */
.pdp__price-lead {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.4rem;
	margin: 0.7rem 0 0.4rem;
	color: #1f2937;
}
/* Amazon-style amount: big whole number, $ and cents raised as superscripts. */
.pdp__price-lead-amt { font-size: 2.1rem; font-weight: 700; line-height: 1; }
.pdp__price-lead-cur { font-size: 0.55em; font-weight: 700; vertical-align: top; margin-right: 1px; }
.pdp__price-lead-frac { font-size: 0.55em; font-weight: 700; vertical-align: top; }
.pdp__price-lead-unit { font-size: 0.9rem; font-weight: 500; color: #5f6b63; }
/* "Was $X" on its own line below, with the word "Was" + the struck price. */
.pdp__price-lead-was { flex-basis: 100%; font-size: 0.95rem; font-weight: 500; color: #5f6b63; }
.pdp__price-lead-was del { text-decoration: line-through; }
/* Amazon shows the percent as plain red TEXT (not a filled chip), same size as the big whole number. */
.pdp__price-lead .hw-sale-pct { display: inline; background: none; padding: 0; border-radius: 0; color: #cc0c39; font-size: 2.1rem; font-weight: 500; line-height: 1; margin-right: 0; }
@media (max-width: 749px) {
	.pdp__price-lead { display: none; }
}
@media (min-width: 750px) {
	.purchase-mode__price .hw-sale-pct,
	.purchase-mode__price .purchase-mode__price-was { display: none; }
}

/* Mobile buy box (one-time purchase): match the hero — the percent is plain red TEXT (lighter),
   not a filled chip, same size as the bold $ price. (Hidden on desktop, where the hero shows it.) */
.purchase-mode__price .hw-sale-pct {
	background: none;
	padding: 0;
	border-radius: 0;
	color: #cc0c39;
	font-weight: 500;
	font-size: 2.35rem;
	line-height: 0.96;
	align-self: flex-start;
	margin-right: 4px;
}

/* SINGLE MODE — no subscribe offer to choose between.
   The widget is a chooser; with one option it should read as a price, not as a
   one-item radio list. Drops the grey chrome and the selected-row tint so the
   price sits on the page the way it does anywhere else. */
.purchase-widget--single {
	padding: 0;
	background: transparent;
	border-radius: 0;
}
.purchase-widget--single .purchase-mode,
.purchase-widget--single .purchase-mode.is-active {
	background: transparent;
	border-radius: 0;
}
.purchase-widget--single .purchase-mode__label {
	padding-left: 0;
	padding-right: 0;
	cursor: default;
}
.purchase-widget--single .purchase-mode__content {
	gap: 0.25rem;
}

/* The line under "Subscribe" when there is no saving to advertise — says what
   the option IS, since the title can no longer carry it. Quiet: it explains,
   it doesn't sell. */
.purchase-mode__sub {
	display: block;
	margin-top: 0.15rem;
	font-size: 0.85rem;
	color: #6b6b6b;
}
