.psb-hidden {
	display: none !important;
}

body.psb-hide-archive-badges.post-type-archive-product .psb-badge-stack,
body.psb-hide-archive-badges.tax-product_cat .psb-badge-stack,
body.psb-hide-archive-badges.woocommerce-shop .psb-badge-stack,
body.psb-hide-archive-badges.archive.woocommerce .psb-badge-stack,
body.psb-hide-archive-badges.post-type-archive-product .psb-single-fallback,
body.psb-hide-archive-badges.tax-product_cat .psb-single-fallback,
body.psb-hide-archive-badges.woocommerce-shop .psb-single-fallback,
body.psb-hide-archive-badges.archive.woocommerce .psb-single-fallback {
	display: none !important;
}

body.psb-hide-archive-countdowns.post-type-archive-product .psb-countdown,
body.psb-hide-archive-countdowns.tax-product_cat .psb-countdown,
body.psb-hide-archive-countdowns.woocommerce-shop .psb-countdown,
body.psb-hide-archive-countdowns.archive.woocommerce .psb-countdown {
	display: none !important;
}

body.psb-hide-woo-sale-flash .onsale:not(.psb-sale-flash-replaced):not(.psb-badge-sale) {
	display: none !important;
}

body.psb-hide-woo-sale-flash .wc-block-grid__product-onsale,
body.psb-hide-woo-sale-flash .wc-block-components-product-sale-badge,
body.psb-hide-woo-sale-flash .wp-block-woocommerce-product-sale-badge {
	display: none !important;
}

body.single-product .onsale {
	display: none !important;
}

.psb-badge-stack {
	align-items: flex-start;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 8px 0;
	pointer-events: none;
}

.psb-block-badges,
.psb-loop-badges,
.woocommerce ul.products li.product .psb-loop-badges {
	align-items: center;
	justify-content: center;
	margin: 8px auto;
	position: static;
	width: 100%;
}

.wp-block-woocommerce-product-image,
.wp-block-post-featured-image,
.woocommerce ul.products li.product {
	position: relative;
}

.psb-badge {
	--psb-badge-bg: #2d6a4f;
	--psb-badge-color: #fff;
	background: var(--psb-badge-bg);
	border-radius: 4px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
	color: var(--psb-badge-color);
	display: inline-flex;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1;
	padding: 6px 8px;
	position: relative;
	text-transform: uppercase;
}

.psb-badge-shape-pill {
	border-radius: 999px;
}

.psb-badge-shape-rounded {
	border-radius: 6px;
}

.psb-badge-shape-square {
	border-radius: 0;
}

.psb-badge-shape-soft-square {
	border-radius: 2px;
}

.psb-badge-shape-tag {
	border-radius: 4px 999px 999px 4px;
	clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%);
	padding-right: 13px;
}

.psb-badge-shape-left-tag {
	border-radius: 999px 4px 4px 999px;
	clip-path: polygon(8px 0, 100% 0, 100% 100%, 8px 100%, 0 50%);
	padding-left: 13px;
}

.psb-badge-shape-right-tag {
	clip-path: polygon(0 0, calc(100% - 9px) 0, 100% 50%, calc(100% - 9px) 100%, 0 100%);
	padding-right: 14px;
}

.psb-badge-shape-ribbon {
	clip-path: polygon(0 0, 100% 0, calc(100% - 8px) 50%, 100% 100%, 0 100%, 8px 50%);
	padding-left: 13px;
	padding-right: 13px;
}

.psb-badge-shape-flag {
	clip-path: polygon(0 0, 100% 0, calc(100% - 8px) 50%, 100% 100%, 0 100%);
	padding-right: 14px;
}

.psb-badge-shape-bookmark {
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% calc(100% - 6px), 0 100%);
	padding-bottom: 10px;
}

.psb-badge-shape-slant {
	transform: skew(-10deg);
}

.psb-badge-shape-slant-left {
	transform: skew(10deg);
}

.psb-badge-shape-ticket {
	border-radius: 3px;
	clip-path: polygon(0 0, 100% 0, 100% 35%, calc(100% - 5px) 50%, 100% 65%, 100% 100%, 0 100%, 0 65%, 5px 50%, 0 35%);
}

.psb-badge-shape-stub-ticket {
	border-radius: 2px;
	clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 50%, calc(100% - 10px) 100%, 0 100%, 0 65%, 5px 50%, 0 35%);
	padding-right: 15px;
}

.psb-badge-shape-burst {
	clip-path: polygon(50% 0, 61% 16%, 78% 9%, 82% 27%, 100% 31%, 88% 45%, 98% 61%, 80% 66%, 78% 85%, 61% 78%, 50% 100%, 39% 78%, 22% 85%, 20% 66%, 2% 61%, 12% 45%, 0 31%, 18% 27%, 22% 9%, 39% 16%);
	padding: 10px 12px;
}

.psb-badge-shape-starburst {
	clip-path: polygon(50% 0, 57% 25%, 76% 7%, 72% 34%, 98% 25%, 79% 47%, 100% 62%, 73% 61%, 82% 88%, 59% 72%, 50% 100%, 41% 72%, 18% 88%, 27% 61%, 0 62%, 21% 47%, 2% 25%, 28% 34%, 24% 7%, 43% 25%);
	padding: 10px 12px;
}

.psb-badge-shape-circle {
	align-items: center;
	aspect-ratio: 1;
	border-radius: 999px;
	justify-content: center;
	min-height: 54px;
	text-align: center;
	width: 54px;
}

.psb-badge-shape-oval {
	border-radius: 50%;
	padding: 9px 14px;
}

.psb-badge-shape-hexagon {
	clip-path: polygon(11% 0, 89% 0, 100% 50%, 89% 100%, 11% 100%, 0 50%);
	padding-left: 13px;
	padding-right: 13px;
}

.psb-badge-shape-octagon {
	clip-path: polygon(12% 0, 88% 0, 100% 12%, 100% 88%, 88% 100%, 12% 100%, 0 88%, 0 12%);
	padding: 7px 10px;
}

.psb-badge-shape-diamond {
	clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
	padding: 12px 16px;
}

.psb-badge-shape-shield {
	clip-path: polygon(10% 0, 90% 0, 100% 40%, 50% 100%, 0 40%);
	padding: 7px 11px 12px;
}

.psb-badge-shape-tab {
	border-radius: 8px 8px 2px 2px;
}

.psb-badge-shape-bracket {
	border-left: 3px solid rgba(255, 255, 255, 0.85);
	border-radius: 2px;
	border-right: 3px solid rgba(255, 255, 255, 0.85);
}

.psb-badge-shape-stamp {
	border: 2px dashed rgba(255, 255, 255, 0.85);
	border-radius: 4px;
}

.psb-badge-shape-cut-corner {
	clip-path: polygon(7px 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%, 0 7px);
}

.psb-badge-shape-double-cut {
	clip-path: polygon(8px 0, calc(100% - 8px) 0, 100% 8px, 100% calc(100% - 8px), calc(100% - 8px) 100%, 8px 100%, 0 calc(100% - 8px), 0 8px);
}

.psb-badge-shape-speech {
	border-radius: 6px;
	clip-path: polygon(0 0, 100% 0, 100% 78%, 62% 78%, 52% 100%, 42% 78%, 0 78%);
	padding-bottom: 12px;
}

.psb-badge-shape-scallop {
	border-radius: 999px;
	outline: 2px dotted rgba(255, 255, 255, 0.9);
	outline-offset: -4px;
}

.psb-badge-shape-wave {
	border-radius: 999px 6px 999px 6px;
}

.psb-badge-shape-underline {
	border-bottom: 3px solid rgba(255, 255, 255, 0.9);
	border-radius: 2px;
}

.psb-badge-shape-outline {
	background: transparent;
	border: 2px solid var(--psb-badge-bg);
	color: var(--psb-badge-color, var(--psb-badge-bg));
}

.psb-badge-shape-ghost {
	background: rgba(255, 255, 255, 0.9);
	border: 1px solid var(--psb-badge-bg);
	color: var(--psb-badge-color, var(--psb-badge-bg));
}

.psb-badge-shape-neon {
	box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8), 0 0 16px var(--psb-badge-bg);
}

.psb-badge-shape-drop-shadow {
	box-shadow: 4px 4px 0 rgba(0, 0, 0, 0.28);
}

.psb-badge-shape-stacked {
	box-shadow: 4px 4px 0 rgba(255, 255, 255, 0.85), 7px 7px 0 rgba(0, 0, 0, 0.16);
}

.psb-badge-animated {
	animation-duration: 1.9s;
	animation-fill-mode: both;
	animation-name: var(--psb-badge-animation-name);
	animation-timing-function: ease-in-out;
	transform-origin: center;
	will-change: filter, opacity, transform;
}

.psb-badge-animation-trigger-continuous {
	animation-iteration-count: infinite;
}

.psb-badge-animation-trigger-once {
	animation-iteration-count: 1;
}

.psb-badge-animation-trigger-hover {
	animation-name: none;
	pointer-events: auto;
}

.psb-badge-animation-trigger-hover:hover {
	animation-iteration-count: 1;
	animation-name: var(--psb-badge-animation-name);
}

.psb-badge-animation-flash {
	--psb-badge-animation-name: psb-badge-flash;
}

.psb-badge-animation-pulse {
	--psb-badge-animation-name: psb-badge-pulse;
}

.psb-badge-animation-throb {
	--psb-badge-animation-name: psb-badge-throb;
}

.psb-badge-animation-spin {
	--psb-badge-animation-name: psb-badge-spin;
}

.psb-badge-animation-corner-run {
	--psb-badge-animation-name: psb-badge-corner-run;
}

.psb-badge-animation-bounce {
	--psb-badge-animation-name: psb-badge-bounce;
}

.psb-badge-animation-wiggle {
	--psb-badge-animation-name: psb-badge-wiggle;
}

.psb-badge-animation-shake {
	--psb-badge-animation-name: psb-badge-shake;
}

.psb-badge-animation-float {
	--psb-badge-animation-name: psb-badge-float;
}

.psb-badge-animation-swing {
	--psb-badge-animation-name: psb-badge-swing;
	transform-origin: top center;
}

.psb-badge-animation-flip {
	--psb-badge-animation-name: psb-badge-flip;
}

.psb-badge-animation-slide {
	--psb-badge-animation-name: psb-badge-slide;
}

.psb-badge-animation-shimmer {
	--psb-badge-animation-name: psb-badge-shimmer;
}

.psb-badge-animation-glow {
	--psb-badge-animation-name: psb-badge-glow;
}

.psb-badge-animation-heartbeat {
	--psb-badge-animation-name: psb-badge-heartbeat;
}

.psb-badge-animation-rubber-band {
	--psb-badge-animation-name: psb-badge-rubber-band;
}

.psb-badge-animation-pop {
	--psb-badge-animation-name: psb-badge-pop;
}

.psb-badge-animation-tilt {
	--psb-badge-animation-name: psb-badge-tilt;
}

.psb-badge-animation-breathe {
	--psb-badge-animation-name: psb-badge-breathe;
}

.psb-badge-animation-blink {
	--psb-badge-animation-name: psb-badge-blink;
}

.psb-badge-animation-wobble {
	--psb-badge-animation-name: psb-badge-wobble;
}

@keyframes psb-badge-flash {
	0%, 100% {
		filter: brightness(1);
		opacity: 1;
	}

	50% {
		filter: brightness(1.18);
		opacity: 0.82;
	}
}

@keyframes psb-badge-pulse {
	0%, 100% {
		transform: scale(1);
	}

	50% {
		transform: scale(1.05);
	}
}

@keyframes psb-badge-throb {
	0%, 100% {
		transform: scale(1);
	}

	35% {
		transform: scale(1.08);
	}

	70% {
		transform: scale(0.96);
	}
}

@keyframes psb-badge-spin {
	0% {
		transform: rotate(0deg);
	}

	100% {
		transform: rotate(360deg);
	}
}

@keyframes psb-badge-corner-run {
	0%, 100% {
		transform: translate(-5px, -5px);
	}

	50% {
		transform: translate(5px, 5px);
	}
}

@keyframes psb-badge-bounce {
	0%, 100% {
		transform: translateY(0);
	}

	40% {
		transform: translateY(-7px);
	}

	70% {
		transform: translateY(2px);
	}
}

@keyframes psb-badge-wiggle {
	0%, 100% {
		transform: rotate(0deg);
	}

	25% {
		transform: rotate(-4deg);
	}

	75% {
		transform: rotate(4deg);
	}
}

@keyframes psb-badge-shake {
	0%, 100% {
		transform: translateX(0);
	}

	25% {
		transform: translateX(-4px);
	}

	75% {
		transform: translateX(4px);
	}
}

@keyframes psb-badge-float {
	0%, 100% {
		transform: translateY(0);
	}

	50% {
		transform: translateY(-5px);
	}
}

@keyframes psb-badge-swing {
	0%, 100% {
		transform: rotate(0deg);
	}

	25% {
		transform: rotate(6deg);
	}

	75% {
		transform: rotate(-6deg);
	}
}

@keyframes psb-badge-flip {
	0%, 100% {
		transform: rotateY(0deg);
	}

	50% {
		transform: rotateY(180deg);
	}
}

@keyframes psb-badge-slide {
	0%, 100% {
		transform: translateX(0);
	}

	50% {
		transform: translateX(8px);
	}
}

@keyframes psb-badge-shimmer {
	0%, 100% {
		filter: brightness(1) saturate(1);
	}

	50% {
		filter: brightness(1.35) saturate(1.2);
	}
}

@keyframes psb-badge-glow {
	0%, 100% {
		box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
	}

	50% {
		box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5), 0 0 18px var(--psb-badge-bg);
	}
}

@keyframes psb-badge-heartbeat {
	0%, 100% {
		transform: scale(1);
	}

	20%, 55% {
		transform: scale(1.08);
	}

	35%, 70% {
		transform: scale(0.98);
	}
}

@keyframes psb-badge-rubber-band {
	0%, 100% {
		transform: scale(1);
	}

	30% {
		transform: scaleX(1.15) scaleY(0.88);
	}

	55% {
		transform: scaleX(0.92) scaleY(1.08);
	}
}

@keyframes psb-badge-pop {
	0% {
		transform: scale(0.92);
	}

	55% {
		transform: scale(1.1);
	}

	100% {
		transform: scale(1);
	}
}

@keyframes psb-badge-tilt {
	0%, 100% {
		transform: rotate(0deg);
	}

	50% {
		transform: rotate(-7deg);
	}
}

@keyframes psb-badge-breathe {
	0%, 100% {
		opacity: 1;
		transform: scale(1);
	}

	50% {
		opacity: 0.9;
		transform: scale(1.04);
	}
}

@keyframes psb-badge-blink {
	0%, 100% {
		opacity: 1;
	}

	50% {
		opacity: 0.35;
	}
}

@keyframes psb-badge-wobble {
	0%, 100% {
		transform: translateX(0) rotate(0deg);
	}

	25% {
		transform: translateX(-4px) rotate(-4deg);
	}

	75% {
		transform: translateX(4px) rotate(4deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.psb-badge-animated {
		animation: none !important;
	}
}

.psb-badge-sale {
	--psb-badge-bg: #c1121f;
}

.psb-badge-low-stock {
	--psb-badge-bg: #7b341e;
}

.psb-single-badges,
.psb-single-price-badges,
.psb-single-fallback .psb-badge-stack {
	margin-bottom: 12px;
	margin-top: 8px;
}

.psb-single-fallback {
	margin: 10px 0;
}

.psb-countdown {
	align-items: center;
	background: var(--psb-countdown-bg, #f7f4ef);
	border: 1px solid #ded6ca;
	border-radius: 6px;
	color: var(--psb-countdown-color, #222);
	display: inline-flex;
	flex-wrap: wrap;
	font-size: 13px;
	gap: 6px;
	line-height: 1.25;
	margin: 8px 0;
	padding: 7px 9px;
}

.psb-countdown-label {
	font-weight: 700;
}

.psb-countdown-value {
	font-variant-numeric: tabular-nums;
}

.psb-countdown-expired {
	opacity: 0.65;
}

.psb-shipping-progress {
	background: var(--psb-shipping-bg, #fff);
	border: 1px solid #d7dbe2;
	border-radius: 8px;
	box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
	color: var(--psb-shipping-color, #172033);
	margin: 16px 0;
	padding: 14px;
}

.psb-shipping-progress-message {
	font-size: 14px;
	font-weight: 700;
	margin-bottom: 10px;
}

.psb-shipping-progress-track {
	background: var(--psb-shipping-track, #e7e9ee);
	border-radius: 999px;
	height: 10px;
	overflow: hidden;
}

.psb-shipping-progress-fill {
	background: var(--psb-shipping-fill, #2d6a4f);
	border-radius: inherit;
	display: block;
	height: 100%;
	min-width: 2px;
	transition: width 240ms ease;
}

.psb-shipping-progress-mini-cart {
	box-shadow: none;
	margin: 0 0 12px;
}

.psb-sales-popup[hidden] {
	display: none;
}

.psb-sales-popup {
	background: var(--psb-sales-popup-bg, #fff);
	border: 1px solid #d8dee6;
	border-radius: 8px;
	bottom: 22px;
	box-shadow: 0 16px 50px rgba(15, 23, 42, 0.22);
	left: 22px;
	max-width: min(360px, calc(100vw - 44px));
	opacity: 0;
	position: fixed;
	transform: translateY(10px);
	transition: opacity 180ms ease, transform 180ms ease;
	width: 360px;
	z-index: 99998;
}

.psb-sales-popup.psb-sales-popup-visible {
	opacity: 1;
	transform: translateY(0);
}

.psb-sales-popup-link {
	align-items: center;
	color: var(--psb-sales-popup-color, #182033);
	display: grid;
	gap: 12px;
	grid-template-columns: 56px 1fr;
	padding: 12px;
	text-decoration: none;
}

.psb-sales-popup-image {
	aspect-ratio: 1;
	border-radius: 6px;
	object-fit: cover;
	width: 56px;
}

.psb-sales-popup-kicker {
	color: var(--psb-sales-popup-accent, #5b6473);
	display: block;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
	margin-bottom: 3px;
	text-transform: uppercase;
}

.psb-sales-popup-title {
	display: block;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.25;
}
