/* Odznaki produktów – Semlabs.pro 2.0 */

.woocommerce ul.products li.product,
.single-product div.product,
.fe-badge-admin__tile {
	position: relative;
}

.fe-badge {
	--fe-badge-bg: #7b4bb7;
	--fe-badge-fg: #fff;
	--fe-badge-rot: 0deg;
	--fe-badge-fs: 14px;
	--fe-badge-is: 18px;
	position: absolute;
	top: 12px;
	z-index: 6;
	pointer-events: none;
	font-family: var(--fe-badge-font, inherit);
	font-size: var(--fe-badge-fs);
	font-weight: 700;
	line-height: 1.1;
	color: var(--fe-badge-fg);
	transform: rotate(var(--fe-badge-rot));
}
.fe-badge--left-top { left: 12px; transform-origin: top left; }
.fe-badge--right-top { right: 12px; transform-origin: top right; }

.fe-badge__inner {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .35em;
	padding: .5em .85em;
	background: var(--fe-badge-bg);
	white-space: nowrap;
	text-align: center;
}
.fe-badge__icon {
	font-size: var(--fe-badge-is);
	line-height: 1;
}

/* ---------- Style ---------- */

/* Pigułka */
.badge-pill .fe-badge__inner {
	border-radius: 999px;
	text-transform: uppercase;
	letter-spacing: .04em;
	box-shadow: 0 4px 14px rgba(0, 0, 0, .35);
}

/* Wstęga – dosunięta do krawędzi, wcięty koniec */
.fe-badge.badge-ribbon { top: 16px; }
.fe-badge.badge-ribbon.fe-badge--left-top { left: 0; }
.fe-badge.badge-ribbon.fe-badge--right-top { right: 0; }
.badge-ribbon .fe-badge__inner {
	padding: .55em 1.5em .55em .9em;
	text-transform: uppercase;
	letter-spacing: .05em;
	clip-path: polygon(0 0, 100% 0, calc(100% - .7em) 50%, 100% 100%, 0 100%);
}
.badge-ribbon.fe-badge--right-top .fe-badge__inner {
	padding: .55em .9em .55em 1.5em;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, .7em 50%);
}

/* Szarfa w rogu */
.fe-badge.badge-diagonal {
	top: 0;
	width: 9.5em;
	height: 9.5em;
	overflow: hidden;
	transform: none;
}
.fe-badge.badge-diagonal.fe-badge--left-top { left: 0; }
.fe-badge.badge-diagonal.fe-badge--right-top { right: 0; }
.badge-diagonal .fe-badge__inner {
	position: absolute;
	top: 2.1em;
	left: -3.1em;
	width: 13em;
	padding: .45em 0;
	transform: rotate(-45deg);
	text-transform: uppercase;
	letter-spacing: .05em;
	box-shadow: 0 3px 10px rgba(0, 0, 0, .35);
}
.badge-diagonal.fe-badge--right-top .fe-badge__inner {
	left: auto;
	right: -3.1em;
	transform: rotate(45deg);
}

/* Trójkąt w rogu */
.fe-badge.badge-corner-triangle { top: 0; transform: none; }
.fe-badge.badge-corner-triangle.fe-badge--left-top { left: 0; }
.fe-badge.badge-corner-triangle.fe-badge--right-top { right: 0; }
.badge-corner-triangle .fe-badge__inner {
	width: 5.6em;
	height: 5.6em;
	padding: .7em;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	gap: .15em;
	clip-path: polygon(0 0, 100% 0, 0 100%);
}
.badge-corner-triangle.fe-badge--right-top .fe-badge__inner {
	align-items: flex-end;
	clip-path: polygon(0 0, 100% 0, 100% 100%);
}

/* Zakładka */
.fe-badge.badge-bookmark { top: 0; }
.badge-bookmark .fe-badge__inner {
	flex-direction: column;
	gap: .25em;
	min-width: 3em;
	padding: .9em .6em 1.4em;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% calc(100% - .6em), 0 100%);
	box-shadow: 0 4px 12px rgba(0, 0, 0, .35);
}

/* Herb */
.badge-shield .fe-badge__inner {
	flex-direction: column;
	gap: .2em;
	min-width: 3.6em;
	padding: .8em .8em 1.5em;
	clip-path: polygon(50% 0, 100% 12%, 100% 58%, 50% 100%, 0 58%, 0 12%);
}

/* Medal */
.badge-round-ribbon .fe-badge__inner {
	z-index: 1;
	flex-direction: column;
	gap: .1em;
	width: 4.9em;
	height: 4.9em;
	padding: .4em;
	border-radius: 50%;
	white-space: normal;
	box-shadow: inset 0 0 0 3px var(--fe-badge-bg), inset 0 0 0 5px rgba(255, 255, 255, .7), 0 4px 12px rgba(0, 0, 0, .35);
}
.fe-badge.badge-round-ribbon::before,
.fe-badge.badge-round-ribbon::after {
	content: "";
	position: absolute;
	z-index: 0;
	top: 3.7em;
	width: 1.2em;
	height: 2.6em;
	background: var(--fe-badge-bg);
	filter: brightness(.85);
	box-shadow: 0 2px 6px rgba(0, 0, 0, .4);
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 80%, 0 100%);
}
.fe-badge.badge-round-ribbon::before { left: 1.1em; transform: rotate(18deg); }
.fe-badge.badge-round-ribbon::after { left: 2.7em; transform: rotate(-18deg); }

/* Plama */
.badge-blob .fe-badge__inner {
	padding: .95em 1.15em;
	border-radius: 63% 37% 54% 46% / 55% 48% 52% 45%;
	box-shadow: 0 4px 14px rgba(0, 0, 0, .3);
}

/* Ząbki */
.badge-zigzag .fe-badge__inner {
	padding: .55em 1.2em;
	text-transform: uppercase;
	letter-spacing: .04em;
	clip-path: polygon(
		0 0, 100% 0,
		calc(100% - .45em) 12.5%, 100% 25%, calc(100% - .45em) 37.5%, 100% 50%,
		calc(100% - .45em) 62.5%, 100% 75%, calc(100% - .45em) 87.5%, 100% 100%,
		0 100%,
		.45em 87.5%, 0 75%, .45em 62.5%, 0 50%, .45em 37.5%, 0 25%, .45em 12.5%
	);
}

/* Rozbłysk */
.badge-burst .fe-badge__inner {
	flex-direction: column;
	gap: .05em;
	width: 5.2em;
	height: 5.2em;
	padding: .6em;
	white-space: normal;
	clip-path: polygon(50% 0%, 58.7% 12%, 71.7% 5%, 74.3% 19.5%, 89.1% 18.8%, 85.1% 33.1%, 98.7% 38.9%, 89% 50%, 98.7% 61.1%, 85.1% 66.9%, 89.1% 81.2%, 74.3% 80.5%, 71.7% 95%, 58.7% 88%, 50% 100%, 41.3% 88%, 28.3% 95%, 25.7% 80.5%, 10.9% 81.2%, 14.9% 66.9%, 1.3% 61.1%, 11% 50%, 1.3% 38.9%, 14.9% 33.1%, 10.9% 18.8%, 25.7% 19.5%, 28.3% 5%, 41.3% 12%);
}

/* Pieczątka */
.badge-stamp .fe-badge__inner {
	padding: .5em .9em;
	border-radius: .35em;
	text-transform: uppercase;
	letter-spacing: .14em;
	box-shadow: inset 0 0 0 2px var(--fe-badge-bg), inset 0 0 0 4px var(--fe-badge-fg), 0 3px 10px rgba(0, 0, 0, .3);
}

/* Metka */
.badge-tag .fe-badge__inner {
	padding: .5em .9em .5em 1.6em;
	border-radius: 0 .35em .35em 0;
	clip-path: polygon(.95em 0, 100% 0, 100% 100%, .95em 100%, 0 50%);
}
.badge-tag .fe-badge__inner::before {
	content: "";
	position: absolute;
	left: .7em;
	top: 50%;
	width: .38em;
	height: .38em;
	margin-top: -.19em;
	border-radius: 50%;
	background: rgba(0, 0, 0, .55);
}

/* Neon */
.badge-neon .fe-badge__inner {
	padding: .45em .85em;
	border-radius: .5em;
	background: rgba(0, 0, 0, .6);
	border: 2px solid var(--fe-badge-bg);
	text-transform: uppercase;
	letter-spacing: .08em;
	text-shadow: 0 0 6px var(--fe-badge-bg), 0 0 14px var(--fe-badge-bg);
	box-shadow: 0 0 6px var(--fe-badge-bg), 0 0 18px var(--fe-badge-bg), inset 0 0 8px var(--fe-badge-bg);
}

/* Szkło */
.badge-glass .fe-badge__inner {
	padding: .5em .9em;
	border-radius: .6em;
	background: rgba(20, 20, 20, .35);
	background: color-mix(in srgb, var(--fe-badge-bg) 40%, transparent);
	border: 1px solid rgba(255, 255, 255, .35);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	box-shadow: 0 6px 18px rgba(0, 0, 0, .3);
}

/* ---------- Animacje ---------- */
.animate-pulse  { animation: fe-badge-pulse 1.8s ease-in-out infinite; }
.animate-flash  { animation: fe-badge-flash 1.6s ease-in-out infinite; }
.animate-rotate { animation: fe-badge-rotate 9s linear infinite; }
.animate-swing  { animation: fe-badge-swing 2.4s ease-in-out infinite; transform-origin: top center; }
.animate-bounce { animation: fe-badge-bounce 1.6s ease-in-out infinite; }
.animate-glow   { animation: fe-badge-glow 2s ease-in-out infinite; }
.animate-shine  { overflow: hidden; }
.animate-shine::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .55) 50%, transparent 70%);
	transform: translateX(-120%);
	animation: fe-badge-shine 3s ease-in-out infinite;
}

@keyframes fe-badge-pulse  { 50% { transform: scale(1.09); } }
@keyframes fe-badge-flash  { 50% { opacity: .45; } }
@keyframes fe-badge-rotate { to { transform: rotate(360deg); } }
@keyframes fe-badge-swing  { 0%, 100% { transform: rotate(-7deg); } 50% { transform: rotate(7deg); } }
@keyframes fe-badge-bounce { 0%, 100% { transform: translateY(0); } 40% { transform: translateY(-5px); } 60% { transform: translateY(-2px); } }
@keyframes fe-badge-glow   { 0%, 100% { filter: drop-shadow(0 0 0 var(--fe-badge-bg)); } 50% { filter: drop-shadow(0 0 10px var(--fe-badge-bg)); } }
@keyframes fe-badge-shine  { 0%, 55% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }

/* Szarfa jest obrócona transformacją – ruch transformujący by ją zepsuł. */
.badge-diagonal .animate-pulse,
.badge-diagonal .animate-rotate,
.badge-diagonal .animate-swing,
.badge-diagonal .animate-bounce {
	animation: none;
}

@media (prefers-reduced-motion: reduce) {
	.fe-badge__inner,
	.fe-badge__inner::after {
		animation: none !important;
	}
}

/* ---------- Zegar do wygaśnięcia ---------- */
.fe-badge-timer {
	position: absolute;
	top: 12px;
	z-index: 6;
	padding: .35em .7em;
	border-radius: 999px;
	background: rgba(0, 0, 0, .78);
	color: #fff;
	font-size: var(--fe-timer-fs, 13px);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	line-height: 1.1;
	pointer-events: none;
}
.fe-badge-timer:empty { display: none; }
.fe-badge-timer::before { content: "⏱ "; }

@media (max-width: 575px) {
	.fe-badge { font-size: calc(var(--fe-badge-fs) * .9); }
}

/* ---------- Podgląd w panelu ---------- */
.fe-badge-admin__preview {
	margin: 0 0 6px;
	padding: 8px;
	background: #111;
	border-radius: 4px;
}
.fe-badge-admin__tile {
	height: 150px;
	overflow: hidden;
	border-radius: 2px;
	background: linear-gradient(135deg, #2b2b2b, #4a3d5c);
}
