/* ============================================================================
 * single-product.css — jadeja custom single product page
 *
 * Step 1 (sesja 26): hero zone scope body.single-product.
 * Wzór: sklep-files/CARD-PRODUCT-SINGLE-BLUEPRINT-2026.md v0.2 + STEP-1-PLAN.md
 * ============================================================================ */

/* === Base canvas dark theme (match sklep / opinie / blog / o-nas / cart) === */
body.single-product,
body.single-product .jj-single-main {
	background-color: #050505;
	color: rgba( 255, 255, 255, 0.95 );
}
body.single-product .jj-single-main {
	min-height: 100svh;       /* iOS Safari fix (memory feedback_rucss_off…) */
	padding: 8px 0 40px;
}
@media ( min-width: 1024px ) {
	body.single-product .jj-single-main {
		padding: 16px 0 60px;
	}
}

/* === Hello Elementor clearfix collision (memory hard rule HR1) ============= */
body.single-product .jj-hero::before,
body.single-product .jj-hero::after,
body.single-product .jj-hero__summary::before,
body.single-product .jj-hero__summary::after,
body.single-product .jj-hero__gallery::before,
body.single-product .jj-hero__gallery::after,
body.single-product .jj-hero__pricing::before,
body.single-product .jj-hero__pricing::after,
body.single-product .jj-hero__trust-placeholder::before,
body.single-product .jj-hero__trust-placeholder::after {
	content: none !important;
}

/* === Imagify <picture> wrap aware (memory HR6) ============================ */
body.single-product .jj-hero__gallery picture > img,
body.single-product .woocommerce-product-gallery picture > img {
	width: 100%;
	height: auto;
	max-width: 100%;
	display: block;
}

/* === Breadcrumbs ========================================================= */
body.single-product .jj-single-breadcrumbs {
	max-width: 1280px;
	margin: 0 auto 12px;
	padding: 0 16px;
	font-size: 13px;
	color: rgba( 255, 255, 255, 0.6 );
}
body.single-product .jj-single-breadcrumbs__inner {
	font-family: 'Nunito', system-ui, sans-serif;
}
body.single-product .jj-single-breadcrumbs a {
	color: #4BCF46;          /* jade-lightgreen */
	text-decoration: none;
}
body.single-product .jj-single-breadcrumbs a:hover {
	text-decoration: underline;
}
body.single-product .jj-single-breadcrumbs .separator {
	margin: 0 6px;
	color: rgba( 255, 255, 255, 0.4 );
}

/* === Hero layout — mobile-first 1-col stacked ============================= */
body.single-product .jj-hero {
	display: flex;
	flex-direction: column;
	gap: 12px;
	max-width: 1280px;
	margin: 0 auto;
	padding: 8px;
}

/* Desktop ≥1024px — 2-col gallery left / summary right.
   align-items: flex-start zapewnia że gallery col i summary col mają TEN SAM top
   (= top tytułu h1). Sticky gallery zostaje dla Step 5 (z wymaganym explicitnym
   uzgodnieniem behavior tak by NIE psuł alignment w initial state). */
@media ( min-width: 1024px ) {
	body.single-product .jj-hero {
		flex-direction: row;
		align-items: flex-start;
		gap: 32px;
		padding: 16px 24px;
	}
	body.single-product .jj-hero__gallery {
		flex: 1 1 55%;
		max-width: 55%;
	}
	body.single-product .jj-hero__summary {
		flex: 1 1 45%;
		max-width: 45%;
	}
}

/* === Galeria placeholder Step 1 (default WC Flexslider) =================== */
body.single-product .jj-hero__gallery {
	position: relative;       /* anchor dla overlay badges */
	overflow: hidden;         /* uciąć Flexslider absolute slides leak */
}
body.single-product .jj-hero__gallery .woocommerce-product-gallery {
	width: 100% !important;
	margin: 0 !important;
	background: #0a0a0a;      /* dark fill dla letterbox Vimeo */
	border-radius: 4px;
}
/* === Gallery slides — natural aspect ratio per slide (NIE force 1:1) ===
   Vimeo iframe = natural 16:9 (mniej wysokie = więcej content above fold).
   Image slides = natural 1:1 jadeja convention (Flexslider auto-resize JS).
   Decyzja sesja 26 #1 iter2: 1:1 force powodował 64px letterbox czarne pasy
   na Vimeo 16:9 → user widział badges „nad" content. */
body.single-product .jj-hero__gallery .flex-viewport {
	overflow: hidden;
	position: relative;
	width: 100%;
}
body.single-product .jj-hero__gallery .woocommerce-product-gallery__image {
	display: block;
	width: 100%;
}
body.single-product .jj-hero__gallery .woocommerce-product-gallery__image > a {
	display: block;
	width: 100%;
}
body.single-product .jj-hero__gallery .woocommerce-product-gallery__image img,
body.single-product .jj-hero__gallery .woocommerce-product-gallery__image picture > img {
	width: 100%;
	height: auto;
	display: block;
}
/* Vimeo iframe (pierwszy slide) — natural 16:9 ratio */
body.single-product .jj-hero__gallery iframe,
body.single-product .jj-hero__gallery .wc-product-gallery__video {
	width: 100%;
	aspect-ratio: 16 / 9;
	height: auto;
	display: block;
}

/* === Image overlay badges Step 1 polish (sale + charity) ================== */
body.single-product .jj-hero__gallery-overlays {
	position: absolute;
	inset: 6px 6px auto 6px;
	z-index: 5;
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	pointer-events: none;
	gap: 8px;
}
body.single-product .jj-img-badge {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 6px 10px;
	font-family: 'Bangers', cursive;
	font-size: 14px;
	letter-spacing: 0.05em;
	line-height: 1;
	border-radius: 4px;
	pointer-events: auto;
	white-space: nowrap;
}
body.single-product .jj-img-badge--sale {
	background: #EF4444;     /* czerwony — Berger Rule of 100 */
	color: #fff;
	border: 2px solid #050505;
	box-shadow: 2px 2px 0 0 rgba(0,0,0,0.4);
}
body.single-product .jj-img-badge--charity {
	background: #4BCF46;     /* jade-lightgreen */
	color: #050505;
	border: 2px solid #050505;
	box-shadow: 2px 2px 0 0 rgba(0,0,0,0.4);
	font-family: 'Nunito', system-ui, sans-serif;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.02em;
	white-space: nowrap;
}
@media ( min-width: 1024px ) {
	body.single-product .jj-hero__gallery-overlays {
		inset: 16px 16px auto 16px;
	}
	body.single-product .jj-img-badge {
		font-size: 18px;
		padding: 8px 14px;
	}
	body.single-product .jj-img-badge--charity {
		font-size: 13px;
	}
}

/* === Flexslider thumbs row (5 per row, kompaktowo) ======================== */
body.single-product .jj-hero__gallery .flex-control-thumbs {
	margin: 4px 0 0 !important;
	padding: 0 !important;
	gap: 4px !important;
}
body.single-product .jj-hero__gallery .flex-control-thumbs li {
	width: calc( ( 100% - ( 4 * 4px ) ) / 5 );    /* 5 thumbs per row, gap 4px */
	margin: 0 !important;
}
body.single-product .jj-hero__gallery .flex-control-thumbs img {
	aspect-ratio: 1 / 1;
	object-fit: cover;
	width: 100% !important;
	height: auto !important;
}
body.single-product .jj-hero__gallery .flex-control-thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}
body.single-product .jj-hero__gallery .flex-control-thumbs li {
	width: calc( 20% - 7px );  /* 5 thumbs row */
	margin: 0;
}
body.single-product .jj-hero__gallery .flex-control-thumbs img {
	border-radius: 4px;
	border: 1px solid rgba( 255, 255, 255, 0.1 );
	cursor: pointer;
	opacity: 0.7;
	transition: opacity 200ms, border-color 200ms;
}
body.single-product .jj-hero__gallery .flex-control-thumbs img.flex-active,
body.single-product .jj-hero__gallery .flex-control-thumbs img:hover {
	opacity: 1;
	border-color: #FFD519;     /* jade-yellow */
}

/* === H1 Bangers brand ===================================================== */
body.single-product .jj-single-title {
	font-family: 'Bangers', cursive;
	font-size: clamp( 26px, 6vw, 40px );
	font-weight: 400;
	line-height: 1.1;
	letter-spacing: 0.02em;
	color: rgba( 255, 255, 255, 0.95 );
	margin: 0 0 8px;
	text-transform: none;
}

/* === Subtitle hook (postmeta _jj_subtitle) ================================= */
body.single-product .jj-single-subtitle {
	font-family: 'Nunito', system-ui, sans-serif;
	font-size: clamp( 14px, 1.6vw, 18px );
	font-weight: 500;
	line-height: 1.4;
	color: rgba( 255, 255, 255, 0.8 );
	margin: 0 0 16px;
}

/* === Rating row (helper jj_render_product_rating) ========================= */
body.single-product .jj-product-rating,
body.single-product .woocommerce-product-rating {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 12px;
	font-family: 'Nunito', system-ui, sans-serif;
}
body.single-product .jj-product-rating .star-rating,
body.single-product .woocommerce-product-rating .star-rating {
	color: #FFD519;          /* jade-yellow filled */
	font-size: 16px;
}
body.single-product .jj-product-rating a,
body.single-product .woocommerce-product-rating a,
body.single-product .jj-product-rating .woocommerce-review-link {
	color: #4BCF46;          /* jade-lightgreen jump-link */
	text-decoration: none;
	font-size: 13px;
}
body.single-product .jj-product-rating a:hover {
	text-decoration: underline;
}

/* === Marka „Marka: Jadę Ja" =============================================== */
body.single-product .jj-single-brand {
	font-family: 'Nunito', system-ui, sans-serif;
	font-size: 12px;
	color: #9CA3AF;
	margin: 8px 0 12px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
body.single-product .jj-single-brand strong {
	font-weight: 700;
	color: rgba( 255, 255, 255, 0.85 );
	text-transform: none;
	letter-spacing: 0;
	font-size: 14px;
}

/* === Pricing block (Nunito NIE Bangers — sesja 23 #3) ===================== */
body.single-product .jj-hero__pricing {
	margin: 8px 0 16px;
	padding: 0;
}
body.single-product .jj-hero__pricing .price {
	font-family: 'Nunito', system-ui, sans-serif;
	font-size: clamp( 22px, 4vw, 34px );
	font-weight: 700;
	line-height: 1.1;
	color: rgba( 255, 255, 255, 0.95 );
	display: inline-block;
}
body.single-product .jj-hero__pricing .price del,
body.single-product .jj-hero__pricing .price del .amount,
body.single-product .jj-hero__pricing .price del bdi {
	color: #9CA3AF !important;        /* gray-500 NEUTRAL anchor (FIX bug current jadeja) */
	text-decoration: line-through 2px;
	font-size: 65%;
	font-weight: 600;
	margin-right: 8px;
	opacity: 1;
}
body.single-product .jj-hero__pricing .price ins {
	color: #F87171;          /* red-400 sale (Material 3 dark theme) */
	text-decoration: none;
	background: transparent;
	font-weight: 700;
}
body.single-product .jj-hero__pricing .price ins .amount,
body.single-product .jj-hero__pricing .price ins bdi {
	color: inherit;
	background: transparent;
}

/* Omnibus PL (helper jj_render_product_omnibus) */
body.single-product .jj-hero__pricing .jj-product-omnibus,
body.single-product .jj-hero__pricing .iworks-omnibus {
	display: block;
	font-family: 'Nunito', system-ui, sans-serif;
	font-size: 12px;
	color: #9CA3AF;
	margin: 4px 0 0;
	line-height: 1.3;
}

/* === Discount Rules Pro plugin — discount bar + bulk table =============== */
/* Plugin renderuje awdr_discount_bar before article (woocommerce_before_single_product)
   ALBO bulk table w hero przez advanced_woo_discount_rules_load_discount_table. */

/* Discount bar (single message) — np. „Weź 3 i zgarnij -10%. Od 5 wjeżdża -20% 😉" */
body.single-product .awdr_discount_bar {
	display: flex !important;
	align-items: center !important;
	margin: 12px 0 !important;
	padding: 12px 16px !important;
	border-radius: 8px !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	line-height: 1.4 !important;
	background-color: #2F702D !important;
	color: #ffffff !important;
	max-width: 1280px;
	margin-left: auto !important;
	margin-right: auto !important;
}
body.single-product .awdr_discount_bar_content {
	width: 100%;
}
body.single-product .awdr_discount_bar_content strong {
	color: #FFD519 !important;
}

/* === Promo bar (`jj_render_single_promo_bar` — bulk discount single-line) === */
body.single-product .jj-promo-bar {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 12px 0 0;
	padding: 8px 12px;
	background: rgba( 75, 207, 70, 0.12 );
	border-left: 3px solid #4BCF46;
	border-radius: 6px;
	font-family: 'Nunito', sans-serif;
	font-size: 14px;
	font-weight: 700;
	color: #fff;
	line-height: 1.3;
}
body.single-product .jj-promo-bar .jj-svg {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	color: #4BCF46;
}
body.single-product .jj-promo-bar__text {
	flex: 1;
}

/* === Stock badge (wc_get_stock_html) ===================================== */
body.single-product .jj-hero__stock {
	margin: 12px 0 0;
}
body.single-product .jj-hero__stock .stock {
	display: inline-flex !important;
	align-items: center !important;
	gap: 8px !important;
	margin: 0 !important;
	padding: 8px 14px !important;
	border-radius: 6px !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
}
body.single-product .jj-hero__stock .stock.in-stock {
	background: rgba( 75, 207, 70, 0.12 ) !important;
	border: 1.5px solid #4BCF46 !important;
	color: #4BCF46 !important;
}
body.single-product .jj-hero__stock .stock.in-stock::before {
	content: '✓';
	font-weight: 900;
	color: #4BCF46;
	margin-right: 2px;
}
/* Dopisek o wysyłce (style.css, p.stock.in-stock::after) był #1b1b1b i jako osobna kolumna flex
   prawie niewidoczny na ciemnej ramce (2026-09-22). Teraz: komunikat w 1. linii, wysyłka w 2. linii
   pod tekstem, jasny kolor; twarda spacja w „24 h”. */
body.single-product .jj-hero__stock .stock.in-stock {
	display: grid !important;
	grid-template-columns: auto 1fr;
	column-gap: 8px !important;
	row-gap: 2px !important;
	align-items: baseline !important;
}
body.single-product .jj-hero__stock .stock.in-stock::before {
	margin-right: 0;
}
body.single-product .jj-hero__stock .stock.in-stock::after {
	grid-column: 2;
	content: "Wysyłka? Migusiem, w max 24\00a0h";
	color: rgba( 255, 255, 255, 0.88 );
	font-weight: 600;
}
body.single-product .jj-hero__stock .stock.available-on-backorder {
	background: rgba( 255, 213, 25, 0.12 ) !important;
	border: 1.5px solid #FFD519 !important;
	color: #FFD519 !important;
}
body.single-product .jj-hero__stock .stock.out-of-stock {
	background: rgba( 248, 113, 113, 0.12 ) !important;
	border: 1.5px solid #F87171 !important;
	color: #F87171 !important;
}

/* === Iconic switcher (Step 2) ============================================ */
body.single-product .jj-hero__variations {
	margin: 16px 0 8px;
}
body.single-product .jj-iconic-switcher {
	display: flex !important;
	flex-direction: column !important;
	gap: 8px !important;
	margin: 0 !important;
}
body.single-product .jj-iconic-switcher__label {
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 12px !important;
	font-weight: 700 !important;
	color: #9CA3AF !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase !important;
	margin: 0 !important;
}
body.single-product .jj-iconic-switcher__options {
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 12px !important;
	align-items: flex-start !important;
}
body.single-product .jj-iconic-option {
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	gap: 4px !important;
	padding: 0 !important;
	margin: 0 !important;
	background: transparent !important;
	border: 0 !important;
	text-decoration: none !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	color: rgba( 255, 255, 255, 0.85 ) !important;
	cursor: pointer;
	transition: transform 200ms;
	max-width: 96px;
}
body.single-product .jj-iconic-option:hover {
	transform: translateY( -2px );
	color: #4BCF46 !important;
}
body.single-product .jj-iconic-option--current {
	cursor: default;
	transform: scale( 1.05 );
	pointer-events: none;
}
body.single-product .jj-iconic-option--current:hover {
	transform: scale( 1.05 );
}
body.single-product .jj-iconic-option__thumb {
	display: block;
	position: relative;
	width: 80px;
	height: 80px;
	border-radius: 6px;
	overflow: hidden;
	border: 2px solid rgba( 255, 255, 255, 0.15 );
	background: #1a1a1a;
	transition: border-color 200ms, box-shadow 200ms;
}
body.single-product .jj-iconic-option:hover .jj-iconic-option__thumb {
	border-color: #4BCF46;
}
body.single-product .jj-iconic-option--current .jj-iconic-option__thumb {
	border: 3px solid #FFD519 !important;
	box-shadow: 0 0 0 2px rgba( 255, 213, 25, 0.25 );
}
body.single-product .jj-iconic-option--on-backorder .jj-iconic-option__thumb {
	border-color: #FB923C;     /* orange-400 — universal warning hue (distinct od yellow current i green available) */
}
body.single-product .jj-iconic-option--out-of-stock .jj-iconic-option__thumb {
	border-color: rgba( 248, 113, 113, 0.5 );
}
body.single-product .jj-iconic-option__thumb img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	display: block !important;
}
body.single-product .jj-iconic-option__check {
	position: absolute;
	top: 4px;
	right: 4px;
	width: 22px;
	height: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #FFD519;
	color: #050505;
	font-weight: 900;
	font-size: 13px;
	border-radius: 50%;
	border: 2px solid #050505;
	z-index: 2;
}
body.single-product .jj-iconic-option__overlay {
	position: absolute;
	inset: 0;
	background: rgba( 0, 0, 0, 0.55 );
	background-image: linear-gradient( 135deg, transparent 47%, rgba( 248, 113, 113, 0.85 ) 47%, rgba( 248, 113, 113, 0.85 ) 53%, transparent 53% );
	z-index: 1;
}
body.single-product .jj-iconic-option__name {
	font-size: 13px !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	text-align: center !important;
	color: rgba( 255, 255, 255, 0.92 ) !important;
	margin: 0 !important;
	max-width: 80px;
}
body.single-product .jj-iconic-option--current .jj-iconic-option__name {
	color: #FFD519 !important;
}
body.single-product .jj-iconic-option__badge {
	display: inline-block;
	font-size: 10px !important;
	font-weight: 800 !important;
	line-height: 1.2 !important;
	padding: 2px 6px !important;
	border-radius: 3px !important;
	background: rgba( 251, 146, 60, 0.18 ) !important;     /* orange-400 alpha */
	color: #FB923C !important;
	border: 1px solid #FB923C;
	white-space: nowrap;
	margin-top: 2px;
	text-transform: none !important;
	letter-spacing: 0;
}
body.single-product .jj-iconic-option__badge--oos {
	background: rgba( 248, 113, 113, 0.15 ) !important;
	color: #F87171 !important;
	border-color: #F87171;
}

/* === Variations + CTA placeholders ======================================= */
body.single-product .jj-hero__cta-placeholder {
	margin: 16px 0;
}

/* === iter3 fix: HARDENED override (Elementor Kit specifity battle) ========
   Elementor Pro button styling nadpisuje home-v2.css przez vyższą specyficity
   (`body.elementor-page button` z !important w Kit) → musimy walczyć !important.
   Layout PDP: HORIZONTAL (qty obok CTA) — summary col 521px wide ma miejsce.
*/
body.single-product .jj-hero__cta-placeholder .jj-add-wrap {
	display: flex !important;
	flex-direction: row !important;
	align-items: stretch !important;
	gap: 12px !important;
	width: 100% !important;
	max-width: 480px !important;
	margin: 0 !important;
	padding: 0 !important;
}
body.single-product .jj-hero__cta-placeholder .jj-qty-row {
	display: flex !important;
	align-items: stretch !important;
	flex: 0 0 auto !important;
	width: auto !important;
	max-width: 180px !important;
	height: 52px !important;
	border: 2px solid #050505 !important;
	background: #050505 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	overflow: hidden;
}
body.single-product .jj-hero__cta-placeholder .jj-qty-btn {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex: 0 0 48px !important;
	width: 48px !important;
	min-width: 48px !important;
	height: auto !important;
	background: #1a1a1a !important;
	color: #FFD519 !important;
	border: 0 !important;
	border-radius: 0 !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 1.4rem !important;
	font-weight: 900 !important;
	line-height: 1 !important;
	padding: 0 !important;
	margin: 0 !important;
	cursor: pointer !important;
	-webkit-user-select: none;
	user-select: none;
	transition: background 0.15s !important;
	box-shadow: none !important;
}
body.single-product .jj-hero__cta-placeholder .jj-qty-btn:hover {
	background: #FFD519 !important;
	color: #050505 !important;
}
body.single-product .jj-hero__cta-placeholder .jj-qty-input {
	display: block !important;
	flex: 1 1 auto !important;
	width: 100% !important;
	min-width: 0 !important;
	height: auto !important;
	background: #050505 !important;
	color: #ffffff !important;
	border: 0 !important;
	border-left: 1px solid #333 !important;
	border-right: 1px solid #333 !important;
	border-radius: 0 !important;
	text-align: center !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-weight: 700 !important;
	font-size: 1.1rem !important;
	padding: 0 !important;
	margin: 0 !important;
	box-shadow: none !important;
	-moz-appearance: textfield !important;
	appearance: textfield !important;
	-webkit-appearance: textfield !important;
}
body.single-product .jj-hero__cta-placeholder .jj-qty-input::-webkit-outer-spin-button,
body.single-product .jj-hero__cta-placeholder .jj-qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none !important;
	margin: 0 !important;
	display: none !important;
}
body.single-product .jj-hero__cta-placeholder .jj-add--simple,
body.single-product .jj-hero__cta-placeholder .jj-add {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex: 1 1 auto !important;
	width: auto !important;
	height: 52px !important;
	min-height: 52px !important;
	padding: 0 18px !important;
	margin: 0 !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-weight: 900 !important;
	font-size: 0.95rem !important;
	text-transform: uppercase !important;
	letter-spacing: 0.06em !important;
	line-height: 1.2 !important;
	background: #FFD519 !important;
	color: #050505 !important;
	border: 2px solid #050505 !important;
	border-radius: 0 !important;
	text-decoration: none !important;
	cursor: pointer !important;
	box-shadow: 4px 4px 0 0 #4BCF46 !important;
	transition: all 0.15s !important;
	white-space: nowrap;
}
body.single-product .jj-hero__cta-placeholder .jj-add--simple:hover,
body.single-product .jj-hero__cta-placeholder .jj-add:hover {
	background: #4BCF46 !important;
	color: #050505 !important;
	box-shadow: 4px 4px 0 0 #FFD519 !important;
	transform: translate( -2px, -2px ) !important;
}
body.single-product .jj-hero__cta-placeholder .jj-add--loading {
	background: #FFD519 !important;
	cursor: wait !important;
	pointer-events: none !important;
}
body.single-product .jj-hero__cta-placeholder .jj-add--added {
	background: #4BCF46 !important;
	color: #050505 !important;
	box-shadow: 4px 4px 0 0 #FFD519 !important;
}
body.single-product .jj-hero__cta-placeholder .jj-add--oos {
	background: #1a1a1a !important;
	color: #6b7280 !important;
	border-color: #333 !important;
	box-shadow: none !important;
	text-decoration: line-through !important;
}
/* Mobile <520px — qty input pełne wyśrodkowanie + smaller btn */
@media ( max-width: 519px ) {
	body.single-product .jj-hero__cta-placeholder .jj-qty-row {
		max-width: 140px !important;
	}
	body.single-product .jj-hero__cta-placeholder .jj-qty-btn {
		flex-basis: 40px !important;
		width: 40px !important;
		min-width: 40px !important;
	}
	body.single-product .jj-hero__cta-placeholder .jj-add--simple,
	body.single-product .jj-hero__cta-placeholder .jj-add {
		font-size: 0.85rem !important;
		padding: 0 12px !important;
	}
}

/* Fallback dla variable / out-of-stock — native WC form (gdy helper nie applicable) */
body.single-product .jj-hero__cta-placeholder form.cart {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: stretch;
	margin: 0;
}
body.single-product .jj-hero__cta-placeholder form.cart .button.single_add_to_cart_button {
	flex: 1 1 auto;
	min-height: 52px;
	padding: 0 24px;
	font-family: 'Nunito', sans-serif;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-size: 0.85rem;
	background: #FFD519;
	color: #050505;
	border: 2px solid #050505;
	box-shadow: 4px 4px 0 0 #4BCF46;
	cursor: pointer;
	transition: all 0.15s;
}
body.single-product .jj-hero__cta-placeholder form.cart .button.single_add_to_cart_button:hover {
	background: #4BCF46;
	color: #050505;
	box-shadow: 4px 4px 0 0 #FFD519;
	transform: translate( -2px, -2px );
}

/* === Trust strip placeholder iter4 (HARDENED scope vs Elementor Kit) ====== */
body.single-product .jj-hero__trust-placeholder {
	display: flex !important;
	flex-direction: column !important;
	gap: 10px !important;
	margin: 16px 0 0 !important;
	padding: 12px 0 !important;
	border-top: 1px solid rgba( 255, 255, 255, 0.1 ) !important;
	border-bottom: 1px solid rgba( 255, 255, 255, 0.1 ) !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	color: rgba( 255, 255, 255, 0.95 ) !important;
}

/* Step 3: delivery row z konkretną datą — primary signal, większy emphasis. */
body.single-product .jj-hero__trust-placeholder .jj-single-delivery-row {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 14px !important;
	margin: 0 !important;
	padding: 0 !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 13px !important;
	color: #ffffff !important;
	line-height: 1.3 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item--delivery-date {
	color: #4BCF46 !important;
	font-weight: 800 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item--delivery-date strong {
	color: #4BCF46 !important;
	font-weight: 800 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item--delivery-date .jj-svg {
	width: 18px !important;
	height: 18px !important;
}

/* Reuse spójność z sklep listing (home-v2.css) — replikacja z !important */
body.single-product .jj-hero__trust-placeholder .jj-artisan-row {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 14px !important;
	margin: 0 !important;
	padding: 0 !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	color: #ffffff !important;
	line-height: 1.3 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item {
	display: inline-flex !important;
	align-items: center !important;
	gap: 6px !important;
	color: #ffffff !important;
	font-weight: 600 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item--ship24 {
	color: #4BCF46 !important;
	font-weight: 800 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item--pl {
	color: #ffffff !important;
	font-weight: 700 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item--pl .jj-svg--flag-pl {
	width: 22px !important;
	height: 16px !important;
	fill: none !important;
}
body.single-product .jj-hero__trust-placeholder .jj-art-item .jj-svg {
	width: 16px !important;
	height: 16px !important;
	flex: 0 0 auto !important;
}

/* Payment row (BLIK + InPost) — kolory marek 1:1 z home-v2.css */
body.single-product .jj-hero__trust-placeholder .jj-payment-row {
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 8px !important;
	margin: 0 !important;
	padding: 0 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-pay-badge {
	display: inline-flex !important;
	align-items: center !important;
	padding: 4px 10px !important;
	font-family: 'Nunito', sans-serif !important;
	font-weight: 900 !important;
	font-size: 11px !important;
	letter-spacing: 0.05em !important;
	text-transform: uppercase !important;
	border: 1.5px solid #050505 !important;
	border-radius: 3px !important;
	-webkit-user-select: none;
	user-select: none;
	white-space: nowrap !important;
	line-height: 1.3 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-pay-blik {
	background: #E5006D !important;
	color: #ffffff !important;
}
body.single-product .jj-hero__trust-placeholder .jj-pay-inpost {
	background: #FFCC00 !important;
	color: #050505 !important;
}
/* PDP hero label „Zapłacisz:" przed logo (sesja 27 iter4 — context dla logo) */
body.single-product .jj-hero__trust-placeholder .jj-pay-row-label {
	font-family: 'Nunito', sans-serif !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	color: rgba( 255, 255, 255, 0.85 ) !important;
	line-height: 1.3 !important;
}
/* „lub szybkim przelewem" subtle text (sesja 27 iter5 — multi-method context) */
body.single-product .jj-hero__trust-placeholder .jj-pay-row-or {
	font-family: 'Nunito', sans-serif !important;
	font-size: 12px !important;
	font-weight: 500 !important;
	color: rgba( 255, 255, 255, 0.7 ) !important;
	line-height: 1.3 !important;
	font-style: italic;
}
/* PDP hero BLIK real logo wrapper-div (sesja 27 iter3 — symetryczny container) */
body.single-product .jj-hero__trust-placeholder .jj-pay-logo-wrap {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	background: #fff !important;
	padding: 5px 10px !important;
	border-radius: 5px !important;
	width: 72px !important;
	height: 32px !important;
	box-sizing: border-box !important;
	box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.2 );
	flex-shrink: 0;
}
body.single-product .jj-hero__trust-placeholder .jj-pay-logo {
	max-width: 100% !important;
	max-height: 100% !important;
	width: auto !important;
	height: auto !important;
	object-fit: contain !important;
	display: block !important;
}

/* Shipping row — anchor lowest + tooltip detail (sesja 26 Step 6 iter2) */
body.single-product .jj-hero__trust-placeholder .jj-ship-row {
	position: relative !important;
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 6px !important;
	margin: 0 !important;
	padding: 0 !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 13px !important;
	color: #4BCF46 !important;
	font-weight: 800 !important;
	line-height: 1.3 !important;
}
body.single-product .jj-hero__trust-placeholder .jj-ship-row .jj-svg {
	width: 18px !important;
	height: 18px !important;
	flex: 0 0 auto;
}
body.single-product .jj-hero__trust-placeholder .jj-ship-row__free {
	color: #FFD519 !important;
	font-weight: 800 !important;
}
/* Info button — inline link styling (spójny z trust strip: transparent bg, SVG + text) */
body.single-product .jj-ship-info {
	display: inline-flex !important;
	align-items: center !important;
	gap: 4px !important;
	margin-left: 4px !important;
	padding: 0 !important;
	background: transparent !important;
	color: #4BCF46 !important;
	border: 0 !important;
	border-radius: 0 !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
	cursor: pointer !important;
	transition: color 0.15s !important;
	flex: 0 0 auto !important;
	box-shadow: none !important;
	text-decoration: underline dotted #4BCF46 1px !important;
	text-underline-offset: 3px !important;
	-webkit-appearance: none !important;
	appearance: none !important;
}
body.single-product .jj-ship-info .jj-svg {
	width: 14px !important;
	height: 14px !important;
	color: inherit !important;
	flex: 0 0 auto;
}
body.single-product .jj-ship-info__label {
	display: inline-block;
}
body.single-product .jj-ship-info:hover,
body.single-product .jj-ship-info:focus,
body.single-product .jj-ship-info[aria-expanded="true"] {
	color: #FFD519 !important;
	text-decoration: underline solid #FFD519 1px !important;
	outline: none;
}

/* Desktop ≥1024 — CSS hover auto-show tooltip (no click needed) */
@media ( min-width: 1024px ) {
	body.single-product .jj-ship-info:hover + .jj-ship-tooltip,
	body.single-product .jj-ship-info:focus + .jj-ship-tooltip {
		display: block !important;
		visibility: visible !important;
	}
	body.single-product .jj-ship-info:hover + .jj-ship-tooltip[hidden],
	body.single-product .jj-ship-info:focus + .jj-ship-tooltip[hidden] {
		display: block !important;
	}
}
/* Tooltip — absolute positioned obok info button */
body.single-product .jj-ship-tooltip {
	position: absolute !important;
	z-index: 100;
	bottom: calc( 100% + 10px );
	right: 0;
	min-width: 240px;
	max-width: 280px;
	padding: 12px 14px !important;
	background: #050505 !important;
	border: 2px solid #FFD519 !important;
	border-radius: 8px !important;
	box-shadow: 0 4px 16px rgba( 0, 0, 0, 0.5 );
	font-family: 'Nunito', sans-serif !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	color: rgba( 255, 255, 255, 0.95 ) !important;
	line-height: 1.4 !important;
	pointer-events: auto;
	animation: jj-tooltip-in 200ms ease-out;
}
body.single-product .jj-ship-tooltip[hidden] {
	display: none !important;
}
@keyframes jj-tooltip-in {
	from { opacity: 0; transform: translateY( 4px ); }
	to   { opacity: 1; transform: translateY( 0 ); }
}
/* Arrow pointing to button */
body.single-product .jj-ship-tooltip::after {
	content: '';
	position: absolute;
	top: 100%;
	right: 6px;
	border: 8px solid transparent;
	border-top-color: #FFD519;
	width: 0;
	height: 0;
}
body.single-product .jj-ship-tooltip__title {
	display: block;
	color: #FFD519 !important;
	font-weight: 800 !important;
	margin-bottom: 6px !important;
	font-size: 13px !important;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
body.single-product .jj-ship-tooltip__list {
	list-style: none !important;
	padding: 0 !important;
	margin: 0 0 8px !important;
}
body.single-product .jj-ship-tooltip__list li {
	display: flex !important;
	justify-content: space-between !important;
	align-items: center !important;
	gap: 14px !important;
	padding: 10px 0 !important;
	border-bottom: 1px dashed rgba( 255, 255, 255, 0.12 ) !important;
	color: rgba( 255, 255, 255, 0.92 ) !important;
}
body.single-product .jj-ship-tooltip__list li:last-child {
	border-bottom: 0 !important;
}
body.single-product .jj-ship-tooltip__list li span:last-child {
	color: #FFD519 !important;
	font-weight: 800 !important;
	white-space: nowrap;
}
/* Logos dostawców w tooltip (sesja 27 iter4 — większe + drop nazwy + breathing) */
body.single-product .jj-ship-tooltip__list .jj-ship-logo {
	width: 92px !important;
	height: 44px !important;
	flex-shrink: 0 !important;
	object-fit: contain !important;
	background: #fff !important;
	padding: 6px 10px !important;
	border-radius: 6px !important;
	box-sizing: border-box !important;
	box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.18 );
}
body.single-product .jj-ship-tooltip__list .jj-ship-tooltip__price {
	margin-left: auto !important;
	font-size: 14px !important;
}
/* Tooltip większy padding overall (breathing) */
body.single-product .jj-ship-tooltip {
	padding: 16px !important;
	min-width: 240px !important;
}
body.single-product .jj-ship-tooltip__free {
	margin: 0 !important;
	padding: 6px 0 0 !important;
	border-top: 1px solid rgba( 75, 207, 70, 0.4 ) !important;
	color: #4BCF46 !important;
	font-size: 12px !important;
	text-align: center;
}

/* Mobile <520 — tooltip pełna szerokość */
@media ( max-width: 519px ) {
	body.single-product .jj-ship-tooltip {
		left: 0;
		right: 0;
		min-width: 0;
		max-width: none;
	}
	body.single-product .jj-ship-tooltip::after {
		right: auto;
		left: 50%;
		transform: translateX( -50% );
	}
}

/* === Charity badge (helper jj_render_single_charity) iter4 z kwotą 10% === */
body.single-product .jj-charity-badge {
	margin: 14px 0 0 !important;
	padding: 14px 16px !important;
	border: 2px solid #4BCF46 !important;
	border-radius: 8px !important;
	background: rgba( 75, 207, 70, 0.10 ) !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	line-height: 1.45 !important;
	color: rgba( 255, 255, 255, 0.95 ) !important;
}
body.single-product .jj-charity-badge p {
	margin: 0 !important;
	padding: 0 !important;
}
body.single-product .jj-charity-badge__line1 {
	font-size: 14px !important;
	color: rgba( 255, 255, 255, 0.95 ) !important;
}
body.single-product .jj-charity-badge__line1 strong {
	color: #4BCF46 !important;
	font-weight: 800 !important;
}
body.single-product .jj-charity-badge__line2 {
	font-size: 13px !important;
	margin-top: 4px !important;
	color: rgba( 255, 255, 255, 0.85 ) !important;
}
body.single-product .jj-charity-badge .jj-charity-amount {
	color: #FFD519 !important;
	font-size: 15px !important;
	font-weight: 900 !important;
}

/* === Hero hook elements (Step 4) ========================================= */
body.single-product .jj-buyer-qual {
	margin: 12px 0 8px !important;
	padding: 10px 12px !important;
	background: rgba( 255, 213, 25, 0.06 ) !important;
	border-left: 3px solid #FFD519 !important;
	border-radius: 0 4px 4px 0 !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 14px !important;
	line-height: 1.5 !important;
	color: rgba( 255, 255, 255, 0.92 ) !important;
}
body.single-product .jj-buyer-qual p {
	margin: 0 0 4px !important;
}
body.single-product .jj-buyer-qual p:last-child {
	margin-bottom: 0 !important;
}
body.single-product .jj-buyer-qual strong {
	color: #FFD519 !important;
	font-weight: 800 !important;
}

body.single-product .jj-disclaimer-props {
	margin: 8px 0 12px !important;
	padding: 8px 12px !important;
	background: rgba( 255, 255, 255, 0.04 ) !important;
	border-radius: 4px !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 12px !important;
	font-style: italic !important;
	color: rgba( 255, 255, 255, 0.7 ) !important;
	line-height: 1.4 !important;
}

/* === Content v2 — 5-accordion stack (Step 4) ============================= */
body.single-product .jj-content-v2 {
	max-width: 1280px;
	margin: 24px auto 0;
	padding: 0 16px;
}
@media ( min-width: 1024px ) {
	body.single-product .jj-content-v2 {
		padding: 0 24px;
	}
}

body.single-product .jj-content-section {
	margin: 0 0 12px !important;
	padding: 0 !important;
	border: 1.5px solid rgba( 255, 255, 255, 0.12 ) !important;
	border-radius: 8px !important;
	background: rgba( 255, 255, 255, 0.02 ) !important;
	overflow: hidden;
}

body.single-product .jj-content-section__header {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 12px !important;
	padding: 14px 16px !important;
	margin: 0 !important;
	cursor: pointer !important;
	user-select: none;
	font-family: 'Bangers', cursive !important;
	font-size: 18px !important;
	letter-spacing: 0.03em !important;
	color: rgba( 255, 255, 255, 0.95 ) !important;
	background: transparent !important;
	border: 0 !important;
	list-style: none !important;
	transition: background 200ms;
}
body.single-product .jj-content-section__header::-webkit-details-marker,
body.single-product .jj-content-section__header::marker {
	display: none !important;
	content: '' !important;
}
body.single-product .jj-content-section__header:hover {
	background: rgba( 255, 213, 25, 0.06 ) !important;
}

body.single-product .jj-content-section__label {
	flex: 1 1 auto;
}

body.single-product .jj-content-section__chevron {
	flex: 0 0 auto;
	font-size: 16px;
	color: #FFD519;
	transition: transform 200ms ease-out;
}
body.single-product .jj-content-section[open] .jj-content-section__chevron {
	transform: rotate( 180deg );
}

body.single-product .jj-content-section__body {
	padding: 16px !important;
	border-top: 1px solid rgba( 255, 255, 255, 0.08 ) !important;
	font-family: 'Nunito', sans-serif !important;
	font-size: 14px !important;
	line-height: 1.6 !important;
	color: rgba( 255, 255, 255, 0.9 ) !important;
}

/* Body content scaffold (lists, tables, headings, paragraphs) */
body.single-product .jj-content-section__body p {
	margin: 0 0 12px !important;
}
body.single-product .jj-content-section__body p:last-child {
	margin-bottom: 0 !important;
}
body.single-product .jj-content-section__body ul,
body.single-product .jj-content-section__body ol {
	margin: 0 0 12px !important;
	padding-left: 20px !important;
}
body.single-product .jj-content-section__body li {
	margin: 0 0 6px !important;
	color: rgba( 255, 255, 255, 0.92 ) !important;
}
body.single-product .jj-content-section__body strong {
	color: #FFD519 !important;
	font-weight: 800 !important;
}
body.single-product .jj-content-section__body h3,
body.single-product .jj-content-section__body h4 {
	font-family: 'Bangers', cursive !important;
	font-size: 16px !important;
	letter-spacing: 0.03em !important;
	color: rgba( 255, 255, 255, 0.95 ) !important;
	margin: 16px 0 8px !important;
	font-weight: 400 !important;
}
body.single-product .jj-content-section__body table {
	width: 100% !important;
	border-collapse: collapse !important;
	margin: 0 0 12px !important;
	font-size: 13px !important;
}
body.single-product .jj-content-section__body table th,
body.single-product .jj-content-section__body table td {
	padding: 8px 12px !important;
	text-align: left !important;
	border-bottom: 1px solid rgba( 255, 255, 255, 0.08 ) !important;
	vertical-align: top !important;
	color: rgba( 255, 255, 255, 0.92 ) !important;
}
body.single-product .jj-content-section__body table th {
	font-weight: 700 !important;
	color: #4BCF46 !important;
	width: 35%;
}
body.single-product .jj-content-section__body table tr:last-child th,
body.single-product .jj-content-section__body table tr:last-child td {
	border-bottom: 0 !important;
}
/* Safety row — subtle yellow accent (NIE alarmujące, delikatne attention) */
body.single-product .jj-content-section__body table tr.jj-dt-row--safety th,
body.single-product .jj-content-section__body table tr.jj-dt-row--safety td {
	background: rgba( 255, 213, 25, 0.05 ) !important;
}
body.single-product .jj-content-section__body table tr.jj-dt-row--safety th {
	color: #FFD519 !important;
}
body.single-product .jj-content-section__body table tr.jj-dt-row--safety th .fa-exclamation-triangle {
	color: #FFD519 !important;
	margin-right: 4px;
}
/* Desktop (≥601px) — table outer border + striped rows + większe padding cells */
@media ( min-width: 601px ) {
	body.single-product .jj-content-section__body table {
		border: 1px solid rgba( 255, 255, 255, 0.1 ) !important;
		border-radius: 8px !important;
		overflow: hidden !important;
	}
	body.single-product .jj-content-section__body table tr:nth-child(even) {
		background: rgba( 255, 255, 255, 0.02 ) !important;
	}
	body.single-product .jj-content-section__body table th,
	body.single-product .jj-content-section__body table td {
		padding: 12px 18px !important;
	}
}

/* Mobile (≤600px) — card-style rows: każdy wiersz osobna karta z bg+radius+padding */
@media ( max-width: 600px ) {
	body.single-product .jj-content-section__body table,
	body.single-product .jj-content-section__body table tbody,
	body.single-product .jj-content-section__body table tr,
	body.single-product .jj-content-section__body table th,
	body.single-product .jj-content-section__body table td {
		display: block !important;
		width: 100% !important;
		max-width: 100% !important;
	}
	body.single-product .jj-content-section__body table {
		border: 0 !important;
	}
	body.single-product .jj-content-section__body table tr {
		background: rgba( 255, 255, 255, 0.04 ) !important;
		border: 1px solid rgba( 255, 255, 255, 0.06 ) !important;
		border-radius: 8px !important;
		padding: 12px 14px !important;
		margin: 0 0 8px !important;
		border-bottom: 1px solid rgba( 255, 255, 255, 0.06 ) !important;
	}
	body.single-product .jj-content-section__body table tr:last-child {
		margin-bottom: 0 !important;
	}
	body.single-product .jj-content-section__body table tr.jj-dt-row--safety {
		background: rgba( 255, 213, 25, 0.06 ) !important;
		border: 1px solid rgba( 255, 213, 25, 0.25 ) !important;
		border-left: 3px solid #FFD519 !important;
	}
	body.single-product .jj-content-section__body table th {
		padding: 0 0 4px !important;
		border: 0 !important;
		font-size: 11px !important;
		text-transform: uppercase !important;
		letter-spacing: 0.06em !important;
	}
	body.single-product .jj-content-section__body table td {
		padding: 0 !important;
		border: 0 !important;
		font-size: 14px !important;
		line-height: 1.5 !important;
	}
}
body.single-product .jj-content-section__body a {
	color: #4BCF46 !important;
	text-decoration: underline;
}
body.single-product .jj-content-section__body a:hover {
	color: #FFD519 !important;
}

/* Desktop ≥1024px — longform sequential, all-expanded (NIE accordion) per blueprint sekcja 2.1 */
@media ( min-width: 1024px ) {
	body.single-product .jj-content-section {
		/* longform: header still clickable to collapse, ale default open */
	}
	body.single-product .jj-content-section[open] .jj-content-section__chevron {
		transform: rotate( 180deg );
	}
}

/* === Sticky CTA mobile (Step 5) ========================================== */
/* Fixed bottom bar — show after IntersectionObserver detects hero CTA out of viewport.
   Mobile-only (display:none ≥1024px). iOS safe-area-inset-bottom aware.
   Z-index 9000 (chat 9999, accessibility ~9997, sticky 9000 — pod a11y). */
body.single-product .jj-sticky-cta {
	position: fixed !important;
	left: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	bottom: env( safe-area-inset-bottom, 0 ) !important;     /* iOS notch/home indicator */
	z-index: 9000 !important;
	display: flex !important;
	align-items: stretch !important;
	gap: 6px !important;
	padding: 10px 12px !important;
	padding-right: calc( 12px + 56px ) !important;            /* rezerwa Pojo accessibility widget */
	background: rgba( 5, 5, 5, 0.96 ) !important;
	border-top: 2px solid #FFD519 !important;
	box-shadow: 0 -4px 16px rgba( 0, 0, 0, 0.4 ) !important;
	backdrop-filter: blur( 8px );
	-webkit-backdrop-filter: blur( 8px );
	transform: translateY( 100% );
	opacity: 0;
	transition: transform 200ms ease-out, opacity 200ms ease-out;
	pointer-events: none;
}
body.single-product .jj-sticky-cta[hidden] {
	display: none !important;
}
body.single-product .jj-sticky-cta[data-visible="1"] {
	transform: translateY( 0 );
	opacity: 1;
	pointer-events: auto;
}

body.single-product .jj-sticky-cta__price {
	flex: 0 0 auto !important;
	display: flex !important;
	align-items: center !important;
	justify-content: flex-start !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 16px !important;
	font-weight: 800 !important;
	color: #F87171 !important;          /* sale red default (matches hero pricing) */
	white-space: nowrap;
	min-width: 50px;
}
body.single-product .jj-sticky-cta__price .amount,
body.single-product .jj-sticky-cta__price .woocommerce-Price-amount {
	font-size: 16px !important;
	font-weight: 800 !important;
	color: #F87171 !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
}
body.single-product .jj-sticky-cta__price .woocommerce-Price-currencySymbol {
	color: inherit !important;
}

/* Qty row na sticky — full hardened !important scope (replikat iter3 hero qty,
   bo Elementor Kit override default button styling z pill border-radius + zielony bg). */
body.single-product .jj-sticky-cta .jj-qty-row {
	display: flex !important;
	flex-direction: row !important;
	align-items: stretch !important;
	flex: 0 0 auto !important;
	width: auto !important;
	max-width: 110px !important;
	height: 40px !important;
	border: 2px solid #050505 !important;
	background: #050505 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	overflow: hidden;
}
body.single-product .jj-sticky-cta .jj-qty-btn {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex: 0 0 32px !important;
	width: 32px !important;
	min-width: 32px !important;
	height: auto !important;
	background: #1a1a1a !important;
	color: #FFD519 !important;
	border: 0 !important;
	border-radius: 0 !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 16px !important;
	font-weight: 900 !important;
	line-height: 1 !important;
	padding: 0 !important;
	margin: 0 !important;
	cursor: pointer !important;
	box-shadow: none !important;
	transition: background 0.15s !important;
	-webkit-user-select: none;
	user-select: none;
}
body.single-product .jj-sticky-cta .jj-qty-btn:hover,
body.single-product .jj-sticky-cta .jj-qty-btn:active {
	background: #FFD519 !important;
	color: #050505 !important;
}
body.single-product .jj-sticky-cta .jj-qty-input {
	display: block !important;
	flex: 1 1 auto !important;
	width: 100% !important;
	min-width: 0 !important;
	height: auto !important;
	background: #050505 !important;
	color: #ffffff !important;
	border: 0 !important;
	border-left: 1px solid #333 !important;
	border-right: 1px solid #333 !important;
	border-radius: 0 !important;
	text-align: center !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-weight: 700 !important;
	font-size: 14px !important;
	padding: 0 !important;
	margin: 0 !important;
	box-shadow: none !important;
	-moz-appearance: textfield !important;
	appearance: textfield !important;
	-webkit-appearance: textfield !important;
}
body.single-product .jj-sticky-cta .jj-qty-input::-webkit-outer-spin-button,
body.single-product .jj-sticky-cta .jj-qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none !important;
	margin: 0 !important;
	display: none !important;
}

body.single-product .jj-sticky-cta__btn {
	flex: 1 1 auto !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-height: 40px !important;
	min-width: 0 !important;       /* allow flex shrink */
	padding: 0 8px !important;
	margin: 0 !important;
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-weight: 900 !important;
	font-size: 13px !important;
	text-transform: uppercase !important;
	letter-spacing: 0.04em !important;
	background: #FFD519 !important;
	color: #050505 !important;
	border: 2px solid #050505 !important;
	border-radius: 4px !important;
	text-decoration: none !important;
	box-shadow: 2px 2px 0 0 #4BCF46 !important;
	transition: all 0.15s !important;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Bardzo wąskie viewports (iPhone SE 320, fold devices 280) — qty smaller, label shorter */
@media ( max-width: 359px ) {
	body.single-product .jj-sticky-cta {
		padding-left: 8px !important;
		padding-right: calc( 8px + 52px ) !important;
		gap: 4px !important;
	}
	body.single-product .jj-sticky-cta .jj-qty-row {
		max-width: 88px !important;
	}
	body.single-product .jj-sticky-cta .jj-qty-btn {
		flex-basis: 26px !important;
		width: 26px !important;
		min-width: 26px !important;
		font-size: 14px !important;
	}
	body.single-product .jj-sticky-cta__btn {
		font-size: 12px !important;
		letter-spacing: 0.02em !important;
		padding: 0 6px !important;
	}
	body.single-product .jj-sticky-cta__price {
		font-size: 15px !important;
		min-width: 42px;
	}
}
body.single-product .jj-sticky-cta__btn:hover {
	background: #4BCF46 !important;
	box-shadow: 2px 2px 0 0 #FFD519 !important;
}
body.single-product .jj-sticky-cta__btn.jj-add--loading {
	background: #FFD519 !important;
	cursor: wait !important;
	pointer-events: none !important;
}
body.single-product .jj-sticky-cta__btn.jj-add--added {
	background: #4BCF46 !important;
	color: #050505 !important;
	box-shadow: 2px 2px 0 0 #FFD519 !important;
}

/* Desktop ≥1024px — floating card centered horizontally, max-width ~560px,
   ~24px nad dolem viewportu, border-radius, większe paddingi/fonty.
   Mobile bottom-0 full-width zostaje (≤1023px). */
@media ( min-width: 1024px ) {
	body.single-product .jj-sticky-cta {
		left: 50% !important;
		right: auto !important;
		bottom: 24px !important;
		bottom: calc( env( safe-area-inset-bottom, 0 ) + 24px ) !important;
		width: auto !important;
		max-width: 560px !important;
		min-width: 420px !important;
		padding: 12px 16px !important;        /* reset mobile Pojo a11y offset (Pojo bottom-right nie koliduje z centered card) */
		gap: 12px !important;
		border-top: 0 !important;
		border: 2px solid #FFD519 !important;
		border-radius: 10px !important;
		box-shadow: 0 8px 24px rgba( 0, 0, 0, 0.5 ) !important;
		transform: translate( -50%, calc( 100% + 48px ) );   /* hidden state — slide pod ekran */
	}
	body.single-product .jj-sticky-cta[data-visible="1"] {
		transform: translate( -50%, 0 );
	}
	body.single-product .jj-sticky-cta__price {
		font-size: 17px !important;
	}
	body.single-product .jj-sticky-cta__btn {
		font-size: 14px !important;
		padding: 0 14px !important;
		min-height: 44px !important;
	}
	body.single-product .jj-sticky-cta .jj-qty-row {
		height: 44px !important;
		max-width: 124px !important;
	}
	body.single-product .jj-sticky-cta .jj-qty-btn {
		flex: 0 0 36px !important;
		width: 36px !important;
		min-width: 36px !important;
		font-size: 18px !important;
	}
}

/* prefers-reduced-motion respect */
@media ( prefers-reduced-motion: reduce ) {
	body.single-product .jj-sticky-cta {
		transition: none !important;
	}
}

/* Body padding-bottom gdy sticky widoczny — żeby nie przykrywał ostatniego content (mobile + desktop) */
body.single-product .jj-content-v2 {
	padding-bottom: 80px !important;
}
@media ( min-width: 1024px ) {
	body.single-product .jj-content-v2 {
		padding-bottom: 100px !important;
	}
}

/* === Related products (Step 7 iter2) — minimal mini-card (user feedback)
 * Pełna sklep card była overkill dla PDP related — minimal = mniej dystrakcji,
 * czystszy scroll, klik prowadzi do PDP gdzie klient widzi full info. */
body.single-product .jj-related {
	max-width: 1280px;
	margin: 24px auto 0;
	padding: 0 16px;
}
@media ( min-width: 1024px ) {
	body.single-product .jj-related {
		padding: 0 24px;
		margin-top: 32px;
	}
}

body.single-product .jj-related__title {
	font-family: 'Bangers', cursive;
	font-size: clamp( 22px, 4vw, 32px );
	letter-spacing: 0.03em;
	color: rgba( 255, 255, 255, 0.95 );
	margin: 0 0 16px;
}

/* Mobile: horizontal scroll-snap z 1.5 visible — sklep convention */
body.single-product .jj-related__grid {
	display: flex;
	gap: 12px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	padding-bottom: 8px;
	margin: 0 -16px;
	padding-left: 16px;
	padding-right: 16px;
	scrollbar-width: none;
}
body.single-product .jj-related__grid::-webkit-scrollbar {
	display: none;
}

/* Desktop ≥1024 — grid 4-col, no scroll */
@media ( min-width: 1024px ) {
	body.single-product .jj-related__grid {
		display: grid;
		grid-template-columns: repeat( 4, minmax( 0, 1fr ) );
		gap: 16px;
		overflow: visible;
		margin: 0;
		padding: 0;
	}
}

/* Mini-card */
body.single-product .jj-related__card {
	flex: 0 0 60%;
	max-width: 60%;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 8px;
	background: rgba( 255, 255, 255, 0.03 );
	border: 1.5px solid rgba( 255, 255, 255, 0.1 );
	border-radius: 8px;
	text-decoration: none;
	color: inherit;
	transition: transform 200ms, border-color 200ms, background 200ms;
	overflow: hidden;
}
@media ( min-width: 480px ) {
	body.single-product .jj-related__card {
		flex-basis: 42%;
		max-width: 42%;
	}
}
@media ( min-width: 1024px ) {
	body.single-product .jj-related__card {
		flex-basis: auto;
		max-width: none;
	}
}
body.single-product .jj-related__card:hover {
	transform: translateY( -2px );
	border-color: #4BCF46;
	background: rgba( 75, 207, 70, 0.06 );
}

body.single-product .jj-related__thumb {
	position: relative;
	aspect-ratio: 1 / 1;
	width: 100%;
	background: #1a1a1a;
	border-radius: 4px;
	overflow: hidden;
}
body.single-product .jj-related__thumb img,
body.single-product .jj-related__thumb picture > img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	display: block !important;
}
body.single-product .jj-related__sale-badge {
	position: absolute;
	top: 6px;
	left: 6px;
	padding: 2px 6px;
	background: #EF4444;
	color: #ffffff;
	border: 1.5px solid #050505;
	border-radius: 3px;
	font-family: 'Bangers', cursive;
	font-size: 12px;
	letter-spacing: 0.03em;
	line-height: 1;
}

body.single-product .jj-related__name {
	font-family: 'Nunito', sans-serif;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.3;
	color: rgba( 255, 255, 255, 0.92 );
	margin: 0;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
body.single-product .jj-related__card:hover .jj-related__name {
	color: #4BCF46;
}

/* Hover hint — fade-in „Zobacz produkt →" (NN/g hover affordance, desktop only) */
body.single-product .jj-related__hint {
	display: block;
	font-family: 'Nunito', sans-serif;
	font-size: 11px;
	font-weight: 700;
	color: #4BCF46;
	letter-spacing: 0.02em;
	margin-top: 4px;
	opacity: 0;
	transform: translateX( -4px );
	transition: opacity 200ms ease-out, transform 200ms ease-out;
}
@media ( min-width: 1024px ) {
	body.single-product .jj-related__card:hover .jj-related__hint,
	body.single-product .jj-related__card:focus .jj-related__hint {
		opacity: 1;
		transform: translateX( 0 );
	}
	/* Mobile: hint hidden (no hover, klient widzi cursor:pointer + visual hover effect na tap) */
}
@media ( max-width: 1023px ) {
	body.single-product .jj-related__hint {
		display: none;
	}
}

body.single-product .jj-related__price {
	font-family: 'Nunito', sans-serif;
	font-size: 14px;
	font-weight: 800;
	color: rgba( 255, 255, 255, 0.95 );
	margin-top: auto;
}
body.single-product .jj-related__price del,
body.single-product .jj-related__price del bdi {
	color: #9CA3AF !important;
	text-decoration: line-through 1.5px;
	font-size: 11px !important;
	font-weight: 600 !important;
	margin-right: 4px;
}
body.single-product .jj-related__price ins,
body.single-product .jj-related__price ins bdi {
	color: #F87171 !important;
	background: transparent !important;
	text-decoration: none !important;
	font-weight: 800 !important;
}

/* === Rating link — hero zone (Step 8 iter2) ============================== */
/* Format inline: stars (overlay fill % avg/5) + (N opinii ↓) jump-link */
body.single-product .jj-rating-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 12px;
	padding: 0;
	font-family: 'Nunito', sans-serif;
	font-size: 14px;
	line-height: 1;
	color: rgba( 255, 255, 255, 0.92 );
	text-decoration: none;
	transition: color 200ms;
}
body.single-product .jj-rating-link:hover,
body.single-product .jj-rating-link:focus-visible {
	color: #4BCF46;
}
body.single-product .jj-rating-link__stars {
	position: relative;
	display: inline-block;
	font-size: 18px;
	line-height: 1;
	letter-spacing: 1px;
	white-space: nowrap;
}
body.single-product .jj-rating-link__stars-bg {
	color: rgba( 255, 255, 255, 0.22 );
}
body.single-product .jj-rating-link__stars-fill {
	position: absolute;
	top: 0;
	left: 0;
	overflow: hidden;
	color: #FFD519;
	white-space: nowrap;
}
body.single-product .jj-rating-link__count {
	font-size: 13px;
	font-weight: 700;
	color: rgba( 255, 255, 255, 0.78 );
}
body.single-product .jj-rating-link:hover .jj-rating-link__count,
body.single-product .jj-rating-link:focus-visible .jj-rating-link__count {
	color: #4BCF46;
}
body.single-product .jj-rating-link__count strong {
	color: #FFD519;
	font-weight: 800;
}

/* === Reviews section (Step 8 iter2 — replika /opinie/ skin) ============== */
body.single-product .jj-reviews {
	position: relative;
	margin: 32px 0 0;
	background: #080808;
	color: rgba( 255, 255, 255, 0.92 );
	overflow: hidden;
	isolation: isolate;
}
/* GODOJOM outline backdrop (replika /opinie/ hero) */
body.single-product .jj-reviews__godojom-bg {
	position: absolute;
	bottom: -40px;
	right: -40px;
	font-size: clamp( 8rem, 18vw, 18rem );
	color: transparent;
	-webkit-text-stroke: 1px rgba( 255, 255, 255, 0.06 );
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
	z-index: 0;
	letter-spacing: -0.04em;
	font-style: italic;
	text-transform: uppercase;
}
/* Header — chip + manga title + summary */
body.single-product .jj-reviews__header {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
	margin: 0 0 28px;
}
body.single-product .jj-reviews__chip {
	display: inline-block;
	padding: 4px 10px;
	background: #000;
	border: 2px solid #4BCF46;
	transform: skewX( -12deg );
	box-shadow: 4px 4px 0 0 rgba( 255, 255, 255, 0.95 );
	font-size: 13px;
	letter-spacing: 0.15em;
	text-transform: uppercase;
}
body.single-product .jj-reviews__chip > span {
	display: inline-block;
	transform: skewX( 12deg );
	color: #4BCF46;
}
body.single-product .jj-reviews__title {
	font-size: clamp( 28px, 6vw, 56px );
	line-height: 1.05 !important;
	font-style: italic;
	text-transform: uppercase;
	color: #fff;
	margin: 0;
	letter-spacing: 0.01em;
	text-shadow: 0 4px 12px rgba( 0, 0, 0, 0.6 );
}
body.single-product .jj-reviews__title-accent {
	color: #4BCF46;
	filter: drop-shadow( 0 0 15px rgba( 75, 207, 70, 0.4 ) );
}
body.single-product .jj-reviews__summary {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: 'Nunito', sans-serif;
}
body.single-product .jj-reviews__avg {
	font-size: 28px;
	font-weight: 900;
	color: #FFD519;
	line-height: 1;
}
body.single-product .jj-reviews__stars {
	position: relative;
	display: inline-block;
	font-size: 22px;
	line-height: 1;
	letter-spacing: 2px;
	white-space: nowrap;
}
body.single-product .jj-reviews__stars-bg {
	color: rgba( 255, 255, 255, 0.22 );
}
body.single-product .jj-reviews__stars-fill {
	position: absolute;
	top: 0;
	left: 0;
	overflow: hidden;
	color: #FFD519;
	white-space: nowrap;
}
body.single-product .jj-reviews__count {
	font-size: 15px;
	color: rgba( 255, 255, 255, 0.78 );
	font-weight: 600;
}

/* Histogram bars (≥10 reviews — Spiegel +12.5% conversion) */
body.single-product .jj-reviews__histogram {
	margin: 0 0 24px;
	max-width: 480px;
	font-family: 'Nunito', sans-serif;
}
body.single-product .jj-reviews__hist-row {
	display: grid;
	grid-template-columns: 36px 1fr 32px;
	align-items: center;
	gap: 8px;
	margin: 4px 0;
	font-size: 12px;
	color: rgba( 255, 255, 255, 0.85 );
}
body.single-product .jj-reviews__hist-label {
	font-weight: 700;
	color: #FFD519;
}
body.single-product .jj-reviews__hist-bar {
	display: block;
	height: 8px;
	background: rgba( 255, 255, 255, 0.1 );
	border-radius: 2px;
	overflow: hidden;
}
body.single-product .jj-reviews__hist-fill {
	display: block;
	height: 100%;
	background: linear-gradient( 90deg, #4BCF46, #FFD519 );
	transition: width 400ms ease-out;
}
body.single-product .jj-reviews__hist-count {
	text-align: right;
	font-weight: 600;
	color: rgba( 255, 255, 255, 0.6 );
}

/* Reviews list (Customer Reviews plugin shortcode `[cusrev_all_reviews]`) */
body.single-product .jj-reviews__list {
	margin: 0 0 16px;
	color: rgba( 255, 255, 255, 0.96 );
}
/* PDP context — drop search box + sort dropdown (overkill dla 2-5 reviews per produkt) */
body.single-product .jj-reviews__list .cr-ajax-search,
body.single-product .jj-reviews__list .cr-ajax-reviews-sort,
body.single-product .jj-reviews__list .cr-ajax-reviews-sort-div {
	display: none !important;
}
/* Czytelność: imię + data + treść — boost kontrastu (zlewały się z bg).
   Realne selektory: <span class="woocommerce-review__author"> + <time class="woocommerce-review__published-date">.
   Catch-all `.cr-meta-author-title *` zapewnia że inner span/div/a dziedziczą color. */
body.single-product .jj-reviews__list .cr-meta-author-title,
body.single-product .jj-reviews__list .cr-meta-author-title *,
body.single-product .jj-reviews__list .woocommerce-review__author,
body.single-product .jj-reviews__list .cr-meta-author-featured-date,
body.single-product .jj-reviews__list .cr-meta-author-featured-date *,
body.single-product .jj-reviews__list .woocommerce-review__published-date,
body.single-product .jj-reviews__list time,
body.single-product .jj-reviews__list .cr-comment-text,
body.single-product .jj-reviews__list .cr-comment-text * {
	color: #fff !important;
}
body.single-product .jj-reviews__list .woocommerce-review__author {
	font-weight: 800 !important;
	font-size: 15px !important;
}
body.single-product .jj-reviews__list .woocommerce-review__published-date,
body.single-product .jj-reviews__list time {
	color: rgba( 255, 255, 255, 0.7 ) !important;
	font-size: 13px !important;
}
body.single-product .jj-reviews__list .cr-comment-text {
	font-size: 15px !important;
	line-height: 1.55 !important;
}
/* Verified badge — zachowaj plugin styling (zielone tło + tekst) */
body.single-product .jj-reviews__list .woocommerce-review__verified {
	color: #4BCF46 !important;
}
body.single-product .jj-reviews__list .commentlist {
	list-style: none !important;
	padding: 0 !important;
	margin: 0 !important;
}
body.single-product .jj-reviews__list .comment {
	margin: 0 0 12px !important;
	padding: 12px !important;
	background: rgba( 255, 255, 255, 0.03 ) !important;
	border-radius: 6px !important;
	border: 1px solid rgba( 255, 255, 255, 0.08 ) !important;
	color: rgba( 255, 255, 255, 0.92 ) !important;
}
body.single-product .jj-reviews__list .comment-author,
body.single-product .jj-reviews__list .comment_container {
	color: rgba( 255, 255, 255, 0.92 ) !important;
}
body.single-product .jj-reviews__list .star-rating {
	color: #FFD519 !important;
}
body.single-product .jj-reviews__list .verified {
	background: rgba( 75, 207, 70, 0.18 ) !important;
	color: #4BCF46 !important;
	padding: 2px 6px !important;
	border-radius: 3px !important;
	font-size: 11px !important;
	font-weight: 700 !important;
	margin-left: 6px !important;
}

/* Empty state — 0 reviews */
body.single-product .jj-reviews__empty {
	padding: 16px;
	background: rgba( 255, 213, 25, 0.06 );
	border: 1.5px solid #FFD519;
	border-radius: 8px;
	font-family: 'Nunito', sans-serif;
	font-size: 14px;
	line-height: 1.5;
	color: rgba( 255, 255, 255, 0.92 );
}
body.single-product .jj-reviews__empty p {
	margin: 0 0 8px !important;
}
body.single-product .jj-reviews__empty strong {
	color: #FFD519;
}

/* CTA link do /opinie/ */
body.single-product .jj-reviews__cta,
body.single-product .jj-reviews__opinie-link {
	font-family: 'Nunito', sans-serif;
	font-size: 14px;
	font-weight: 700;
}
body.single-product .jj-reviews__opinie-link {
	color: #4BCF46;
	text-decoration: underline dotted #4BCF46 1px;
	text-underline-offset: 3px;
	transition: color 200ms;
}
body.single-product .jj-reviews__opinie-link:hover {
	color: #FFD519;
	text-decoration: underline solid #FFD519 1px;
}

/* === prefers-reduced-motion ============================================== */
@media ( prefers-reduced-motion: reduce ) {
	body.single-product .jj-hero__cta-placeholder .button.single_add_to_cart_button {
		transition: none;
	}
}

/* ============================================================
 * WOOSB BUNDLE PRODUCTS — single-product hero CTA styling (sesja 33 fix)
 * ============================================================
 * Plugin „WPC Product Bundles" (woo-product-bundle 8.5.0) renderuje
 * `.woosb-wrap` z `.woosb-products` (lista child products) + duplicate
 * `<p class="stock">` + native `<form class="cart">` w `jj-hero__cta-placeholder`.
 *
 * Cel: bundle items list wygląda jak hero PDP dark theme, button =
 * nasz yellow „DO KOSZYKA" (już handlowane w form.cart fallback line 749).
 */

/* WRAP — clean dark theme spójne z hero summary */
body.single-product .jj-hero__cta-placeholder .woosb-wrap {
	margin: 0 0 14px 0 !important;
	padding: 0 !important;
	background: transparent !important;
	border: 0 !important;
}

/* PRODUCTS LIST — drop UA list styling, ładny stack */
body.single-product .jj-hero__cta-placeholder .woosb-products {
	display: flex !important;
	flex-direction: column !important;
	gap: 10px !important;
	margin: 0 !important;
	padding: 12px !important;
	list-style: none !important;
	background: rgba( 5, 5, 5, 0.5 ) !important;
	border: 1px solid rgba( 255, 255, 255, 0.12 ) !important;
	border-radius: 4px !important;
}

body.single-product .jj-hero__cta-placeholder .woosb-products::before,
body.single-product .jj-hero__cta-placeholder .woosb-products::after {
	display: none !important;
	content: none !important;
}

/* SINGLE PRODUCT ROW — thumb + name/price + qty horizontal flex */
body.single-product .jj-hero__cta-placeholder .woosb-product {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	gap: 12px !important;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	border: 0 !important;
	color: #ffffff !important;
	list-style: none !important;
}
body.single-product .jj-hero__cta-placeholder .woosb-product::before,
body.single-product .jj-hero__cta-placeholder .woosb-product::after {
	display: none !important;
	content: none !important;
}

/* THUMB — 56px square, bezpośredni link na child product */
body.single-product .jj-hero__cta-placeholder .woosb-thumb {
	flex: 0 0 56px !important;
	width: 56px !important;
	height: 56px !important;
	margin: 0 !important;
	padding: 0 !important;
	border-radius: 4px !important;
	overflow: hidden !important;
	background: #1a1a1a !important;
}
body.single-product .jj-hero__cta-placeholder .woosb-thumb a,
body.single-product .jj-hero__cta-placeholder .woosb-thumb-ori,
body.single-product .jj-hero__cta-placeholder .woosb-thumb-new {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
}
body.single-product .jj-hero__cta-placeholder .woosb-thumb img {
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	object-fit: cover !important;
	display: block !important;
}

/* TITLE area (name + price) — column flex, takes remaining space */
body.single-product .jj-hero__cta-placeholder .woosb-title {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	min-width: 0 !important;
	gap: 2px !important;
	margin: 0 !important;
	padding: 0 !important;
	color: #ffffff !important;
}

body.single-product .jj-hero__cta-placeholder .woosb-name {
	font-family: 'Nunito', system-ui, sans-serif !important;
	font-size: 0.9rem !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
	color: #ffffff !important;
	margin: 0 !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	-webkit-line-clamp: 2 !important;
	display: -webkit-box !important;
	-webkit-box-orient: vertical !important;
}

body.single-product .jj-hero__cta-placeholder .woosb-name a {
	color: #ffffff !important;
	text-decoration: none !important;
	background: transparent !important;
}
body.single-product .jj-hero__cta-placeholder .woosb-name a:hover {
	color: #4BCF46 !important;
	text-decoration: underline !important;
}

/* PRICE w bundle item */
body.single-product .jj-hero__cta-placeholder .woosb-price,
body.single-product .jj-hero__cta-placeholder .woosb-price * {
	font-family: 'Nunito', sans-serif !important;
	font-size: 0.85rem !important;
	color: rgba( 255, 255, 255, 0.7 ) !important;
	margin: 0 !important;
}

/* QTY (jeśli plugin pokazuje qty per child) */
body.single-product .jj-hero__cta-placeholder .woosb-quantity {
	flex: 0 0 auto !important;
	margin-left: auto !important;
}
body.single-product .jj-hero__cta-placeholder .woosb-quantity input {
	width: 56px !important;
	height: 36px !important;
	padding: 4px 8px !important;
	background: #050505 !important;
	color: #ffffff !important;
	border: 1px solid #333 !important;
	border-radius: 0 !important;
	text-align: center !important;
	font-family: 'Nunito', sans-serif !important;
	font-weight: 700 !important;
	font-size: 0.95rem !important;
}

/* AVAILABILITY badge per child */
body.single-product .jj-hero__cta-placeholder .woosb-availability {
	font-size: 0.75rem !important;
	color: #4BCF46 !important;
	margin: 0 !important;
}

/* ALERT (woosb_alert) */
body.single-product .jj-hero__cta-placeholder .woosb-alert {
	margin: 8px 0 !important;
	padding: 8px 12px !important;
	background: rgba( 220, 38, 38, 0.15 ) !important;
	color: #fca5a5 !important;
	border: 1px solid rgba( 220, 38, 38, 0.4 ) !important;
	border-radius: 4px !important;
	font-size: 0.85rem !important;
}

/* DUPLICATE STOCK BADGE — plugin renderuje `<p class="stock">` po woosb-wrap.
   Nasze hero ma już .jj-hero__stock wcześniej. Hide. */
body.single-product .jj-hero__cta-placeholder p.stock {
	display: none !important;
}

/* MOBILE — bundle row stays compact */
@media ( max-width: 519px ) {
	body.single-product .jj-hero__cta-placeholder .woosb-product {
		gap: 10px !important;
	}
	body.single-product .jj-hero__cta-placeholder .woosb-thumb {
		flex-basis: 48px !important;
		width: 48px !important;
		height: 48px !important;
	}
	body.single-product .jj-hero__cta-placeholder .woosb-name {
		font-size: 0.85rem !important;
	}
}

/* WOOSB — hide native plugin quantity wrap (mamy custom .jj-add-wrap z [- 1 +]) */
body.single-product .jj-hero__cta-placeholder form.cart > .quantity {
	display: none !important;
}
body.single-product .jj-hero__cta-placeholder form.cart > input.woosb-ids {
	display: none !important;
}


/* === GALLERY — klikalna z PhotoSwipe (sesja 45) =========================== */
body.single-product .woocommerce-product-gallery__image,
body.single-product .woocommerce-product-gallery__image a,
body.single-product .jadeja-video-slide {
	cursor: zoom-in !important;
}
/* Hide WC native trigger (lupka 🔍) — cala galeria klikalna teraz */
body.single-product .woocommerce-product-gallery__trigger {
	display: none !important;
}

/* === PHOTOSWIPE — force-show arrows + close na mobile ====================== */
/* Default PhotoSwipe v4 ukrywa strzalki/close na mobile (≤1024px) — zaklada swipe gesture.
   Ale Vimeo iframe przechwytuje touch → user nie moze swipowac na video slide.
   Wymuszamy widocznosc kontrolek nawigacji na mobile. Sesja 45 v4 fix. */
@media ( max-width: 1024px ) {
	.pswp__button--arrow--left,
	.pswp__button--arrow--right {
		display: block !important;
		visibility: visible !important;
		opacity: 0.85 !important;
		background-color: rgba( 0, 0, 0, 0.4 ) !important;
		border-radius: 4px !important;
		width: 50px !important;
		height: 80px !important;
		margin-top: -40px !important;
	}
	.pswp__button--arrow--left {
		left: 6px !important;
	}
	.pswp__button--arrow--right {
		right: 6px !important;
	}
	.pswp__top-bar {
		opacity: 1 !important;
		background: rgba( 0, 0, 0, 0.5 ) !important;
	}
	.pswp__button--close,
	.pswp__button--fs,
	.pswp__counter {
		opacity: 1 !important;
		visibility: visible !important;
	}
}
