/*
Theme Name: FSH
Theme URI: https://kk.mobilny-fryzjer.pl/
Description: Motyw sklepu Football Second Hand. Motyw potomny dla Hello Elementor – układ strony (nagłówek, stopka, szablony WooCommerce) budowany w Elementor Pro Theme Builder.
Author: FSH
Version: 1.0.0
Template: hello-elementor
Text Domain: fsh
Requires PHP: 7.4
Tested up to: 6.7
*/

/* ==========================================================================
   Ustawienia bazowe – uzupełnienie tego, co wcześniej dawała Astra.
   Właściwy wygląd nagłówka/stopki/treści pochodzi z Elementor Pro + kit globalny.
   ========================================================================== */

:root {
	--fsh-max-width: 1200px;
	--fsh-text: #f2f2f2;
	--fsh-bg: #000000;
	--fsh-muted: #9aa0a6;
	--fsh-border: #262626;
	--fsh-accent: #e11d2a;
	--fsh-font: 'Teko', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

	/* WooCommerce ma WŁASNE zmienne CSS (fiolet #720eec jako "primary", zieleń,
	   złoto/oliwka jako "highlight" itd.) używane w całym jego core CSS
	   (gwiazdki ocen, znaczniki "Sprzedano", focus na polach, komunikaty,
	   przyciski) – nadpisujemy je RAZ tutaj zamiast gonić każdy element osobno. */
	--woocommerce: #e11d2a;
	--wc-green: #e11d2a;
	--wc-red: #ff5c5c;
	--wc-orange: #e11d2a;
	--wc-blue: #e11d2a;
	--wc-primary: #e11d2a;
	--wc-primary-text: #ffffff;
	--wc-secondary: #101014;
	--wc-secondary-text: #ffffff;
	--wc-highlight: #e11d2a;
	--wc-highligh-text: #ffffff;
	--wc-content-bg: #101014;
	--wc-subtext: rgba(255,255,255,.6);
	--wc-destructive: #ff5c5c;
}

/* Czarne tło wyjściowe na całej stronie + Teko globalnie (cały serwis) */
html, body {
	color: var(--fsh-text);
	background-color: var(--fsh-bg);
	/* siatka bezpieczeństwa na poziomym scrollu strony – Hello Elementor
	   sam ustawia body{overflow-x:clip}, ale dokładamy hidden+100% na obu,
	   żeby żaden przyszły element (bez własnego zabezpieczenia) nie potrafił
	   rozciągnąć całej strony w poziomie */
	overflow-x: hidden;
	max-width: 100%;
}
body,
button, input, select, textarea,
p, li, a, span, div, blockquote, figcaption, label, th, td,
.elementor-widget-container,
.elementor h1, .elementor h2, .elementor h3, .elementor h4, .elementor h5, .elementor h6,
h1, h2, h3, h4, h5, h6 {
	font-family: var(--fsh-font);
}
.elementor-section,
.e-con,
.elementor-widget-wrap {
	background-color: transparent;
}

/* Elementor "boxed" content width spójny z poprzednim układem */
.e-con {
	--container-max-width: var(--fsh-max-width);
}

/* Domyślny tytuł strony Hello Elementor (Koszyk/Zamówienie/Moje konto – strony
   WooCommerce bez własnego szablonu Elementora) – bez tej reguły dziedziczył
   przygaszony, niski kontrast (wyglądał "wygaszony" na czarnym tle). */
.page-header .entry-title {
	color: #fff; font-weight: 700; text-transform: uppercase; letter-spacing: .02em;
}

/* Linki – czytelny stan podstawowy i hover */
a {
	color: inherit;
	text-decoration: none;
}
a:hover {
	text-decoration: underline;
}

/* WooCommerce – drobne wyrównanie siatki, dopóki nie przejmie tego kit Elementora */
.woocommerce ul.products,
.woocommerce-page ul.products {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 28px;
}
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

@media (max-width: 1024px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(3, 1fr);
	}
}
@media (max-width: 767px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products {
		grid-template-columns: repeat(2, 1fr);
		gap: 16px;
	}
}

/* Komunikaty WooCommerce */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	border-top-color: var(--fsh-accent);
}

/* ==========================================================================
   Nagłówek FSH – czarne tło, większe logo, mega menu (wzorzec kickback.pl).
   Paleta: czarny / czerwony / biały.
   ========================================================================== */

:root {
	--fsh-red: #e11d2a;
	--fsh-header-gutter: 40px;
}
/* Na mobile 40px marginesu z każdej strony (konsola na głównej, panel
   sklepu, karta produktu – wszystkie liczą się z tej samej zmiennej)
   niepotrzebnie zjadało miejsce na wąskim ekranie; węższy margines daje
   filtrom/tytułom realnie więcej przestrzeni. */
@media (max-width: 767px) {
	:root { --fsh-header-gutter: 16px; }
}

/* --- Baza: czarny nagłówek, białe teksty ------------------------------------ */
#fsh-header {
	position: relative;
	background: #000 !important;
}

/* Zbity nagłówek – kasujemy domyślny 20px „gap" Elementora między paskiem
   górnym a paskiem menu oraz pionowy padding kontenera nagłówka. */
#fsh-header.e-con {
	--gap: 0px;
	--row-gap: 0px;
	--column-gap: 0px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-block-start: 0px;
	--padding-block-end: 0px;
	gap: 0 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}
#fsh-header .elementor-element-4c6fc68 {
	--padding-top: 4px;
	--padding-bottom: 4px;
}
/* Ten kontener (logo + nav + ikony) ma w Elementorze na sztywno ustawione
   flex_wrap:"nowrap" BEZ osobnej wartości dla mobile/tablet – więc na wąskim
   ekranie logo+menu+ikony nigdy się nie łamały do nowej linii, tylko wychodziły
   poza szerokość ekranu (poziomy scroll całej strony, "nic się nie mieści").
   Elementor sam potrafi to przełączać przez zmienną --flex-wrap-mobile, ale
   jawny --flex-wrap:nowrap ustawiony na tym elemencie ma wyższą specyficzność
   niż globalna reguła .e-con.e-flex w @media(max-width:767px), więc nigdy nie
   wygrywał – prościej i pewniej nadpisać wprost flex-wrap. */
@media (max-width: 1024px) {
	#fsh-header .elementor-element-4c6fc68 { flex-wrap: wrap !important; row-gap: 10px !important; }
	/* PRAWDZIWA przyczyna łamania się wiersza logo/menu/ikon na 2 linie:
	   ".fsh-nav { width:100% }" (reguła dla desktopu, żeby wyśrodkować pełną
	   listę menu) nadawała elementowi nav (na mobile to tylko mały burger)
	   hipotetyczny rozmiar "100% wiersza" JESZCZE PRZED liczeniem zawijania –
	   przez to nav nigdy nie mieścił się obok loga i szedł do nowej linii,
	   ciągnąc za sobą kolumnę ikon. Na mobile nav ma być tak wąski jak jego
	   treść (sam burger). */
	.fsh-nav { width: auto !important; }
}

/* Nagłówek na pełną szerokość ekranu, treść z bocznym marginesem */
#fsh-header > .e-con-inner,
#fsh-header .elementor-element-7d6c79a,
#fsh-header .elementor-element-4c6fc68 {
	max-width: 100% !important;
}
#fsh-header a { text-decoration: none; }
#fsh-header a:hover { text-decoration: none; }

/* Logo – bez tła, tylko delikatny hover */
#fsh-header .elementor-widget-image img {
	background: transparent;
	transition: transform .18s ease, filter .18s ease;
}
#fsh-header .elementor-widget-image a:hover img { transform: scale(1.04); }

/* Ikony po prawej: wyszukiwarka, konto, koszyk – biały kolor, czerwony hover */
#fsh-header .elementor-search-form__icon,
#fsh-header .elementor-search-form__toggle,
#fsh-header #fsh-account .elementor-button-icon i,
#fsh-header #fsh-cart a,
#fsh-header #fsh-cart .elementor-button-icon,
#fsh-header .elementor-menu-cart__toggle .elementor-button-text,
#fsh-header .elementor-menu-cart__toggle .elementor-button-icon {
	color: #fff !important;
	fill: #fff !important;
}

#fsh-header #fsh-account:hover .elementor-button-icon i,
#fsh-header .elementor-search-form__toggle:hover,
#fsh-header .elementor-menu-cart__toggle:hover .elementor-button-icon { color: var(--fsh-red) !important; }

/* Ikony akcji (lupa / konto / koszyk) – JEDEN spójny zestaw.
   Domyślnie FontAwesome (lupa/user) + eicon Elementora (koszyk) = 3 różne
   kroje. Podmieniamy wszystkie na jednolity zestaw linii (styl Lucide),
   renderowany jako maska SVG na oryginalnym <i> (glif fonta ukryty). */
#fsh-header #fsh-search .elementor-search-form__toggle {
	--e-search-form-toggle-size: 21px;
	--e-search-form-toggle-background-color: transparent;
	--e-search-form-toggle-border-width: 0;
}
#fsh-header #fsh-search .elementor-search-form__toggle i,
#fsh-header #fsh-account .elementor-button-icon i,
#fsh-header #fsh-cart .elementor-button-icon i {
	display: block !important;
	flex: none !important;
	width: 21px !important;
	height: 21px !important;
	margin: 0 !important;
	padding: 0 !important;
	min-width: 0 !important;
	font-size: 0 !important;
	line-height: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background-color: currentColor !important;
	background-image: none !important;
	-webkit-mask: var(--fsh-ico) no-repeat center / 21px 21px;
	mask: var(--fsh-ico) no-repeat center / 21px 21px;
}
#fsh-header #fsh-search .elementor-search-form__toggle i::before,
#fsh-header #fsh-account .elementor-button-icon i::before,
#fsh-header #fsh-cart .elementor-button-icon i::before { content: none !important; }
#fsh-header #fsh-search .elementor-search-form__toggle i {
	--fsh-ico: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2711%27%20cy%3D%2711%27%20r%3D%277%27%2F%3E%3Cpath%20d%3D%27m21%2021-4.35-4.35%27%2F%3E%3C%2Fsvg%3E");
}
#fsh-header #fsh-account .elementor-button-icon i {
	--fsh-ico: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M19%2021v-2a4%204%200%200%200-4-4H9a4%204%200%200%200-4%204v2%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%277%27%20r%3D%274%27%2F%3E%3C%2Fsvg%3E");
}
#fsh-header #fsh-cart .elementor-button-icon i {
	--fsh-ico: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M6%202%203%206v14a2%202%200%200%200%202%202h14a2%202%200%200%200%202-2V6l-3-4Z%27%2F%3E%3Cpath%20d%3D%27M3%206h18%27%2F%3E%3Cpath%20d%3D%27M16%2010a4%204%200%200%201-8%200%27%2F%3E%3C%2Fsvg%3E");
}
#fsh-header #fsh-account .elementor-button-icon svg,
#fsh-header #fsh-cart .elementor-button-icon svg,
#fsh-header .elementor-search-form__toggle svg { width: 21px !important; height: 21px !important; }
/* Koszyk – bez ramki i bez „pudełka", padding jak przy pozostałych ikonach */
#fsh-header #fsh-cart .elementor-menu-cart__toggle {
	--toggle-button-border-width: 0;
	--toggle-button-hover-border-color: transparent;
	--toggle-icon-padding: 6px;
}
#fsh-header #fsh-cart .elementor-menu-cart__toggle .elementor-button,
#fsh-header #fsh-cart .elementor-menu-cart__toggle .elementor-button:hover {
	border: 0 !important;
	background: transparent !important;
}
#fsh-header #fsh-account .elementor-button,
#fsh-header #fsh-cart .elementor-menu-cart__toggle .elementor-button,
#fsh-header #fsh-search .elementor-search-form__toggle {
	padding: 7px !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0 !important;
	min-height: 0 !important;
	line-height: 0 !important;
}
#fsh-header #fsh-account .elementor-button-icon,
#fsh-header #fsh-cart .elementor-button-icon,
#fsh-header #fsh-search .elementor-search-form__icon {
	margin: 0 !important; padding: 0 !important;
	display: inline-flex; align-items: center; justify-content: center;
	width: 21px; height: 21px; line-height: 0;
}
/* Koszyk = sama ikona (bez ceny w nagłówku – była różnej „wielkości" od reszty) */
#fsh-header #fsh-cart .elementor-menu-cart__toggle .elementor-button-text { display: none !important; }
/* wspólne wyrównanie i odstępy w klastrze ikon */
#fsh-header #fsh-search,
#fsh-header #fsh-account,
#fsh-header #fsh-cart { display: flex; align-items: center; }

/* Wyszukiwarka pełnoekranowa – klik w lupę otwiera okno z polem frazy */
.elementor-search-form__container {
	background-color: rgba(0, 0, 0, .95) !important;
}
.elementor-search-form--skin-full_screen .elementor-search-form__input,
.elementor-search-form--skin-full_screen .elementor-search-form__input::placeholder {
	color: #fff !important;
}
.elementor-search-form--skin-full_screen .elementor-search-form__input {
	border-bottom: 2px solid var(--fsh-red) !important;
}
.elementor-search-form__container .dialog-close-button,
.elementor-search-form--skin-full_screen .elementor-search-form__submit { color: #fff !important; }
.elementor-search-form__container .dialog-close-button:hover { color: var(--fsh-red) !important; }
/* „X" do prawego górnego rogu ekranu – nie może nachodzić na pole wpisywania */
.elementor-search-form--skin-full_screen .elementor-search-form__container .dialog-lightbox-close-button {
	position: fixed !important;
	inset: clamp(16px,3vw,28px) clamp(16px,3vw,28px) auto auto !important;
	width: 44px; height: 44px;
	display: flex; align-items: center; justify-content: center;
	font-size: 26px;
}
.elementor-search-form--skin-full_screen .elementor-search-form__input {
	max-width: 820px; margin-inline: auto;
}
/* mobile: pole wyszukiwania nie może dotykać krawędzi ekranu */
@media (max-width: 1024px) {
	.elementor-search-form--skin-full_screen .elementor-search-form__container {
		padding-left: 20px !important; padding-right: 20px !important;
		box-sizing: border-box !important;
	}
	.elementor-search-form--skin-full_screen .elementor-search-form__input {
		padding-left: 12px !important; padding-right: 12px !important;
		box-sizing: border-box !important;
	}
}

/* Licznik koszyka – czerwony „bąbelek” (tylko liczba sztuk) */
#fsh-header span.elementor-menu-cart__items-indicator--bubble {
	background-color: var(--fsh-red) !important;
	color: #fff !important;
}
/* cena / subtotal w koszyku – bez czerwonego tła */
#fsh-header .elementor-menu-cart__toggle .elementor-button-text,
#fsh-header .elementor-menu-cart__subtotal,
#fsh-header .elementor-menu-cart__subtotal .woocommerce-Price-amount {
	background: transparent !important;
}

/* Rozwijany koszyk (side-cart) – domyślnie Elementor renderuje białe tło
   panelu (--cart-background-color: #fff) z tekstem dziedziczonym z globalnego
   `a{color:inherit}`/`body{color:#f2f2f2}`, czyli prawie biały tekst na
   białym tle – niewidoczny. Panel dostaje markowe czarne tło + czerwony
   akcent zamiast szarych domyślnych Elementora. */
#fsh-header #fsh-cart .elementor-menu-cart__container {
	background-color: rgba(0, 0, 0, .6) !important;
}
#fsh-header #fsh-cart .elementor-menu-cart__main {
	--cart-background-color: #101014;
	--cart-border-color: var(--fsh-red);
	--cart-border-style: solid;
	--cart-border-radius: 0;
	color: var(--fsh-text) !important;
	box-shadow: -10px 0 30px rgba(0, 0, 0, .5) !important;
	border-width: 0 0 0 3px !important;
}
#fsh-header #fsh-cart .elementor-menu-cart__close-button {
	--cart-close-button-color: var(--fsh-text);
	--cart-close-button-hover-color: var(--fsh-red);
}
#fsh-header #fsh-cart .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
	--empty-message-color: var(--fsh-muted);
}
#fsh-header #fsh-cart .elementor-menu-cart__product {
	--divider-color: var(--fsh-border);
	--product-variations-color: var(--fsh-muted);
}
#fsh-header #fsh-cart .elementor-menu-cart__product-name a {
	color: var(--fsh-text) !important;
}
#fsh-header #fsh-cart .elementor-menu-cart__product-name a:hover {
	color: var(--fsh-red) !important;
}
#fsh-header #fsh-cart .elementor-menu-cart__product-price {
	--product-price-color: var(--fsh-muted);
}
#fsh-header #fsh-cart .elementor-menu-cart__product-remove {
	--remove-item-button-color: var(--fsh-muted);
	--remove-item-button-hover-color: var(--fsh-red);
}
#fsh-header #fsh-cart .elementor-menu-cart__subtotal {
	--menu-cart-subtotal-color: #fff;
	--subtotal-divider-color: var(--fsh-border);
}
#fsh-header #fsh-cart .elementor-menu-cart__subtotal .woocommerce-Price-amount {
	color: var(--fsh-red) !important;
}
/* Obramowanie "Zobacz koszyk" NIE jest zwykłym border – zwykły clip-path ze
   wspólnej reguły ".elementor-button" (róg ścięty) ucina border na skosie,
   bo są na tym samym elemencie. Ten sam trik co pigułki filtrów: dwie
   nałożone, osobno przycięte warstwy (::before = kolor ramki, ::after =
   wypełnienie wsunięte o grubość ramki) dają ciągłą linię na całym,
   również ściętym, obwodzie. */
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
	--view-cart-button-background-color: transparent;
	--view-cart-button-text-color: #fff;
	--view-cart-button-hover-background-color: transparent;
	--view-cart-button-hover-text-color: #fff;
	position: relative;
	isolation: isolate;
	border: none !important;
}
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart::before,
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart::after {
	content: "";
	position: absolute;
	z-index: -1;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
}
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart::before {
	inset: 0;
	background: var(--fsh-red);
}
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart::after {
	inset: 1.5px;
	background: #101014;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 12.5px), calc(100% - 12.5px) 100%, 0 100%);
}
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover::after {
	background: var(--fsh-red);
}
#fsh-header #fsh-cart .elementor-menu-cart__footer-buttons .elementor-button--checkout {
	--checkout-button-background-color: var(--fsh-red);
	--checkout-button-text-color: #fff;
	--checkout-button-hover-background-color: #ff3b3b;
	--checkout-button-hover-text-color: #fff;
}

/* ikony social (FB/IG) w pasku górnym – odstęp między nimi, na każdej szerokości */
.fsh-topbar-social { display: inline-flex; align-items: center; gap: 18px; margin-left: 10px; }
.fsh-topbar-social a { color: #fff; font-size: 14px; line-height: 1; display: inline-flex; padding: 4px; }
.fsh-topbar-social a:hover { color: #000; }

/* ==========================================================================
   Układ nagłówka na mobile (na życzenie użytkownika, wrzesień 2026):
   – pasek usług (Sklep/Skup koszulek/Klejenie nadruków/Kontakt) zawsze w
     jednej linii u góry;
   – pod nim osobny wiersz: waluta + język + ikony social (FB/IG) – ten
     wiersz chowa się przy scrollu w dół (JS w functions.php dodaje klasę
     "fsh-scrolled" na <body>) i wraca przy scrollu w górę;
   – logo bez napisu (tylko odznaka) + burger + lupa/konto/koszyk w jednej
     linii pod spodem.
   ========================================================================== */
@media (max-width: 1024px) {
	/* ten sam próg co przycisk-hamburger (.fsh-nav__burger, widoczny
	   ≤1024px) – w zakresie 768–1024px burger już się pokazywał, ale napis
	   przy logo i pełne odstępy paska wciąż były te z desktopu, więc mimo
	   burgera cały wiersz dalej się nie mieścił w jednej linii. */
	#fsh-header .elementor-element-7d6c79a,
	#fsh-header .elementor-element-4c6fc68 {
		--padding-left: 16px !important; --padding-right: 16px !important;
		padding-left: 16px !important; padding-right: 16px !important;
	}
	#fsh-header .elementor-element-4c6fc68 {
		--gap: 10px !important; gap: 10px !important;
		/* logo z lewej, burger+ikony razem z prawej (blisko siebie) zamiast
		   3 elementów rozstrzelonych po całej szerokości przez space-between */
		--justify-content: flex-start !important; justify-content: flex-start !important;
	}
	#fsh-header .elementor-element-fshmeganav { margin-left: auto !important; }
	/* Desktopowa reguła menu-po-prawej ustawia ikonom flex:0 0 auto (żeby
	   nie rosły i nie pchały menu do środka) – na mobile to za sztywne:
	   przy wąskim ekranie ikony (bez możliwości skurczenia) nie mieściły się
	   już obok loga i burgera w jednej linii i spadały niżej mimo
	   flex-wrap. Na mobile menu to tylko mały burger (margin-left:auto
	   wyżej), więc ikony mogą bezpiecznie odzyskać flex-shrink. */
	#fsh-header .elementor-element-4c6fc68 > .elementor-element-774a544 {
		flex: 0 1 auto !important;
	}
	#fsh-header .elementor-element-774a544 { --gap: 10px !important; gap: 10px !important; }

	/* rząd 1: usługi – zawsze widoczne, zawsze w jednej linii (poziomy
	   scroll jako siatka bezpieczeństwa na bardzo wąskich ekranach zamiast
	   łamania na 2 linie) */
	#fsh-topbar-right { flex-wrap: wrap; row-gap: 6px; justify-content: center; }
	#fsh-topbar .fsh-topbar-services {
		flex: 1 1 100%; flex-wrap: nowrap; justify-content: center;
		overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
		gap: 6px; font-size: 11px !important;
	}
	#fsh-topbar .fsh-topbar-services::-webkit-scrollbar { display: none; height: 0; }
	#fsh-topbar .fsh-topbar-services a { white-space: nowrap; }
	/* "Sklep" zbędny na mobile (i tak jest sklepem) – chowamy link i "/" po nim */
	#fsh-topbar .fsh-topbar-services a:first-child,
	#fsh-topbar .fsh-topbar-services a:first-child + .sep { display: none; }

	/* rząd 2 (waluta/język/social) w pasku górnym – na mobile schodzi z paska
	   górnego całkowicie, bo ten sam zestaw jest teraz w .fsh-mobile-bottombar
	   (przyklejony do dołu ekranu, patrz niżej i wp_footer w functions.php) */
	#fsh-topbar-right .elementor-element-844a3f2,
	#fsh-topbar-right .elementor-element-fshtblang,
	#fsh-topbar-right .elementor-element-fshtbsoc { display: none !important; }

	/* logo: sama odznaka, bez napisu "FOOTBALL SECOND HAND" – oszczędza
	   miejsce, żeby logo + burger + lupa + konto + koszyk zmieściły się w
	   jednej linii bez łamania */
	#fsh-header .elementor-element-fshlogotxt { display: none !important; }
	/* logo (fshlogowrap) na sztywno tyle szerokości ile sama odznaka – nie
	   ma prawa się rozciągać i pchać reszty wiersza (ten sam footgun co
	   .fsh-nav wyżej: klasa "e-con-full" to tylko ustawienie content_width
	   WEWNĄTRZ kontenera, ale dla pewności blokujemy wprost jego własny
	   flex-grow/width jako dziecka wiersza nagłówka). */
	#fsh-header .elementor-element-fshlogowrap {
		flex: 0 0 auto !important; width: auto !important; max-width: none !important;
	}
}

/* Mobile: logo | burger + lupa+konto+koszyk w JEDNEJ linii. Grid zamiast
   flexa: Elementor ma dla tego wiersza/ikon --flex-wrap-mobile:wrap (ikony
   spadały pod spód), a wymuszony flex nowrap wypychał ikony poza ekran
   (html/body mają overflow-x:hidden, więc po prostu znikały). W gridzie
   kolumna loga to minmax(0,1fr) – to ona się kurczy, a burger i ikony
   zawsze mają swoje miejsce. Logo z lewej, burger tuż przed lupą. */
@media (max-width: 1024px) {
	#fsh-header .elementor-element-4c6fc68 {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) auto auto;
		grid-template-areas: "logo nav icons";
		align-items: center !important;
		column-gap: 4px !important;
	}
	#fsh-header .elementor-element-4c6fc68 > .elementor-element {
		width: auto !important; max-width: 100% !important; min-width: 0 !important;
		margin: 0 !important; align-self: center !important;
	}
	#fsh-header .elementor-element-4c6fc68 > .elementor-element-fshmeganav { grid-area: nav; }
	#fsh-header .elementor-element-4c6fc68 > .elementor-element-fshlogowrap { grid-area: logo; justify-self: start; }
	#fsh-header .elementor-element-4c6fc68 > .elementor-element-774a544 {
		grid-area: icons; justify-self: end;
		display: flex !important; flex-wrap: nowrap !important;
		align-items: center !important; gap: 4px !important;
		padding: 0 !important;
	}
	#fsh-header .fsh-nav__burger { margin: 0 !important; }
	#fsh-header .elementor-element-774a544 > .elementor-element {
		flex: 0 0 auto !important; width: auto !important; margin: 0 !important;
		align-self: center !important;
	}
}

/* ==========================================================================
   Nawigacja – własne mega menu  (.fsh-nav / .fsh-mega, shortcode [fsh_mega_menu])
   ========================================================================== */

/* Panel mega menu liczy się względem #fsh-header. NIE nadpisujemy tu
   position #fsh-header (to psuło sticky Elementora – „skakanie" strony).
   Zerujemy tylko elementy MIĘDZY nagłówkiem a panelem. */
#fsh-header { padding: 0 !important; margin: 0 !important; }
header.elementor-location-header,
.elementor-location-header > .elementor { margin: 0 !important; padding: 0 !important; }
#fsh-topbar > .elementor-widget-wrap,
#fsh-topbar > .e-con-inner { padding-top: 0 !important; padding-bottom: 0 !important; }
#fsh-header .elementor-element-4c6fc68,
#fsh-header .elementor-widget-shortcode,
#fsh-nav.elementor-widget,
#fsh-nav .elementor-widget-container,
.fsh-nav, .fsh-nav__list, .fsh-nav__item { position: static !important; }

/* ==========================================================================
   Pasek waluty/języka/social przyklejony do dołu ekranu – TYLKO mobile
   (na desktopie ten sam zestaw zostaje w pasku górnym bez zmian; oryginał
   w pasku górnym jest na mobile ukryty wyżej, display:none). Markup drukuje
   PHP w wp_footer (functions.php), sam kontener ".fsh-mobile-bottombar".
   ========================================================================== */
.fsh-mobile-bottombar { display: none; }
@media (max-width: 1024px) {
	.fsh-mobile-bottombar {
		display: flex; align-items: center; justify-content: center; gap: 14px;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
		background: #0a0a0a; border-top: 2px solid var(--fsh-red);
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
	}
	.fsh-mobile-bottombar select.wmc-nav,
	.fsh-mobile-bottombar .fsh-lang select {
		-webkit-appearance: none; -moz-appearance: none; appearance: none;
		box-sizing: border-box; height: 32px; margin: 0; letter-spacing: normal !important;
		-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
		background-color: #000 !important; color: #fff !important;
		border: 1px solid var(--fsh-red) !important; border-radius: 3px;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23e11d2a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
		background-repeat: no-repeat !important; background-position: right 12px center !important;
		cursor: pointer; font-family: var(--fsh-font); font-size: 13px; text-transform: uppercase;
		padding: 0 34px 0 11px;
	}
	.fsh-mobile-bottombar select.wmc-nav { width: 128px !important; }
	.fsh-mobile-bottombar .fsh-lang select { width: 60px !important; }
	.fsh-mobile-bottombar .fsh-topbar-social { gap: 14px; margin-left: 0; }
	.fsh-mobile-bottombar .fsh-topbar-social a { color: #fff; }
	.fsh-mobile-bottombar .fsh-topbar-social a:hover { color: var(--fsh-red); }
	/* odstęp na dole strony, żeby stały pasek nie zasłaniał ostatniej treści
	   (np. przycisku "Dodaj do koszyka" czy stopki) */
	body { padding-bottom: 56px; }
}

/* Menu po prawej, koło ikon: logo i ikony trzymają naturalną szerokość
   (flex:0 0 auto), a menu (margin-left:auto) zjada całą wolną przestrzeń po
   lewej, lądując tuż przed kolumną ikon. (Wcześniej logo+ikony miały równe
   1fr, co wyśrodkowywało menu — to była poprzednia wersja layoutu.) */
#fsh-header .elementor-element-4c6fc68 > .elementor-element-fshlogowrap,
#fsh-header .elementor-element-4c6fc68 > .elementor-element-774a544 { flex: 0 0 auto !important; }
#fsh-header .elementor-element-4c6fc68 > .elementor-widget-shortcode { flex: 0 0 auto; margin-left: auto; }
#fsh-nav.elementor-widget,
#fsh-nav .elementor-widget-container,
.fsh-nav { display: flex; align-items: center; }

.fsh-nav { width: auto; }
.fsh-nav__list {
	list-style: none; margin: 0; padding: 0;
	display: flex; align-items: center; gap: 2px;
	justify-content: center;            /* menu wyśrodkowane */
}
.fsh-nav__item { display: flex; align-items: center; }
/* cienka pionowa linia między pozycjami menu (bez wyróżnionych kafelków) */
.fsh-nav__item + .fsh-nav__item::before {
	content: ""; align-self: center;
	width: 1px; height: 15px; margin: 0 5px;
	background: rgba(255,255,255,.18);
}
.fsh-nav__item--hot::before,
.fsh-nav__item--premium::before { display: none; }
.fsh-nav__link {
	display: flex; align-items: center;
	padding: 14px 16px;
	font-family: var(--fsh-font);
	font-size: 20px; font-weight: 600;   /* menu 20px */
	letter-spacing: .04em; text-transform: uppercase;
	color: #fff; white-space: nowrap;
}
.fsh-nav__item:hover > .fsh-nav__link,
.fsh-nav__item.is-open > .fsh-nav__link { color: var(--fsh-red); }
.fsh-nav__burger, .fsh-nav__expand { display: none; }

@media (min-width: 1025px) and (max-width: 1500px) {
	.fsh-nav__link { padding-left: 11px; padding-right: 11px; font-size: 17px; }
}

/* Wyróżnione, lekko pulsujące kafelki w menu: HOT DEALS (czerwony) + PREMIUM (złoty) */
.fsh-nav__item--hot,
.fsh-nav__item--premium { align-self: center; }
.fsh-nav__item--premium { margin-left: 8px; }
.fsh-nav__item--hot > .fsh-nav__link,
.fsh-nav__item--premium > .fsh-nav__link {
	font-weight: 700; border-radius: 3px; padding: 4px 14px; line-height: 1.35;
	animation: fshTilePulse 2.6s ease-in-out infinite;
}
.fsh-nav__item--hot > .fsh-nav__link {
	color: #fff;
	background: #e11d2a;
	--tile-glow: 225,29,42;
}
.fsh-nav__item--hot:hover > .fsh-nav__link,
.fsh-nav__item--hot.is-open > .fsh-nav__link {
	color: #fff;
	background: #ff3947;
	animation: none;
}
.fsh-nav__item--premium > .fsh-nav__link {
	color: #1c1503;
	background: #d7a13c;
	--tile-glow: 215,161,60;
}
.fsh-nav__item--premium:hover > .fsh-nav__link,
.fsh-nav__item--premium.is-open > .fsh-nav__link {
	color: #1c1503;
	background: #e6b048;
	animation: none;
}

@keyframes fshTilePulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(var(--tile-glow,225,29,42), .55); }
	55%      { box-shadow: 0 0 0 7px rgba(var(--tile-glow,225,29,42), 0); }
}
@media (prefers-reduced-motion: reduce) {
	.fsh-nav__item--hot > .fsh-nav__link,
	.fsh-nav__item--premium > .fsh-nav__link { animation: none; }
}
@media (max-width: 1024px) {
	.fsh-nav__item--hot,
	.fsh-nav__item--premium { margin: 8px 20px; }
	.fsh-nav__item--hot > .fsh-nav__link,
	.fsh-nav__item--premium > .fsh-nav__link { display: inline-flex; }
}

/* --- PANEL mega (desktop) --- */
.fsh-mega,
.fsh-flatmenu {
	position: absolute; left: 0; right: 0; top: 100%;
	background: #0a0a0a;
	border-top: 2px solid var(--fsh-red);
	box-shadow: 0 30px 60px rgba(0,0,0,.5);
	opacity: 0; visibility: hidden; pointer-events: none;
	transform: translateY(-8px);
	transition: opacity .24s ease, transform .24s ease, visibility 0s linear .24s;
	z-index: 100;
}
.fsh-nav__item--mega:hover > .fsh-mega,
.fsh-nav__item--mega:hover > .fsh-flatmenu {
	opacity: 1; visibility: visible; pointer-events: auto;
	transform: translateY(0);
	transition: opacity .24s ease, transform .24s ease, visibility 0s;
}
/* „mostek" nad panelem – utrzymuje hover przy przejściu myszą z pozycji menu */
.fsh-mega::before,
.fsh-flatmenu::before {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 100%;
	height: 46px;
	pointer-events: none;
}
.fsh-nav__item--mega:hover > .fsh-mega::before,
.fsh-nav__item--mega:hover > .fsh-flatmenu::before { pointer-events: auto; }

/* płaski panel klubów (Bluzy / Kurtki / Akcesoria) – siatka linków bez podziału na ligi */
.fsh-flatmenu__inner {
	max-height: calc(100vh - 150px);
	overflow-y: auto;
	padding: 16px var(--fsh-header-gutter) 18px;
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 2px 28px;
}
.fsh-flatmenu__club {
	display: block; padding: 5px 0;
	font-size: 16px; line-height: 1.25; color: rgba(255,255,255,.72);
	border-bottom: 1px solid rgba(255,255,255,.06);
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fsh-flatmenu__club span { opacity: .5; margin-left: 3px; }
.fsh-flatmenu__club:hover {
	color: var(--fsh-red); padding-left: 5px;
	transition: padding .15s ease, color .15s ease;
}
.fsh-mega__inner {
	position: relative;
	min-height: 0;
	max-height: calc(100vh - 150px);
	padding: 10px 0 12px;
	overflow: hidden;
	background-image: linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.1));
	background-repeat: no-repeat;
	background-size: 1px calc(100% - 24px);
	background-position: 320px 12px;
}

/* lewa kolumna: ligi */
.fsh-mega__leagues {
	list-style: none; margin: 0; padding: 0; width: 320px;
	max-height: calc(100vh - 174px); overflow-y: auto;
}
.fsh-mega__league { position: static; }
.fsh-mega__league-link {
	display: flex; align-items: center; justify-content: space-between; gap: 10px;
	padding: 6px var(--fsh-header-gutter);
	font-family: var(--fsh-font);
	font-size: 16px; font-weight: 600; line-height: 1.2;
	letter-spacing: .04em; text-transform: uppercase;
	color: #fff;
	border-bottom: 1px solid rgba(255,255,255,.06);
}
.fsh-mega__chevron { opacity: .4; font-size: 16px; line-height: 1; }
.fsh-mega__league:hover > .fsh-mega__league-link { background: rgba(255,255,255,.06); color: var(--fsh-red); }
.fsh-mega__league:hover > .fsh-mega__league-link .fsh-mega__chevron { opacity: 1; color: var(--fsh-red); }

/* prawa część: kluby wybranej ligi – styka się z lewą kolumną (brak martwej strefy) */
.fsh-mega__panel {
	position: absolute;
	left: 320px;
	right: var(--fsh-header-gutter);
	top: 10px; bottom: 12px;
	padding-left: 40px;
	display: none;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: max-content;
	gap: 0 28px;
	align-content: start;
	overflow-y: auto;
}
.fsh-mega__leagues > .fsh-mega__league:first-child > .fsh-mega__panel { display: grid; }
.fsh-mega__leagues:hover > .fsh-mega__league:first-child:not(:hover) > .fsh-mega__panel { display: none; }
.fsh-mega__league:hover > .fsh-mega__panel { display: grid; }

.fsh-mega__club, .fsh-mega__all {
	display: block; padding: 3.5px 0;
	font-size: 16px; line-height: 1.25; color: rgba(255,255,255,.72);
	border-bottom: 1px solid rgba(255,255,255,.06);
}
.fsh-mega__club:hover, .fsh-mega__all:hover {
	color: var(--fsh-red); padding-left: 5px;
	transition: padding .15s ease, color .15s ease;
}
.fsh-mega__all {
	grid-column: 1 / -1; margin-top: 7px; border: 0;
	font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: #fff;
}

/* --- Mobile --- */
@media (max-width: 1024px) {
	/* !important wszędzie tutaj – wtyczkowy/motywowy reset `button{border:1px solid
	   #c36;padding:.5rem 1rem}` + hover/focus `background-color:#c36` (patrz notatka
	   przy globalnym resecie [type=button] wyżej w pliku) rozjeżdżał ten <button>
	   w duży różowo-czerwony prostokąt zamiast małej ikony-kwadratu. */
	.fsh-nav__burger {
		display: flex; flex-direction: column; align-items: center; justify-content: center;
		gap: 4px; flex: none !important; width: 40px !important; height: 40px !important;
		background: none !important; border: 0 !important; border-radius: 0 !important;
		padding: 8px !important; margin: 0 0 0 auto !important; cursor: pointer;
	}
	.fsh-nav__burger:hover, .fsh-nav__burger:focus { background: none !important; }
	.fsh-nav__burger span { width: 22px; height: 2px; background: #fff !important; flex: none; }
	/* position:fixed (nie absolute) – celowo, żeby rozwijana lista była
	   CAŁKOWICIE niezależna od nagłówka i jego przycisków (lupa/konto/koszyk):
	   fixed nie wchodzi w normalny flow i nie może "pociągnąć" za sobą ani
	   zmienić układu żadnego sąsiada we flexie nagłówka – tylko menu się
	   rozwija, reszta stoi w miejscu. "top" ustawia JS na realną wysokość
	   dolnej krawędzi #fsh-header w chwili otwarcia (patrz functions.php). */
	/* !important na position: wyżej w pliku jest starsza, bezwarunkowa (bez
	   media query) reguła ".fsh-nav, .fsh-nav__list, .fsh-nav__item {
	   position:static !important}" (dla pełnoszerokiego mega-menu na
	   desktopie) – bez !important tutaj ZAWSZE wygrywała ona, więc lista
	   NIGDY faktycznie nie była fixed/absolute, tylko static: po otwarciu
	   normalnie wciskała się w układ wiersza i spychała wszystko w dół. */
	/* flex-direction:row + flex-wrap zamiast column: każda normalna pozycja
	   menu ma flex-basis:100% (własny wiersz, jak dawniej), ale HOT DEALS +
	   PREMIUM (auto basis, bez wymuszonej pełnej szerokości) lądują razem w
	   jednej, wspólnej linii na końcu listy. */
	.fsh-nav__list {
		display: none;
		position: fixed !important; left: 0; right: 0; top: 100%;
		flex-direction: row; flex-wrap: wrap; align-items: stretch; gap: 0;
		background: #0a0a0a; border-top: 2px solid var(--fsh-red);
		max-height: 80vh; overflow-y: auto; z-index: 90;
	}
	.fsh-nav.is-open .fsh-nav__list { display: flex; }
	.fsh-nav__item + .fsh-nav__item::before { display: none; }
	.fsh-nav__item {
		flex: 1 1 100%; min-width: 0;
		border-bottom: 1px solid rgba(255,255,255,.08); position: relative;
	}
	.fsh-nav__item--hot, .fsh-nav__item--premium { flex: 1 1 auto; border-bottom: 0; }
	.fsh-nav__link { padding: 14px 20px; }
	/* !important wszędzie – ten sam footgun co przy .fsh-nav__burger: wtyczkowy
	   reset `button{border:1px solid #c36;color:#c36}` (patrz notatka wyżej w
	   pliku) prześwitywał jako czerwona ramka/plus na tym pustym <button>.
	   Sam glif "+"/"–" na życzenie użytkownika znika całkiem – strzałka
	   klikania w cały wiersz zostaje (przycisk nadal jest, tylko niewidoczny). */
	.fsh-nav__expand {
		display: block; position: absolute; right: 0; top: 0;
		width: 54px; height: 50px;
		background: none !important; border: 0 !important; box-shadow: none !important;
		cursor: pointer;
	}
	.fsh-nav__expand::before { content: none !important; }
	.fsh-mega,
	.fsh-flatmenu {
		position: static; opacity: 1; visibility: visible; pointer-events: auto;
		transform: none; box-shadow: none; border-top: 0; background: #000;
		display: none; z-index: auto;
	}
	.fsh-nav__item--mega.is-open > .fsh-mega,
	.fsh-nav__item--mega.is-open > .fsh-flatmenu { display: block; }
	.fsh-mega__inner { min-height: 0; padding: 0; background: none; }
	.fsh-flatmenu__inner {
		max-height: none; padding: 4px 20px 14px;
		grid-template-columns: 1fr 1fr;
	}
	.fsh-mega__leagues { width: 100%; }
	.fsh-mega__league-link { padding: 12px 32px; }
	/* Na mobile menu kończy się na 1 poziomie: KLUBOWE/REPREZENTACJI ->
	   lista lig/kontynentów, i to wszystko – dalsze rozwijanie do
	   pojedynczych klubów/krajów nie ma sensu na małym ekranie. Chevron
	   znika (nic już nie da się nim rozwinąć), więc tap w ligę/kontynent po
	   prostu nawiguje pod jej właściwy link zamiast otwierać podpanel. */
	.fsh-mega__chevron { display: none; }
	.fsh-mega__panel { display: none !important; }
}


/* ==========================================================================
   Pasek górny (nad menu) – styl jak kalanto.pl
   Lewa strona: promo. Prawa strona: skup / klejenie + waluta + język.
   Jedna czcionka i jeden rozmiar w całym pasku; pola waluty i języka
   mają identyczne pudełko i strzałkę w dół.
   ========================================================================== */
#fsh-topbar {
	background: #9c141d !important;
	border-bottom: 2px solid #000;
	--padding-top: 0px !important;
	--padding-bottom: 3px !important;
	padding-top: 0 !important;
}
/* zero górnego marginesu/odstępu nad całym nagłówkiem */
body { margin-top: 0 !important; }
.elementor-location-header { margin-top: 0 !important; padding-top: 0 !important; }

/* --- jedna typografia dla WSZYSTKIEGO w pasku (łącznie z <select>) --- */
#fsh-topbar,
#fsh-topbar a,
#fsh-topbar span,
#fsh-topbar p,
#fsh-topbar div,
#fsh-topbar li,
#fsh-topbar select,
#fsh-topbar option,
#fsh-topbar .wmc-nav,
#fsh-topbar .fsh-lang select {
	font-family: var(--fsh-font) !important;
	font-size: 13px !important;
	line-height: 1.3 !important;
	letter-spacing: .04em;
	text-transform: uppercase;
}
#fsh-topbar .elementor-widget-container { padding: 0 !important; }

#fsh-topbar .fsh-topbar-promo,
#fsh-topbar .fsh-topbar-services {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 0;
	font-weight: 700;
	color: #fff;
}
#fsh-topbar .fsh-topbar-services a { color: #fff; }
#fsh-topbar .fsh-topbar-services a:hover { color: #000; }
#fsh-topbar .sep { color: rgba(0,0,0,.4); }

/* prawy klaster: usługi + waluta + język w jednej linii */
#fsh-topbar-right { gap: 14px; align-items: center; }
#fsh-topbar-right .elementor-widget:not(:last-child) { margin: 0 !important; }
#fsh-topbar-right a { color: #fff !important; }
#fsh-topbar-right a:hover { color: #000 !important; }

/* wyzeruj opakowania wtyczki waluty – ramka ma być tylko na <select>.
   Ta sama para selektorów (waluta+język) żyje teraz w DWÓCH miejscach –
   pasku górnym (#fsh-topbar-right) i pasku dolnym na mobile
   (.fsh-mobile-bottombar) – bez tego drugi kontekst pokazywał domyślne,
   białe tło/ramkę wtyczki spod naszego stylu ("biała ramka spod języka"). */
#fsh-topbar-right .elementor-shortcode,
#fsh-topbar-right .woo-multi-currency,
#fsh-topbar-right .wmc-shortcode,
#fsh-topbar-right .wmc-currency,
#fsh-topbar-right .fsh-lang,
.fsh-mobile-bottombar .elementor-shortcode,
.fsh-mobile-bottombar .woo-multi-currency,
.fsh-mobile-bottombar .wmc-shortcode,
.fsh-mobile-bottombar .wmc-currency,
.fsh-mobile-bottombar .fsh-lang {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	box-shadow: none !important;
	display: inline-flex !important;
	align-items: center;
}

/* JEDNA definicja obu pól rozwijanych – identyczne pudełko + strzałka w dół */
#fsh-topbar-right select.wmc-nav,
#fsh-topbar-right .fsh-lang select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	box-sizing: border-box;
	height: 30px;
	margin: 0;
	padding: 0 34px 0 11px;
	/* select natywny błędnie liczy szerokość dla tekstu z letter-spacing/
	   text-transform:uppercase – tekst ("ZŁOTY POLSKI") wychodził poza pudełko
	   i nachodził na strzałkę w prawo (wyglądało jak "ptaszek" na literach);
	   zerujemy odstęp, a szerokość poniżej dostaje sztywną wartość zamiast
	   polegać na błędnym auto-liczeniu. */
	letter-spacing: normal !important;
	/* Chrome na Windows renderował tekst i strzałkę tego <select> subpixelowym
	   antyaliasingiem (ClearType), a przy kompozycji jako osobna warstwa GPU
	   (appearance:none + background-image + border-radius) kanały R/G/B na
	   krawędziach się rozjeżdżały ("tęczowy" tekst na screenach użytkownika) –
	   wymuszenie antyaliasingu w skali szarości to usuwa. */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	background-color: #000 !important;
	color: #fff !important;
	border: 1px solid var(--fsh-red) !important;
	border-radius: 3px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23e11d2a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: right 12px center !important;
	cursor: pointer;
}
/* Szerokość na sztywno zamiast auto: intrinsic width natywnego <select> był
   za wąski dla tekstu ("ZŁOTY POLSKI"/"EN"), przez co ostatnie litery
   chowały się pod strzałką. */
#fsh-topbar-right select.wmc-nav { width: 172px; }
#fsh-topbar-right .fsh-lang select { width: 74px; }
#fsh-topbar-right select.wmc-nav:hover,
#fsh-topbar-right .fsh-lang select:hover { filter: brightness(1.2); }
#fsh-topbar-right select.wmc-nav option,
#fsh-topbar-right .fsh-lang select option { background: #000; color: #fff; }

/* boczny/pływający przełącznik waluty – usunięty */
.woo-multi-currency.wmc-sidebar,
.woo-multi-currency.wmc-right,
.woo-multi-currency.wmc-left,
.wmc-fixed-position,
.wmc-sidebar-open,
#wmc-price-switcher { display: none !important; }

@media (max-width: 900px) {
	#fsh-topbar .fsh-topbar-promo { display: none; }
}

/* ukryj własny „pływak" GTranslate – używamy tylko jego JS */
.gtranslate_wrapper,
#gt_float_wrapper,
.gt_float_switcher { display: none !important; }

/* ==========================================================================
   Szybka wyszukiwarka na stronie głównej – [fsh_shop_filter]
   ========================================================================== */
#fsh-filterbar { border-top: 2px solid var(--fsh-red); }
.fsh-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 14px;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
}
.fsh-filter__field { display: flex; flex-direction: column; gap: 6px; flex: 1 1 180px; }
.fsh-filter__field--wide { flex: 2 1 280px; }
.fsh-filter__field label {
	font-family: var(--fsh-font);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: rgba(255,255,255,.65);
}
.fsh-filter select {
	width: 100%;
	height: 46px;
	padding: 0 14px;
	border: 1px solid rgba(255,255,255,.18);
	border-radius: 4px;
	background: #fff;
	color: #111;
	font-size: 14px;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23111' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
}
.fsh-filter__submit {
	height: 46px;
	padding: 0 30px;
	border: 0;
	border-radius: 4px;
	background: var(--fsh-red);
	color: #fff;
	font-family: var(--fsh-font);
	font-weight: 700;
	font-size: 13px;
	letter-spacing: .08em;
	text-transform: uppercase;
	cursor: pointer;
	transition: filter .15s ease;
}
.fsh-filter__submit:hover { filter: brightness(1.12); }
.fsh-filter__clear {
	height: 46px;
	display: inline-flex;
	align-items: center;
	padding: 0 8px;
	color: rgba(255,255,255,.6);
	font-size: 12px;
	letter-spacing: .06em;
	text-transform: uppercase;
}
.fsh-filter__clear:hover { color: #fff; text-decoration: none; }

@media (max-width: 767px) {
	.fsh-filter { gap: 10px; }
	.fsh-filter__field,
	.fsh-filter__field--wide { flex: 1 1 100%; }
	.fsh-filter__submit { flex: 1 1 100%; }
}

/* ==========================================================================
   Tekst wstępu pod "OSTATNIO DODANE" (widget cabeac8, klasa fsh-intro-text)
   ========================================================================== */
.fsh-intro-text,
.fsh-intro-text .elementor-widget-container {
	max-width: 900px !important;
	width: 100% !important;
	margin-inline: auto !important;
	text-align: center !important;
}
.fsh-intro-text,
.fsh-intro-text p {
	color: #fff;
	font-size: 20px;
	line-height: 1.5;
}
/* akapit "Autentyczność na pierwszym miejscu…" (pod nagłówkiem "Dlaczego warto")
   – dokładnie ta sama szerokość/wyśrodkowanie/rozmiar co tekst wstępu wyżej;
   te same reguły (!important), bo oba teksty siedzą w innych typach
   kontenerów Elementora (boxed vs full) o różnej własnej szerokości/paddingu. */
.elementor-element-8b3486b,
.elementor-element-8b3486b .elementor-widget-container {
	max-width: 900px !important;
	width: 100% !important;
	margin-inline: auto !important;
	text-align: center !important;
}
.elementor-element-8b3486b,
.elementor-element-8b3486b p {
	font-size: 20px;
}
@media (max-width: 767px) {
	.fsh-intro-text,
	.fsh-intro-text p { font-size: 16px; }
}

/* ==========================================================================
   Sekcja korzyści (dostawa / gwarancja / płatności) – styl jak fitwear
   ========================================================================== */
#fsh-usp { background: #0a0a0a !important; border-block: 1px solid rgba(255,255,255,.08); }
#fsh-usp .elementor-icon-box-wrapper,
#fsh-usp .elementor-image-box-wrapper { text-align: center; padding: 14px 24px; }
#fsh-usp .elementor-icon-box-icon { margin-bottom: 14px; }
#fsh-usp .elementor-icon-box-icon .elementor-icon,
#fsh-usp .elementor-icon-box-icon i {
	color: var(--fsh-red) !important;
	fill: var(--fsh-red) !important;
	font-size: 30px;
	background: transparent !important;
}
/* ikony jako grafiki z fitwear – biało-czerwone na czarnym tle */
#fsh-usp .elementor-image-box-img { margin: 0 auto 14px; }
#fsh-usp .elementor-image-box-img img {
	width: 52px;
	height: auto;
	filter: drop-shadow(0 0 0 transparent);
}
#fsh-usp .elementor-icon-box-title,
#fsh-usp .elementor-icon-box-title a,
#fsh-usp .elementor-image-box-title,
#fsh-usp .elementor-image-box-title a {
	color: #fff !important;
	font-family: var(--fsh-font);
	font-size: 14px !important;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	margin-bottom: 8px;
}
#fsh-usp .elementor-icon-box-description,
#fsh-usp .elementor-image-box-description {
	color: rgba(255,255,255,.55) !important;
	font-size: 13px;
	line-height: 1.6;
	max-width: 300px;
	margin: 0 auto;
}
/* pionowe linie między kolumnami */
#fsh-usp > .e-con-inner > .elementor-element + .elementor-element,
#fsh-usp > .elementor-element + .elementor-element {
	border-left: 1px solid rgba(255,255,255,.08);
}
@media (max-width: 767px) {
	#fsh-usp > .e-con-inner > .elementor-element + .elementor-element,
	#fsh-usp > .elementor-element + .elementor-element { border-left: 0; border-top: 1px solid rgba(255,255,255,.08); }
}

/* ==========================================================================
   „Konsola kolekcji" – hero strony głównej  [fsh_kolekcja]
   Skośny podział 50/50: panel filtra po lewej, slajder bannerów lig po prawej.
   ========================================================================== */
.fsh-kk {
	--kk-line: rgba(255,255,255,.13);
	--kk-line-2: rgba(255,255,255,.24);
	--kk-surface: #17171c;
	--kk-surface-2: #1f1e25;
	--kk-glow: rgba(225,29,42,.32);
	--kk-cut: clamp(44px,5vw,84px);
	position: relative;
	background: #050506;
	border-bottom: 1px solid var(--kk-line);
	color: #f5f4f6;
	overflow: hidden;
	overflow: clip visible;
}

/* ---- rama hero ---- */
/* Zdjęcie wypełnia całą sekcję hero; panel filtra pływa wyśrodkowany nad nim. */
.fsh-kk-hero {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	isolation: isolate;
	min-height: 500px;
	padding: clamp(36px,6vw,72px) var(--fsh-header-gutter);
}
/* nagłówek Elementora dostaje z-index:99 dopiero jako sticky (position:fixed) – bez tego
   podbicia popup filtra (mimo własnego z-index) chowałby się pod nim po scrollu */
.fsh-kk-hero.fsh-kk-modal-open { z-index: 100; }
/* Popup filtra siedzi w .fsh-kk-console (z-index:4 = własny kontekst
   nakładania), więc jego z-index:60 nie wychodził ponad rodzeństwo konsoli:
   dolny pasek z liczbą "koszulek czeka na Ciebie" (.fsh-kk-bottombar, 6)
   i licznik dropu (.fsh-kk-nextdrop, 10) wychodziły NAD popupem. Na czas
   otwartego popupu podbijamy całą konsolę ponad nie, a tło (backdrop)
   tuż pod nią – żeby przyciemniało też pasek i licznik. */
.fsh-kk-hero.fsh-kk-modal-open .fsh-kk-console { z-index: 30; }
.fsh-kk-hero.fsh-kk-modal-open .fsh-kk-backdrop { z-index: 20; }

/* badge odliczania do następnego dropu – prawy górny róg hero */
.fsh-kk-nextdrop {
	position: absolute; top: clamp(18px,3vw,32px); right: clamp(18px,3vw,32px);
	z-index: 10;
	display: flex; flex-direction: column; align-items: flex-end; gap: 2px;
	padding: 10px 16px;
	background: rgba(5,5,6,.72);
	border: 1px solid rgba(255,255,255,.16);
	border-right: 3px solid var(--fsh-red);
	border-radius: 3px;
	-webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
	box-shadow: 0 10px 30px rgba(0,0,0,.4);
}
.fsh-kk-nextdrop__label {
	font-family: var(--fsh-font); font-size: 13px; font-weight: 600;
	letter-spacing: .1em; text-transform: uppercase; color: #ff5a63;
}
.fsh-kk-nextdrop__timer {
	font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
	font-size: 22px; font-weight: 700; letter-spacing: .04em; color: #fff; line-height: 1.1;
}
.fsh-kk-nextdrop__sub {
	font-family: var(--fsh-font); font-size: 13px; letter-spacing: .02em; color: rgba(255,255,255,.6);
}
@media (max-width: 640px) {
	.fsh-kk-nextdrop { padding: 7px 12px; }
	.fsh-kk-nextdrop__timer { font-size: 18px; }
}

/* warstwa 1: slajder – zdjęcie na całą szerokość i wysokość hero */
.fsh-kk-slides { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.fsh-kk-slide {
	position: absolute; inset: 0; opacity: 0;
	transition: opacity .7s ease;
}
.fsh-kk-slide.is-on { opacity: 1; }
.fsh-kk-slide-link,
.fsh-kk-slide > img {
	position: absolute; inset: 0;
	display: block; width: 100%; height: 100%;
}
.fsh-kk-slide img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.fsh-kk-slide::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background:
		radial-gradient(120% 90% at 78% 10%, rgba(225,29,42,.14), transparent 55%),
		linear-gradient(180deg, rgba(6,6,8,.5) 0%, rgba(6,6,8,.4) 45%, rgba(6,6,8,.7) 100%);
}
/* tylko slajd aktywny łapie kliknięcia */
.fsh-kk-slide:not(.is-on) { pointer-events: none; }
.fsh-kk-slide--all { background: radial-gradient(120% 90% at 78% 10%, rgba(225,29,42,.14), transparent 55%), #08080a; }
.fsh-kk-slide--all::after { background: none; }

/* warstwa 2: wyśrodkowana treść, bez sztywnej ramki — tekst i pigułki filtra
   stoją swobodnie na zdjęciu (każda pigułka ma własne, miękkie tło),
   czytelność zapewnia cień tekstu zamiast jednej dużej, twardej karty */
.fsh-kk-console {
	position: relative; z-index: 4;
	pointer-events: none;
	width: 100%;
	max-width: 1230px;
	margin: 0 auto;
	padding: clamp(36px,4.5vw,60px) clamp(24px,4.5vw,60px);
	display: flex; flex-direction: column; align-items: center; text-align: center;
	gap: clamp(21px,2.7vw,30px);
}
/* konsola sama nie łapie kliknięć (żeby puste miejsca w jej layoucie nie blokowały
   strzałek nawigacji slajdów pod spodem) – tylko jej realne dzieci są klikalne */
.fsh-kk-console > * { pointer-events: auto; }

.fsh-kk-eyebrow {
	margin: 0; font-family: var(--fsh-font); font-size: 24px; letter-spacing: .18em;
	text-transform: uppercase; color: #ff5a63; display: flex; align-items: center; justify-content: center; gap: 15px;
	text-shadow: 0 2px 10px rgba(0,0,0,.7);
}
.fsh-kk-eyebrow::before,
.fsh-kk-eyebrow::after { content: ""; width: 39px; height: 2px; background: var(--fsh-red); }
.fsh-kk-title {
	margin: 0; font-weight: 700; text-transform: uppercase; line-height: 1.04;
	letter-spacing: .01em; color: #fff;
	/* stały 8.75rem nie skalował się w dół na telefonach/tabletach – tytuł
	   przelewał się poza ekran; clamp trzyma ten sam wygląd na desktopie
	   (min(...) osiąga 8.75rem dopiero od ok. 1550px szerokości) */
	font-size: clamp(2.6rem, 9vw, 8.75rem);
	text-shadow: 0 4px 18px rgba(0,0,0,.75);
}
.fsh-kk-sub {
	margin: 2px 0 0; font-size: clamp(54px,6.6vw,72px); font-weight: 500; color: rgba(255,255,255,.85);
	text-transform: uppercase; letter-spacing: .04em;
	text-shadow: 0 2px 10px rgba(0,0,0,.7);
}
.fsh-kk-sub .fsh-kk-n { color: var(--fsh-red); font-weight: 700; font-variant-numeric: tabular-nums; }

/* pasek filtrów – popovery (kompaktowe, jednoliniowe „pigułki")
   UWAGA: wszystkie <button> w konsoli są prefiksowane #fsh-kk, bo globalny reset
   wtyczki `[type=button],button{border:1px solid #c36;padding:.5rem 1rem;font-size:1rem}`
   ma tę samą wagę co selektor klasy i wygrywał kolejnością – stąd „za duże" kafelki. */
/* --kk-fw = realna szerokość paska filtrów, mierzona JS-em (syncFilterWidth) – dzięki temu
   „wyczyść" i wiersz wyniku/CTA są wyrównane co do piksela do lewej/prawej krawędzi filtrów,
   niezależnie od tego ile pigułek zmieści się w jednym rzędzie. */
/* pasek filtrów, "wyczyść" i wiersz wyniku ZAWSZE na pełną szerokość konsoli – stałe
   100% w czystym CSS, bez zależności od pomiaru JS (ten bywał niespójny w czasie). */
.fsh-kk-filterblock { display: flex; flex-direction: column; align-items: stretch; width: 100%; gap: 10px 27px; }
.fsh-kk-bar {
	display: flex; flex-wrap: nowrap; gap: 11px; align-items: center; justify-content: space-between;
	border-radius: 21px;
	padding: 0; width: 100%;
}
.fsh-kk-clearwrap { display: flex; justify-content: flex-end; width: 100%; }
/* 4 równe kolumny, zawsze w jednej linii – długie wartości (kilka lig/rozmiarów naraz)
   przycinają się elipsą w środku pigułki zamiast łamać wiersz na dwie linie */
.fsh-kk-pop { position: relative; flex: 1 1 0; min-width: 0; }
#fsh-kk .fsh-kk-pop-btn {
	display: flex; align-items: baseline; gap: 8px; cursor: pointer; width: 100%; min-width: 0;
	margin: 0; background: rgba(20,19,24,.85); border: 1px solid var(--kk-line-2); border-radius: 12px;
	padding: 11px 17px; font-size: 20px; line-height: 1.2; color: #fff; text-transform: none;
	letter-spacing: normal; box-shadow: 0 6px 18px rgba(0,0,0,.35); transition: border-color .15s;
}
#fsh-kk .fsh-kk-pop-btn:hover,
#fsh-kk .fsh-kk-pop.is-open .fsh-kk-pop-btn { background: rgba(20,19,24,.85); }
/* bez osobnej etykiety ("LIGA/KLUB:") – tylko aktualna wartość (domyślnie "Wszystko" /
   "Dowolny rozmiar" itp.), przycinana elipsą, żeby pigułka nigdy nie wypychała sąsiednich */
.fsh-kk-pop-txt { display: flex; align-items: baseline; min-width: 0; flex: 1 1 auto; overflow: hidden; }
.fsh-kk-pop-val {
	display: block; font-size: 20px; color: #fff; min-width: 0; flex: 1 1 auto;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fsh-kk-pop-car { color: var(--fsh-red); font-size: 17px; transition: transform .15s; flex: none; }
.fsh-kk-pop.is-open .fsh-kk-pop-car { transform: rotate(180deg); }
/* osobne, wyśrodkowane okno modalne (position:fixed, na środku viewportu) – NIE dropdown
   pod przyciskiem, tak jak modal filtrów na wakacje.pl / dev.kolonie-dla-dzieci.pl */
.fsh-kk-pop-panel {
	position: fixed; z-index: 60; top: 50%; left: 50%;
	min-width: 390px; width: min(92vw,460px); max-width: min(92vw,460px);
	max-height: min(80vh, 560px); overflow-y: auto;
	background: #121116; border: 1px solid var(--kk-line-2); border-top: 3px solid var(--fsh-red);
	border-radius: 15px; padding: 21px; box-shadow: 0 30px 80px rgba(0,0,0,.65);
	display: flex; flex-direction: column; gap: 15px;
	opacity: 0; transform: translate(-50%,-50%) scale(.96); pointer-events: none;
	transition: opacity .16s ease, transform .16s ease;
}
/* [hidden] w UA ma niższą wagę niż reguła klasy powyżej – jawnie chowamy zamknięte panele */
.fsh-kk-pop-panel[hidden] { display: none; }
.fsh-kk-pop.is-open .fsh-kk-pop-panel { opacity: 1; transform: translate(-50%,-50%) scale(1); pointer-events: auto; }
.fsh-kk-pop-head {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	font-family: var(--fsh-font); font-size: 20px; font-weight: 600; color: #fff;
	padding-bottom: 10px; border-bottom: 1px solid var(--kk-line); flex: none;
}
.fsh-kk-pop-foot { flex: none; padding-top: 4px; }
#fsh-kk .fsh-kk-pop-apply {
	appearance: none; margin: 0; width: 100%; cursor: pointer;
	background: var(--fsh-red); color: #fff; font-weight: 700; font-family: var(--fsh-font);
	text-transform: uppercase; letter-spacing: .05em; font-size: 17px; padding: 13px 20px;
	border: 0; border-radius: 10px; box-shadow: 0 8px 20px rgba(0,0,0,.35);
	transition: filter .15s;
}
#fsh-kk .fsh-kk-pop-apply:hover { filter: brightness(1.12); background: var(--fsh-red); }
#fsh-kk .fsh-kk-pop-close {
	appearance: none; margin: 0; background: none; border: 0; box-shadow: none;
	color: rgba(255,255,255,.6); font-size: 26px; line-height: 1; cursor: pointer;
	width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px;
	transition: color .15s, background .15s; flex: none;
}
#fsh-kk .fsh-kk-pop-close:hover { color: #fff; background: rgba(255,255,255,.08); }
/* przyciemnione tło pod otwartym popupem – wyraźnie odróżnia go od zwykłego dropdownu */
.fsh-kk-backdrop {
	position: fixed; inset: 0; z-index: 1;
	background: rgba(3,3,4,.45);
	-webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
	opacity: 0; transition: opacity .16s ease;
}
.fsh-kk-backdrop.is-on { opacity: 1; }
.fsh-kk-backdrop[hidden] { display: none; }
/* popup lig/klubów – dwie kolumny (ligi z lewej, kluby aktywnej ligi z prawej, jak panel
   KLUBOWE w mega menu), checkboxy w obu, wybór wielokrotny w każdej kolumnie niezależnie */
.fsh-kk-pop-panel--liga { padding: 16px; min-width: 0; width: min(92vw,680px); max-width: min(92vw,680px); }
.fsh-kk-liga-tools { display: flex; justify-content: flex-end; padding: 0 2px; }
#fsh-kk .fsh-kk-liga-all,
#fsh-shop-filters .fsh-kk-liga-all {
	appearance: none; background: none; border: 0; box-shadow: none; cursor: pointer;
	color: var(--fsh-red); text-decoration: underline; text-underline-offset: 3px;
	font-family: var(--fsh-font); font-size: 15px; padding: 0 0 6px;
}
#fsh-kk .fsh-kk-liga-all:hover,
#fsh-shop-filters .fsh-kk-liga-all:hover { color: #fff; background: none; }
.fsh-kk-liga-cols {
	display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: minmax(0,1fr); gap: 0;
	height: min(56vh, 440px);
	border: 1px solid var(--kk-line); border-radius: 12px; overflow: hidden;
}
.fsh-kk-liga-col {
	display: flex; flex-direction: column; gap: 2px;
	padding: 8px; overflow-y: auto; overflow-x: hidden; min-height: 0;
}
.fsh-kk-liga-col { scrollbar-width: thin; scrollbar-color: var(--fsh-red,#e11d2a) #000; }
.fsh-kk-liga-col::-webkit-scrollbar { width: 7px; }
.fsh-kk-liga-col::-webkit-scrollbar-track { background: #000; }
.fsh-kk-liga-col::-webkit-scrollbar-thumb { background: var(--fsh-red,#e11d2a); border-radius: 4px; }
.fsh-kk-liga-col::-webkit-scrollbar-thumb:hover { background: #ff2f3f; }
.fsh-kk-liga-col--left { background: rgba(255,255,255,.02); border-right: 1px solid var(--kk-line); }
.fsh-kk-liga-row {
	display: flex; align-items: center; gap: 10px;
	padding: 12px 10px; border-radius: 10px; cursor: pointer;
}
.fsh-kk-liga-row:hover { background: rgba(255,255,255,.06); }
.fsh-kk-liga-row.is-active { background: rgba(225,29,42,.14); }
.fsh-kk-liga-check {
	display: flex; align-items: center; gap: 10px; cursor: pointer; flex: 1;
	font-family: var(--fsh-font); font-size: 18px; color: #fff; min-width: 0;
}
.fsh-kk-liga-check input,
.fsh-kk-club-check input { accent-color: var(--fsh-red); width: 20px; height: 20px; cursor: pointer; flex: none; }
.fsh-kk-liga-count { color: rgba(255,255,255,.5); font-size: 14px; }
.fsh-kk-club-check {
	display: flex; align-items: center; gap: 10px; cursor: pointer;
	font-family: var(--fsh-font); font-size: 16px; color: rgba(255,255,255,.82);
	padding: 9px 8px; border-radius: 8px;
}
.fsh-kk-club-check:hover { background: rgba(255,255,255,.06); }
.fsh-kk-liga-empty { margin: 12px 8px; color: rgba(255,255,255,.45); font-size: 15px; }
.fsh-kk-chips { display: flex; flex-wrap: wrap; gap: 9px; }
#fsh-kk .fsh-kk-chip {
	appearance: none; margin: 0; background: transparent; border: 1px solid var(--kk-line-2);
	border-radius: 9px; padding: 10px 15px; cursor: pointer; color: rgba(255,255,255,.74);
	font-size: 20px; font-weight: 400; letter-spacing: normal; text-transform: none;
	line-height: 1.2; box-shadow: none; font-family: var(--fsh-font); transition: .14s;
}
#fsh-kk .fsh-kk-chip:hover { border-color: rgba(255,255,255,.55); color: #fff; background: transparent; }
#fsh-kk .fsh-kk-chip[aria-pressed="true"] { background: var(--fsh-red); border-color: var(--fsh-red); color: #fff; font-weight: 700; }

/* suwak epoki */
.fsh-kk-era-read { font-family: var(--fsh-font); font-size: 27px; color: #fff; display: flex; align-items: baseline; gap: 15px; }
.fsh-kk-era-read span { color: rgba(255,255,255,.55); font-size: 24px; letter-spacing: .06em; }
.fsh-kk-era-track { position: relative; height: 48px; }
.fsh-kk-era-track .fsh-kk-rail { position: absolute; left: 0; right: 0; top: 23px; height: 3px; background: var(--kk-line-2); }
.fsh-kk-era-track .fsh-kk-fill { position: absolute; top: 23px; height: 3px; background: var(--fsh-red); box-shadow: 0 0 10px var(--kk-glow); }
.fsh-kk-era-track input[type="range"] {
	position: absolute; left: 0; right: 0; top: 0; width: 100%; height: 48px; margin: 0;
	background: transparent; pointer-events: none; -webkit-appearance: none; appearance: none;
}
.fsh-kk-era-track input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none; appearance: none; pointer-events: auto;
	width: 23px; height: 23px; border-radius: 50%; background: #fff; border: 4px solid var(--fsh-red);
	cursor: grab; box-shadow: 0 0 0 6px #121116;
}
.fsh-kk-era-track input[type="range"]::-moz-range-thumb {
	pointer-events: auto; width: 20px; height: 20px; border-radius: 50%; background: #fff;
	border: 4px solid var(--fsh-red); cursor: grab;
}

/* wynik + CTA */
.fsh-kk-count-wrap { display: inline-flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.fsh-kk-count { font-weight: 800; font-size: clamp(2.85rem,5.4vw,3.9rem); color: var(--fsh-red); font-variant-numeric: tabular-nums; line-height: 1; text-shadow: 0 2px 10px rgba(0,0,0,.7); }
.fsh-kk-count-lab { color: rgba(255,255,255,.8); font-size: 24px; line-height: 1.3; text-shadow: 0 2px 10px rgba(0,0,0,.7); }
@media (min-width: 901px) {
	.fsh-kk-count-lab { white-space: nowrap; }
}
#fsh-kk a.fsh-kk-cta {
	margin: 0; cursor: pointer; background: var(--fsh-red); color: #fff; font-weight: 700;
	text-transform: uppercase; letter-spacing: .05em; font-size: 16px; padding: 12px 20px;
	border: 0; border-radius: 8px; display: inline-flex; align-items: center; gap: 8px;
	box-shadow: 0 8px 22px rgba(0,0,0,.4);
	transition: filter .15s, transform .1s;
}
#fsh-kk a.fsh-kk-cta:hover { filter: brightness(1.12); text-decoration: none; color: #fff; }
#fsh-kk a.fsh-kk-cta:active { transform: translateY(1px); }
.fsh-kk-arrow { font-family: var(--fsh-font); }
#fsh-kk .fsh-kk-reset {
	appearance: none; margin: 0; background: none; border: 0; border-radius: 0; cursor: pointer;
	color: rgba(255,255,255,.6); font-family: var(--fsh-font); font-size: 15px; font-weight: 400;
	letter-spacing: .02em; text-transform: none; text-decoration: underline;
	text-underline-offset: 3px; padding: 2px 0; box-shadow: none; text-shadow: 0 2px 10px rgba(0,0,0,.7);
}
#fsh-kk .fsh-kk-reset:hover { color: #fff; background: none; }
.fsh-kk.is-loading .fsh-kk-count { opacity: .5; }

/* wspólny pasek na samym dole hero: licznik / paginacja slajdów / CTA w jednej linii */
.fsh-kk-bottombar {
	position: absolute; left: 50%; bottom: clamp(20px,3vw,30px); transform: translateX(-50%); z-index: 6;
	width: 100%; max-width: 1230px; padding: 0 clamp(24px,4.5vw,60px);
	display: flex; align-items: center; justify-content: space-between; gap: 16px 28px;
}
/* .fsh-kk-bottombar to display:flex justify-content:space-between z 3
   dziećmi (licznik / snav / CTA) – gdy szerokość licznika zmieniała się
   wraz z liczbą koszulek (np. "1 481" → "223" → "—"), snav jako środkowy
   element flex przesuwał się razem z nim. position:absolute wyjmuje go z
   przepływu flex i przypina na stałe do środka paska (bottombar ma już
   position:absolute, więc jest kontekstem pozycjonowania), niezależnie od
   szerokości sąsiadów. Na mobile (≤900px, patrz niżej) wraca do statycznej
   pozycji w stosie pionowym. */
.fsh-kk-snav {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	display: flex; align-items: center; gap: 8px;
	background: rgba(6,6,8,.58); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
	border: 1px solid var(--kk-line); border-radius: 6px; padding: 6px 9px;
}
.fsh-kk-snav-tag { font-family: var(--fsh-font); font-size: 12px; letter-spacing: .02em; color: rgba(255,255,255,.72); }
.fsh-kk-snav-tag b { color: #ff5a63; font-weight: 400; }
.fsh-kk-seg { display: flex; gap: 3px; }
#fsh-kk .fsh-kk-seg-i {
	appearance: none; margin: 0; border: 0; padding: 0; width: 17px; height: 3px;
	min-width: 0; font-size: 0; box-shadow: none; background: var(--kk-line-2);
	border-radius: 3px; overflow: hidden; position: relative; cursor: pointer;
}
.fsh-kk-seg-i::after { content: ""; position: absolute; inset: 0; width: 0; background: var(--fsh-red); }
.fsh-kk-seg-i.is-done::after { width: 100%; }
.fsh-kk-seg-i.is-active::after { width: 100%; transition: width 6s linear; }
#fsh-kk .fsh-kk-sbtn {
	appearance: none; margin: 0; background: none; border: 1px solid var(--kk-line-2); border-radius: 3px;
	color: rgba(255,255,255,.7); width: 20px; height: 18px; min-width: 0; padding: 0; cursor: pointer;
	box-shadow: none; display: grid; place-items: center; font-size: 9px; line-height: 1;
}
#fsh-kk .fsh-kk-sbtn:hover { color: #fff; border-color: var(--fsh-red); background: none; }

/* ---- responsywność ---- */
@media (max-width: 900px) {
	/* PRAWDOPODOBNA przyczyna ucinania tytułu/filtrów po obu stronach na
	   mobile: .fsh-kk-console jako dziecko display:flex ma domyślnie
	   min-width:auto (nie 0), więc mimo width:100% mógł się nie skurczyć
	   poniżej szerokości własnej treści – a justify-content:center wtedy
	   centrował już przelewający się blok, symetrycznie obcinając tekst po
	   obu stronach. Bez display:flex konsola jest zwykłym blokiem
	   (poziome centrowanie dalej przez margin:0 auto na .fsh-kk-console). */
	/* Bez display:flex na hero (wystarczy block) – kolejność w DOM zostaje
	   BEZ ZMIAN (badge "Nowy drop za" jest position:absolute, więc i tak
	   nie wchodzi w kolejność bloków; tytuł ma być wyrównany do lewej, ale
	   OBA – tytuł i badge – mają zostać razem na samej górze hero, nie
	   jeden pod drugim). min-width:0 na konsoli zapobiega powrotowi błędu
	   z przelewaniem tekstu (patrz notatka wyżej). */
	.fsh-kk-hero { display: block; min-height: clamp(630px,90vw,840px); padding: 42px var(--fsh-header-gutter); }
	.fsh-kk-console {
		max-width: 100%; min-width: 0;
		align-items: flex-start; text-align: left;
		gap: 14px; padding: 0;
	}
	/* eyebrow ("Znajdź swoją koszulkę") tuż pod H1 ("Sklep z koszulkami
	   piłkarskimi") na wąskim ekranie wygląda jak drugi, zdublowany tytuł –
	   na mobile zostaje tylko H1 */
	.fsh-kk-eyebrow { display: none; }
	/* .fsh-kk-sub ("W sklepie mamy N produktów") miał sztywne minimum 54px
	   (clamp(54px,6.6vw,72px)) niezależnie od szerokości ekranu – na
	   telefonie było za duże i łamało się na wiele linii */
	/* niższe minimum niż przy H1 – ma się zmieścić w jednej linii na pełną
	   szerokość, więc mniejsza czcionka jest tu bezpieczniejsza */
	.fsh-kk-sub { font-size: clamp(1.05rem, 5.2vw, 2.6rem); }
	/* tylko H1 zmieszczony w lewej połowie ekranu, żeby nie wchodził pod
	   badge "Nowy drop za" przypięty w prawym górnym rogu – "W sklepie mamy
	   ..." zostaje na pełną szerokość, w jednej linii */
	.fsh-kk-title { max-width: 52%; }
	/* min-width:0 + ellipsis jako siatka bezpieczeństwa – nowrap na flex
	   dziecku bez tego mógłby wrócić błąd przelewania (patrz notatka przy
	   .fsh-kk-console wyżej): gdyby tekst mimo wszystko się nie mieścił,
	   ma się przyciąć "…", a nie rozepchać stronę w poziomie */
	.fsh-kk-sub {
		max-width: 100%; width: 100%; min-width: 0;
		white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
	}
	.fsh-kk-count-wrap { display: none; }
	#fsh-kk a.fsh-kk-cta { margin: 0; width: 100%; justify-content: center; }
	.fsh-kk-bottombar {
		position: static; transform: none; margin: 14px 0 0; max-width: 100%; padding: 0;
		flex-wrap: wrap; justify-content: center; text-align: center;
	}
	/* na desktopie .fsh-kk-snav jest position:absolute (przypięte na stałe do
	   środka paska, patrz reguła bazowa) – na mobile bottombar jest już
	   position:static ze stosem pionowym, więc snav też wraca do zwykłego
	   przepływu, inaczej "wisiałby" w nieprzewidywalnym miejscu nad resztą. */
	.fsh-kk-snav { position: static; left: auto; top: auto; transform: none; }
	/* Pigułki filtra (liga/rozmiar/stan/sezon) na wąskim ekranie: zamiast
	   ściskać 4 sztywno w jednej linii (nowrap, każda coraz węższa aż
	   nieczytelna), niech się swobodnie łamią do tylu linii ile potrzeba –
	   każda pigułka ma sensowną minimalną szerokość zamiast znikać. */
	.fsh-kk-bar { flex-wrap: wrap; }
	.fsh-kk-pop { flex: 1 1 auto; min-width: 150px; }
}

/* niskie okno przeglądarki na laptopie (np. 1366×768, 1440×900) – ściągamy
   pionowy rytm hero do góry, żeby kafelki paginacji slajdera (.fsh-kk-snav,
   przyklejone do dołu hero) zmieściły się w pierwszym widoku bez scrolla */
@media (min-width: 901px) and (max-height: 820px) {
	.fsh-kk-hero { padding-top: clamp(16px,2.4vw,28px); padding-bottom: clamp(16px,2.4vw,28px); }
	.fsh-kk-console { padding-top: 16px; padding-bottom: 16px; gap: 14px; }
	.fsh-kk-eyebrow { font-size: 18px; gap: 10px; }
	.fsh-kk-eyebrow::before, .fsh-kk-eyebrow::after { width: 26px; }
	.fsh-kk-title { font-size: clamp(2.4rem,5.4vw,3.8rem); }
	.fsh-kk-sub { font-size: clamp(17px,1.9vw,22px); margin-top: 0; }
	.fsh-kk-filterblock { gap: 8px 20px; }
	#fsh-kk .fsh-kk-pop-btn { padding: 8px 14px; font-size: 17px; }
	.fsh-kk-count { font-size: clamp(1.8rem,3.4vw,2.4rem); }
	.fsh-kk-count-lab { font-size: 17px; }
	#fsh-kk a.fsh-kk-cta { padding: 10px 18px; }
	.fsh-kk-nextdrop { top: 12px; right: 12px; padding: 6px 12px; }
	.fsh-kk-nextdrop__timer { font-size: 18px; }
	.fsh-kk-bottombar { bottom: 14px; gap: 8px 20px; }
}
@media (max-width: 600px) {
	/* na wąskim ekranie kolumny lig/klubów jedna pod drugą, każda z własnym scrollem */
	.fsh-kk-liga-cols { grid-template-columns: 1fr; grid-template-rows: minmax(0,1fr) minmax(0,1fr); height: min(70vh,560px); }
	.fsh-kk-liga-col--left { border-right: 0; border-bottom: 1px solid var(--kk-line); }
}
@media (max-width: 767px) {
	/* na życzenie użytkownika: filtry konsoli w jednej kolumnie na mobile
	   (jedna pigułka na pełną szerokość w wierszu), nie 2×2 */
	.fsh-kk-pop { flex: 1 1 100% !important; min-width: 0; }
}
@media (max-width: 480px) {
	/* .fsh-kk-bar miał flex-wrap:nowrap z bazowej reguły – flex:1 1 44% na
	   pigułkach poniżej nic nie dawał (2×2 się nie łamały, tylko ściskały) */
	.fsh-kk-bar { width: 100%; flex-wrap: wrap; }
	#fsh-kk .fsh-kk-pop-btn { width: 100%; }
	.fsh-kk-pop-val { max-width: 14ch; }
	.fsh-kk-pop-panel,
	.fsh-kk-pop-panel--liga { min-width: 0; width: calc(100vw - 24px); max-width: calc(100vw - 24px); }
}
@media (prefers-reduced-motion: reduce) {
	.fsh-kk-slide, .fsh-kk-slide.is-on { transition: opacity .2s ease; transform: none; }
	.fsh-kk-seg-i.is-active::after { transition: none; }
}

/* ==========================================================================
   Minimalna wielkość czcionki w całym serwisie: 16 px
   ========================================================================== */
html { font-size: 16px; }
body { font-size: 16px; line-height: 1.6; }
p, li, td, th, dd, dt, blockquote, figcaption, label,
input, select, textarea, button,
.elementor-widget-text-editor,
.elementor-widget-text-editor p,
.elementor-widget-text-editor li,
.elementor-widget-heading .elementor-heading-title,
.elementor-button, .elementor-icon-box-description,
.woocommerce, .woocommerce p, .woocommerce li, .woocommerce td,
.woocommerce .price, .woocommerce-Price-amount,
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.fsh-nav__link,
.fsh-filter__field label, .fsh-filter select,
.fsh-mega__club, .fsh-mega__all, .fsh-mega__league-link {
	font-size: 16px;
}
/* pasek górny to wyjątek – jednolite 13px (patrz reguła #fsh-topbar wyżej) */
.fsh-nav__link { font-size: 20px; }
@media (min-width: 1025px) and (max-width: 1500px) { .fsh-nav__link { font-size: 17px; } }
.elementor-icon-box-title { font-size: 16px; }
small, .elementor-widget-text-editor small { font-size: 14px; }

/* ==========================================================================
   Domyślny biały kolor tekstu na stronie głównej – część nagłówków/akapitów
   dziedziczyła ciemny (astrowy) kolor motywu, niewidoczny na czarnym tle
   ========================================================================== */
.elementor-95 .elementor-heading-title,
.elementor-95 .elementor-widget-text-editor,
.elementor-95 .elementor-widget-text-editor p,
.elementor-95 .elementor-widget-text-editor li,
.elementor-95 .elementor-icon-box-title,
.elementor-95 .elementor-icon-box-description,
.elementor-95 .elementor-image-box-title,
.elementor-95 .elementor-image-box-description {
	color: #fff !important;
}

/* nagłówek "Dlaczego warto wybrać nasze koszulki?" – większa czcionka */
.elementor-element-54a283e .elementor-heading-title {
	font-size: clamp(32px,3.6vw,46px) !important;
}

/* slider "OSTATNIO DODANE" (premium-woo-products, d6554fc) – nazwa produktu biała, cena czerwona */
.elementor-element-d6554fc .woocommerce-loop-product__title {
	color: #fff !important;
	font-size: 24px !important;
}
.elementor-element-d6554fc .price,
.elementor-element-d6554fc .woocommerce-Price-amount {
	color: var(--fsh-red) !important;
}
/* ceny produktów na desktopie – większa, czytelniejsza czcionka */
@media (min-width: 768px) {
	.woocommerce .price, .woocommerce-Price-amount,
	.fsh-shop-main ul.products li.product .price,
	.fsh-new-products__price,
	.elementor-element-d6554fc .price,
	.elementor-element-d6554fc .woocommerce-Price-amount {
		font-size: 20px !important;
	}
}

/* Stopka (FSH Footer, szablon 51490) – 4 kolumny (marka / Informacje / Sklep / Pomoc)
   miały ustawione szerokości procentowe (30/22/22/20 = 94%) + stały odstęp 36px, co przy
   węższych desktopach (laptopy) przekraczało 100% szerokości wiersza i 4. kolumna zjeżdżała
   pod spód. Na desktopie wymuszamy jeden rząd i szerokości liczone przez flex-grow (który
   sam odejmuje gap), więc kolumny zawsze mieszczą się w jednej linii. */
@media (min-width: 1025px) {
	.elementor-51490 .elementor-element-92a1ecd { flex-wrap: nowrap !important; }
	.elementor-51490 .elementor-element-cec135c,
	.elementor-51490 .elementor-element-268e0b9,
	.elementor-51490 .elementor-element-622e65b,
	.elementor-51490 .elementor-element-81ebfe2 {
		width: auto !important;
		flex: 1 1 0 !important;
		min-width: 0;
	}
	.elementor-51490 .elementor-element-cec135c { flex-grow: 1.4 !important; }
	.elementor-51490 .elementor-element-268e0b9,
	.elementor-51490 .elementor-element-622e65b { flex-grow: 1.1 !important; }
	.elementor-51490 .elementor-element-81ebfe2 { flex-grow: 1 !important; }
}

/* Na mobile/tablet kolumny stopki (marka / Informacje / Sklep / Pomoc) miały
   każda domyślną szerokość 100% z Elementora, więc mimo flex-wrap zawsze
   lądowały jedna pod drugą (1 kolumna) – układ 2 kolumn: marka na całą
   szerokość u góry, Informacje pod nią, Sklep + Pomoc obok siebie w 2 kolumnach. Próg 1024px
   (nie 767px) celowo – reguła "1 rząd" dla desktopu zaczyna się dopiero od
   1025px, więc 767–1024px zostawało bez żadnej reguły i wracało do
   domyślnego stackowania 1-kolumnowego Elementora. */
@media (max-width: 1024px) {
	/* flex (nie grid) – zostajemy w tym samym modelu co reguła desktopowa
	   wyżej, żeby nie fightować z wewnętrznymi zmiennymi Elementora
	   (--flex-grow/--flex-basis itd. konsumowanymi przez .e-con.e-flex),
	   które są flex-specyficzne i mogły po cichu psuć display:grid. */
	/* 92a1ecd to kontener "boxed" – kolumny są dziećmi jego .e-con-inner
	   i to TAM Elementor ustawia odstęp 36px; sam 92a1ecd nic nie zmieniał,
	   więc 2×(50%−12px)+36px > 100% i druga kolumna spadała niżej */
	.elementor-51490 .elementor-element-92a1ecd,
	.elementor-51490 .elementor-element-92a1ecd > .e-con-inner {
		display: flex !important; flex-direction: row !important; flex-wrap: wrap !important;
		--gap: 28px 24px !important; --column-gap: 24px !important; --row-gap: 28px !important;
		column-gap: 24px !important; row-gap: 28px !important;
	}
	/* marka i "Informacje" – każda na całą szerokość; "Sklep" + "Pomoc"
	   razem w jednym wierszu, 2 kolumny obok siebie */
	.elementor-51490 .elementor-element-cec135c,
	.elementor-51490 .elementor-element-268e0b9 {
		width: 100% !important; flex: 1 1 100% !important; min-width: 0;
	}
	.elementor-51490 .elementor-element-622e65b,
	.elementor-51490 .elementor-element-81ebfe2 {
		width: calc(50% - 12px) !important;
		flex: 0 1 calc(50% - 12px) !important;
		min-width: 0;
	}
}

/* czerwona linia nad stopką */
.elementor-51490 { border-top: 3px solid var(--fsh-red); }

/* dolny pasek stopki (copyright) – czerwony jak pasek górny (#fsh-topbar) */
.elementor-51490 .elementor-element-57e1b2f {
	background: #9c141d !important;
	border-top: 0 !important;
}
.elementor-51490 .elementor-element-57e1b2f .elementor-widget-text-editor,
.elementor-51490 .elementor-element-57e1b2f .elementor-widget-text-editor p {
	color: #fff !important;
}

/* ikony social media w stopce (widget 543c8fc) – zbyt małe (14px) i prawie niewidoczne tło
   (rgba(255,255,255,.12)) na czarnym tle stopki wyglądały jak "rozjechane"/niewidoczne kafle */
/* Kontener stopki ma w Elementorze background_background:"classic", ale
   background_color puste – Elementor nie generuje wtedy żadnego
   background-color w CSS, więc stopka zostaje bez jawnego koloru (a nie
   zawsze dziedziczy czerń body, stąd białe tło u niektórych klientów). */
#fsh-footer,
.elementor-51490 .elementor-element.elementor-element-f0617ac {
	background-color: var(--fsh-bg) !important;
}
.elementor-51490 .elementor-social-icons-wrapper {
	display: flex !important;
	flex-wrap: nowrap !important;
	gap: 10px;
	justify-content: flex-start !important;
	margin: 0 !important;
}
.elementor-51490 .elementor-element-543c8fc { text-align: left !important; justify-items: start !important; }
.elementor-51490 .elementor-social-icon {
	width: 36px !important; height: 36px !important;
	background: rgba(255,255,255,.08) !important;
	border: 1px solid rgba(255,255,255,.18);
	border-radius: 4px !important;
	transition: background .15s, border-color .15s;
}
.elementor-51490 .elementor-social-icon i,
.elementor-51490 .elementor-social-icon svg {
	font-size: 15px !important; width: 15px; height: 15px;
	/* Elementor generuje domyślnie rgba(255,255,255,.12) dla glifu ikony –
	   prawie niewidoczne niezależnie od tła kafla, stąd realny kontrast
	   trzeba wymusić tutaj, nie tylko na tle. */
	color: #fff !important;
	fill: #fff !important;
}
.elementor-51490 .elementor-social-icon:hover {
	background: var(--fsh-red) !important;
	border-color: var(--fsh-red);
}

/* Kolumny linków (Informacje / Sklep / Pomoc) w stylu Boxernia: czerwony
   nagłówek kolumny + czerwone "›" przed każdym linkiem menu. */
.elementor-51490 .elementor-element-268e0b9 .elementor-heading-title,
.elementor-51490 .elementor-element-622e65b .elementor-heading-title,
.elementor-51490 .elementor-element-81ebfe2 .elementor-heading-title {
	color: var(--fsh-red) !important;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .02em;
	font-size: 19px;
	margin-bottom: 6px;
}
.elementor-51490 .elementor-nav-menu--main .elementor-nav-menu {
	display: flex;
	flex-direction: column;
	gap: 11px;
}
.elementor-51490 .elementor-nav-menu--main .elementor-item {
	position: relative;
	display: inline-flex;
	align-items: center;
	padding: 0 0 0 20px !important;
	color: rgba(255,255,255,.75);
	font-size: 16px;
	transition: color .15s ease, padding-left .15s ease;
}
.elementor-51490 .elementor-nav-menu--main .elementor-item::before {
	content: "\203A";
	position: absolute;
	left: 0;
	color: var(--fsh-red);
	font-weight: 700;
	font-size: 18px;
}
.elementor-51490 .elementor-nav-menu--main .elementor-item:hover {
	color: #fff;
	padding-left: 24px !important;
}
/* Tekst stopki = 16px: linki menu, opis marki (inline 14px w Elementorze)
   i copyright (inline 13px) – !important, bo inline style / CSS widżetów
   Elementora mają wyższy priorytet. Nagłówki kolumn bez zmian. */
.elementor-51490 .elementor-nav-menu--main .elementor-item,
.elementor-51490 .elementor-widget-text-editor,
.elementor-51490 .elementor-widget-text-editor p {
	font-size: 16px !important;
}

/* "Chcesz zarobić sprzedając swoje koszulki?" – czerwony przerywnik (jak akcent HOT DEALS
   w menu), tekst po lewej / przycisk po prawej, zamiast wysokiej (500px) kolumnowej sekcji */
.fsh-earn-band {
	display: flex !important; flex-direction: row !important; flex-wrap: wrap;
	align-items: center !important; justify-content: space-between !important;
	gap: 20px 32px;
}
.fsh-earn-band .elementor-heading-title {
	color: #fff !important; text-align: left;
	font-family: var(--fsh-font); font-weight: 600;
	font-size: clamp(24px,3vw,34px); text-transform: uppercase; letter-spacing: .02em;
	text-shadow: none;
}
.fsh-earn-btn .elementor-button {
	background: #000 !important; color: #fff !important;
	border: 0 !important; box-shadow: none !important;
}
.fsh-earn-btn .elementor-button .elementor-button-text { color: #fff !important; }
/* hover: tło zostaje czarne, tekst + ikona na czerwono (tak samo w pasie
   "Doklejamy nazwisko…" – .fsh-printing-promo__cta) */
.fsh-earn-btn .elementor-button:hover {
	background: #000 !important; color: var(--fsh-red) !important;
}
.fsh-earn-btn .elementor-button:hover .elementor-button-text,
.fsh-earn-btn .elementor-button:hover .elementor-button-icon i { color: var(--fsh-red) !important; }
.fsh-earn-btn .elementor-button-icon i { transition: color .2s ease; }
/* globalne "a:hover{text-decoration:underline}" podkreślało tekst przycisku
   "Przejdź do wyceny" – przyciski Elementora nigdy nie są podkreślane */
.elementor-button,
.elementor-button:hover,
.elementor-button:focus,
.elementor-button .elementor-button-text {
	text-decoration: none !important;
}
/* przycisk dosunięty do PRAWEJ krawędzi pasa (kolumna a742f32 ma w
   Elementorze justify:center + widget align-center, przez co przycisk
   wisiał na środku prawej kolumny) – ta sama prawa krawędź co przycisk
   w pasie "Doklejamy nazwisko…". Na mobile zostaje wyśrodkowany. */
@media (min-width: 768px) {
	.elementor-element-a742f32 { align-items: flex-end !important; justify-content: center !important; }
	.elementor-element-ee573b5,
	.elementor-element-ee573b5 .elementor-button-wrapper { text-align: right !important; align-self: flex-end !important; }
}

/* sekcja z obrazkami/opisami lig (Premier League, Serie A, La Liga, Bundesliga…) pod opiniami,
   na pełną szerokość strony (content_width:full ustawione w _elementor_data kontenera 3fe2314). */

/* sekcja zamykająca "Zakupy z nami to czysta radość!" – graficzne dopracowanie */
.fsh-closing {
	background: radial-gradient(120% 140% at 50% 0%, rgba(225,29,42,.14), transparent 60%),
		url('assets/old-black-background.webp') center/cover no-repeat, #000 !important;
	border-top: 1px solid rgba(255,255,255,.08);
}
/* Sekcja opinii (trustindex) nie miała content_width:full ustawionego na
   samym kontenerze 01c7082 (tylko na dziecku 05462dd, co liczy się względem
   RODZICA, nie viewportu) – dlatego była boxed na 1200px zamiast pełnej
   szerokości. */
.elementor-element-01c7082,
.elementor-element-01c7082 > .elementor-widget-container,
.elementor-element-05462dd,
.elementor-element-05462dd .elementor-widget-container {
	width: 100% !important;
	max-width: 100% !important;
}
.fsh-closing .elementor-heading-title {
	font-size: clamp(34px,4vw,54px) !important;
	position: relative; padding-bottom: 22px; margin-bottom: 6px !important;
}
.fsh-closing .elementor-heading-title::after {
	content: ""; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
	width: 64px; height: 3px; background: var(--fsh-red);
}
.fsh-closing .elementor-widget-text-editor .elementor-widget-container {
	max-width: 720px; margin: 0 auto;
}
.fsh-closing .elementor-widget-text-editor p {
	line-height: 1.7; font-size: 18px; color: rgba(255,255,255,.82) !important;
}
.fsh-closing__sign {
	margin-top: 24px; font-style: italic; color: rgba(255,255,255,.6); font-size: 16px;
}
.fsh-closing__sign span {
	display: inline-block; margin-top: 4px; font-style: normal; font-weight: 700;
	letter-spacing: .04em; text-transform: uppercase; color: var(--fsh-red); font-family: var(--fsh-font);
}
/* "Przeglądaj kolekcję" – ten sam wygląd co przyciski Elementora w całym
   sklepie (kit 3049: czerwone tło, Teko 600 uppercase, letter-spacing 1px,
   padding 16/34, ostre rogi + sitewide ścięty prawy dolny róg, hover
   #1E1E1E) zamiast zaokrąglonego przycisku z cieniem. */
.fsh-closing__cta {
	display: inline-flex; align-items: center; gap: 10px; margin-top: 30px;
	background: #E5001A; color: #fff !important; text-decoration: none !important;
	font-family: var(--fsh-font); font-weight: 600; text-transform: uppercase;
	letter-spacing: 1px; font-size: 16px; line-height: 1;
	padding: 16px 34px; border-radius: 0; box-shadow: none;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
	transition: background-color .2s ease;
}
.fsh-closing__cta:hover,
.fsh-closing__cta:focus { background: #1E1E1E; color: #fff !important; }
.fsh-closing__cta span { transition: transform .15s; }
.fsh-closing__cta:hover span { transform: translateX(4px); }
@media (max-width: 767px) {
	.fsh-earn-band { flex-direction: column !important; text-align: center; }
	.fsh-earn-band .elementor-heading-title { text-align: center; }
}

/* ==========================================================================
   Pasek liczb zaufania [fsh_stats] – sekcja dodana na wzór Boxernia/Fitwear
   ========================================================================== */
#fsh-stats {
	background: linear-gradient(90deg, #170405 0%, #000 50%, #170405 100%);
	border-block: 1px solid var(--fsh-border);
}
.fsh-stats {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-around;
	align-items: center;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	padding: 44px 24px;
	gap: 28px 16px;
}
.fsh-stats__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	min-width: 140px;
}
.fsh-stats__value {
	font-family: var(--fsh-font);
	font-weight: 600;
	font-style: oblique;
	font-size: 56px;
	line-height: 1;
	color: var(--fsh-accent);
}
.fsh-stats__label {
	margin-top: 8px;
	font-size: 17px;
	font-weight: 500;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #c7ccd1;
}
@media (max-width: 600px) {
	.fsh-stats__value { font-size: 42px; }
}

/* ==========================================================================
   „Jak to działa” [#fsh-process] – poziome bloki na wzór Boxernia/Fitwear
   ========================================================================== */
#fsh-process {
	background: #0d0d0d;
	border-block: 1px solid var(--fsh-border);
	padding-block: 20px;
}
.fsh-process {
	display: flex;
	width: 100%;
	padding: 40px 24px;
	gap: 24px;
}
.fsh-process__step {
	position: relative;
	flex: 1 1 0;
	padding: 28px 24px;
	background: #161616;
	border: 1px solid var(--fsh-border);
	border-radius: 4px;
}
.fsh-process__num {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border: 1.5px solid var(--fsh-accent);
	border-radius: 50%;
	color: var(--fsh-accent);
}
.fsh-process__num svg { width: 26px; height: 26px; }
.fsh-process__title {
	margin: 10px 0 6px;
	font-size: 23px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: var(--fsh-text);
}
.fsh-process__text { font-size: 17px; font-weight: 500; color: #c7ccd1; line-height: 1.5; }
@media (max-width: 900px) {
	.fsh-process { flex-direction: column; gap: 20px; }
}
/* desktop: ikona po lewej, obok niej tytuł, a opis pod tytułem (w tej
   samej kolumnie co tytuł, nie pod ikoną) */
@media (min-width: 901px) {
	.fsh-process__step {
		display: grid;
		grid-template-columns: 52px minmax(0, 1fr);
		grid-template-rows: auto auto;
		column-gap: 16px;
		row-gap: 6px;
		align-items: start;
	}
	.fsh-process__num { grid-column: 1; grid-row: 1 / span 2; }
	.fsh-process__title {
		grid-column: 2; grid-row: 1; margin: 0; line-height: 1.1;
		align-self: end; min-height: 26px; padding-top: 12px;
	}
	.fsh-process__text { grid-column: 2; grid-row: 2; margin: 0; }
}

/* ==========================================================================
   [fsh_hot_premium] – sekcja pół na pół HOT DEALS / PREMIUM przed pasem
   "Chcesz zarobić…". Kolory kafli te same co pigułki
   HOT DEALS (czerwień) / PREMIUM (złoto) w menu głównym.
   ========================================================================== */
/* Układ kart na wzór slidera lig (kontener 3fe2314): 2 osobne karty pół na
   pół z odstępem między sobą i od krawędzi ekranu; w karcie zdjęcie na
   górze (plakietka HOT DEALS / PREMIUM w rogu), pod nim wyśrodkowany tytuł
   z kreską akcentu, opis i link. Hover jak w sliderze: lekka poświata tła
   karty + przybliżenie zdjęcia. */
.fsh-hp {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 32px;
	max-width: calc(var(--fsh-max-width) + 112px); /* 1200 treści + 2×56 paddingu */
	margin: 0 auto;
	padding: 0 56px; /* pionowy odstęp daje margines sekcji e7a595a */
	box-sizing: border-box;
}
.fsh-hp__tile,
.fsh-hp__tile:hover,
.fsh-hp__tile:focus,
.fsh-hp__cta,
.fsh-hp__tile:hover .fsh-hp__cta {
	text-decoration: none !important;
}
.fsh-hp__tile { --fsh-hp-accent: #e11d2a; --fsh-hp-tint: rgba(225,29,42,.05); }
.fsh-hp__tile--premium { --fsh-hp-accent: #d7a13c; --fsh-hp-tint: rgba(215,161,60,.06); }
.fsh-hp__tile {
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: 16px;
	border-radius: 4px;
	transition: background-color .2s ease;
}
.fsh-hp__tile:hover { background-color: var(--fsh-hp-tint); }
.fsh-hp__photo {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background-color: #111;
	background-size: 0 0; /* obraz rysuje ::before (przybliżenie na hover) */
}
.fsh-hp__photo::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: inherit;
	background-size: cover;
	background-position: center 30%;
	transition: transform .35s ease, filter .35s ease;
}
.fsh-hp__tile:hover .fsh-hp__photo::before {
	transform: scale(1.05);
	filter: brightness(1.05) saturate(1.1);
}
.fsh-hp__label {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 1;
	font-family: var(--fsh-font);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .08em;
	font-size: 15px;
	padding: 4px 12px;
	border-radius: 3px;
}
.fsh-hp__tile--hot .fsh-hp__label { background: #e11d2a; color: #fff; }
.fsh-hp__tile--premium .fsh-hp__label { background: #d7a13c; color: #1c1503; }
.fsh-hp__content {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 10px;
	padding-top: 20px;
}
.fsh-hp__title {
	position: relative;
	padding-bottom: 14px;
	font-family: var(--fsh-font);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .01em;
	font-size: clamp(24px,2.2vw,32px);
	color: #fff;
	line-height: 1.1;
}
.fsh-hp__title::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 0;
	transform: translateX(-50%);
	width: 56px;
	height: 3px;
	background: var(--fsh-hp-accent);
}
.fsh-hp__text { max-width: 52ch; color: rgba(255,255,255,.75); font-size: 16px; line-height: 1.5; }
.fsh-hp__cta {
	margin-top: 4px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	font-size: 15px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
/* "Zobacz Hot Deals" / "Zobacz Premium" – prawdziwe przyciski, jak reszta
   przycisków na stronie: Teko 600 uppercase, 15px 30px, ścięty prawy dolny
   róg (clip-path w regule sitewide niżej). Kolor = akcent kafla
   (czerwień / złoto); hover jak przyciski w pasach: czarne tło + tekst
   w kolorze akcentu. */
.fsh-hp__cta {
	margin-top: 8px;
	padding: 15px 30px;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 16px;
	letter-spacing: 1px;
	line-height: 1;
	background: var(--fsh-hp-accent);
	transition: background-color .2s ease, color .2s ease;
}
.fsh-hp__tile--hot .fsh-hp__cta { color: #fff; }
.fsh-hp__tile--premium .fsh-hp__cta { color: #1c1503; }
.fsh-hp__tile:hover .fsh-hp__cta { background: #000; color: var(--fsh-hp-accent); }
.fsh-hp__cta span { transition: transform .15s; }
.fsh-hp__tile:hover .fsh-hp__cta span { transform: translateX(4px); }
/* plakietki HOT DEALS / PREMIUM na zdjęciu – też ścięty róg (mniejszy) */
.fsh-hp__label {
	border-radius: 0 !important;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%);
}
@media (max-width: 767px) {
	/* na telefonie nadal pół na pół, tylko ciaśniej */
	.fsh-hp { gap: 12px; padding: 0 16px; }
	.fsh-hp__tile { padding: 8px; }
	.fsh-hp__photo { aspect-ratio: 4 / 5; }
	.fsh-hp__label { top: 8px; left: 8px; font-size: 12px; padding: 3px 8px; }
	.fsh-hp__content { padding-top: 12px; gap: 8px; }
	.fsh-hp__title { font-size: 20px; padding-bottom: 10px; }
	.fsh-hp__title::after { width: 40px; }
	.fsh-hp__text { display: none; }
	.fsh-hp__cta { font-size: 14px; letter-spacing: .5px; padding: 11px 16px; }
}

/* Przerywnik "Klejenie nadruków" pod Hot Deals/Premium – wygląd 1:1 jak pas
   "Chcesz zarobić sprzedając swoje koszulki?" (.fsh-earn-band, kontener
   8de960c): czerwone tło na pełną szerokość, treść w pudełku 1200px, padding
   40/30px (mobile 40/20px), tytuł Teko 600 uppercase, czarny przycisk
   (rozmiar Elementor "md", ikona + tekst, gap 15px) z czerwonym hoverem i
   ściętym rogiem. Na mobile kolumna wyśrodkowana, tak samo jak tamten pas. */
.fsh-printing-promo {
	background: var(--fsh-red);
	padding: 40px 30px;
}
.fsh-printing-promo__inner {
	max-width: 1200px;
	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 20px 32px;
}
.fsh-printing-promo__title {
	margin: 0;
	color: #fff;
	text-align: left;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: clamp(24px,3vw,34px);
	text-transform: uppercase;
	letter-spacing: .02em;
	line-height: 1.1;
}
.fsh-printing-promo__cta {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 15px;
	background: #000;
	color: #fff !important;
	/* wielkie litery, Teko 600 + 1px odstępu – tak samo jak przyciski
	   Elementora (np. "Przejdź do wyceny" w pasie skupu koszulek) */
	font-family: var(--fsh-font); font-weight: 600;
	text-transform: uppercase; letter-spacing: 1px;
	font-size: 16px;
	line-height: 1;
	padding: 15px 30px;
	text-decoration: none !important;
	border-radius: 0;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
	margin-left: auto;
	transition: color .2s ease;
}
.fsh-printing-promo__cta:hover { background: #000; color: var(--fsh-red) !important; }
.fsh-printing-promo__cta i { transition: color .2s ease; }
/* tytuł w jednej linii na desktopie, niżej normalnie się zawija */
@media (min-width: 1100px) {
	.fsh-printing-promo__inner { flex-wrap: nowrap; }
	.fsh-printing-promo__title { white-space: nowrap; }
}
@media (max-width: 767px) {
	.fsh-printing-promo { padding: 40px 20px; }
	.fsh-printing-promo__inner { flex-direction: column; text-align: center; }
	.fsh-printing-promo__title { text-align: center; }
	.fsh-printing-promo__cta { margin: 0 auto; }
}

/* Czarne akcenty na czerwonych pasach (skup koszulek + klejenie nadruków),
   żeby nie były jednolitą czerwoną plamą: przy lewej krawędzi czarny klin ze
   ściętą krawędzią + 3 czarne ukośne paski (jak wzór na koszulce), to samo
   przy prawej krawędzi (ten sam skos, równoległy – gradient -65deg to
   115deg odwrócony o 180°, liczony od prawego dolnego rogu), cienkie linie
   u góry/dołu. Wszystko jako warstwy tła – bez dodatkowego markupu.
   --w = szerokość klina. Czerń = var(--fsh-bg), dokładnie ten sam kolor co
   tło strony. */
.fsh-earn-band,
.fsh-printing-promo {
	--w: 120px;
	/* sam czarny klin ze ściętą krawędzią (3 ukośne paski usunięte) */
	--fsh-band-stripes:
		rgba(0,0,0,.5) 0 var(--w), /* przygaszone o 50% */
		transparent var(--w);
	background-color: var(--fsh-red) !important;
	background-image:
		/* 45° – ten sam kąt i kierunek co ścięty róg przycisków */
		linear-gradient(135deg, var(--fsh-band-stripes)),
		linear-gradient(-45deg, var(--fsh-band-stripes)) !important;
	background-repeat: no-repeat !important;
	/* lewa dekoracja tylko w GÓRNEJ połowie pasa, prawa tylko w DOLNEJ */
	background-size: 100% 50%, 100% 50% !important;
	background-position: left top, left bottom !important;
	box-shadow: inset 0 3px 0 var(--fsh-bg), inset 0 -3px 0 var(--fsh-bg);
}
/* Przy przycisku: CAŁE logo sklepu (pełne kolory) z czarnym obrysem,
   większe niż wysokość pasa – wychodzi poza jego górną i dolną krawędź,
   "przerywając" czerwony pas; do tego miękkie czarne przyciemnienie wokół
   przycisku. Oba na pseudo-elementach WEWNĘTRZNEGO pudełka treści (przycisk
   stoi przy jego prawej krawędzi, a na szerokich ekranach pudełko jest
   wyśrodkowane – liczenie od krawędzi ekranu minęłoby przycisk). ::before
   samego .e-con zajmuje nakładka tła Elementora, więc go nie ruszamy.
   Pas NIE przycina treści (overflow:visible), a wewnętrzne pudełko ma
   z-index, więc logo leży też nad sąsiednimi sekcjami. Wystaje o mniej niż
   odstęp między sekcjami (64px / 40px na telefonie). */
.fsh-earn-band,
.fsh-printing-promo { position: relative; overflow: visible !important; }
.fsh-earn-band > .e-con-inner,
.fsh-printing-promo__inner { position: relative; z-index: 2; isolation: isolate; }
.fsh-earn-band > .e-con-inner::before,
.fsh-earn-band > .e-con-inner::after,
.fsh-printing-promo__inner::before,
.fsh-printing-promo__inner::after {
	content: "";
	position: absolute;
	z-index: -1;
	left: calc(100% - 125px); /* ~środek przycisku */
	top: 50%;
	pointer-events: none;
}
/* Pod logo czerwony pas jest PRZERWANY: czarne (kolor tła strony) ukośne
   cięcie na pełną wysokość pasa, skos równoległy do klinów (115deg w tle =
   25° od pionu → skewX(-25deg)). Pas ma wymuszone 40px paddingu u góry i
   u dołu (niżej), więc top/bottom -40px = dokładnie krawędzie pasa. */
.fsh-earn-band,
.fsh-printing-promo { padding-top: 40px !important; padding-bottom: 40px !important; }
.fsh-earn-band > .e-con-inner::after,
.fsh-printing-promo__inner::after {
	left: calc(100% - 125px - 210px); /* środek cięcia = ~środek przycisku (przycisk stoi przy prawej krawędzi pudełka treści) */
	top: -40px;
	bottom: -40px;
	width: 420px; /* szerokie – skosy wyraźnie odsunięte od przycisku */
	/* 45° – ten sam kąt co ścięty róg przycisków (14px × 14px) */
	transform: skewX(-45deg);
	background: rgba(0,0,0,.5); /* przygaszone o 50%, jak kliny */
	z-index: -2; /* POD logo (::before, z-index -1) – ::after rysuje się po ::before, więc bez tego czarne cięcie zakrywało logo */
}
/* logo: pełne kolory + czarny obrys (drop-shadow po kształcie logo) */
.fsh-earn-band > .e-con-inner::before,
.fsh-printing-promo__inner::before {
	width: 240px;
	height: 240px;
	/* na prawo od przycisku – cięcie (±130px + skos) nie może wejść pod
	   przycisk, który kończy się na prawej krawędzi pudełka treści */
	left: calc(100% + 170px);
	/* przekrzywione – przecina czerwony pas po skosie */
	transform: translate(-50%, -50%) rotate(-18deg);
	opacity: .5;
	background: url('/wp-content/uploads/2023/08/logo-radzio-300x300.png') center / contain no-repeat;
	filter:
		drop-shadow(3px 0 0 var(--fsh-bg)) drop-shadow(-3px 0 0 var(--fsh-bg))
		drop-shadow(0 3px 0 var(--fsh-bg)) drop-shadow(0 -3px 0 var(--fsh-bg));
}
@media (max-width: 767px) {
	/* telefon: logo w prawym górnym rogu, przecina górną krawędź pasa;
	   ukośne czarne cięcie pod nim */
	.fsh-earn-band > .e-con-inner::after,
	/* tylko górna część pasa (tam gdzie logo) – niżej jest wyśrodkowany
	   przycisk, cięcie na całą wysokość weszłoby pod niego */
	.fsh-printing-promo__inner::after { left: calc(100% - 40px - 65px); width: 130px; bottom: auto; height: 70px; }
}
/* Logo w pasach USUNIĘTE (życzenie właściciela) – zostaje samo czarne
   ukośne cięcie (::after), które było pod nim. Reguły logo (::before)
   wyżej zostają tylko jako wyłączona historia. */
.fsh-earn-band > .e-con-inner::before,
.fsh-printing-promo__inner::before { display: none !important; }

/* Pas "Doklejamy nazwisko…" = LUSTRZANE ODBICIE (w poziomie) pasa
   "Chcesz zarobić…": kliny zamienione stronami i z odwrotnym skosem
   (prawy klin w górnej połowie, lewy w dolnej), logo z czarnym cięciem
   z LEWEJ strony pasa. Treść jak zwykle: tytuł z lewej, przycisk z prawej. */
.fsh-printing-promo {
	background-image:
		/* kliny po odwrotnych stronach (prawy u góry, lewy u dołu), ale
		   skos 45° w tym samym kierunku co róg przycisków */
		linear-gradient(-45deg, var(--fsh-band-stripes)),
		linear-gradient(135deg, var(--fsh-band-stripes)) !important;
	background-position: left top, left bottom !important;
}
.fsh-printing-promo__inner::after {
	left: calc(100% - 125px - 210px); /* pod przyciskiem, skos jak w pasie skupu (równoległy do rogu przycisku) */
	transform: skewX(-45deg);
}
.fsh-printing-promo__inner::before {
	left: -170px;
	transform: translate(-50%, -50%) rotate(18deg);
}
@media (max-width: 767px) {
	.fsh-printing-promo__inner::after { left: calc(40px - 65px); transform: skewX(25deg); }
	.fsh-printing-promo__inner::before { left: 40px; transform: translateX(-50%) rotate(18deg); }
}

/* Pas "Chcesz zarobić…" – ta sama wysokość co pas "Doklejamy nazwisko…":
   zerujemy dodatki Elementora, których tamten (własny markup) nie ma:
   domyślny padding 10px kolumn (84e808c / a742f32), 21px paddingu nad
   przyciskiem (widget ee573b5), marginesy i wysokość linii nagłówka;
   przycisk w tym samym rozmiarze co "Zamów usługę" (15px 30px, 16px). */
.fsh-earn-band .elementor-element-84e808c,
.fsh-earn-band .elementor-element-a742f32 {
	--padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px;
	padding: 0 !important;
}
/* GŁÓWNA przyczyna: w kontenerze "boxed" Elementor daje pionowy padding
   (--padding-top/bottom = 40px) ZARÓWNO kontenerowi, jak i jego
   .e-con-inner (reguła ".e-con>.e-con-inner{padding-block-start:var(...)}")
   – odstęp się dublował (80px zamiast 40px). Pas ma już 40px sam. */
.fsh-earn-band > .e-con-inner { padding-block: 0 !important; }
.fsh-earn-band .elementor-element-ee573b5 > .elementor-widget-container { padding: 0 !important; }
.fsh-earn-band .elementor-widget-heading,
.fsh-earn-band .elementor-widget-heading .elementor-widget-container { margin: 0 !important; padding: 0 !important; }
.fsh-earn-band .elementor-heading-title { margin: 0 !important; line-height: 1.1 !important; }
.fsh-earn-btn .elementor-button {
	padding: 15px 30px !important;
	font-size: 16px !important;
	line-height: 1 !important;
}

/* treść odsunięta od klinów, żeby czarny przycisk nie lądował na czarnym */
@media (min-width: 768px) {
	.fsh-earn-band,
	.fsh-printing-promo {
		padding-left: calc(var(--w) + 110px) !important;
		padding-right: calc(var(--w) + 110px) !important;
	}
}
@media (min-width: 768px) and (max-width: 1099px) {
	.fsh-earn-band,
	.fsh-printing-promo { --w: 50px; }
}
@media (max-width: 767px) {
	.fsh-earn-band,
	.fsh-printing-promo { --w: 22px; }
}
/* zabezpieczenie: czerwony obrys czarnego przycisku (na czerwonym tle
   niewidoczny) – gdyby przycisk jednak wszedł na czarny klin/pasek, nie
   zleje się z nim. Filtr na RODZICU, bo sam przycisk ma clip-path (ścięty
   róg), który przyciąłby cień nałożony bezpośrednio na nim. */
.fsh-earn-band .elementor-element-a742f32,
.fsh-printing-promo__cta-wrap {
	filter: drop-shadow(2px 0 0 var(--fsh-red)) drop-shadow(-2px 0 0 var(--fsh-red))
		drop-shadow(0 2px 0 var(--fsh-red)) drop-shadow(0 -2px 0 var(--fsh-red));
}
.fsh-printing-promo__cta-wrap { display: flex; flex: 0 0 auto; margin-left: auto; }
@media (max-width: 767px) {
	.fsh-printing-promo__cta-wrap { margin: 0 auto; }
}

/* ==========================================================================
   [fsh_brands] – nieskończony pasek (marquee) logotypów producentów koszulek.
   Domyślnie logo jako białe sylwetki (filter), pełne barwy marki na hover.
   ========================================================================== */
.fsh-brands {
	background: #000;
	border-block: 1px solid var(--fsh-border);
	padding-block: 36px;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.fsh-brands__track {
	display: flex;
	align-items: center;
	width: max-content;
	gap: 72px;
	animation: fshBrandsScroll 34s linear infinite;
}
.fsh-brands:hover .fsh-brands__track { animation-play-state: paused; }
.fsh-brands__logo {
	position: relative;
	flex: none;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 108px;
	height: 44px;
}
/* Logotypy mają bardzo różne proporcje/wypełnienie własnego pliku SVG (Nike –
   cienki „swoosh" w kwadratowym viewBox, Macron/Diadora/Joma – szerokie
   wordmarki bez marginesu), więc samo "height:100%" dawało bardzo różne
   rozmiary wizualne. Wspólne, stałe pole (object-fit:contain) + ręczne
   powiększenie „cienkich" logotypów wyrównuje je wizualnie. */
.fsh-brands__logo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	filter: grayscale(1) brightness(0) invert(1);
	opacity: .55;
	transition: opacity .2s ease, transform .2s ease;
}
.fsh-brands__logo:has(img[src*="/nike.svg"]),
.fsh-brands__logo:has(img[src*="/reebok.svg"]) {
	width: 150px;
	height: 62px;
}
.fsh-brands__logo:has(img[src*="/newbalance.svg"]),
.fsh-brands__logo:has(img[src*="/puma.svg"]),
.fsh-brands__logo:has(img[src*="/adidas.svg"]),
.fsh-brands__logo:has(img[src*="/lotto.svg"]) {
	width: 120px;
	height: 50px;
}
/* Hover = logo w kolorze marki czerwonym, dokładnie var(--fsh-red) – zamiast
   zgadywać łańcuch filter() do przekoloru, maska CSS z tego samego pliku SVG
   daje idealnie dopasowany kolor niezależnie od oryginalnej barwy logotypu. */
.fsh-brands__logo::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--fsh-red, #e11d2a);
	-webkit-mask: var(--fsh-logo-src) center/contain no-repeat;
	mask: var(--fsh-logo-src) center/contain no-repeat;
	opacity: 0;
	transition: opacity .2s ease;
}
.fsh-brands__logo:hover img { opacity: 0; }
.fsh-brands__logo:hover::after { opacity: 1; }
.fsh-brands__logo:hover { transform: scale(1.08); }
@keyframes fshBrandsScroll {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
	.fsh-brands__track { animation: none; }
	.fsh-brands { overflow-x: auto; }
}
@media (max-width: 767px) {
	.fsh-brands { padding-block: 24px; }
	.fsh-brands__track { gap: 48px; }
	.fsh-brands__logo { width: 78px; height: 32px; }
	.fsh-brands__logo:has(img[src*="/nike.svg"]),
	.fsh-brands__logo:has(img[src*="/reebok.svg"]) { width: 108px; height: 44px; }
	.fsh-brands__logo:has(img[src*="/newbalance.svg"]),
	.fsh-brands__logo:has(img[src*="/puma.svg"]),
	.fsh-brands__logo:has(img[src*="/adidas.svg"]),
	.fsh-brands__logo:has(img[src*="/lotto.svg"]) { width: 88px; height: 36px; }
}

/* ==========================================================================
   Newsletter [#fsh-newsletter] – dwukolumnowy pas na wzór Fitwear
   ========================================================================== */
#fsh-newsletter { background: #0a0a0a; border-block: 1px solid var(--fsh-border); }
.fsh-newsletter__wrap {
	display: flex;
	align-items: center;
	gap: 48px;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	padding: 56px 24px;
	flex-wrap: wrap;
}
.fsh-newsletter__copy { flex: 1 1 320px; }
.fsh-newsletter__copy h2 {
	font-size: 34px;
	font-weight: 600;
	text-transform: uppercase;
	margin: 0 0 10px;
}
.fsh-newsletter__copy p { color: #c7ccd1; font-weight: 500; font-size: 17px; margin: 0; }
.fsh-newsletter__form { flex: 1 1 360px; }
#fsh-newsletter .elementor-field-group { margin-bottom: 14px; }
#fsh-newsletter .elementor-field,
#fsh-newsletter .elementor-field-textual {
	background: #000;
	border: 1px solid var(--fsh-border);
	color: var(--fsh-text);
	border-radius: 2px;
}
#fsh-newsletter .elementor-field::placeholder { color: var(--fsh-muted); }
#fsh-newsletter .elementor-button {
	background: var(--fsh-accent) !important;
	border: none;
	text-transform: uppercase;
	letter-spacing: .04em;
}
@media (max-width: 700px) {
	.fsh-newsletter__wrap { padding: 40px 20px; }
}

/* ==========================================================================
   /new — hero to ta sama konsola kolekcji [fsh_kolekcja] co na stronie
   głównej (.fsh-kk-*, patrz sekcja "Konsola kolekcji" wyżej) + siatka lig
   i grid produktów poniżej (wzorowane na Fitwear/Boxernia)
   ========================================================================== */

.fsh-new-leagues {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 2px;
}
.fsh-new-leagues__tile {
	position: relative;
	display: block;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	background: #0a0a0a;
}
.fsh-new-leagues__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .5s ease;
}
.fsh-new-leagues__tile:hover .fsh-new-leagues__img { transform: scale(1.08); }
.fsh-new-leagues__overlay {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 20px;
	background: linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,.75) 100%);
}
.fsh-new-leagues__name {
	font-size: 26px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: #fff;
}
.fsh-new-leagues__count {
	font-size: 17px;
	font-weight: 500;
	color: #d7dade;
	margin-top: 6px;
}
.fsh-new-leagues__cta {
	margin-top: 16px;
	font-size: 17px;
	font-weight: 600;
	color: var(--fsh-accent);
	text-transform: uppercase;
	letter-spacing: .06em;
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .25s ease, transform .25s ease;
}
.fsh-new-leagues__tile:hover .fsh-new-leagues__cta { opacity: 1; transform: translateY(0); }
@media (max-width: 900px) {
	.fsh-new-leagues { grid-template-columns: repeat(2, 1fr); }
}

.fsh-new-products {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 28px;
}
.fsh-new-products__item { display: flex; flex-direction: column; }
.fsh-new-products__thumb {
	position: relative;
	display: block;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: #0a0a0a;
	border: 1px solid var(--fsh-border);
}
.fsh-new-products__thumb img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: opacity .35s ease;
}
.fsh-new-products__thumb img:first-child { position: absolute; }
.fsh-new-products__hover { opacity: 0; }
.fsh-new-products__thumb:hover .fsh-new-products__hover { opacity: 1; }
.fsh-new-products__thumb:hover img:not(.fsh-new-products__hover) { opacity: 0; }
.fsh-new-products__meta { padding-top: 14px; text-align: left; }
.fsh-new-products__cat {
	display: block;
	font-size: 17px;
	font-weight: 500;
	color: #c7ccd1;
	text-transform: uppercase;
	letter-spacing: .04em;
	margin-bottom: 4px;
}
.fsh-new-products__title {
	display: block;
	font-size: 21px;
	font-weight: 500;
	color: var(--fsh-text);
	text-decoration: none;
	margin-bottom: 4px;
}
.fsh-new-products__title:hover { color: var(--fsh-accent); }
.fsh-new-products__price {
	display: block;
	font-size: 19px;
	color: var(--fsh-accent);
	font-weight: 600;
}
@media (max-width: 900px) {
	.fsh-new-products { grid-template-columns: repeat(2, 1fr); gap: 20px; }
}

/* ==========================================================================
   Panel filtrów sklepu – własny, zastępuje wtyczkę WooCommerce Products
   Filter (WOOF). Czarne tło na całym obszarze wyników, filtry w lewej,
   stałej kolumnie; siatka produktów przestylowana pod ciemny motyw.
   ========================================================================== */
body.woocommerce-page,
body.woocommerce-page .site,
body.woocommerce-page .site-content,
body.woocommerce-page #content,
body.woocommerce-page main { background: var(--fsh-bg) !important; }
/* Hello Elementor domyślnie ogranicza .site-main do 1140px na stronach spoza
   szablonów Elementora (sklep, kategorie, karta produktu to natywne szablony
   WooCommerce) – zdejmujemy ten limit, żeby wyszukiwarka/kategoria/produkt
   używały pełnej szerokości strony, tak jak nagłówek. */
body.woocommerce-page .site-main { max-width: 100% !important; }
/* Pełna szerokość, ale z lekkim naddatkiem od krawędzi ekranu (jak nagłówek) –
   /sklep/ i kategorie mają już własny padding przez .fsh-shop-layout, więc tu
   dogrywamy gutter tylko tam, gdzie tamten wrapper nie występuje: karta produktu. */
body.single-product .site-main {
	padding-left: var(--fsh-header-gutter,40px) !important;
	padding-right: var(--fsh-header-gutter,40px) !important;
	padding-bottom: 80px;
	box-sizing: border-box;
}

.fsh-shop-layout {
	display: flex; align-items: flex-start; gap: 32px; flex-wrap: wrap;
	width: 100%; margin: 0;
	padding: 32px var(--fsh-header-gutter,40px) 70px;
	color: var(--fsh-text);
}
.fsh-shop-layout .woocommerce-products-header__title,
.fsh-shop-layout .fsh-filtered-desc,
.fsh-shop-layout .woocommerce-pagination { width: 100%; }
/* wynik + sortowanie w jednym wierszu: licznik z lewej, sortowanie w drugiej
   kolumnie z prawej (kategorie i wyniki wyszukiwania w sklepie) */
.fsh-shop-layout .woocommerce-result-count { float: left; margin: 0 0 20px; width: auto; }
.fsh-shop-layout .woocommerce-ordering { float: right; margin: 0 0 20px; width: auto; }
.fsh-shop-main ul.products { clear: both; }
@media (max-width: 640px) {
	/* Pływające obok siebie (float:left/right) licznik wyników + sortowanie
	   na wąskim ekranie razem były szersze niż dostępna przestrzeń – prawy
	   float (select "Sortuj według…") nie ma jak się złamać do nowej linii
	   jak flex/grid, więc wychodził poza prawą krawędź. Na mobile oba na
	   pełną szerokość, jeden pod drugim. */
	.fsh-shop-layout .woocommerce-result-count,
	.fsh-shop-layout .woocommerce-ordering { float: none; width: 100%; }
	.fsh-shop-main .woocommerce-ordering select { max-width: 100%; }
}
/* Na kategoriach/sklepie breadcrumb jest teraz przeniesiony (PHP) pod H1, więc
   siedzi już wewnątrz .fsh-shop-main z jego paddingiem – tu tylko odstępy. */
.woocommerce-breadcrumb {
	display: block; color: rgba(255,255,255,.5); font-size: 15px;
	margin: 0 0 20px;
}
.woocommerce-breadcrumb a { color: rgba(255,255,255,.7); }
/* karta produktu: breadcrumb zostaje w domyślnym miejscu (nad tytułem), gutter
   z .site-main, tu tylko odstęp od góry */
body.single-product .woocommerce-breadcrumb { padding: 28px 0 0; }
.fsh-shop-layout .woocommerce-products-header__title {
	font-family: var(--fsh-font); text-transform: uppercase; letter-spacing: .02em;
	font-size: clamp(32px,4vw,44px); color: #fff; margin: 0 0 12px;
}
.fsh-shop-layout .fsh-filtered-desc p {
	color: rgba(255,255,255,.6); font-size: 16px; margin: 0 0 24px;
}
.fsh-shop-layout .woocommerce-notices-wrapper { width: 100%; }

/* pasek aktywnych filtrów nad listą produktów – chipy z × do usunięcia pojedynczo */
.fsh-shop-activefilters {
	display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px;
	margin: 0 0 20px; min-height: 1px;
}
.fsh-shop-activefilters:empty { margin: 0; }
.fsh-shop-activefilters .fsh-af-label {
	color: rgba(255,255,255,.5); font-size: 15px; margin-right: 4px;
}
.fsh-shop-activefilters .fsh-af-chip {
	display: inline-flex; align-items: center; gap: 8px;
	background: #101014; border: 1px solid var(--kk-line-2,rgba(255,255,255,.24));
	border-radius: 999px; padding: 6px 8px 6px 14px; color: #fff; font-size: 15px;
	font-family: var(--fsh-font);
}
.fsh-shop-activefilters .fsh-af-chip button {
	appearance: none; background: rgba(255,255,255,.1); border: 0; box-shadow: none;
	color: #fff; width: 20px; height: 20px; border-radius: 50%; cursor: pointer;
	display: grid; place-items: center; font-size: 14px; line-height: 1; padding: 0;
}
.fsh-shop-activefilters .fsh-af-chip button:hover { background: var(--fsh-red,#e11d2a); }
.fsh-shop-activefilters .fsh-af-clear {
	appearance: none; background: none; border: 0; box-shadow: none; cursor: pointer;
	color: rgba(255,255,255,.55); text-decoration: underline; font-family: var(--fsh-font); font-size: 15px;
	margin-left: auto;
}
.fsh-shop-activefilters .fsh-af-clear:hover { color: #fff; background: none; }

.fsh-shop-filters {
	/* --kk-* są zdefiniowane tylko wewnątrz .fsh-kk (konsola na stronie głównej) –
	   panel sklepu żyje poza nią, więc dublujemy te same wartości lokalnie */
	--kk-line: rgba(255,255,255,.13);
	--kk-line-2: rgba(255,255,255,.24);
	--kk-glow: rgba(225,29,42,.32);
	flex: 0 0 280px; width: 280px; align-self: flex-start;
	background: #121116; border: 1px solid var(--kk-line-2,rgba(255,255,255,.24));
	border-top: 3px solid var(--fsh-red,#e11d2a); border-radius: 15px;
	padding: 20px; position: sticky; top: 24px;
	display: flex; flex-direction: column; gap: 22px;
	max-height: calc(100vh - 48px); overflow-y: auto;
}
.fsh-shop-filters__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.fsh-shop-filters__head h2 {
	margin: 0; font-family: var(--fsh-font); font-size: 26px; color: #fff;
	text-transform: uppercase; letter-spacing: .04em;
}
#fsh-shop-filters .fsh-shop-reset {
	appearance: none; background: none; border: 0; box-shadow: none; cursor: pointer;
	color: rgba(255,255,255,.55); text-decoration: underline; text-underline-offset: 3px;
	font-family: var(--fsh-font); font-size: 16px; padding: 0;
}
#fsh-shop-filters .fsh-shop-reset:hover { color: #fff; background: none; }
.fsh-shop-facet__h {
	margin: 0 0 10px; font-family: var(--fsh-font); font-size: 17px; letter-spacing: .06em;
	text-transform: uppercase; color: rgba(255,255,255,.55);
}
.fsh-shop-liga-tree {
	max-height: 300px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px;
	scrollbar-width: thin; scrollbar-color: var(--fsh-red,#e11d2a) #000;
}
.fsh-shop-liga-row { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 8px; }
.fsh-shop-liga-row:hover { background: rgba(255,255,255,.06); }
.fsh-shop-liga-tree::-webkit-scrollbar { width: 6px; }
.fsh-shop-liga-tree::-webkit-scrollbar-track { background: #000; }
.fsh-shop-liga-tree::-webkit-scrollbar-thumb { background: var(--fsh-red,#e11d2a); border-radius: 4px; }
.fsh-shop-liga-tree::-webkit-scrollbar-thumb:hover { background: #ff2f3f; }
.fsh-shop-filters { scrollbar-width: thin; scrollbar-color: var(--fsh-red,#e11d2a) #000; }
.fsh-shop-filters::-webkit-scrollbar { width: 7px; }
.fsh-shop-filters::-webkit-scrollbar-track { background: #000; }
.fsh-shop-filters::-webkit-scrollbar-thumb { background: var(--fsh-red,#e11d2a); border-radius: 4px; }
.fsh-shop-filters::-webkit-scrollbar-thumb:hover { background: #ff2f3f; }
#fsh-shop-filters .fsh-kk-liga-exp {
	appearance: none; margin: 0; background: none; border: 0; padding: 6px; box-shadow: none;
	color: rgba(255,255,255,.6); font-size: 13px; cursor: pointer; transition: transform .15s, color .15s;
	flex: none; border-radius: 6px;
}
#fsh-shop-filters .fsh-kk-liga-exp:hover { color: #fff; background: rgba(255,255,255,.08); }
#fsh-shop-filters .fsh-kk-liga-exp.is-open { transform: rotate(180deg); color: var(--fsh-red); }
.fsh-kk-club-list { display: flex; flex-direction: column; gap: 2px; padding: 2px 4px 6px 30px; }
.fsh-kk-club-list[hidden] { display: none; }
#fsh-shop-filters .fsh-kk-chip {
	appearance: none; margin: 0; background: transparent; border: 1px solid var(--kk-line-2,rgba(255,255,255,.24));
	border-radius: 9px; padding: 8px 12px; cursor: pointer; color: rgba(255,255,255,.74);
	font-size: 16px; font-weight: 400; letter-spacing: normal; text-transform: none;
	line-height: 1.2; box-shadow: none; font-family: var(--fsh-font); transition: .14s;
}
#fsh-shop-filters .fsh-kk-chip:hover { border-color: rgba(255,255,255,.55); color: #fff; background: transparent; }
#fsh-shop-filters .fsh-kk-chip[aria-pressed="true"] { background: var(--fsh-red); border-color: var(--fsh-red); color: #fff; font-weight: 700; }

/* suwak ceny – ten sam tor co sezon, nad nim pola od/do */
.fsh-shop-price__inputs { display: flex; align-items: center; gap: 8px; }
.fsh-shop-price__inputs label { flex: 1 1 0; min-width: 0; margin: 0; }
#fsh-shop-filters .fsh-shop-price__inputs input[type="number"] {
	width: 100%; box-sizing: border-box; margin: 0; padding: 8px 10px;
	background: #0b0a0e; border: 1px solid var(--kk-line-2,rgba(255,255,255,.24)); border-radius: 9px;
	color: #fff; font-family: var(--fsh-font); font-size: 18px; line-height: 1.2;
	font-variant-numeric: tabular-nums; box-shadow: none; -moz-appearance: textfield; appearance: textfield;
}
#fsh-shop-filters .fsh-shop-price__inputs input[type="number"]:focus { outline: none; border-color: var(--fsh-red,#e11d2a); }
#fsh-shop-filters .fsh-shop-price__inputs input[type="number"]::-webkit-outer-spin-button,
#fsh-shop-filters .fsh-shop-price__inputs input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.fsh-shop-price__sep, .fsh-shop-price__cur { color: rgba(255,255,255,.55); font-family: var(--fsh-font); font-size: 18px; flex: none; }

/* ---- siatka produktów WooCommerce przestylowana pod ciemny motyw ---- */
.fsh-shop-main { flex: 1 1 480px; min-width: 0; transition: opacity .15s; }
.fsh-shop-main.is-loading { opacity: .45; pointer-events: none; }
/* WooCommerce doszywa do ul.products.columns-N własne, stare, procentowe style
   siatki (width:22%, float:left, margin:0 3.8% 3.8% 0 na li.product) – to koliduje
   z naszym display:grid i przekręca układ (np. "puste" pierwsze miejsce, bo
   pierwszy produkt renderuje się jako wąski pasek zamiast pełnej karty). Zerujemy
   to jawnie na każdym elemencie siatki. */
.fsh-shop-main ul.products,
.fsh-shop-main ul.products[class*="columns-"] {
	display: grid !important; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)) !important;
	align-items: stretch !important;
	gap: 28px !important; list-style: none; margin: 0; padding: 0;
}
@media (max-width: 640px) {
	/* auto-fill/minmax(240px,..) dawał na wąskim ekranie tylko 1 kolumnę –
	   na mobile na sztywno 2 kolumny, węższy odstęp */
	.fsh-shop-main ul.products,
	.fsh-shop-main ul.products[class*="columns-"] {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: 14px !important;
	}
}
/* PRAWDZIWA PRZYCZYNA pustego pierwszego miejsca: WooCommerce doszywa do
   ul.products::before/::after stary clearfix (content:" "; display:table;) na
   potrzeby float-owej siatki. W display:grid KAŻDE dziecko – łącznie z tym
   pseudo-elementem – staje się elementem siatki, więc ::before zajmowało
   pierwszą komórkę i spychało prawdziwe produkty o jedno miejsce dalej. */
.fsh-shop-main ul.products::before,
.fsh-shop-main ul.products::after,
.fsh-shop-main ul.products[class*="columns-"]::before,
.fsh-shop-main ul.products[class*="columns-"]::after {
	content: none !important; display: none !important;
}
.fsh-shop-main ul.products li.product,
.fsh-shop-main ul.products[class*="columns-"] li.product {
	width: auto !important; float: none !important; margin: 0 !important; clear: none !important;
	/* "strzelba" – neutralizujemy KAŻDY znany sposób na ukrycie/przesunięcie elementu,
	   bo jakiś plugin/motyw wciąż coś robił konkretnie z li.first mimo resetu width/float/margin */
	display: block !important; visibility: visible !important; opacity: 1 !important;
	order: 0 !important; position: static !important; transform: none !important;
	left: auto !important; right: auto !important; top: auto !important;
	overflow: visible !important; min-height: 0 !important;
	background: #101014; border: 1px solid var(--kk-line-2,rgba(255,255,255,.16)); border-radius: 14px;
	padding: 16px 16px 5px 16px; text-align: left;
}
.fsh-shop-main ul.products li.product img {
	border-radius: 8px; width: 100%; display: block;
	aspect-ratio: 3 / 4; object-fit: cover;
}
/* Plakietka rozmiar/sezon/wersja/stan w lewym górnym rogu zdjęcia (widok
   kategorii/wyszukiwania) – pozycjonowana względem linku-okładki produktu. */
.fsh-shop-main ul.products li.product > a.woocommerce-LoopProduct-link {
	position: relative;
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
}
.fsh-loop-badge {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 2;
	max-width: calc(100% - 16px);
	background: rgba(0,0,0,.78);
	color: #fff;
	font-family: var(--fsh-font);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .02em;
	line-height: 1.3;
	padding: 5px 9px;
	border-left: 2px solid var(--fsh-red,#e11d2a);
}
.fsh-shop-main ul.products li.product .woocommerce-loop-product__title {
	color: #fff; font-family: var(--fsh-font); font-size: 20px; margin: 12px 0 6px;
	/* Stała wysokość na 3 linijki (niezależnie od tego, czy tytuł faktycznie
	   zajmuje 2 czy 3 linijki) – to usuwa PRZYCZYNĘ rozjazdu ceny/przycisku
	   u źródła, zamiast próbować kompensować różnicę flexboxem niżej w
	   karcie. Krótszy tytuł dostaje po prostu pustą przestrzeń pod spodem. */
	line-height: 1.2;
	min-height: calc(1.2em * 3);
}
.fsh-shop-main ul.products li.product .price { color: var(--fsh-red,#e11d2a); font-size: 19px; font-weight: 600; }
.fsh-shop-main ul.products li.product .price del { color: rgba(255,255,255,.4); }
.fsh-shop-main ul.products li.product .button {
	background: var(--fsh-red,#e11d2a); color: #fff; border-radius: 8px; font-family: var(--fsh-font);
	text-transform: uppercase; letter-spacing: .04em;
}
/* "Dodaj do koszyka" na tej samej wysokości na całym rzędzie, niezależnie od
   długości tytułu (2 czy 3 linijki) – dokładnie ta sama technika co na
   strzelambolubie.eu (sprawdzone w ich CSS): li.product ma jawne
   height:100% (żeby wszystkie karty w rzędzie faktycznie zrównały wysokość,
   nie tylko "z grubsza" przez grid stretch), a.woocommerce-LoopProduct-link
   (zdjęcie+tytuł+cena) jest flex:1 1 auto i rozciąga się na całą dostępną
   wysokość, margin-top:auto na .price (w środku linku) domyka cenę do dołu
   TEGO rozciągniętego linku – przycisk (rodzeństwo linku) ląduje więc zawsze
   dokładnie w tym samym miejscu, niezależnie od długości tytułu nad nim.
   Przycisk ma zwykły, stały odstęp (margin-top), NIE auto. */
.fsh-shop-main ul.products li.product {
	display: flex !important;
	flex-direction: column;
	height: 100%;
}
.fsh-shop-main ul.products li.product .woocommerce-loop-product__title { flex: 0 0 auto; }
.fsh-shop-main ul.products li.product .price { margin-top: auto; }
.fsh-shop-main ul.products li.product > a.button {
	display: block !important; width: 100% !important; box-sizing: border-box;
	margin-top: 12px; text-align: center;
}
.fsh-shop-main .woocommerce-ordering select {
	background: #101014; color: #fff; border: 1px solid var(--kk-line-2,rgba(255,255,255,.24));
	border-radius: 8px; padding: 8px 12px; font-family: var(--fsh-font); font-size: 16px;
}
.fsh-shop-main .woocommerce-result-count { color: rgba(255,255,255,.55); font-size: 16px; }
.fsh-shop-main .woocommerce-pagination { margin-top: 30px; }
.fsh-shop-main .woocommerce-pagination ul.page-numbers {
	display: flex; gap: 8px; list-style: none; padding: 0; margin: 0; border: 0;
}
.fsh-shop-main .woocommerce-pagination ul.page-numbers li { border: 0; float: none; }
.fsh-shop-main .woocommerce-pagination a.page-numbers,
.fsh-shop-main .woocommerce-pagination span.page-numbers {
	display: grid; place-items: center; min-width: 38px; height: 38px; border-radius: 8px;
	background: #101014; color: rgba(255,255,255,.7); border: 0;
	text-decoration: none; font-family: var(--fsh-font);
}
.fsh-shop-main .woocommerce-pagination span.page-numbers.current { background: var(--fsh-red,#e11d2a); color: #fff; }
.fsh-shop-main .woocommerce-pagination a.page-numbers:hover { background: var(--fsh-red,#e11d2a); color: #fff; }

/* Przycisk "Filtry" / tło / krzyżyk zamknięcia – widoczne tylko na mobile,
   patrz media query niżej. Domyślnie (desktop) schowane. */
.fsh-shop-filters-toggle,
.fsh-shop-filters-backdrop,
.fsh-shop-filters-close { display: none; }

@media (max-width: 960px) {
	.fsh-shop-layout { flex-direction: column; }

	/* Przycisk otwierający filtry – NIE nad wynikami: przyklejony na stałe
	   do prawej krawędzi ekranu, widoczny cały czas (także przy scrollu).
	   z-index wysoko (200+), żeby na pewno był nad sticky headerem i
	   fixed paskiem waluty/języka na dole. */
	.fsh-shop-filters-toggle {
		display: flex; align-items: center; justify-content: center;
		position: fixed; right: 0; bottom: 130px; z-index: 200;
		width: auto; margin: 0; padding: 8px 6px;
		background: var(--fsh-red,#e11d2a); color: #fff; border: 0;
		border-radius: 10px 0 0 10px;
		box-shadow: -2px 4px 16px rgba(0,0,0,.4);
		font-family: var(--fsh-font); font-size: 13px; font-weight: 700;
		text-transform: uppercase; letter-spacing: .04em; cursor: pointer;
		writing-mode: vertical-rl; text-orientation: mixed;
	}
	.fsh-shop-filters-toggle:hover { filter: brightness(1.1); }

	.fsh-shop-filters-backdrop {
		position: fixed; inset: 0; z-index: 210;
		background: rgba(3,3,4,.65); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
	}
	.fsh-shop-filters-backdrop[hidden] { display: none; }

	/* Sam panel: WYŚRODKOWANY popup (jak popovery filtrów konsoli na
	   głównej), NIE szuflada/blok nad wynikami. Domyślnie niewidoczny przez
	   opacity+pointer-events (żeby transition działał), nie przez display. */
	.fsh-shop-filters {
		position: fixed; z-index: 211; top: 50%; left: 50%; bottom: auto; right: auto;
		transform: translate(-50%,-50%) scale(.96);
		width: min(92vw, 420px); max-width: 92vw;
		height: auto; max-height: 82vh;
		opacity: 0; pointer-events: none;
		transition: opacity .18s ease, transform .18s ease;
		border-radius: 15px; border: 1px solid var(--kk-line-2,rgba(255,255,255,.24));
		border-top: 3px solid var(--fsh-red);
		margin: 0; padding: 21px; box-shadow: 0 30px 80px rgba(0,0,0,.65);
		overflow-y: auto;
	}
	.fsh-shop-filters.is-open {
		opacity: 1; pointer-events: auto;
		transform: translate(-50%,-50%) scale(1);
	}

	.fsh-shop-filters__head { position: relative; padding-right: 30px; }
	.fsh-shop-filters-close {
		display: flex; align-items: center; justify-content: center;
		position: absolute; right: 0; top: 50%; transform: translateY(-50%);
		width: 30px; height: 30px; padding: 0; margin: 0;
		background: none; border: 0; border-radius: 8px; box-shadow: none;
		color: rgba(255,255,255,.7); font-size: 26px; line-height: 1; cursor: pointer;
	}
	.fsh-shop-filters-close:hover { color: #fff; background: rgba(255,255,255,.08); }
}
/* blokada scrolla strony pod otwartym popupem filtrów */
body.fsh-shop-filters-lock { overflow: hidden; }

/* ==========================================================================
   Szachownica tekst/zdjęcie na stronie głównej (układ jak na
   fse.jegtheme.com/boxernia) – 4 kolumny × 2 rzędy, na przemian czarna karta
   tekstowa i pełnokadrowe zdjęcie koszulki.
   ========================================================================== */
.elementor-element-6a44a2e,
.elementor-element-6a44a2e .elementor-widget-container,
.elementor-element-fshshowcasesc,
.elementor-element-fshshowcasesc .elementor-widget-container {
	width: 100% !important;
	max-width: 100% !important;
	padding: 0 !important;
}
/* Flex zamiast grid o 4 równych kolumnach: zdjęcia koszulek są pionowe
   (portret), więc przy 4 identycznych kolumnach zostawały puste, ciemne pasy
   między samą koszulką a sąsiednim kaflem tekstowym. Kafle tekstowe (30%)
   są teraz wyraźnie szersze niż kafle ze zdjęciem (20%) – szerokość zdjęcia
   dopasowana do tego, ile faktycznie zajmuje pionowa koszulka przy wysokości
   360px, więc kafel ze zdjęciem jest w całości wypełniony, a odzyskana
   przestrzeń trafia do kafli z tekstem. 2×30% + 2×20% = 100%, więc wiersz
   wciąż łamie się co dokładnie 4 kafle. */
.fsh-showcase {
	display: flex; flex-wrap: wrap;
	width: 100%;
}
.fsh-showcase__cell { height: 360px; box-sizing: border-box; }
.fsh-showcase__cell--text { flex: 0 0 30%; max-width: 30%; }
.fsh-showcase__cell--img { flex: 0 0 20%; max-width: 20%; }
.fsh-showcase__cell--text {
	background: #050505 url('assets/old-black-background.webp') center/cover no-repeat;
	display: flex; flex-direction: column; align-items: center;
	justify-content: center; text-align: center; padding: 36px 28px; gap: 12px;
}
.fsh-showcase__icon {
	display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 4px;
	border: 1.5px solid var(--fsh-red,#e11d2a); border-radius: 50%; color: var(--fsh-red,#e11d2a);
}
.fsh-showcase__icon svg { width: 26px; height: 26px; }
.fsh-showcase__h {
	margin: 0; font-family: var(--fsh-font); text-transform: uppercase; letter-spacing: .02em;
	font-size: clamp(24px,2.2vw,30px); color: #fff;
}
.fsh-showcase__p { margin: 0; color: rgba(255,255,255,.6); font-size: 16px; line-height: 1.5; max-width: 32ch; }
.fsh-showcase__cta {
	margin-top: 6px; color: var(--fsh-red,#e11d2a); font-weight: 700; text-transform: uppercase;
	letter-spacing: .06em; font-size: 15px; text-decoration: none; display: inline-flex; align-items: center; gap: 6px;
}
.fsh-showcase__cta span { transition: transform .15s; }
.fsh-showcase__cta:hover span { transform: translateX(4px); }
/* object-fit:cover – kolumna ze zdjęciem jest już wąska (20%, dopasowana do
   proporcji pionowej koszulki przy wysokości 360px), więc "contain" zostawiał
   tylko czarą szczelinę po bokach/górze-dole zamiast realnie eliminować
   przerwę. "cover" wypełnia kafel bez cienia czarnej przestrzeni, kadrując
   nieznacznie – przy tak wąskiej kolumnie różnica jest minimalna. */
.fsh-showcase__cell--img { display: block; position: relative; overflow: hidden; }
.fsh-showcase__cell--img img {
	width: 100%; height: 100%; object-fit: cover;
	display: block; transition: transform .5s ease;
}
.fsh-showcase__cell--img:hover img { transform: scale(1.06); }
@media (max-width: 900px) {
	.fsh-showcase__cell { height: 280px; }
	.fsh-showcase__cell--text,
	.fsh-showcase__cell--img { flex: 0 0 50%; max-width: 50%; }
}
/* Kolejność w HTML (T=tekst, I=zdjęcie): T I T I | I T I T – szachownica
   tylko przy 4 kolumnach. Przy 2 kolumnach i 1 kolumnie przestawiamy kafle
   przez "order", żeby zdjęcie i tekst zawsze się przeplatały (bez dwóch
   koszulek pod sobą). */
@media (max-width: 900px) {
	/* 2 kolumny: T I / I T / T I / I T */
	.fsh-showcase__cell:nth-child(1) { order: 1; }
	.fsh-showcase__cell:nth-child(2) { order: 2; }
	.fsh-showcase__cell:nth-child(5) { order: 3; }
	.fsh-showcase__cell:nth-child(6) { order: 4; }
	.fsh-showcase__cell:nth-child(3) { order: 5; }
	.fsh-showcase__cell:nth-child(4) { order: 6; }
	.fsh-showcase__cell:nth-child(7) { order: 7; }
	.fsh-showcase__cell:nth-child(8) { order: 8; }
}
@media (max-width: 560px) {
	.fsh-showcase__cell--text,
	.fsh-showcase__cell--img { flex: 0 0 100%; max-width: 100%; }
	/* 1 kolumna: T I T I T I T I */
	.fsh-showcase__cell:nth-child(1) { order: 1; }
	.fsh-showcase__cell:nth-child(2) { order: 2; }
	.fsh-showcase__cell:nth-child(3) { order: 3; }
	.fsh-showcase__cell:nth-child(4) { order: 4; }
	.fsh-showcase__cell:nth-child(6) { order: 5; }
	.fsh-showcase__cell:nth-child(5) { order: 6; }
	.fsh-showcase__cell:nth-child(8) { order: 7; }
	.fsh-showcase__cell:nth-child(7) { order: 8; }
}

/* Przyciski "Zobacz wszystko" / "Zobacz koszulki piłkarskie" (nad karuzelą
   produktów) miały niespójny hover odziedziczony z domyślnych ustawień
   Elementora – wymuszamy jednakowy, wyraźny stan hover na obu: czarne tło,
   czerwona ramka, czerwony napis/ikona.
   Ani zwykły "border", ani "outline" nie domykały się w prawym dolnym rogu –
   przyczyna: ".elementor-button" ma sitewide clip-path ścinający ten róg pod
   kątem (patrz sekcja "Kształt przycisków sitewide" niżej w tym pliku), a
   border/outline nie podążają za skosem clip-path, tylko są nim ucinane.
   Dokładnie ten sam problem rozwiązuje już przycisk "Zobacz koszyk" w
   nagłówku (patrz komentarz przy #fsh-cart .elementor-button--view-cart) –
   dwie nałożone, osobno przycięte warstwy (::before = kolor ramki na całym
   kształcie, ::after = wypełnienie wsunięte o grubość ramki, przycięte tym
   samym skosem pomniejszonym o tę grubość) dają ciągłą linię na całym,
   również ściętym, obwodzie. Tu użyty ten sam wzorzec, z 14px/12px – bo
   sitewide clip-path na tym przycisku tnie róg o 14px. Globalne
   "a:hover{text-decoration:underline}" też trzeba jawnie zdjąć. */
.elementor-element-8d92357 .elementor-button,
.elementor-element-85eb151 .elementor-button {
	position: relative;
	isolation: isolate;
	background-color: transparent !important;
}
.elementor-element-8d92357 .elementor-button::before,
.elementor-element-85eb151 .elementor-button::before,
.elementor-element-8d92357 .elementor-button::after,
.elementor-element-85eb151 .elementor-button::after {
	content: "";
	position: absolute;
	z-index: -1;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
	transition: background-color .2s ease;
}
.elementor-element-8d92357 .elementor-button::before,
.elementor-element-85eb151 .elementor-button::before {
	inset: 0;
	background: #F40000;
}
.elementor-element-8d92357 .elementor-button::after,
.elementor-element-85eb151 .elementor-button::after {
	inset: 2px;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 12px), calc(100% - 12px) 100%, 0 100%);
	background: #F40000;
}
.elementor-element-8d92357 .elementor-button:hover::before,
.elementor-element-85eb151 .elementor-button:hover::before {
	background: var(--fsh-red,#e11d2a);
}
.elementor-element-8d92357 .elementor-button:hover::after,
.elementor-element-85eb151 .elementor-button:hover::after {
	background: #000;
}
.elementor-element-8d92357 .elementor-button:hover,
.elementor-element-85eb151 .elementor-button:hover {
	color: var(--fsh-red,#e11d2a) !important;
	text-decoration: none !important;
}
.elementor-element-8d92357 .elementor-button:hover .elementor-button-icon,
.elementor-element-85eb151 .elementor-button:hover .elementor-button-icon,
.elementor-element-8d92357 .elementor-button:hover i,
.elementor-element-85eb151 .elementor-button:hover i {
	color: var(--fsh-red,#e11d2a) !important;
}

/* Siatka grafik ligowych (kontener 3fe2314) – czerwony akcent nad każdym
   zdjęciem (zamiast wcześniejszych kwadratów w rogach) + czerwona poświata
   i lekkie przybliżenie na hover.
   Zamieniona na slider: to natywny kontener Elementora (display:grid przez
   CSS var --display), więc "display:flex!important" nadpisuje to wprost
   (var nie ma tu znaczenia, gdy sama właściwość jest wymuszona). Karty
   (.e-con) dostają stałą szerokość i scroll-snap zamiast siatki 3×2.
   Strzałki dokładane przez JS w wp_footer (ten kontener to czysty Elementor,
   nie własny shortcode z PHP-owym markupem jak galeria na /klejenie-
   nadrukow/) – position:absolute, więc nie wchodzą w scroll-snap flow. */
.elementor-element-3fe2314.e-grid {
	position: relative;
	display: flex !important;
	flex-wrap: nowrap !important;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	padding: 4px 4px 12px !important;
	gap: 32px !important;
}
.elementor-element-3fe2314.e-grid::-webkit-scrollbar { display: none; height: 0; }
/* przeciąganie myszką (JS w functions.php) */
.elementor-element-3fe2314.e-grid { cursor: grab; }
.elementor-element-3fe2314.e-grid.is-dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }
.elementor-element-3fe2314.e-grid.is-dragging a { pointer-events: none; }
.elementor-element-3fe2314.e-grid img { -webkit-user-drag: none; user-select: none; }
/* dokładnie 4 karty widoczne na desktopie (3 gapy po 32px między nimi),
   skalowane w dół do 3/2/~1.3 na węższych ekranach zamiast stałego px/vw */
.elementor-element-3fe2314.e-grid > .e-con {
	flex: 0 0 auto !important;
	box-sizing: border-box;
	width: calc((100% - 3 * 32px) / 4);
	scroll-snap-align: start;
}
@media (max-width: var(--fsh-max-width)) {
	.elementor-element-3fe2314.e-grid > .e-con { width: calc((100% - 2 * 32px) / 3); }
}
@media (max-width: 767px) {
	.elementor-element-3fe2314.e-grid > .e-con { width: calc((100% - 28px) / 2); }
}
@media (max-width: 480px) {
	.elementor-element-3fe2314.e-grid > .e-con { width: min(280px, 82vw); }
}
/* Strzałki – ten sam wygląd co w karuzeli "Ostatnio dodane" (d6554fc):
   44px pole bez tła/obwódki, cienki biały chevron 30px, na hover czerwony i
   powiększony ×1.25 (slider kręci się w pętli, więc bez stanu
   wyszarzenia na krańcach). Siedzą w bocznym marginesie
   wrappera (.fsh-league-slider, dokładany przez JS), nie na zdjęciach. */
.fsh-league-slider {
	position: relative;
	padding: 0 56px;
}
.fsh-league-slider__arrow {
	position: absolute;
	top: 38%;
	transform: translateY(-50%);
	z-index: 5;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	background: transparent !important;
	color: #fff;
	border: none !important;
	border-radius: 0;
	padding: 0 !important;
	cursor: pointer;
}
.fsh-league-slider__arrow svg {
	width: 30px;
	height: 30px;
	transition: color .15s ease, transform .15s ease;
}
.fsh-league-slider__arrow:hover,
.fsh-league-slider__arrow:focus-visible { color: var(--fsh-red,#e11d2a); }
.fsh-league-slider__arrow:hover svg,
.fsh-league-slider__arrow:focus-visible svg { transform: scale(1.25); }
.fsh-league-slider__arrow--prev { left: 0; }
.fsh-league-slider__arrow--next { right: 0; }
@media (max-width: 700px) {
	.fsh-league-slider { padding: 0 38px; }
	.fsh-league-slider__arrow { width: 34px; height: 34px; }
	.fsh-league-slider__arrow svg { width: 22px; height: 22px; }
}
@media (max-width: 767px) {
	.elementor-element-3fe2314.e-grid { gap: 32px 28px !important; }
}
.fsh-league-photo {
	position: relative;
	display: block;
}
.fsh-league-photo .elementor-widget-container {
	overflow: hidden;
	transition: box-shadow .2s ease;
}
/* czerwona kreska pod tytułem karty (zamiast nad zdjęciem) – tytuł to widget
   heading zaraz po zdjęciu w tym samym kontenerze karty */
.fsh-league-photo + .elementor-widget-heading .elementor-heading-title {
	position: relative;
	padding-bottom: 14px;
}
.fsh-league-photo + .elementor-widget-heading .elementor-heading-title::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 0;
	transform: translateX(-50%);
	width: 56px;
	height: 3px;
	background: var(--fsh-red, #e11d2a);
}
.fsh-league-photo img {
	display: block;
	width: 100%;
	transition: transform .35s ease, filter .35s ease;
}
/* Hover na CAŁEJ karcie (zdjęcie + tytuł + opis), nie tylko na zdjęciu:
   delikatna poświata tła + przybliżenie zdjęcia (bez ramki). */
.elementor-element-3fe2314 > .e-con {
	position: relative;
	padding: 16px;
	border: 2px solid transparent;
	border-radius: 4px;
	transition: border-color .2s ease, background-color .2s ease;
}
/* czerwona ramka na hover usunięta na życzenie użytkownika – zostaje sama
   delikatna poświata tła + przybliżenie zdjęcia */
.elementor-element-3fe2314 > .e-con:hover {
	background-color: rgba(225,29,42,.05);
}
.elementor-element-3fe2314 > .e-con:hover .fsh-league-photo img {
	transform: scale(1.05);
	filter: brightness(1.05) saturate(1.1);
}

/* ==========================================================================
   "OSTATNIO DODANE" – strzałki do przewijania zamiast kropek (dots wyłączone
   w ustawieniach widgetu d6554fc, ta reguła to tylko twarda gwarancja na
   wypadek gdyby Slick i tak je dorenderował), 2 przyciski (Zobacz wszystko /
   Zobacz koszulki) wyśrodkowane pod sliderem, z lekkim odstępem.
   ========================================================================== */
.elementor-element-d6554fc ul.slick-dots { display: none !important; }
.elementor-element-d6554fc .slick-arrow {
	opacity: 1 !important;
	visibility: visible !important;
	background: transparent !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}
.elementor-element-d6554fc .slick-arrow i {
	color: #fff;
	transition: color .15s ease, transform .15s ease;
}
.elementor-element-d6554fc .slick-arrow:hover {
	background: transparent !important;
}
.elementor-element-d6554fc .slick-arrow:hover i {
	color: var(--fsh-red, #e11d2a);
	transform: scale(1.25);
}
.elementor-element-d6554fc .slick-arrow.slick-disabled i { color: rgba(255,255,255,.25); }
.elementor-element-330068a { display: none !important; }
/* WooCommerce dokłada domyślny margines pod listą produktów w karuzeli –
   zerujemy go, żeby odstęp karuzela→przyciski był w pełni pod naszą kontrolą */
.elementor-element-d6554fc ul.products {
	margin-bottom: 0 !important;
}
.elementor-element-b629590 {
	display: flex !important;
	justify-content: center !important;
	gap: 20px !important;
	width: 100% !important;
	margin: 0 !important;
	padding-bottom: 28px !important;
	position: relative;
}
.elementor-element-b629590::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 0;
	transform: translateX(-50%);
	width: 120px;
	max-width: 60%;
	height: 3px;
	background: var(--fsh-red, #e11d2a);
}

/* ==========================================================================
   PORZĄDEK Z ODSTĘPAMI MIĘDZY SEKCJAMI STRONY GŁÓWNEJ – audyt całej strony,
   sekcja po sekcji, bo każda miała inny, przypadkowy odstęp złożony z
   marginesów/paddingów Elementora (część % szerokości, część px) zamiast
   jednego świadomego systemu. Zasada: domyślnie 64px między sekcjami
   (reguła ogólna niżej), a każdy wyjątek ma osobno wypisany, policzony
   powód – żeby przy kolejnej zmianie było wiadomo co z czym się sumuje.
   ========================================================================== */
.elementor-95 > .elementor-element + .elementor-element {
	margin-top: 64px;
}
@media (max-width: 767px) {
	.elementor-95 > .elementor-element + .elementor-element {
		margin-top: 40px;
	}
}
/* hero → slider producentów → liczby zaufania → "Witaj w świecie" mają stać
   razem, bez odstępu (jeden wizualny blok pod hero). */
.elementor-element-844521c,
.elementor-element-675b584,
.elementor-element-50c019b,
.elementor-element-c3c8d75 {
	margin-top: 0 !important;
}
/* Karuzela "Ostatnio dodane" → przyciski = 0px (margin-top na b629590
   usunięty na życzenie użytkownika). Przyciski → "Dlaczego warto" mają
   nadal dać w sumie 64px, więc 67ceb06 bierze cały odstęp jako własny
   padding-top. */
.elementor-element-67ceb06 {
	margin-top: 0 !important;
	padding-top: 64px !important;
}
/* "Dlaczego warto" → szachownica = ustalone 64px wprost na marginesie
   szachownicy (zamiast oryginalnych "3%" - wartość procentowa liczona od
   SZEROKOŚCI, nie wysokości, dawała nieprzewidywalny, za mały odstęp). */
.elementor-element-6a44a2e {
	margin-top: 64px !important;
	margin-bottom: 0 !important;
}
/* Szachownica 8 kafli → pas "Chcesz zarobić…" → karty Hot Deals/Premium →
   pas "Doklejamy nazwisko…" → slider lig: RÓWNE odstępy między wszystkimi
   (życzenie użytkownika) – ten sam 64px/40px co reguła ogólna. Karty
   Hot Deals/Premium (.fsh-hp) nie mają własnego pionowego paddingu, więc
   cały odstęp to wyłącznie ten margines. */
.elementor-element-8de960c,
.elementor-element-e7a595a,
.elementor-element-fshprintpromo,
.elementor-element-3fe2314 {
	margin-top: 64px !important;
	margin-bottom: 0 !important;
}
@media (max-width: 767px) {
	.elementor-element-8de960c,
	.elementor-element-e7a595a,
	.elementor-element-fshprintpromo,
	.elementor-element-3fe2314 { margin-top: 40px !important; }
}
/* siatka lig → zamknięcie "Zakupy z nami…": wyłączone z odstępu 64px,
   zamknięcie ma własny, celowo duży padding-top (60px). */
.elementor-element-01c7082 {
	margin-top: 0 !important;
}
/* Twarda gwarancja przeciw fantomowym odstępom – zerujemy wysokość/min-height
   na kontenerach na wypadek, gdyby coś (nie margines/padding – te są już
   pod kontrolą wyżej) rozciągało je ponad realną wysokość treści. */
.elementor-element-6a44a2e,
.elementor-element-c3c8d75,
.elementor-element-8de960c {
	height: auto !important;
	min-height: 0 !important;
}
.elementor-element-b629590 .elementor-widget-button { flex: 0 0 auto !important; width: auto !important; }
.elementor-element-b629590 .elementor-button,
.elementor-element-b629590 .elementor-button-text {
	font-size: 16px !important;
}
@media (max-width: 600px) {
	.elementor-element-b629590 { flex-direction: column; align-items: stretch; }
}

/* Strzałki karuzeli "Ostatnio dodane" (widget premium-woo-products,
   element d6554fc) – wtyczka ma regułę ".premium-woocommerce:not(...)
   .slick-arrow{border-radius:50%}" o tej samej specyficzności co własna
   reguła widgetu (border-radius:0px), a w kolejności ładowania arkuszy
   wygrywa wtyczka, więc strzałki wychodziły jako okrągłe mimo ustawienia
   "0" w Elementorze. Witryna nie stosuje zaokrągleń nigdzie – wymuszamy
   ostry kwadrat z !important. */
.elementor-element-d6554fc .slick-arrow { border-radius: 0 !important; }

/* Strzałki "Ostatnio dodane" – ujednolicone ze strzałkami galerii realizacji
   (.fsh-printing-gallery__arrow): cienki chevron SVG zamiast glifu
   FontAwesome, bez tła i obwódki, w bocznym marginesie karuzeli zamiast na
   zdjęciach skrajnych produktów. Wtyczka renderuje je jako <a type="button">,
   więc łapał je globalny reset [type=button]{border:1px solid #c36;padding}
   – stąd !important na border/padding. Karuzela (ul.products = .slick-slider,
   position:relative, strzałki są jej dziećmi) dostaje boczny padding, a Slick
   liczy szerokość slajdów od .slick-list, więc nic się nie rozjeżdża. */
.elementor-element-d6554fc ul.products.slick-slider { padding: 0 56px !important; }
.elementor-element-d6554fc .premium-woocommerce a.carousel-arrow {
	display: grid !important;
	place-items: center;
	width: 44px !important;
	height: 44px !important;
	padding: 0 !important;
	margin: 0 !important;
	border: none !important;
	line-height: 0;
	top: 38% !important;
}
.elementor-element-d6554fc .slick-arrow i {
	display: block;
	width: 30px;
	height: 30px;
	font-size: 0 !important;
	background-color: currentColor;
	-webkit-mask: var(--fsh-chev) center / contain no-repeat;
	mask: var(--fsh-chev) center / contain no-repeat;
}
.elementor-element-d6554fc .slick-arrow i::before { content: none !important; }
.elementor-element-d6554fc .carousel-prev i { --fsh-chev: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M15%205l-7%207%207%207%27%2F%3E%3C%2Fsvg%3E"); }
.elementor-element-d6554fc .carousel-next i { --fsh-chev: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23000%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M9%205l7%207-7%207%27%2F%3E%3C%2Fsvg%3E"); }
@media (max-width: 700px) {
	.elementor-element-d6554fc ul.products.slick-slider { padding: 0 38px !important; }
	.elementor-element-d6554fc .premium-woocommerce a.carousel-arrow { width: 34px !important; height: 34px !important; }
	.elementor-element-d6554fc .slick-arrow i { width: 22px; height: 22px; }
}

/* ==========================================================================
   Kształt przycisków sitewide: ostre rogi, prawy dolny róg ścięty pod kątem.
   STAŁA ZASADA (życzenie właściciela): KAŻDY przycisk na stronie ma ten
   ścięty róg – każdy nowy przycisk/CTA dopisać do tej listy (albo dać mu
   klasę .button / .wp-element-button, które już tu są). Przyciski
   jednolite (bez obramowania) – zwykły clip-path wystarcza; przyciski
   z ramką patrz wzorzec ::before/::after przy 8d92357/85eb151.
   ========================================================================== */
.elementor-button,
a.button,
button.button,
input.button,
.wp-element-button,
input[type="submit"]:not(.elementor-search-form__submit),
button[type="submit"]:not(.elementor-search-form__submit),
.single_add_to_cart_button,
.checkout-button,
#place_order,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.wp-block-button__link,
.fsh-earn-btn,
#fsh-kk a.fsh-kk-cta,
#fsh-kk .fsh-kk-pop-apply,
.fsh-filter__submit,
.fsh-hp__cta,
.fsh-printing-promo__cta {
	border-radius: 0 !important;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%) !important;
}

/* Kafelki HOT DEALS / PREMIUM w menu głównym – ten sam kształt; poświata (pulse)
   przeniesiona na ::before BEZ clip-path, inaczej pierścień box-shadow wygląda
   na ucięty w rogu razem z kafelkiem. */
.fsh-nav__item--hot > .fsh-nav__link,
.fsh-nav__item--premium > .fsh-nav__link {
	position: relative;
	isolation: isolate;
	border-radius: 0 !important;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%) !important;
	animation: none !important;
}
.fsh-nav__item--hot > .fsh-nav__link::before,
.fsh-nav__item--premium > .fsh-nav__link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	animation: fshTilePulse 2.6s ease-in-out infinite;
}
.fsh-nav__item--hot:hover > .fsh-nav__link::before,
.fsh-nav__item--hot.is-open > .fsh-nav__link::before,
.fsh-nav__item--premium:hover > .fsh-nav__link::before,
.fsh-nav__item--premium.is-open > .fsh-nav__link::before { animation: none; }
@media (prefers-reduced-motion: reduce) {
	.fsh-nav__item--hot > .fsh-nav__link::before,
	.fsh-nav__item--premium > .fsh-nav__link::before { animation: none; }
}

/* Pigułki filtrów (konsola + sklep) i przyciski popovera MAJĄ widoczne obramowanie
   i zmianę koloru na hover/aktywne – zwykły clip-path na całym elemencie by je
   ucinał (border i box-shadow znikałyby na ściętej krawędzi). Zamiast tego dwie
   nałożone, osobno przycięte warstwy (::before = kolor obramowania, ::after =
   wypełnienie, wsunięte o szerokość "ramki") dają ścięty róg z realną, ciągłą
   linią obramowania i działającym hoverem przez zmianę zmiennych CSS. */
#fsh-kk .fsh-kk-chip,
#fsh-shop-filters .fsh-kk-chip {
	position: relative;
	isolation: isolate;
	background: transparent !important;
	border: none !important;
	border-radius: 0 !important;
	--fsh-chip-border: var(--kk-line-2);
	--fsh-chip-fill: transparent;
}
#fsh-kk .fsh-kk-chip::before, #fsh-shop-filters .fsh-kk-chip::before,
#fsh-kk .fsh-kk-chip::after,  #fsh-shop-filters .fsh-kk-chip::after {
	content: "";
	position: absolute;
	z-index: -1;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%);
}
#fsh-kk .fsh-kk-chip::before, #fsh-shop-filters .fsh-kk-chip::before {
	inset: 0;
	background: var(--fsh-chip-border);
}
#fsh-kk .fsh-kk-chip::after, #fsh-shop-filters .fsh-kk-chip::after {
	inset: 1px;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%);
	background: var(--fsh-chip-fill);
}
#fsh-kk .fsh-kk-chip:hover, #fsh-shop-filters .fsh-kk-chip:hover { --fsh-chip-border: rgba(255,255,255,.55); }
#fsh-kk .fsh-kk-chip[aria-pressed="true"], #fsh-shop-filters .fsh-kk-chip[aria-pressed="true"] {
	--fsh-chip-border: var(--fsh-red); --fsh-chip-fill: var(--fsh-red);
}

#fsh-kk .fsh-kk-pop-btn,
#fsh-shop-filters .fsh-kk-pop-btn {
	position: relative;
	isolation: isolate;
	background: transparent !important;
	border: none !important;
	border-radius: 0 !important;
	--fsh-pop-border: var(--kk-line-2);
}
#fsh-kk .fsh-kk-pop-btn::before, #fsh-shop-filters .fsh-kk-pop-btn::before,
#fsh-kk .fsh-kk-pop-btn::after,  #fsh-shop-filters .fsh-kk-pop-btn::after {
	content: "";
	position: absolute;
	z-index: -1;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
}
#fsh-kk .fsh-kk-pop-btn::before, #fsh-shop-filters .fsh-kk-pop-btn::before {
	inset: 0;
	background: var(--fsh-pop-border);
}
#fsh-kk .fsh-kk-pop-btn::after, #fsh-shop-filters .fsh-kk-pop-btn::after {
	inset: 1px;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%);
	background: rgba(20,19,24,.95);
}
#fsh-kk .fsh-kk-pop-btn:hover, #fsh-shop-filters .fsh-kk-pop-btn:hover,
#fsh-kk .fsh-kk-pop.is-open .fsh-kk-pop-btn { --fsh-pop-border: var(--fsh-red); }
#fsh-kk .fsh-kk-pop.is-set .fsh-kk-pop-btn { --fsh-pop-border: rgba(225,29,42,.55); }

/* Natywne <select> nie wspierają dobrze warstwowego obramowania na ściętym rogu
   (własne obramowanie/strzałka przeglądarki) – zostają ostre, bez ścięcia,
   żeby obramowanie się nie gubiło. */
.fsh-filter select,
#fsh-topbar select,
#fsh-topbar-right select.wmc-nav,
.fsh-lang select,
.fsh-shop-main .woocommerce-ordering select {
	border-radius: 0 !important;
}

/* ==========================================================================
   Karta produktu (WooCommerce single-product) – domyślny szablon WooCommerce,
   motyw nie miał dla niej żadnych stylów (białe tło, czarny tekst, zielone
   akcenty WooCommerce). Układ 2 kolumny zostaje (woocommerce-layout.css),
   tu tylko wymuszamy flex z konkretnym odstępem + ciemna kolorystyka marki.
   ========================================================================== */
body.single-product div.product {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 48px;
	margin-top: 24px;
}
body.single-product div.product > .images {
	float: none;
	width: calc(56% - 24px);
}
body.single-product div.product > .summary {
	float: none;
	width: calc(44% - 24px);
}
@media (max-width: 900px) {
	body.single-product div.product > .images,
	body.single-product div.product > .summary { width: 100%; }
}
/* Zakładki / powiązane / cross-sell produkty renderują się WEWNĄTRZ tego
   samego div.product (WooCommerce dopina je po summary), więc bez tego
   dziedziczyły domyślne flex-basis:auto jako trzeci/czwarty element
   flex-row – kurczyły się do szerokości treści zamiast zająć cały wiersz,
   stąd grid powiązanych produktów mieścił tylko 2 kolumny zamiast 4. */
body.single-product div.product > .woocommerce-tabs,
body.single-product div.product > .related.products,
body.single-product div.product > .up-sells.products,
body.single-product div.product > .cross-sells {
	flex-basis: 100%;
	width: 100%;
}

/* Galeria */
.woocommerce-product-gallery {
	position: relative;
	background: #101014;
	border: 1px solid var(--kk-line-2,rgba(255,255,255,.16));
	border-radius: 14px;
	padding: 16px;
}
/* plakietka rozmiar/sezon/wersja/stan na głównym zdjęciu */
.fsh-gallery-badge {
	position: absolute;
	top: 28px;
	right: 28px;
	z-index: 5;
	background: rgba(0,0,0,.8);
	color: #fff;
	font-family: var(--fsh-font);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: .02em;
	padding: 8px 14px;
	border-right: 3px solid var(--fsh-red,#e11d2a);
}
/* Miniatury po LEWEJ stronie zdjęcia wyróżniającego (oszczędność miejsca w
   pionie), przewijane góra/dół. Wtyczka (woo-product-gallery-slider) ma
   pozycję miniatur "left/right" zablokowaną za Pro ($thumb_position jest
   "cix-only-pro"), więc układ robimy sami: flex row na całej galerii + tor
   miniatur (slick-track) wyłączony z poziomego przesuwania Slicka na rzecz
   zwykłego, pionowego przewijania CSS (overflow-y) – bez ryzykownego
   reinicjowania JS-owej karuzeli. Klik w miniaturę nadal działa (obsługa
   kliknięć Slicka jest niezależna od tego, jak pozycjonujemy slajdy).
   ========================================================================== */
.woocommerce-product-gallery {
	display: flex;
	flex-direction: row;
	/* stretch, nie flex-start: kolumna miniatur ma dopasować się do realnej
	   wysokości głównego zdjęcia, a nie do sztywnego max-height, które nie
	   nadążało za różną wysokością zdjęć na różnych produktach */
	align-items: stretch;
	gap: 14px;
}
.wpgs-for { flex: 1 1 auto; min-width: 0; order: 2; }
.wpgs-for img { border-radius: 8px; }
.wpgs-nav {
	order: 1;
	flex: 0 0 112px;
	width: 112px;
	/* wysokość = 100% rozciągniętego kontenera (czyli głównego zdjęcia),
	   pomniejszona o miejsce na strzałki góra/dół (margin-top/bottom) */
	height: auto;
	/* miejsce nad/pod kolumną, żeby strzałki (36px + 6px odstęp) nie nachodziły
	   na pierwszą/ostatnią miniaturę */
	margin-top: 42px;
	margin-bottom: 42px;
	overflow-y: auto;
	overflow-x: hidden;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.wpgs-nav::-webkit-scrollbar { display: none; width: 0; height: 0; }
/* strzałki góra/dół zamiast paska przewijania (dokładane w JS, patrz
   fsh_single_gallery_badge w functions.php), odsunięte od miniatur, tło
   jednolicie czarne (żadnej przezroczystości przebijającej czerwoną
   ramkę aktywnej miniatury spod spodu). */
.fsh-gallery-nav-arrow {
	position: absolute;
	left: 16px;
	width: 112px;
	height: 30px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #000;
	color: #fff;
	cursor: pointer;
	z-index: 6;
	border: 1px solid var(--kk-line-2,rgba(255,255,255,.16));
	transition: color .15s ease;
}
.fsh-gallery-nav-arrow svg { width: 16px; height: 16px; }
.fsh-gallery-nav-arrow:hover { color: var(--fsh-red,#e11d2a); }
.fsh-gallery-nav-arrow--up { top: 16px; }
.fsh-gallery-nav-arrow--down { bottom: 16px; }
@media (max-width: 700px) {
	.fsh-gallery-nav-arrow { display: none; }
}
.wpgs-nav .slick-list,
.wpgs-nav .slick-track {
	display: block !important;
	transform: none !important;
	width: 100% !important;
	height: auto !important;
	overflow: visible !important;
}
.wpgs-nav .slick-slide {
	display: block !important;
	float: none !important;
	width: 100% !important;
	height: auto !important;
	margin: 0 0 10px 0 !important;
	/* wtyczka (assets/css/slick.css) doklada WŁASNE .wpgs-nav .slick-slide z
	   margin-left/margin-right:5px BEZ !important – przy tej samej
	   specyficzności selektora o tym, czyj margines wygra, decydowała
	   kolejność wczytania plików, więc slajd (width:100%) bywał wypychany
	   dodatkowe 5px w prawo/lewo i przycinany przez overflow-x:hidden na
	   .wpgs-nav = "ucięta ramka z prawej". !important na margin:0 usuwa to
	   na twardo, niezależnie od kolejności CSS. */
	border: 2px solid transparent !important;
	/* to samo z borderem: bez box-sizing:border-box obramowanie (2px)
	   DOKŁADAŁO SIĘ do width:100%, więc prawa krawędź ramki wychodziła
	   2-4px poza kontener i była przycinana przez overflow-x:hidden na
	   .wpgs-nav – stąd "brak ramki z prawej strony" */
	box-sizing: border-box !important;
	border-radius: 8px;
	overflow: hidden;
	cursor: pointer;
	opacity: .6;
	transition: opacity .15s, border-color .15s;
}
/* sklonowane slajdy Slicka (na potrzeby infinite-loop poziomej karuzeli) nie
   mają tu sensu w pionowym, statycznym stosie – dawały duchy/duplikaty na
   końcu listy miniatur */
.wpgs-nav .slick-slide.slick-cloned { display: none !important; }
/* domyślne strzałki wtyczki (prev/next) – w tej instancji karuzeli nie zawsze
   niosą wspólną klasę .slick-arrow, więc gaszone też po .slick-prev/-next
   wprost; inaczej wyświetlał się domyślny, czerwony kwadrat wtyczki zamiast
   naszego czarnego przycisku z SVG */
.wpgs-nav .slick-arrow,
.wpgs-nav .slick-prev,
.wpgs-nav .slick-next {
	display: none !important;
}
.wpgs-nav .slick-current { border-color: var(--fsh-red,#e11d2a) !important; opacity: 1; }
.wpgs-nav img { border-radius: 6px; width: 100%; display: block; }
@media (max-width: 700px) {
	/* za wąsko na kolumnę z boku – miniatury wracają pod spód, poziomo */
	.woocommerce-product-gallery { flex-direction: column; }
	.wpgs-nav {
		order: 2; width: 100%; flex: 0 0 auto; max-height: none;
		overflow-x: auto; overflow-y: visible; margin-top: 12px;
	}
	.wpgs-nav .slick-list,
	.wpgs-nav .slick-track {
		display: flex !important; transform: none !important; height: auto !important; overflow: visible !important;
	}
	.wpgs-nav .slick-slide { width: 72px !important; flex: 0 0 72px; margin: 0 8px 0 0 !important; }
	.wpgs-for { order: 1; }
}

/* Podsumowanie (tytuł / cena / opis / dostępność / koszyk / kategorie) */
.summary.entry-summary { color: #fff; }
.summary.entry-summary .product_title {
	font-family: var(--fsh-font); text-transform: uppercase; letter-spacing: .01em;
	font-size: clamp(28px,3vw,40px); color: #fff; line-height: 1.1; margin: 0 0 14px;
}
/* Żółte belki PayPal "Zapłać później" / Stripe BNPL – dokładają się w tym
   samym miejscu co formularz koszyka (te same hooki), więc ukryte globalnie
   w całym podsumowaniu produktu, nie tylko przy przycisku. */
.summary.entry-summary .ppcp-messages,
.summary.entry-summary #wc-stripe-bnpl-product-msg,
.summary.entry-summary .wc-stripe-bnpl-product-message {
	display: none !important;
}
/* Cena+najniższa cena w jednej kolumnie, przycisk z prawej: .price,
   .pwp-omnibus-price__info i form.cart są fizycznie przenoszone w JS do
   .fsh-price-cart-js / .fsh-price-col-js (patrz wp_footer w functions.php) –
   WooCommerce/Omnibus wsadza <div> WEWNĄTRZ <p class="price">, przeglądarka
   sama zamyka </p> wcześniej niż w źródle, więc float/flex oparte na
   oryginalnej strukturze DOM (bez przenoszenia węzłów) nigdy nie dawały
   przewidywalnego wyniku. */
.fsh-price-cart-js {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 18px;
}
.fsh-price-col-js { display: flex; flex-direction: column; }
.fsh-price-cart-js form.cart { margin: 0 !important; }
.summary.entry-summary .price {
	display: block; color: var(--fsh-red,#e11d2a) !important; font-size: 2.5rem !important;
	font-weight: 700; margin: 0;
}
/* Widoczna liczba to zagnieżdżony <span class="woocommerce-Price-amount"> z
   WŁASNĄ regułą font-size:20px !important (patrz "ceny na desktopie" niżej
   w pliku) – to nie dziedziczenie z .price, tylko bezpośrednia reguła na tym
   elemencie, więc trzeba nadpisać punktowo, nie tylko na rodzicu. */
.summary.entry-summary .price .woocommerce-Price-amount {
	font-size: 1em !important;
}
.summary.entry-summary .price del { color: rgba(255,255,255,.4) !important; font-weight: 400; font-size: .6em; }
.summary.entry-summary .price ins { text-decoration: none; }
/* Omnibus (najniższa cena z 30 dni, wtyczka perfectwp-wc-omnibus) – dorzucane
   do price_html, więc ląduje wewnątrz .price. */
.pwp-omnibus-price__info {
	display: block; color: rgba(255,255,255,.55) !important; font-size: 1.25rem !important;
	font-weight: 400; text-transform: none; letter-spacing: 0;
	font-family: var(--fsh-font); margin-top: 4px;
}
.fsh-shop-main ul.products li.product .pwp-omnibus-price__info,
.related.products ul.products li.product .pwp-omnibus-price__info {
	font-size: 11px !important;
}
.summary.entry-summary .woocommerce-product-details__short-description {
	color: rgba(255,255,255,.75); font-size: 16px; line-height: 1.6; margin-bottom: 18px;
}
.summary.entry-summary .woocommerce-product-details__short-description p { margin: 0 0 10px; }
/* atrybuty (rozmiar/długość/szerokość/sezon/wersja/nameset/stan/producent) jako
   siatka kafli 4 na rząd (max 2 rzędy przy 8 możliwych polach), zamiast
   swobodnie zawijanego rzędu, który rozjeżdżał się nierówno (7+1). */
.fsh-attrs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 4px 0 22px; }
.fsh-attrs__item {
	display: flex; flex-direction: column; gap: 4px;
	background: #101014; border: 1px solid var(--fsh-border);
	padding: 12px 14px;
}
.fsh-attrs__label { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: rgba(255,255,255,.5); }
.fsh-attrs__value { font-family: var(--fsh-font); font-size: 19px; color: #fff; font-weight: 600; }
@media (max-width: 560px) {
	.fsh-attrs { grid-template-columns: repeat(2, 1fr); }
}
.summary.entry-summary .stock {
	display: inline-block; font-family: var(--fsh-font); font-size: 17px; font-weight: 600;
	text-transform: uppercase; letter-spacing: .03em; margin-bottom: 6px;
}
.summary.entry-summary .stock.in-stock { color: #3ecf6a; }
.summary.entry-summary .stock.out-of-stock { color: #ff5c5c; }
.summary.entry-summary form.cart {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 14px; margin: 8px 0 16px;
}
.summary.entry-summary form.cart > * { flex: 0 0 auto; }
.summary.entry-summary .quantity input.qty {
	width: 64px; height: 48px; text-align: center; background: #101014; color: #fff;
	border: 1px solid var(--kk-line-2,rgba(255,255,255,.24)); border-radius: 0;
	font-family: var(--fsh-font); font-size: 18px;
}
.summary.entry-summary .single_add_to_cart_button {
	background: var(--fsh-red,#e11d2a) !important;
	color: #fff !important;
	border: 0 !important;
	font-size: 17px !important;
	padding: 14px 32px !important;
	width: auto !important;
	flex: 0 0 auto !important;
	display: inline-block !important;
}
.summary.entry-summary .single_add_to_cart_button:hover { filter: brightness(1.12); }
.summary.entry-summary .product_meta {
	margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--fsh-border);
	font-size: 15px; color: rgba(255,255,255,.55);
}
.summary.entry-summary .product_meta > span { display: block; margin-bottom: 4px; }
.summary.entry-summary .product_meta a { color: rgba(255,255,255,.75); }
.summary.entry-summary .product_meta a:hover { color: var(--fsh-red,#e11d2a); }

/* Zakładki (Informacje dodatkowe / opis / opinie) */
.woocommerce-tabs.wc-tabs-wrapper { margin-top: 56px; clear: both; }
ul.tabs.wc-tabs {
	display: flex; gap: 4px; list-style: none; margin: 0 0 -1px; padding: 0;
	border-bottom: 1px solid var(--fsh-border);
}
ul.tabs.wc-tabs li { margin: 0; }
ul.tabs.wc-tabs li a {
	display: block; padding: 14px 24px; font-family: var(--fsh-font); text-transform: uppercase;
	letter-spacing: .03em; font-size: 16px; color: rgba(255,255,255,.55); text-decoration: none;
	border-bottom: 2px solid transparent;
}
ul.tabs.wc-tabs li.active a,
ul.tabs.wc-tabs li a:hover { color: #fff; border-bottom-color: var(--fsh-red,#e11d2a); }
.woocommerce-Tabs-panel {
	background: #0d0d0d url('assets/old-black-background.webp') center/cover no-repeat;
	border: 1px solid var(--fsh-border); border-top: none;
	padding: 28px; color: rgba(255,255,255,.8);
}
.woocommerce-Tabs-panel h2 {
	color: #fff; font-family: var(--fsh-font); text-transform: uppercase; font-size: 22px; margin-top: 0;
}
table.woocommerce-product-attributes { width: 100%; border-collapse: collapse; }
table.woocommerce-product-attributes tr:nth-child(odd) { background: rgba(255,255,255,.03); }
table.woocommerce-product-attributes th,
table.woocommerce-product-attributes td {
	padding: 10px 14px; border-bottom: 1px solid var(--fsh-border); color: #fff; text-align: left;
}
table.woocommerce-product-attributes th { color: rgba(255,255,255,.55); font-weight: 600; width: 220px; }

/* Powiązane produkty – ta sama karta co siatka sklepu (#101014, czerwona cena) */
.related.products {
	margin-top: 64px;
	clear: both;
}
.related.products > h2 {
	font-family: var(--fsh-font); text-transform: uppercase; letter-spacing: .02em;
	font-size: clamp(26px,3vw,36px); color: #fff; margin: 0 0 24px;
}
.related.products ul.products {
	/* stałe 4 kolumny (WooCommerce domyślnie pokazuje 4 powiązane produkty,
	   stąd i tak columns-4 na klasie <ul>) – auto-fill z minmax(240px,1fr)
	   przy PEŁNEJ szerokości strony dopasowywał więcej niż 4 kolumny (starczało
	   miejsca), więc każda karta się kurczyła zamiast trzymać 4 w rzędzie */
	display: grid !important; grid-template-columns: repeat(4,1fr) !important;
	align-items: stretch !important;
	gap: 28px; list-style: none; margin: 0; padding: 0;
}
@media (max-width: var(--fsh-max-width)) {
	.related.products ul.products { grid-template-columns: repeat(2,1fr) !important; }
}
@media (max-width: 560px) {
	.related.products ul.products { grid-template-columns: 1fr !important; }
}
/* Ten sam clearfix-w-gridzie bug co w .fsh-shop-main: WooCommerce dokleja do
   ul.products stary float-owy clearfix (content:" ";display:table), który w
   display:grid staje się osobną, pustą komórką siatki – stąd "dziura", potem
   1 produkt, potem znowu dziura do końca rzędu. */
.related.products ul.products::before,
.related.products ul.products::after {
	content: none !important; display: none !important;
}
.related.products ul.products li.product {
	display: flex; flex-direction: column;
	height: 100%;
	background: #101014; border: 1px solid var(--kk-line-2,rgba(255,255,255,.16)); border-radius: 14px;
	padding: 16px 16px 5px 16px; width: auto; float: none; margin: 0;
}
/* tytuły różnej długości nie mają rozjeżdżać ceny/przycisku – cena zawsze
   na dole karty, niezależnie od liczby linii tytułu. Ta sama technika co na
   strzelambolubie.eu: li.product ma jawne height:100%, link (zdjęcie+tytuł+
   cena) jest flex:1 1 auto, margin-top:auto na .price domyka ją do dołu
   rozciągniętego linku – przycisk (rodzeństwo linku) ląduje zawsze w tym
   samym miejscu. */
.related.products ul.products li.product > a.woocommerce-LoopProduct-link {
	position: relative;
	display: flex; flex-direction: column; flex: 1 1 auto;
}
.related.products ul.products li.product .woocommerce-loop-product__title { flex: 0 0 auto; }
.related.products ul.products li.product .price { margin-top: auto; }
.related.products ul.products li.product img {
	border-radius: 8px; width: 100%; display: block;
	aspect-ratio: 3 / 4; object-fit: cover;
}
.related.products ul.products li.product .woocommerce-loop-product__title {
	color: #fff; font-family: var(--fsh-font); font-size: 18px; margin: 12px 0 6px;
	line-height: 1.2;
	min-height: calc(1.2em * 3);
}
.related.products ul.products li.product .price { color: var(--fsh-red,#e11d2a); font-size: 17px; font-weight: 600; }
.related.products ul.products li.product .wc-stripe-bnpl-shop-message:empty { display: none; }
.related.products ul.products li.product > a.button {
	display: block !important; width: 100% !important; box-sizing: border-box;
	margin-top: 12px; text-align: center;
	background: var(--fsh-red,#e11d2a) !important; color: #fff !important; border: 0 !important;
}
.related.products ul.products li.product > a.button:hover { filter: brightness(1.12); }
@media (max-width: 767px) {
	.woocommerce-Tabs-panel { padding: 20px; }
	ul.tabs.wc-tabs { flex-wrap: wrap; }
}

/* ==========================================================================
   Lightbox (Fancybox v3, z woo-product-gallery-slider) – dopasowanie do
   marki: czarne tło zamiast domyślnej ciemnoszarości, czerwony pasek
   postępu i hover przycisków zamiast domyślnego różowego, Teko w podpisach.
   ========================================================================== */
.fancybox-bg { background: #000; }
.fancybox-progress { background: var(--fsh-red,#e11d2a) !important; }
.fancybox-button { background: rgba(0,0,0,.75) !important; color: #fff; }
.fancybox-button:hover:not(.fancybox-button--disabled) { color: var(--fsh-red,#e11d2a); }
.fancybox-caption { font-family: var(--fsh-font); font-size: 17px; letter-spacing: .01em; }
.fancybox-infobar { font-family: var(--fsh-font); font-size: 15px; }

/* Nagłówek: tekst wordmarku obok logo ("Football" / "Second hand") */
.fsh-logo-text {
	display: flex;
	flex-direction: column;
	justify-content: center;
	line-height: 1.05;
	text-decoration: none;
	white-space: nowrap;
}
.fsh-logo-text .fsh-logo-top {
	font-weight: 600;
	font-size: 22px;
	color: #fff;
	text-transform: uppercase;
	letter-spacing: .03em;
}
.fsh-logo-text .fsh-logo-bottom {
	font-weight: 500;
	font-size: 17px;
	color: var(--fsh-accent);
	text-transform: uppercase;
	letter-spacing: .03em;
}
@media (max-width: 480px) {
	.fsh-logo-text .fsh-logo-top { font-size: 18px; }
	.fsh-logo-text .fsh-logo-bottom { font-size: 16px; }
}

/* ==========================================================================
   Podstrona KOSZYKA i ZAMÓWIENIA ([woocommerce_cart] / [woocommerce_checkout])
   – domyślne szablony WooCommerce zakładają jasne tło strony, więc tabele,
   pola formularza i podsumowanie nie miały żadnego markowego stylu i część
   tekstu dziedziczyła ciemny domyślny kolor WooCommerce na czarnym tle
   serwisu (prawie niewidoczne). Całość dostaje spójny ciemny/czerwony/biały
   wygląd zgodny z resztą sklepu.
   ========================================================================== */

/* --- Tabela koszyka i tabela podsumowania zamówienia (checkout) --- */
.woocommerce table.shop_table {
	border: 1px solid var(--fsh-border);
	border-radius: 0;
	background: #0a0a0a;
	color: var(--fsh-text);
}
.woocommerce table.shop_table thead th {
	background: #101014;
	color: #fff;
	border-bottom: 2px solid var(--fsh-red);
	text-transform: uppercase;
	letter-spacing: .03em;
	font-weight: 600;
}
.woocommerce table.shop_table td,
.woocommerce table.shop_table th {
	border-top-color: var(--fsh-border) !important;
	color: var(--fsh-text);
}
.woocommerce table.shop_table tbody tr:hover td { background: rgba(255,255,255,.03); }
.woocommerce table.shop_table .product-name a { color: var(--fsh-text); }
.woocommerce table.shop_table .product-name a:hover { color: var(--fsh-red); }
.woocommerce table.shop_table .product-price,
.woocommerce table.shop_table .product-subtotal,
.woocommerce table.shop_table .product-total,
.woocommerce table.shop_table .woocommerce-Price-amount { color: var(--fsh-text); }
.woocommerce table.shop_table img { border: 1px solid var(--fsh-border); }
.woocommerce table.shop_table tfoot tr:last-child th,
.woocommerce table.shop_table tfoot tr:last-child td,
.woocommerce table.shop_table .order-total th,
.woocommerce table.shop_table .order-total td { color: #fff; font-weight: 600; }
.woocommerce table.shop_table .order-total .woocommerce-Price-amount { color: var(--fsh-red); }

/* Ilość sztuk – input liczbowy */
.woocommerce .quantity .qty,
.woocommerce input.qty {
	background: #101014;
	border: 1px solid var(--fsh-border);
	color: #fff;
	border-radius: 0;
}
.woocommerce .quantity .qty:focus,
.woocommerce input.qty:focus { border-color: var(--fsh-red); outline: none; }

/* Usuń produkt – "×" WooCommerce */
.woocommerce a.remove {
	color: var(--fsh-muted) !important;
	background: transparent !important;
	border: 1px solid var(--fsh-border) !important;
}
.woocommerce a.remove:hover {
	color: #fff !important;
	background: var(--fsh-red) !important;
	border-color: var(--fsh-red) !important;
}

/* Kupon rabatowy + pole wysyłkowego kalkulatora */
.woocommerce .coupon .input-text,
.woocommerce .shipping-calculator-form .input-text,
.woocommerce .shipping-calculator-form select {
	background: #101014;
	border: 1px solid var(--fsh-border);
	color: #fff;
	border-radius: 0;
	padding: 10px 12px;
}
.woocommerce .coupon .input-text::placeholder { color: var(--fsh-muted); }
.woocommerce .shipping-calculator-button { color: var(--fsh-red) !important; }

/* Przyciski koszyka/checkoutu w brandowej czerwieni (kształt ze wspólnej
   reguły "Kształt przycisków sitewide" już się stosuje przez .woocommerce
   a.button / button.button / input.button). */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #place_order {
	background-color: var(--fsh-red) !important;
	border-color: var(--fsh-red) !important;
	color: #fff !important;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #place_order:hover {
	background-color: #ff3b3b !important;
	border-color: #ff3b3b !important;
	color: #fff !important;
}
.woocommerce a.button.disabled,
.woocommerce button.button.disabled,
.woocommerce a.button:disabled,
.woocommerce button.button:disabled {
	background-color: var(--fsh-border) !important;
	border-color: var(--fsh-border) !important;
	color: var(--fsh-muted) !important;
}

/* Podsumowanie koszyka (cart_totals) i podsumowanie wysyłki na checkout */
.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce-checkout .woocommerce-shipping-methods {
	background: #101014;
	border: 1px solid var(--fsh-border);
	padding: 24px;
}
.woocommerce-cart .cart_totals h2 { color: #fff; }
.woocommerce ul#shipping_method li { color: var(--fsh-text); }
.woocommerce ul#shipping_method label { color: var(--fsh-text); }

/* --- Formularz checkoutu: etykiety, pola, select2 --- */
.woocommerce-checkout .col2-set .col-1,
.woocommerce-checkout .col2-set .col-2 { color: var(--fsh-text); }
.woocommerce form .form-row label {
	color: var(--fsh-text);
}
.woocommerce form .form-row .required { color: var(--fsh-red); }
/* Uwaga: musi być zawężone do form.checkout, NIE do samej klasy body
   .woocommerce-checkout – ta klasa siedzi na <body> całej strony zamówienia,
   więc goły ".woocommerce-checkout select" (z !important na padding) łapał
   też <select> waluty/języka w pasku górnym nagłówka (bo on też jest na tej
   stronie) i psuł im odstęp na strzałkę tylko na tej jednej podstronie. */
.woocommerce-checkout form.checkout input.input-text,
.woocommerce-checkout form.checkout textarea,
.woocommerce-checkout form.checkout select,
.woocommerce-checkout form.checkout .select2-container .select2-selection--single {
	background-color: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	color: #fff !important;
	border-radius: 0 !important;
	height: auto;
	padding: 11px 12px !important;
}
.woocommerce-checkout form.checkout .select2-container .select2-selection__rendered { color: #fff !important; line-height: 2.2 !important; }
.woocommerce-checkout form.checkout .select2-container .select2-selection__arrow { height: 100% !important; }
.woocommerce-checkout form.checkout input.input-text:focus,
.woocommerce-checkout form.checkout textarea:focus,
.woocommerce-checkout form.checkout select:focus { border-color: var(--fsh-red) !important; outline: none; }
.select2-dropdown {
	background-color: #101014 !important;
	border-color: var(--fsh-border) !important;
}
.select2-results__option { color: var(--fsh-text) !important; }
.select2-results__option--highlighted { background-color: var(--fsh-red) !important; color: #fff !important; }

/* Sekcje "Utwórz konto", kupon na checkoucie, uwagi do zamówienia */
.woocommerce-checkout .woocommerce-form-coupon,
.woocommerce-checkout .create-account {
	background: #101014;
	border: 1px solid var(--fsh-border);
	padding: 20px;
}
.woocommerce form.checkout_coupon .form-row { margin-bottom: 10px; }

/* Metody płatności */
.woocommerce ul.wc_payment_methods { border: none; }
.woocommerce ul.wc_payment_methods li.wc_payment_method {
	border-bottom: 1px solid var(--fsh-border);
	padding: 14px 0;
}
.woocommerce ul.wc_payment_methods li.wc_payment_method label { color: var(--fsh-text); }
.woocommerce ul.wc_payment_methods .payment_box {
	background: #101014 !important;
	border: 1px solid var(--fsh-border);
	color: var(--fsh-text);
}
.woocommerce ul.wc_payment_methods .payment_box::before { border-bottom-color: #101014 !important; }

/* Checkbox regulaminu i tekst pomocniczy */
.woocommerce-terms-and-conditions-wrapper,
.woocommerce-privacy-policy-text,
.woocommerce form .form-row.notes textarea { color: var(--fsh-muted); }
.woocommerce-terms-and-conditions-link,
.woocommerce-privacy-policy-link { color: var(--fsh-red); }

/* Komunikaty WooCommerce (błąd/informacja/sukces) – jasne dymki na czarnym
   tle były bez kontekstu z resztą strony; ciemna karta z kolorowym paskiem
   po lewej pasuje do reszty motywu. */
.woocommerce-error,
.woocommerce-info,
.woocommerce-message,
.woocommerce-noreviews {
	background: #101014 !important;
	color: var(--fsh-text) !important;
	border-top: none !important;
	border-left: 4px solid var(--fsh-red) !important;
	box-shadow: none !important;
}
.woocommerce-error::before,
.woocommerce-info::before,
.woocommerce-message::before { color: var(--fsh-red) !important; }
.woocommerce-message { border-left-color: #2ecc71 !important; }
.woocommerce-message::before { color: #2ecc71 !important; }

/* Logowanie na checkoucie ("Masz konto? Zaloguj się") */
.woocommerce-form-login { background: #101014; border: 1px solid var(--fsh-border); padding: 20px; }
.woocommerce-form-login label { color: var(--fsh-text); }

@media (max-width: 767px) {
	.woocommerce table.shop_table.shop_table_responsive td::before { color: var(--fsh-muted); }
}

/* ==========================================================================
   Checkout – układ 2 kolumn (dane zamawiającego po lewej, podsumowanie
   zamówienia + płatność po prawej jako "karta"). Domyślny szablon
   WooCommerce renderuje to jako jedną kolumnę na całą szerokość (dane
   klienta u góry, podsumowanie pod spodem, na bazie starych float'ów) –
   przy szerokim, pełnowymiarowym kontenerze strony wyglądało to na
   rozjechane/porozrzucane elementy. Bezpośrednie dzieci <form.checkout>
   są jawnie przypisane do siatki 2-kolumnowej; wszystko poza tymi czterema
   znanymi blokami (np. ukryte popupy płatności/GUS wtyczek) samo wpada w
   kolumnę 1 i zwykle jest i tak `display:none` do czasu interakcji. */
.woocommerce-checkout form.checkout {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 48px;
	align-items: start;
}
.woocommerce-checkout form.checkout > * { grid-column: 1; }
.woocommerce-checkout form.checkout #customer_details.col2-set { grid-row: 1; }
/* "Wysyłka na inny adres" (col-2) pod danymi rozliczeniowymi (col-1), pełna
   szerokość pierwszej kolumny – zamiast domyślnego układu obok siebie
   (float 48%/48% z rdzenia WooCommerce). */
.woocommerce-checkout form.checkout #customer_details.col2-set .col-1,
.woocommerce-checkout form.checkout #customer_details.col2-set .col-2 {
	float: none;
	width: 100%;
}
.woocommerce-checkout form.checkout .woocommerce-additional-fields { grid-row: 2; }
/* Prawa kolumna (nagłówek + karta podsumowania) NIE dzieli wiersza 1 z lewą
   kolumną – gdyby dzieliła, wiersz 1 rozciągałby się do wysokości długich
   danych rozliczeniowych i cała karta startowałaby dopiero pod nimi ("prawa
   kolumna niżej niż lewa"). Zamiast tego oryginalny <h3> jest ukryty, a jego
   tekst odtworzony jako ::before na karcie, która sama rozciąga się na oba
   wiersze (1 / span 2) i zaczyna dokładnie od góry, tak jak lewa kolumna. */
.woocommerce-checkout form.checkout #order_review_heading {
	display: none;
}
.woocommerce-checkout form.checkout #order_review.woocommerce-checkout-review-order {
	grid-column: 2;
	grid-row: 1 / span 2;
	align-self: start;
	background: #0a0a0a;
	border: 1px solid var(--fsh-border);
	padding: 24px;
}
.woocommerce-checkout form.checkout #order_review.woocommerce-checkout-review-order::before {
	content: "Twoje zamówienie";
	display: block;
	color: #fff;
	font-size: 24px;
	margin: 0 0 14px;
}
.woocommerce-checkout form.checkout #order_review .shop_table {
	border: none;
	background: transparent;
}
.woocommerce-checkout form.checkout #order_review .shop_table thead th {
	background: transparent;
	border-bottom: 1px solid var(--fsh-border);
}
@media (max-width: 999px) {
	.woocommerce-checkout form.checkout {
		display: block;
	}
	.woocommerce-checkout form.checkout #order_review.woocommerce-checkout-review-order { margin-top: 40px; }
}

/* ==========================================================================
   Moje konto ([woocommerce_my_account]) – ta sama historia co koszyk/checkout:
   żadnego brandowego stylu, jasne pola formularza na czarnym tle.
   ========================================================================== */
.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
	background: #101014;
	border: 1px solid var(--fsh-border);
}
.woocommerce-account .woocommerce-MyAccount-navigation-link a {
	display: block;
	padding: 14px 18px;
	color: var(--fsh-text);
	border-bottom: 1px solid var(--fsh-border);
}
.woocommerce-account .woocommerce-MyAccount-navigation-link:last-child a { border-bottom: none; }
.woocommerce-account .woocommerce-MyAccount-navigation-link a:hover { color: var(--fsh-red); }
.woocommerce-account .woocommerce-MyAccount-navigation-link.is-active a {
	color: #fff;
	background: var(--fsh-red);
}
.woocommerce-account .woocommerce-MyAccount-content { color: var(--fsh-text); }
.woocommerce-account .woocommerce-MyAccount-content mark { color: #fff; }
.woocommerce-account .woocommerce-Address-title h2,
.woocommerce-account .woocommerce-MyAccount-content h2,
.woocommerce-account .woocommerce-MyAccount-content h3 { color: #fff; }
.woocommerce-account fieldset { border: 1px solid var(--fsh-border); padding: 20px; }
.woocommerce-account fieldset legend { color: #fff; padding: 0 8px; }
.woocommerce-account .woocommerce-Address address { color: var(--fsh-text); }
.woocommerce-account form .input-text,
.woocommerce-account form select,
.woocommerce-account form textarea {
	background-color: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	color: #fff !important;
	border-radius: 0 !important;
	padding: 11px 12px !important;
}
.woocommerce-account form .input-text:focus,
.woocommerce-account form select:focus,
.woocommerce-account form textarea:focus { border-color: var(--fsh-red) !important; outline: none; }
.woocommerce-account form label { color: var(--fsh-text); }
@media (max-width: 767px) {
	.woocommerce-account .woocommerce-MyAccount-navigation,
	.woocommerce-account .woocommerce-MyAccount-content { float: none; width: 100%; }
}

/* ==========================================================================
   Podstrona "Skup koszulek piłkarskich" [fsh_buyback]
   ========================================================================== */
.fsh-buyback { width: 100%; background: var(--fsh-bg) !important; }
.fsh-buyback-hero,
.fsh-buyback-cats,
.fsh-buyback-form { background: var(--fsh-bg); }
/* Wrapper strony (main#content / .page-content) dostaje jawne czarne tło
   SITEWIDE, nie tylko na tej stronie – reset.css motywu Hello Elementor
   ustawia domyślnie białe tło na <body>, które nasz plik nadpisuje, ale
   sam wrapper treści bywa wyższy niż zawartość Elementora w środku i to
   właśnie ta "podszewka" prześwitywała na biało (widoczne np. pod treścią,
   zanim zacznie się stopka). Ustawione raz, ogólnie – żeby ten błąd nie
   wracał przy każdej kolejnej nowej podstronie. */
main#content,
.page-content { background: var(--fsh-bg) !important; }
.fsh-buyback-hero {
	text-align: center;
	padding: 64px 24px 48px;
	max-width: 720px;
	margin: 0 auto;
}
.fsh-buyback-hero__eyebrow {
	color: var(--fsh-red);
	text-transform: uppercase;
	letter-spacing: .08em;
	font-weight: 600;
	font-size: 16px;
	margin: 0 0 8px;
}
.fsh-buyback-hero__title {
	font-size: clamp(38px, 5vw, 64px);
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 18px;
	line-height: 1.05;
}
.fsh-buyback-hero__text {
	font-size: 19px;
	color: var(--fsh-muted);
	line-height: 1.6;
	margin: 0 0 28px;
}
.fsh-buyback-hero__cta.elementor-button {
	display: inline-block;
	background: var(--fsh-red);
	color: #fff;
	padding: 16px 36px;
	font-size: 18px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .03em;
}
.fsh-buyback-hero__cta.elementor-button:hover { background: #ff3b3b; color: #fff; }

.fsh-buyback-steps {
	display: flex;
	gap: 24px;
	padding: 20px 24px 56px;
}
.fsh-buyback-steps__item {
	flex: 1 1 0;
	padding: 28px 24px;
	background: #161616;
	border: 1px solid var(--fsh-border);
}
.fsh-buyback-steps__num {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border: 1.5px solid var(--fsh-red);
	border-radius: 50%;
	color: var(--fsh-red);
}
.fsh-buyback-steps__num svg { width: 26px; height: 26px; }
.fsh-buyback-steps__title {
	margin: 14px 0 8px;
	font-size: 22px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
}
.fsh-buyback-steps__text { font-size: 16px; color: var(--fsh-muted); line-height: 1.55; margin: 0; }

.fsh-buyback-cats {
	text-align: center;
	padding: 20px 24px 56px;
}
.fsh-buyback-cats__title {
	font-size: 30px;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 24px;
}
.fsh-buyback-cats__list {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
	margin: 0 0 18px;
}
.fsh-buyback-cats__tag {
	border: 1px solid var(--fsh-red);
	color: #fff;
	padding: 10px 20px;
	font-size: 16px;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.fsh-buyback-cats__note { color: var(--fsh-muted); font-size: 16px; margin: 0; }

.fsh-buyback-form {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 48px;
	padding: 20px 24px 80px;
	align-items: start;
}
.fsh-buyback-form__faq-title,
.fsh-buyback-form__card-title {
	font-size: 26px;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 20px;
}
.fsh-buyback-faq-item {
	border-bottom: 1px solid var(--fsh-border);
	padding: 16px 0;
}
.fsh-buyback-faq-item summary {
	cursor: pointer;
	color: var(--fsh-text);
	font-weight: 600;
	font-size: 17px;
	list-style: none;
}
.fsh-buyback-faq-item summary::-webkit-details-marker { display: none; }
.fsh-buyback-faq-item summary::before {
	content: "+";
	color: var(--fsh-red);
	margin-right: 10px;
	font-weight: 700;
}
.fsh-buyback-faq-item[open] summary::before { content: "\2212"; }
.fsh-buyback-faq-item p { color: var(--fsh-muted); margin: 10px 0 0; line-height: 1.55; }
.fsh-buyback-form__card {
	background: #0a0a0a;
	border: 1px solid var(--fsh-border);
	padding: 32px;
}
.fsh-buyback-form__card .wpforms-container { margin: 0; }
.fsh-buyback-form__card .wpforms-field label { color: var(--fsh-text) !important; }
.fsh-buyback-form__card .wpforms-field input,
.fsh-buyback-form__card .wpforms-field textarea,
.fsh-buyback-form__card .wpforms-field select {
	background-color: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	color: #fff !important;
	border-radius: 0 !important;
}
.fsh-buyback-form__card .wpforms-submit {
	background: var(--fsh-red) !important;
	border-color: var(--fsh-red) !important;
	color: #fff !important;
	border-radius: 0 !important;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.fsh-buyback-form__card .wpforms-submit:hover { background: #ff3b3b !important; }

@media (max-width: 900px) {
	.fsh-buyback-steps { flex-direction: column; }
	.fsh-buyback-form { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Podstrona "Klejenie nadruków" [fsh_printing]
   ========================================================================== */
.fsh-printing { width: 100%; background: var(--fsh-bg) !important; overflow-x: hidden; }

.fsh-printing-hero {
	text-align: center;
	padding: 64px 24px 32px;
	max-width: 720px;
	margin: 0 auto;
}
.fsh-printing-hero__eyebrow {
	color: var(--fsh-red);
	text-transform: uppercase;
	letter-spacing: .08em;
	font-weight: 600;
	font-size: 16px;
	margin: 0 0 8px;
}
.fsh-printing-hero__title {
	font-size: clamp(38px, 5vw, 64px);
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 18px;
	line-height: 1.05;
}
.fsh-printing-hero__text {
	font-size: 19px;
	color: var(--fsh-muted);
	line-height: 1.6;
	margin: 0 0 28px;
}
/* Tekst opisowy o usłudze, przeniesiony i dostosowany ze starej wersji
   strony (footballsecondhand.com/klejenie-nadrukow) */
.fsh-printing-about {
	max-width: 760px;
	margin: 0 auto;
	padding: 0 24px 40px;
	text-align: center;
	color: var(--fsh-muted);
	font-size: 17px;
	line-height: 1.7;
}
.fsh-printing-about p { margin: 0 0 16px; }
.fsh-printing-about p:last-child { margin-bottom: 0; }

/* Ostrzeżenie pogrubione – koszulka + nadruk muszą być dostarczone razem */
.fsh-printing-warning {
	max-width: 900px;
	margin: 0 auto 56px;
	padding: 20px 28px;
	background: rgba(225, 29, 42, .08);
	border: 2px solid var(--fsh-red);
	color: #fff;
	font-size: 18px;
	line-height: 1.55;
	text-align: center;
}
.fsh-printing-warning strong { color: var(--fsh-red); }

.fsh-printing-pricing { padding: 20px 24px 56px; text-align: center; }
.fsh-printing-pricing__inner {
	display: flex;
	align-items: flex-start;
	gap: 56px;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	text-align: left;
}
.fsh-printing-pricing__intro {
	flex: 0 0 320px;
	position: sticky;
	top: 100px;
}
.fsh-printing-pricing__title {
	font-size: 34px;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 16px;
}
.fsh-printing-pricing__lead {
	font-size: 16px;
	color: var(--fsh-muted);
	line-height: 1.6;
	margin: 0 0 20px;
}
.fsh-printing-pricing__grid {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
}
.fsh-printing-pricing__card {
	background: #161616;
	border: 1px solid var(--fsh-border);
	padding: 20px 24px;
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
}
.fsh-printing-pricing__name {
	font-size: 20px;
	text-transform: uppercase;
	letter-spacing: .01em;
	color: #fff;
	margin: 0;
	flex: 1;
}
.fsh-printing-pricing__price {
	font-size: 24px;
	font-weight: 700;
	color: var(--fsh-red);
	margin: 0;
	white-space: nowrap;
}
.fsh-printing-pricing__price .woocommerce-Price-amount { color: var(--fsh-red); }
/* Obramowanie tego przycisku NIE jest zwykłym border – zwykły clip-path ze
   wspólnej reguły ".elementor-button" (ścięty róg) ucina go na skosie, bo są
   na tym samym elemencie. Ten sam trik co "Zobacz koszyk"/pigułki filtrów:
   dwie nałożone, osobno przycięte warstwy (::before = kolor ramki, ::after =
   wypełnienie wsunięte o grubość ramki). */
.fsh-printing-pricing__cta.elementor-button {
	position: relative;
	isolation: isolate;
	display: inline-block;
	background: transparent;
	border: none !important;
	color: #fff;
	padding: 12px 24px;
	font-size: 15px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .02em;
	white-space: nowrap;
	flex-shrink: 0;
	text-align: center;
}
.fsh-printing-pricing__cta.elementor-button::before,
.fsh-printing-pricing__cta.elementor-button::after {
	content: "";
	position: absolute;
	z-index: -1;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
}
.fsh-printing-pricing__cta.elementor-button::before {
	inset: 0;
	background: var(--fsh-red);
}
.fsh-printing-pricing__cta.elementor-button::after {
	inset: 1.5px;
	background: #161616;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 12.5px), calc(100% - 12.5px) 100%, 0 100%);
}
.fsh-printing-pricing__cta.elementor-button:hover::after { background: var(--fsh-red); }
.fsh-printing-pricing__note { margin: 24px 0 0; color: var(--fsh-muted); font-size: 15px; }

.fsh-printing-steps {
	position: relative;
	display: flex;
	gap: 24px;
	margin: 40px 0;
	padding: 48px 24px;
}
/* Czerwone tło NA PEŁNĄ SZEROKOŚĆ VIEWPORTU pod krokami, mimo że shortcode
   siedzi w boxowanym (e-con-boxed) kontenerze Elementora – standardowy trik
   "break out" na osobnej warstwie ::before (100vw + ujemny margines liczony
   od środka viewportu), żeby same karty kroków zostały na normalnej,
   boxowanej szerokości. */
.fsh-printing-steps::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;
	width: 100vw;
	margin-left: -50vw;
	background: var(--fsh-red);
	z-index: -1;
}
.fsh-printing-steps__item {
	flex: 1 1 0;
	padding: 28px 24px;
	background: #161616;
	border: 1px solid var(--fsh-border);
}
.fsh-printing-steps__num {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border: 1.5px solid var(--fsh-red);
	border-radius: 50%;
	color: var(--fsh-red);
}
.fsh-printing-steps__num svg { width: 26px; height: 26px; }
.fsh-printing-steps__title {
	margin: 14px 0 8px;
	font-size: 22px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
}
.fsh-printing-steps__text { font-size: 16px; color: var(--fsh-muted); line-height: 1.55; margin: 0; }

.fsh-printing-gallery { padding: 20px 24px 56px; text-align: center; }
.fsh-printing-gallery__title {
	font-size: 30px;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 24px;
}
.fsh-printing-gallery__viewport {
	position: relative;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	padding: 0 52px;
}
.fsh-printing-gallery__slider {
	display: flex;
	gap: 16px;
	padding: 4px 4px 16px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.fsh-printing-gallery__slider::-webkit-scrollbar { display: none; height: 0; }
.fsh-printing-gallery__item {
	flex: 0 0 auto;
	width: min(260px, 70vw);
	aspect-ratio: 1;
	overflow: hidden;
	border: 1px solid var(--fsh-border);
	scroll-snap-align: start;
}
.fsh-printing-gallery__item img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Strzałki bez tła/obwódki, POZA slidera (w bocznym gutterze zdjęć, nie na
   nich) – białe, na czerwono tylko przy hoverze/focusie. */
/* !important tutaj – wtyczkowy globalny reset [type=button],button{border:1px
   solid #c36;padding:...} ma tę samą specyficzność (0,1,0) co ta klasa i przy
   równej specyficzności wygrywa kolejnością ładowania arkuszy (ten sam
   problem co przyciski w #fsh-kk, patrz komentarz przy tamtej regule). */
.fsh-printing-gallery__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border: none !important;
	background: transparent !important;
	padding: 0 !important;
	color: #fff;
	cursor: pointer;
	z-index: 2;
	transition: color .15s ease;
}
.fsh-printing-gallery__arrow svg { width: 26px; height: 26px; }
.fsh-printing-gallery__arrow--prev { left: 0; }
.fsh-printing-gallery__arrow--next { right: 0; }
.fsh-printing-gallery__arrow:hover,
.fsh-printing-gallery__arrow:focus-visible {
	color: var(--fsh-red);
}
@media (max-width: 700px) {
	.fsh-printing-gallery__viewport { padding: 0 36px; }
	.fsh-printing-gallery__arrow { width: 32px; height: 32px; }
	.fsh-printing-gallery__arrow svg { width: 20px; height: 20px; }
}

.fsh-printing-faq { max-width: 760px; margin: 0 auto; padding: 20px 24px 80px; }
.fsh-printing-faq__title {
	font-size: 26px;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 20px;
	text-align: center;
}

@media (max-width: 900px) {
	.fsh-printing-steps { flex-direction: column; }
	.fsh-printing-pricing__inner { flex-direction: column; gap: 28px; }
	.fsh-printing-pricing__intro { flex-basis: auto; position: static; }
}
@media (max-width: 560px) {
	.fsh-printing-pricing__card { flex-direction: column; align-items: stretch; text-align: center; }
	.fsh-printing-pricing__cta.elementor-button { width: 100%; }
}

/* ==========================================================================
   Podstrona "Kontakt" [fsh_contact]
   ========================================================================== */
.fsh-contact { width: 100%; background: var(--fsh-bg) !important; }

/* Pełnowymiarowy subheader: czarny pas przełamujący boxed-container
   Elementora (ten sam trik 100vw + margin-left:-50vw co czerwony pas na
   /klejenie-nadrukow/), z logo jako blade tło i drobnymi czerwono-białymi
   ozdobnikami zamiast płaskiego, samego tekstu. */
.fsh-contact-hero {
	position: relative;
	isolation: isolate;
	text-align: center;
	padding: 100px 24px 60px;
	max-width: none;
	margin: 0 0 8px;
}
.fsh-contact-hero::before {
	content: "";
	position: absolute;
	top: 0; bottom: 0; left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background: #050505;
	z-index: -2;
}
/* logo-znak wodny dosunięte maksymalnie do PRAWEJ krawędzi okna – warstwa
   na pełną szerokość (100vw, jak tło ::before), a nie tylko pudełka treści */
.fsh-contact-hero::after {
	content: "";
	position: absolute;
	top: 0; bottom: 0; left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background-image: url('https://kk.mobilny-fryzjer.pl/wp-content/uploads/2023/08/logo-radzio.png');
	background-repeat: no-repeat;
	/* PNG ma ~18% pustego marginesu wokół koła – przesunięcie o tyle,
	   żeby samo koło dotykało prawej krawędzi okna */
	background-position: right calc(min(560px, 60vw) * -0.18) center;
	background-size: min(560px, 60vw) auto;
	opacity: .07;
	z-index: -1;
}
.fsh-contact-hero__eyebrow {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--fsh-red);
	text-transform: uppercase;
	letter-spacing: .08em;
	font-weight: 600;
	font-size: 16px;
	margin: 0 0 8px;
}
.fsh-contact-hero__eyebrow::before {
	content: "";
	width: 8px;
	height: 8px;
	background: var(--fsh-red);
}
.fsh-contact-hero__title {
	position: relative;
	font-size: clamp(38px, 5vw, 64px);
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 18px;
	line-height: 1.05;
}
.fsh-contact-hero__title::after {
	content: "";
	display: block;
	width: 56px;
	height: 2px;
	background: #fff;
	opacity: .5;
	margin: 18px auto 0;
}
.fsh-contact-hero__text {
	position: relative;
	font-size: 19px;
	color: var(--fsh-muted);
	line-height: 1.6;
	margin: 0;
	max-width: 640px;
	margin-inline: auto;
}

/* Lewa kolumna strony kontaktu: telefon/e-mail + FAQ jedna pod drugą,
   formularz stoi osobno w prawej kolumnie (.fsh-contact-main, grid). */
.fsh-contact-side {
	display: flex;
	flex-direction: column;
	gap: 40px;
}
.fsh-contact-info {
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.fsh-contact-info__item {
	display: flex;
	align-items: center;
	gap: 16px;
	background: #161616;
	border: 1px solid var(--fsh-border);
	padding: 20px 24px;
	color: #fff;
	text-decoration: none;
	transition: border-color .15s ease;
}
.fsh-contact-info__item:hover { border-color: var(--fsh-red); }
.fsh-contact-info__icon {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1.5px solid var(--fsh-red);
	border-radius: 50%;
	color: var(--fsh-red);
}
.fsh-contact-info__icon svg { width: 20px; height: 20px; }
.fsh-contact-info__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fsh-contact-info__label {
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--fsh-muted);
}
.fsh-contact-info__value {
	font-size: 17px;
	font-weight: 600;
	white-space: nowrap;
}

.fsh-contact-main {
	display: grid;
	grid-template-columns: 1fr 1.2fr;
	gap: 48px;
	padding: 56px 24px 80px;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	align-items: start;
}
.fsh-contact-form__card {
	background: #0a0a0a;
	border: 1px solid var(--fsh-border);
	padding: 32px;
}
.fsh-contact-form__card-title,
.fsh-contact-faq__title {
	font-size: 26px;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
	margin: 0 0 20px;
}
.fsh-contact-form__card .wpforms-container { margin: 0; }
.fsh-contact-form__card .wpforms-field label { color: var(--fsh-text) !important; }
/* Zgoda marketingowa (pole "Wymagane zgody", checkbox) do lewej – wymuszone
   jawnym flexem na <li>, bo samo text-align nie wystarczyło (jakaś reguła
   pozycjonuje sam box checkboxa/etykiety, nie tylko wyrównanie tekstu). */
.fsh-contact-form__card .wpforms-field-checkbox,
.fsh-contact-form__card .wpforms-field-checkbox ul {
	text-align: left !important;
}
.fsh-contact-form__card .wpforms-field-checkbox ul {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}
.fsh-contact-form__card .wpforms-field-checkbox li {
	display: flex !important;
	flex-direction: row !important;
	align-items: flex-start !important;
	justify-content: flex-start !important;
	text-align: left !important;
	gap: 10px;
	width: 100% !important;
}
.fsh-contact-form__card .wpforms-field-checkbox li input[type="checkbox"] {
	flex-shrink: 0;
	margin: 4px 0 0 0 !important;
}
.fsh-contact-form__card .wpforms-field-checkbox li label {
	flex: 1 1 auto;
	text-align: left !important;
}
.fsh-contact-form__card .wpforms-field input,
.fsh-contact-form__card .wpforms-field textarea,
.fsh-contact-form__card .wpforms-field select {
	background-color: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	color: #fff !important;
	border-radius: 0 !important;
}
.fsh-contact-form__card .wpforms-submit {
	background: var(--fsh-red) !important;
	border-color: var(--fsh-red) !important;
	color: #fff !important;
	border-radius: 0 !important;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.fsh-contact-form__card .wpforms-submit:hover { background: #ff3b3b !important; }
/* "Wyślij" do prawej, z wyraźnym odstępem od pola zgody; typografia jak
   pozostałe przyciski w sklepie (Teko 600, 16px, 1px, 15/30) + sitewide
   ścięty róg (button[type=submit] jest na liście w "Kształt przycisków"). */
.fsh-contact-form__card .wpforms-submit-container {
	display: flex !important;
	justify-content: flex-end !important;
	margin-top: 28px !important;
	padding-top: 0 !important;
}
.fsh-contact-form__card .wpforms-submit {
	font-family: var(--fsh-font) !important;
	font-weight: 600 !important;
	font-size: 16px !important;
	letter-spacing: 1px !important;
	line-height: 1 !important;
	padding: 15px 30px !important;
	height: auto !important;
}

@media (max-width: 900px) {
	.fsh-contact-main { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   Kontakt – ozdobniki: białe i czerwone linie (kolory z logotypu). Okręgi
   oraz mocne wiązki skośnych linii w hero były testowane i odrzucone przez
   użytkownika – zostają tylko przygaszone linie w tle i drobne akcenty.
   -------------------------------------------------------------------------- */
/* pod tekstem: trzy linie biała – czerwona – biała */
.fsh-contact-hero__text::after {
	content: "";
	display: block;
	width: 120px;
	height: 6px;
	margin: 28px auto 0;
	background: linear-gradient(to bottom,
		rgba(255,255,255,.6) 0 1px, transparent 1px 2.5px,
		var(--fsh-red) 2.5px 4.5px, transparent 4.5px 5px,
		rgba(255,255,255,.6) 5px 6px);
}
/* sekcja z formularzem: delikatne, długie skośne linie w tle po obu
   stronach (pełna szerokość okna), wygaszane ku środkowi */
.fsh-contact-main { position: relative; isolation: isolate; }
.fsh-contact-main::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 0; bottom: 0; left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	pointer-events: none;
	/* linie jako kafel SVG (wektor, wygładzane krawędzie) zamiast
	   repeating-linear-gradient pod kątem – gradient rysował skośne linie
	   bez antyaliasingu, przez co były wyraźnie poszarpane/spikselowane */
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='207.85' viewBox='0 0 120 207.85'%3E%3Cg fill='none' shape-rendering='geometricPrecision'%3E%3Cpath d='M-12 228.63L132 -20.78' stroke='%23fff' stroke-opacity='.07' stroke-width='1'/%3E%3Cpath d='M48 228.63L132 83.14M-12 124.71L72 -20.78' stroke='%23e11d2a' stroke-opacity='.3' stroke-width='1.6'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 120px 207.85px repeat;
	-webkit-mask: linear-gradient(to right, #000, transparent 22%, transparent 78%, #000);
	mask: linear-gradient(to right, #000, transparent 22%, transparent 78%, #000);
}
/* karta formularza: czerwona linia u góry + cienka biała tuż pod nią */
.fsh-contact-form__card {
	position: relative;
	border-top: 3px solid var(--fsh-red);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
}
/* kafelki telefon/e-mail: czerwona pionowa linia z lewej, na hover pełna */
.fsh-contact-info__item { position: relative; }
.fsh-contact-info__item::before {
	content: "";
	position: absolute;
	left: -1px; top: 25%; bottom: 25%;
	width: 3px;
	background: var(--fsh-red);
	transition: top .2s ease, bottom .2s ease;
}
.fsh-contact-info__item:hover::before { top: -1px; bottom: -1px; }
/* tytuły sekcji: krótka czerwona + biała linia pod spodem */
.fsh-contact-form__card-title::after,
.fsh-contact-faq__title::after {
	content: "";
	display: block;
	width: 64px;
	height: 5px;
	margin-top: 10px;
	background: linear-gradient(to bottom, var(--fsh-red) 0 3px, transparent 3px 4px, rgba(255,255,255,.4) 4px 5px);
}
@media (max-width: 767px) {
	.fsh-contact-main::before { -webkit-mask: linear-gradient(to right, #000, transparent 12%, transparent 88%, #000); mask: linear-gradient(to right, #000, transparent 12%, transparent 88%, #000); }
}


/* ==========================================================================
   Strona główna, DESKTOP: każdy tekst, który miał 16px lub mniej → 18px
   (życzenie właściciela). Przyciski (stały rozmiar 16px wszędzie) i
   plakietki HOT DEALS / PREMIUM celowo bez zmian. Na końcu pliku, żeby
   wygrać z regułami bazowymi o tej samej specyficzności.
   ========================================================================== */
@media (min-width: 1025px) {
	.fsh-showcase__p,
	.fsh-showcase__cta,
	.fsh-hp__text,
	.fsh-closing__sign,
	.fsh-kk-nextdrop__label,
	.fsh-kk-nextdrop__sub,
	#fsh-kk .fsh-kk-liga-all,
	#fsh-kk .fsh-kk-liga-count,
	#fsh-kk .fsh-kk-club-check,
	#fsh-kk .fsh-kk-liga-empty,
	#fsh-kk .fsh-kk-reset {
		font-size: 18px !important;
	}
	/* bloki tekstowe Elementora (opisy lig itd.) dziedziczą 18px z kitu
	   3049 – bez ogólnej reguły, bo wstęp (cabeac8) i "Autentyczność…"
	   (8b3486b) mają celowo 20px i !important by je zmniejszył */
}

/* Telefon: czerwone pasy (skup + klejenie) bez żadnych czarnych wcięć –
   bez klinów w tle i bez ukośnego cięcia, sama czerwień. */
@media (max-width: 767px) {
	.fsh-earn-band,
	.fsh-printing-promo { background-image: none !important; }
	.fsh-earn-band > .e-con-inner::after,
	.fsh-printing-promo__inner::after { display: none !important; }
}

/* Desktop/tablet: przycisk stoi na czarnym ukośnym cięciu → czerwony
   z białym tekstem; hover: czarne tło, czerwony tekst i czerwona ramka.
   Ramka = czerwony obrys drop-shadow na rodzicu przycisku (a742f32 /
   __cta-wrap, patrz "zabezpieczenie" wyżej) – idzie po ściętym rogu,
   zwykły border byłby ucięty przez clip-path. Na telefonie (bez cięcia,
   przycisk na czerwieni) zostaje czarny przycisk. */
@media (min-width: 768px) {
	.fsh-earn-btn .elementor-button,
	.fsh-printing-promo__cta {
		background: var(--fsh-red) !important;
		color: #fff !important;
	}
	.fsh-earn-btn .elementor-button .elementor-button-text,
	.fsh-earn-btn .elementor-button .elementor-button-icon i,
	.fsh-printing-promo__cta i { color: #fff !important; }
	.fsh-earn-btn .elementor-button:hover,
	.fsh-printing-promo__cta:hover {
		background: #000 !important;
		color: var(--fsh-red) !important;
	}
	.fsh-earn-btn .elementor-button:hover .elementor-button-text,
	.fsh-earn-btn .elementor-button:hover .elementor-button-icon i,
	.fsh-printing-promo__cta:hover i { color: var(--fsh-red) !important; }
	.fsh-earn-btn .elementor-button,
	.fsh-printing-promo__cta { transition: background-color .2s ease, color .2s ease; }
}

/* ==========================================================================
   Kontakt – subheader w stylu czerwonych pasów ze strony głównej ("Chcesz
   zarobić…" / "Doklejamy nazwisko…"): czerwone tło na pełną szerokość okna,
   przygaszone (50%) czarne kliny pod kątem 45° (jak ścięty róg przycisków)
   – lewy w górnej połowie, prawy w dolnej – i cienkie czarne linie na
   górnej/dolnej krawędzi. Znak wodny logo wyłączony (na pasach też go nie
   ma). Czerwone akcenty tekstu (eyebrow, kwadracik, linia pod tekstem)
   przełączone na biel/czerń, żeby nie znikały na czerwieni.
   Telefon: sama czerwień bez klinów (jak pasy na głównej).
   ========================================================================== */
.fsh-contact-hero {
	padding: 64px 24px 56px;
	margin: 0 0 48px;
}
.fsh-contact-hero::before {
	--w: 120px;
	--fsh-hero-wedge: rgba(0,0,0,.5) 0 var(--w), transparent var(--w);
	background-color: var(--fsh-red);
	background-image:
		linear-gradient(135deg, var(--fsh-hero-wedge)),
		linear-gradient(-45deg, var(--fsh-hero-wedge));
	background-repeat: no-repeat;
	background-size: 100% 50%, 100% 50%;
	background-position: left top, left bottom;
	box-shadow: inset 0 3px 0 var(--fsh-bg), inset 0 -3px 0 var(--fsh-bg);
}
/* ::after (dawniej znak wodny logo) = "przerywnik" jak pod przyciskami
   w pasach na głównej: przygaszone czarne cięcie na pełną wysokość pasa,
   skos 45°, w tle po prawej stronie (tekst jest wyśrodkowany). */
.fsh-contact-hero::after {
	display: block;
	top: 0; bottom: 0;
	/* o połowę węższe (210px zamiast 420px), zwężone od lewej – prawa
	   krawędź w tym samym miejscu, więc środek przesunięty o +105px */
	left: calc(50% + clamp(260px, 30vw, 460px) + 105px);
	width: 210px;
	transform: translateX(-50%) skewX(-45deg);
	background: rgba(0,0,0,.5);
	opacity: 1;
	z-index: -1;
}
.fsh-contact-hero__eyebrow { display: none !important; }
/* bez potrójnej linii pod opisem (życzenie właściciela) */
.fsh-contact-hero__text::after { display: none !important; }
.fsh-contact-hero__eyebrow { color: #fff; }
.fsh-contact-hero__eyebrow::before { background: #000; }
.fsh-contact-hero__title::after { background: #fff; opacity: 1; }
.fsh-contact-hero__text { color: rgba(255,255,255,.9); }
.fsh-contact-hero__text::after {
	background: linear-gradient(to bottom,
		rgba(255,255,255,.7) 0 1px, transparent 1px 2.5px,
		#000 2.5px 4.5px, transparent 4.5px 5px,
		rgba(255,255,255,.7) 5px 6px);
}
@media (min-width: 768px) and (max-width: 1099px) {
	.fsh-contact-hero::before { --w: 50px; }
}
@media (max-width: 767px) {
	.fsh-contact-hero { padding: 44px 20px 40px; margin-bottom: 32px; }
	.fsh-contact-hero::before { background-image: none; }
	.fsh-contact-hero::after { display: none; }
}
/* Kontakt: bez ukośnych linii w tle sekcji z formularzem (życzenie
   właściciela) i bez znaku wodnego logo w subheaderze (wyłączony wyżej). */
.fsh-contact-main::before { display: none !important; }
/* tekst wstępu przeniesiony z subheadera do lewej kolumny, nad telefon */
/* tekst wstępu: biały, 18px, na pełną szerokość NAD obiema kolumnami
   (pierwszy element siatki .fsh-contact-main, rozciągnięty na obie) */
.fsh-contact-intro {
	grid-column: 1 / -1;
	margin: 0 0 -16px; /* gap siatki 48px – do kolumn zostaje 32px */
	font-size: 18px;
	line-height: 1.6;
	color: #fff;
}
/* odstęp subheader → treść daje sam padding-top siatki (56px);
   dodatkowy margines pod subheaderem sumował się w ponad 100px */
.fsh-contact-hero { margin-bottom: 0 !important; }
/* subheader ma już sam tytuł – kreska pod nim bez dolnego marginesu tytułu */
.fsh-contact-hero__title { margin-bottom: 0 !important; }
/* breadcrumb w subheaderze kontaktu – pod tytułem, wyśrodkowany, jasny na
   czerwieni (bazowe .woocommerce-breadcrumb jest szare pod czarne tło) */
.fsh-contact-hero .woocommerce-breadcrumb {
	position: relative;
	margin: 20px 0 0;
	padding: 0;
	text-align: center;
	font-size: 16px;
	color: rgba(255,255,255,.85);
}
.fsh-contact-hero .woocommerce-breadcrumb a { color: #fff; text-decoration: none; }
.fsh-contact-hero .woocommerce-breadcrumb a:hover { color: #000; text-decoration: none; }

/* ==========================================================================
   Klejenie nadruków – subheader jak na /kontakt/: czerwony pas na pełną
   szerokość okna z przygaszonymi klinami 45° (lewy u góry, prawy u dołu),
   cienkimi czarnymi liniami na krawędziach i "przerywnikiem" (przygaszone
   czarne cięcie 45°) w tle po prawej; sam tytuł + biała kreska + breadcrumb.
   Tekst wstępu przeniesiony pod pas (biały, 18px). Telefon: sama czerwień.
   ========================================================================== */
.fsh-printing-hero {
	position: relative;
	isolation: isolate;
	max-width: none;
	padding: 64px 24px 56px;
}
.fsh-printing-hero::before,
.fsh-printing-hero::after {
	content: "";
	position: absolute;
	top: 0; bottom: 0; left: 50%;
	pointer-events: none;
}
.fsh-printing-hero::before {
	--w: 120px;
	--fsh-hero-wedge: rgba(0,0,0,.5) 0 var(--w), transparent var(--w);
	width: 100vw;
	transform: translateX(-50%);
	z-index: -2;
	background-color: var(--fsh-red);
	background-image:
		linear-gradient(135deg, var(--fsh-hero-wedge)),
		linear-gradient(-45deg, var(--fsh-hero-wedge));
	background-repeat: no-repeat;
	background-size: 100% 50%, 100% 50%;
	background-position: left top, left bottom;
	box-shadow: inset 0 3px 0 var(--fsh-bg), inset 0 -3px 0 var(--fsh-bg);
}
.fsh-printing-hero::after {
	/* o połowę węższe (210px zamiast 420px), zwężone od lewej – prawa
	   krawędź w tym samym miejscu, więc środek przesunięty o +105px */
	left: calc(50% + clamp(260px, 30vw, 460px) + 105px);
	width: 210px;
	transform: translateX(-50%) skewX(-45deg);
	background: rgba(0,0,0,.5);
	z-index: -1;
}
.fsh-printing-hero__eyebrow { display: none !important; }
.fsh-printing-hero__title { position: relative; margin: 0 !important; }
.fsh-printing-hero__title::after {
	content: "";
	display: block;
	width: 56px;
	height: 2px;
	background: #fff;
	margin: 18px auto 0;
}
.fsh-printing-hero .woocommerce-breadcrumb {
	position: relative;
	margin: 20px 0 0;
	padding: 0;
	text-align: center;
	font-size: 16px;
	color: rgba(255,255,255,.85);
}
.fsh-printing-hero .woocommerce-breadcrumb a { color: #fff; text-decoration: none; }
.fsh-printing-hero .woocommerce-breadcrumb a:hover { color: #000; text-decoration: none; }
.fsh-printing-intro {
	max-width: 760px;
	margin: 56px auto 16px;
	padding: 0 24px;
	text-align: center;
	font-size: 18px;
	line-height: 1.6;
	color: #fff;
}
@media (min-width: 768px) and (max-width: 1099px) {
	.fsh-printing-hero::before { --w: 50px; }
}
@media (max-width: 767px) {
	.fsh-printing-hero { padding: 44px 20px 40px; }
	.fsh-printing-hero::before { background-image: none; }
	.fsh-printing-hero::after { display: none; }
	.fsh-printing-intro { margin-top: 40px; }
}

/* Subheadery /kontakt/ i /klejenie-nadrukow/: kliny po bokach PEŁNĄ czernią
   (kolor tła strony, bez przygaszenia), pozycje jak wcześniej – lewy
   w górnej połowie, prawy w dolnej. (Wersja z białymi klinami oba u góry
   była testowana i odrzucona.) */
.fsh-contact-hero::before,
.fsh-printing-hero::before {
	--fsh-hero-wedge: var(--fsh-bg) 0 var(--w), transparent var(--w);
}

/* Kontakt: subheader DOKLEJONY do headera – kontener Elementora c9f31a2
   (boxed) ma domyślny padding 10px, liczony podwójnie (kontener +
   .e-con-inner), co zostawiało ~20px czarnej szczeliny nad czerwonym pasem. */
.elementor-15 .elementor-element-c9f31a2,
.elementor-15 .elementor-element-c9f31a2 > .e-con-inner {
	--padding-top: 0px;
	padding-top: 0 !important;
	margin-top: 0 !important;
}
.elementor-15 .elementor-element-e1a77b4,
.elementor-15 .elementor-element-e1a77b4 > .elementor-widget-container { margin-top: 0 !important; padding-top: 0 !important; }

/* Kontakt: odstęp NAD polem zgody ("Zgadzam się na przetwarzanie…"),
   żeby nie przylegało do pola wiadomości */
.fsh-contact-form__card .wpforms-field-checkbox {
	margin-top: 24px !important;
	padding-top: 0 !important;
}
.fsh-contact-form__card .wpforms-field-checkbox .wpforms-field-label { margin-bottom: 10px !important; }

/* Kontakt: pod "Napisz do nas" / "Najczęstsze pytania" tylko czerwona
   kreska – cienka biała linia pod nią usunięta */
.fsh-contact-form__card-title::after,
.fsh-contact-faq__title::after {
	height: 3px !important;
	background: var(--fsh-red) !important;
}

/* ==========================================================================
   Klejenie nadruków – układ jak na /kontakt/: treść na tę samą szerokość
   co tam (1100px z 24px marginesu bocznego, tekst do lewej) zamiast wąskich
   (720–900px), wyśrodkowanych kolumn; subheader doklejony do headera.
   ========================================================================== */
.fsh-printing-intro,
.fsh-printing-about,
.fsh-printing-faq {
	box-sizing: border-box;
	max-width: var(--fsh-max-width);
	padding-left: 24px;
	padding-right: 24px;
	text-align: left;
}
.fsh-printing-intro { margin: 56px auto 24px; }
.fsh-printing-about { font-size: 18px; } /* tekst jak wszędzie – 18px */
.fsh-printing-warning {
	box-sizing: border-box;
	max-width: calc(var(--fsh-max-width) - 48px); /* szerokość treści − 2×24: równo z krawędziami tekstu */
	width: calc(100% - 48px);
	text-align: left;
}
.fsh-printing-faq__title { text-align: left; }
@media (max-width: 767px) {
	.fsh-printing-intro { margin-top: 40px; }
}
/* subheader doklejony do headera: domyślny padding 10px kontenera
   Elementora 6c72e91 (liczony podwójnie – kontener + .e-con-inner) */
.elementor-19921 .elementor-element-6c72e91,
.elementor-19921 .elementor-element-6c72e91 > .e-con-inner {
	--padding-top: 0px;
	padding-top: 0 !important;
	margin-top: 0 !important;
}
.elementor-19921 .elementor-element-9f21a04,
.elementor-19921 .elementor-element-9f21a04 > .elementor-widget-container { margin-top: 0 !important; padding-top: 0 !important; }
/* .fsh-printing miało overflow-x:hidden – ucinało czerwone tło subheadera
   (i pasa kroków) rozciągnięte na 100vw do szerokości boxowanego kontenera.
   Poziomy scroll strony blokują już html/body (overflow-x:hidden), a galeria
   ma własne przycinanie, więc tu niepotrzebne. */
.fsh-printing { overflow-x: visible !important; }

/* ==========================================================================
   Kontakt – ozdobniki w jednym języku z resztą strony (skos 45° jak ścięty
   róg przycisków i kliny w czerwonych pasach):
   1) pod "Napisz do nas" / "Najczęstsze pytania": zamiast płaskiej kreski
      dwa czerwone równoległoboki pochylone o 45° (długi + krótki, "/ /");
   2) kafelki telefon/e-mail: zamiast pionowej czerwonej belki – czerwony
      trójkąt w prawym dolnym rogu (kształt ściętego rogu przycisków),
      rośnie na hover;
   3) karta formularza: ten sam narożnik, większy, na stałe.
   ========================================================================== */
.fsh-contact-form__card-title::after,
.fsh-contact-faq__title::after {
	width: 72px !important;
	height: 4px !important;
	margin-top: 12px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px) !important;
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.fsh-contact-info__item::before {
	left: auto !important;
	top: auto !important;
	right: -1px;
	bottom: -1px !important;
	width: 16px !important;
	height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%) !important;
	transition: width .2s ease, height .2s ease !important;
}
.fsh-contact-info__item:hover::before {
	top: auto !important;
	bottom: -1px !important;
	width: 28px !important;
	height: 28px;
}
.fsh-contact-form__card::after {
	content: "";
	position: absolute;
	right: -1px;
	bottom: -1px;
	width: 28px;
	height: 28px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}

/* ==========================================================================
   Kontakt – dopracowane ozdobniki i hovery (jedno tempo, jedna krzywa):
   - kafelki telefon/e-mail: czerwony trójkąt w rogu STAŁY (bez skakania
     rozmiarem); na hover: czerwona linia wsuwa się od lewej wzdłuż dolnej
     krawędzi, kółko ikony wypełnia się czerwienią (ikona biała), tło
     kafla lekko się rozjaśnia; ramka kafla zostaje spokojna;
   - karta formularza: sama czerwona linia u góry (bez białej linii pod
     nią), narożnik 20px;
   - FAQ: pytanie na hover czerwone, znak +/− w kolorze akcentu.
   ========================================================================== */
.fsh-contact {
	--fsh-ease: cubic-bezier(.2, .7, .2, 1);
	--fsh-dur: .3s;
}
.fsh-contact-info__item {
	background: #141414;
	border-color: var(--fsh-border) !important;
	transition: background-color var(--fsh-dur) var(--fsh-ease);
}
.fsh-contact-info__item:hover { background: #1a1a1a; }
.fsh-contact-info__item::before,
.fsh-contact-info__item:hover::before {
	width: 16px !important;
	height: 16px !important;
	transition: none !important;
}
.fsh-contact-info__item::after {
	content: "";
	position: absolute;
	left: -1px;
	right: 15px;               /* kończy się przy trójkącie w rogu */
	bottom: -1px;
	height: 2px;
	background: var(--fsh-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--fsh-dur) var(--fsh-ease);
	pointer-events: none;
}
.fsh-contact-info__item:hover::after,
.fsh-contact-info__item:focus-visible::after { transform: scaleX(1); }
.fsh-contact-info__icon {
	transition: background-color var(--fsh-dur) var(--fsh-ease), color var(--fsh-dur) var(--fsh-ease);
}
.fsh-contact-info__item:hover .fsh-contact-info__icon,
.fsh-contact-info__item:focus-visible .fsh-contact-info__icon {
	background: var(--fsh-red);
	color: #fff;
}
.fsh-contact-info__item:focus-visible { outline: 2px solid var(--fsh-red); outline-offset: 2px; }
.fsh-contact-info__value { font-size: 18px; }

.fsh-contact-form__card { box-shadow: none !important; }
.fsh-contact-form__card::after { width: 20px; height: 20px; }

.fsh-contact-faq .fsh-buyback-faq-item summary {
	transition: color var(--fsh-dur) var(--fsh-ease);
}
.fsh-contact-faq .fsh-buyback-faq-item summary:hover { color: var(--fsh-red); }

@media (prefers-reduced-motion: reduce) {
	.fsh-contact-info__item,
	.fsh-contact-info__item::after,
	.fsh-contact-info__icon,
	.fsh-contact-faq .fsh-buyback-faq-item summary { transition: none !important; }
}

/* Subheader /kontakt/ i /klejenie-nadrukow/ o połowę niższy (~250px → ~130px):
   mniejszy padding, mniejszy tytuł, ciaśniejsze odstępy kreski i okruszków. */
.fsh-contact-hero,
.fsh-printing-hero { padding: 22px 24px 20px !important; }
.fsh-contact-hero__title,
.fsh-printing-hero__title { font-size: clamp(30px, 3.4vw, 44px) !important; }
.fsh-contact-hero__title::after,
.fsh-printing-hero__title::after { margin-top: 10px !important; }
.fsh-contact-hero .woocommerce-breadcrumb,
.fsh-printing-hero .woocommerce-breadcrumb { margin-top: 10px !important; font-size: 15px; }
@media (max-width: 767px) {
	.fsh-contact-hero,
	.fsh-printing-hero { padding: 20px 20px 18px !important; }
}

/* Kontakt: tekst wstępu nad kolumnami wyśrodkowany */
.fsh-contact-intro { text-align: center; }

/* ==========================================================================
   DESKTOP (≥1025px), wszystkie podstrony OPRÓCZ strony głównej: tekst,
   który miał 16px lub mniej → 18px (życzenie właściciela – "za mała
   czcionka"). Zakres: tylko treść strony (.site-main – main#content na
   stronach, main#main w sklepie/produkcie), więc header i stopka bez zmian.
   Celowo NIE ruszane: nagłówki (h1–h6 / heading-title – i tak większe),
   przyciski (stałe 16px w całym sklepie), plakietki (fsh-loop-badge,
   fsh-gallery-badge), duża cena na karcie produktu (poza tabelami/listą).
   ========================================================================== */
@media (min-width: 1025px) {
	body:not(.home) .site-main { font-size: 18px; }
	/* podstawowe elementy tekstu (globalna reguła "min 16px" wyżej) */
	body:not(.home) .site-main :is(p, li, td, th, dd, dt, blockquote, figcaption,
		label, input:not([type="submit"]):not([type="button"]), select, textarea, summary, small,
		.elementor-widget-text-editor, .elementor-icon-box-description) {
		font-size: 18px;
	}
	/* elementy sklepu / formularzy z jawnie ustawionym mniejszym rozmiarem */
	body:not(.home) :is(
		.woocommerce-breadcrumb,
		.fsh-filter__field label, .fsh-filter select, .fsh-filter__clear,
		.fsh-shop-layout .fsh-filtered-desc p,
		.fsh-shop-activefilters .fsh-af-label,
		.fsh-shop-activefilters .fsh-af-chip,
		.fsh-shop-activefilters .fsh-af-clear,
		#fsh-shop-filters .fsh-shop-reset,
		#fsh-shop-filters .fsh-kk-liga-exp,
		#fsh-shop-filters .fsh-kk-chip,
		#fsh-shop-filters .fsh-kk-liga-all,
		#fsh-shop-filters .fsh-kk-liga-count,
		#fsh-shop-filters .fsh-kk-club-check,
		#fsh-shop-filters .fsh-kk-liga-empty,
		.fsh-shop-main .woocommerce-ordering select,
		.fsh-shop-main .woocommerce-result-count,
		ul.products li.product .price,
		ul.products li.product .price .woocommerce-Price-amount,
		.shop_table .woocommerce-Price-amount,
		ul.products li.product .pwp-omnibus-price__info,
		.summary.entry-summary .woocommerce-product-details__short-description,
		.summary.entry-summary .product_meta,
		.fsh-attrs__label,
		ul.tabs.wc-tabs li a,
		.fsh-buyback-steps__text, .fsh-buyback-cats__tag, .fsh-buyback-cats__note,
		.fsh-printing-pricing__lead, .fsh-printing-pricing__note, .fsh-printing-steps__text,
		.fsh-contact-info__label,
		.wpforms-field-label, .wpforms-field-sublabel, .wpforms-field-description,
		.wpforms-field input:not([type="submit"]), .wpforms-field textarea, .wpforms-field select
	) {
		font-size: 18px !important;
	}
}

/* ==========================================================================
   Klejenie nadruków – 4 kafelki kroków: ten sam hover co kafelki
   telefon/e-mail na /kontakt/ (stały czerwony trójkąt w prawym dolnym
   rogu; na hover czerwona linia wsuwa się od lewej wzdłuż dolnej krawędzi,
   kółko ikony wypełnia się czerwienią z białą ikoną, tło lekko jaśnieje).
   ========================================================================== */
.fsh-printing-steps__item {
	--fsh-ease: cubic-bezier(.2, .7, .2, 1);
	--fsh-dur: .3s;
	position: relative;
	background: #141414;
	transition: background-color var(--fsh-dur) var(--fsh-ease);
}
.fsh-printing-steps__item:hover { background: #1a1a1a; }
.fsh-printing-steps__item::before {
	content: "";
	position: absolute;
	right: -1px;
	bottom: -1px;
	width: 16px;
	height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.fsh-printing-steps__item::after {
	content: "";
	position: absolute;
	left: -1px;
	right: 15px;
	bottom: -1px;
	height: 2px;
	background: var(--fsh-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--fsh-dur) var(--fsh-ease);
	pointer-events: none;
}
.fsh-printing-steps__item:hover::after { transform: scaleX(1); }
.fsh-printing-steps__num {
	transition: background-color var(--fsh-dur) var(--fsh-ease), color var(--fsh-dur) var(--fsh-ease);
}
.fsh-printing-steps__item:hover .fsh-printing-steps__num { background: var(--fsh-red); color: #fff; }

/* ==========================================================================
   Klejenie nadruków – CENNIK: cała sekcja na szarym tle na pełną szerokość
   okna (warstwa ::before 100vw, jak czerwony pas kroków); nowa kolorystyka:
   ciemne karty na szarym, biała cena, czerwony przycisk "Dodaj do koszyka"
   (hover: czarne wypełnienie + czerwona ramka i tekst – ramka z warstw
   ::before/::after, bo zwykły border ucinałby ścięty róg).
   ========================================================================== */
.fsh-printing-pricing {
	position: relative;
	isolation: isolate;
	padding: 64px 24px !important;
	margin-bottom: 56px;
}
.fsh-printing-pricing::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 0; bottom: 0; left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background: #1c1c1e;
	border-block: 1px solid #2a2a2d;
}
.fsh-printing-pricing__lead { color: #e2e2e2; }
.fsh-printing-pricing__note { color: #a9a9ad; }
.fsh-printing-pricing__card {
	position: relative;
	background: #0e0e0f;
	border-color: #2e2e32;
	transition: border-color .3s cubic-bezier(.2,.7,.2,1);
}
.fsh-printing-pricing__card:hover { border-color: #4a4a50; }
.fsh-printing-pricing__card::after {
	content: "";
	position: absolute;
	right: -1px;
	bottom: -1px;
	width: 16px;
	height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.fsh-printing-pricing__price,
.fsh-printing-pricing__price .woocommerce-Price-amount { color: #fff !important; }
/* przycisk: czerwony z białym tekstem; hover czarny + czerwona ramka/tekst */
.fsh-printing-pricing__cta.elementor-button {
	color: #fff !important;
	font-family: var(--fsh-font);
	font-size: 16px;
	letter-spacing: 1px;
	padding: 15px 30px;
	line-height: 1;
	transition: color .3s cubic-bezier(.2,.7,.2,1);
}
.fsh-printing-pricing__cta.elementor-button::after { background: var(--fsh-red); transition: background-color .3s cubic-bezier(.2,.7,.2,1); }
.fsh-printing-pricing__cta.elementor-button:hover { color: var(--fsh-red) !important; }
.fsh-printing-pricing__cta.elementor-button:hover::after { background: #000; }

@media (prefers-reduced-motion: reduce) {
	.fsh-printing-steps__item, .fsh-printing-steps__item::after, .fsh-printing-steps__num,
	.fsh-printing-pricing__card, .fsh-printing-pricing__cta.elementor-button,
	.fsh-printing-pricing__cta.elementor-button::after { transition: none !important; }
}

/* ==========================================================================
   BEZ KURSYWY w całym sklepie (życzenie właściciela): tekst ma być prosty
   i biały. Źródła kursywy: <em>/<i> wpisane w opisy produktów, tabela
   atrybutów WooCommerce (shop_attributes td), figcaption (reset Hello),
   podpis w zamknięciu strony głównej. <i> z klasą to ikony (FontAwesome /
   eicons) – tym zdejmujemy tylko kursywę, BEZ zmiany koloru.
   ========================================================================== */
em, i, cite, dfn, var, address, figcaption,
.woocommerce table.shop_attributes td,
.fsh-closing__sign { font-style: normal !important; }
em, i:not([class]), cite, dfn, address, figcaption,
.woocommerce table.shop_attributes td,
.fsh-closing__sign { color: #fff !important; }

/* Klejenie nadruków – "Najczęstsze pytania" 1:1 jak na /kontakt/: tytuł do
   lewej z czerwonymi paskami "/ /" pod spodem (skos 45°), pytania z płynnym
   czerwonym hoverem. */
.fsh-printing-faq__title { text-align: left !important; margin-bottom: 20px; }
.fsh-printing-faq__title::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 12px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.fsh-printing-faq .fsh-buyback-faq-item summary {
	transition: color .3s cubic-bezier(.2, .7, .2, 1);
}
.fsh-printing-faq .fsh-buyback-faq-item summary:hover { color: var(--fsh-red); }
@media (prefers-reduced-motion: reduce) {
	.fsh-printing-faq .fsh-buyback-faq-item summary { transition: none !important; }
}

/* ==========================================================================
   WSPÓLNY SUBHEADER PODSTRON (.fsh-subhero, drukowany w functions.php zaraz
   po headerze) – 1:1 jak na /kontakt/ i /klejenie-nadrukow/: czerwony pas
   na pełną szerokość, czarne kliny 45° (lewy w górnej połowie, prawy
   w dolnej), cienkie czarne linie na krawędziach, przygaszony czarny
   "przerywnik" 45° po prawej, tytuł + biała kreska + okruszki. Telefon:
   sama czerwień. Strony: o nas, skup, koszyk, zamówienie, moje konto,
   polityka prywatności, regulamin.
   ========================================================================== */
.fsh-subhero {
	--w: 120px;
	--fsh-hero-wedge: var(--fsh-bg) 0 var(--w), transparent var(--w);
	position: relative;
	isolation: isolate;
	overflow: hidden;
	text-align: center;
	padding: 22px 24px 20px;
	background-color: var(--fsh-red);
	background-image:
		linear-gradient(135deg, var(--fsh-hero-wedge)),
		linear-gradient(-45deg, var(--fsh-hero-wedge));
	background-repeat: no-repeat;
	background-size: 100% 50%, 100% 50%;
	background-position: left top, left bottom;
	box-shadow: inset 0 3px 0 var(--fsh-bg), inset 0 -3px 0 var(--fsh-bg);
}
.fsh-subhero::after {
	content: "";
	position: absolute;
	z-index: -1;
	top: 0; bottom: 0;
	left: calc(50% + clamp(260px, 30vw, 460px) + 105px);
	width: 210px;
	transform: translateX(-50%) skewX(-45deg);
	background: rgba(0,0,0,.5);
	pointer-events: none;
}
.fsh-subhero__title {
	margin: 0;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: clamp(30px, 3.4vw, 44px);
	line-height: 1.05;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: #fff;
}
.fsh-subhero__title::after {
	content: "";
	display: block;
	width: 56px;
	height: 2px;
	margin: 10px auto 0;
	background: #fff;
}
.fsh-subhero .woocommerce-breadcrumb {
	margin: 10px 0 0 !important;
	padding: 0 !important;
	text-align: center;
	font-size: 15px !important;
	color: rgba(255,255,255,.85);
}
.fsh-subhero .woocommerce-breadcrumb a { color: #fff; text-decoration: none; }
.fsh-subhero .woocommerce-breadcrumb a:hover { color: #000; text-decoration: none; }
@media (min-width: 768px) and (max-width: 1099px) { .fsh-subhero { --w: 50px; } }
@media (max-width: 767px) {
	.fsh-subhero { padding: 20px 20px 18px; background-image: none; }
	.fsh-subhero::after { display: none; }
}
/* odstęp subheader → treść (jak na kontakcie: 56px / 40px na telefonie) */
body.fsh-has-subhero .site-main { padding-top: 56px; }
@media (max-width: 767px) { body.fsh-has-subhero .site-main { padding-top: 40px; } }
/* O nas: tytuł "O Nas" z Elementora jest już w subheaderze (i byłby drugim h1) */
.elementor-96 .elementor-element-285c924 { display: none !important; }

/* ==========================================================================
   Skup koszulek – reszta strony jak kontakt/klejenie:
   - dawny nagłówek strony: eyebrow + tytuł ukryte (tytuł jest w subheaderze),
     zostaje tekst (biały, 18px, wyśrodkowany) i przycisk "Wyceń koszulki";
   - 4 kafelki kroków: hover jak na kontakcie/klejeniu;
   - formularz + FAQ: ozdobniki jak na kontakcie ("/ /" pod tytułami,
     narożnik karty, sama czerwona linia u góry karty), "Wyślij" do prawej,
     odstęp nad zgodą, FAQ z czerwonym hoverem.
   ========================================================================== */
.fsh-buyback-hero { padding: 0 24px 48px !important; max-width: var(--fsh-max-width) !important; }
.fsh-buyback-hero__eyebrow,
.fsh-buyback-hero__title { display: none !important; }
.fsh-buyback-hero__text { color: #fff !important; font-size: 18px !important; }
.fsh-buyback-hero__cta.elementor-button {
	font-family: var(--fsh-font);
	font-size: 16px !important;
	letter-spacing: 1px;
	line-height: 1;
	padding: 15px 30px !important;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1), color .3s cubic-bezier(.2,.7,.2,1);
}
.fsh-buyback-hero__cta.elementor-button:hover { background: #000 !important; color: var(--fsh-red) !important; }

.fsh-buyback-steps__item {
	position: relative;
	background: #141414;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1);
}
.fsh-buyback-steps__item:hover { background: #1a1a1a; }
.fsh-buyback-steps__item::before {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 16px; height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.fsh-buyback-steps__item::after {
	content: "";
	position: absolute;
	left: -1px; right: 15px; bottom: -1px;
	height: 2px;
	background: var(--fsh-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .3s cubic-bezier(.2,.7,.2,1);
	pointer-events: none;
}
.fsh-buyback-steps__item:hover::after { transform: scaleX(1); }
.fsh-buyback-steps__num { transition: background-color .3s cubic-bezier(.2,.7,.2,1), color .3s cubic-bezier(.2,.7,.2,1); }
.fsh-buyback-steps__item:hover .fsh-buyback-steps__num { background: var(--fsh-red); color: #fff; }

.fsh-buyback-form__faq-title::after,
.fsh-buyback-form__card-title::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 12px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.fsh-buyback-form__card {
	position: relative;
	border-top: 3px solid var(--fsh-red) !important;
	box-shadow: none !important;
}
.fsh-buyback-form__card::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 20px; height: 20px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.fsh-buyback-form__card .wpforms-field-checkbox { margin-top: 24px !important; padding-top: 0 !important; }
.fsh-buyback-form__card .wpforms-submit-container {
	display: flex !important;
	justify-content: flex-end !important;
	margin-top: 28px !important;
	padding-top: 0 !important;
}
.fsh-buyback-form__card .wpforms-submit {
	font-family: var(--fsh-font) !important;
	font-weight: 600 !important;
	font-size: 16px !important;
	letter-spacing: 1px !important;
	line-height: 1 !important;
	padding: 15px 30px !important;
	height: auto !important;
	text-transform: uppercase;
}
.fsh-buyback-form__faq .fsh-buyback-faq-item summary { transition: color .3s cubic-bezier(.2,.7,.2,1); }
.fsh-buyback-form__faq .fsh-buyback-faq-item summary:hover { color: var(--fsh-red); }
@media (prefers-reduced-motion: reduce) {
	.fsh-buyback-steps__item, .fsh-buyback-steps__item::after, .fsh-buyback-steps__num,
	.fsh-buyback-hero__cta.elementor-button,
	.fsh-buyback-form__faq .fsh-buyback-faq-item summary { transition: none !important; }
}

/* ==========================================================================
   Subheadery (wspólny .fsh-subhero + kontakt + klejenie): tło #101014
   zamiast czerwieni – te same przezroczystości/kształty (czarne kliny 45°,
   przerywnik 50% czerni, czarne linie na krawędziach). Hover okruszków na
   czerwono (czarny zniknąłby na ciemnym tle).
   ========================================================================== */
.fsh-subhero,
.fsh-contact-hero::before,
.fsh-printing-hero::before { background-color: #101014 !important; }
.fsh-subhero .woocommerce-breadcrumb a:hover,
.fsh-contact-hero .woocommerce-breadcrumb a:hover,
.fsh-printing-hero .woocommerce-breadcrumb a:hover { color: var(--fsh-red) !important; }

/* Moje konto: nagłówki "Logowanie" / "Zarejestruj się" na biało */
#customer_login h2,
.woocommerce-account .u-column1 h2,
.woocommerce-account .u-column2 h2 { color: #fff !important; }

/* ==========================================================================
   Tło strony ZAWSZE czarne na całą szerokość: kit Elementora (3049) ustawia
   body{background:#fff; color:#4F4F4F} klasą .elementor-kit-3049 na <body>
   – to wygrywało z "html, body { background: var(--fsh-bg) }" i na
   stronach z samym tekstem (polityka, regulamin – treść ograniczona do
   ~1140px) po bokach było białe tło, a tekst szary.
   ========================================================================== */
body,
body.elementor-kit-3049 { background-color: var(--fsh-bg) !important; }

/* Polityka prywatności / regulamin i inne strony z treścią z edytora:
   tekst biały (nagłówki, akapity, listy, pogrubienia), linki czerwone,
   separatory w kolorze ramek; treść na tę samą szerokość co reszta
   podstron (1100px, 24px marginesu). */
body.fsh-has-subhero .page-content { color: #fff; }
body.privacy-policy .page-content,
body.page-id-3 .page-content {
	box-sizing: border-box;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	padding-left: 24px;
	padding-right: 24px;
}
body:is(.privacy-policy, .page-id-3) .page-content :is(h1, h2, h3, h4, h5, h6, p, li, strong, b, td, th, dt, dd, .elementor-widget-text-editor) {
	color: #fff !important;
}
body:is(.privacy-policy, .page-id-3) .page-content .wp-block-heading { font-size: clamp(22px, 2vw, 28px); line-height: 1.25; }
body:is(.privacy-policy, .page-id-3) .page-content :is(p, li, .elementor-widget-text-editor) a { color: var(--fsh-red) !important; }
body:is(.privacy-policy, .page-id-3) .page-content hr { border: 0; border-top: 1px solid var(--fsh-border); opacity: 1; }

/* Skup: "Co skupujemy" przeniesione do lewej kolumny formularza, nad FAQ –
   wyrównane do lewej, tytuł w tym samym stylu co "Najczęstsze pytania"
   (26px + czerwone paski "/ /"), tagi od lewej. */
.fsh-buyback-form__faq .fsh-buyback-cats {
	text-align: left;
	padding: 0;
	margin: 0 0 48px;
}
.fsh-buyback-form__faq .fsh-buyback-cats__title {
	font-size: 26px;
	margin: 0 0 20px;
}
.fsh-buyback-form__faq .fsh-buyback-cats__title::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 12px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.fsh-buyback-form__faq .fsh-buyback-cats__list { justify-content: flex-start; gap: 10px; }
.fsh-buyback-form__faq .fsh-buyback-cats__note { color: #fff; }
/* "Co skupujemy" zamknięte w boksie – ten sam szary co tło cennika na
   /klejenie-nadrukow/ (#1c1c1e, ramka #2a2a2d) + czerwony narożnik jak karty */
.fsh-buyback-form__faq .fsh-buyback-cats {
	position: relative;
	background: #1c1c1e;
	border: 1px solid #2a2a2d;
	padding: 28px 28px 30px;
}
.fsh-buyback-form__faq .fsh-buyback-cats::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 20px; height: 20px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
@media (max-width: 767px) {
	.fsh-buyback-form__faq .fsh-buyback-cats { padding: 22px 20px 24px; }
}

/* Skup: formularz wyrównany 1:1 jak na /kontakt/ – automatyczna kopia
   wszystkich reguł ".fsh-contact-form__card .wpforms…" dla
   .fsh-buyback-form__card (pola, etykiety, zgoda do lewej, odstępy,
   "Wyślij" do prawej). */
.fsh-buyback-form__card .wpforms-container { margin: 0; }
.fsh-buyback-form__card .wpforms-field label { color: var(--fsh-text) !important; }
.fsh-buyback-form__card .wpforms-field-checkbox, .fsh-buyback-form__card .wpforms-field-checkbox ul { text-align: left !important; }
.fsh-buyback-form__card .wpforms-field-checkbox ul { list-style: none !important; margin: 0 !important; padding: 0 !important; }
.fsh-buyback-form__card .wpforms-field-checkbox li { display: flex !important; flex-direction: row !important; align-items: flex-start !important; justify-content: flex-start !important; text-align: left !important; gap: 10px; width: 100% !important; }
.fsh-buyback-form__card .wpforms-field-checkbox li input[type="checkbox"] { flex-shrink: 0; margin: 4px 0 0 0 !important; }
.fsh-buyback-form__card .wpforms-field-checkbox li label { flex: 1 1 auto; text-align: left !important; }
.fsh-buyback-form__card .wpforms-field input, .fsh-buyback-form__card .wpforms-field textarea, .fsh-buyback-form__card .wpforms-field select { background-color: #101014 !important; border: 1px solid var(--fsh-border) !important; color: #fff !important; border-radius: 0 !important; }
.fsh-buyback-form__card .wpforms-submit { background: var(--fsh-red) !important; border-color: var(--fsh-red) !important; color: #fff !important; border-radius: 0 !important; text-transform: uppercase; letter-spacing: .02em; }
.fsh-buyback-form__card .wpforms-submit:hover { background: #ff3b3b !important; }
.fsh-buyback-form__card .wpforms-submit-container { display: flex !important; justify-content: flex-end !important; margin-top: 28px !important; padding-top: 0 !important; }
.fsh-buyback-form__card .wpforms-submit { font-family: var(--fsh-font) !important; font-weight: 600 !important; font-size: 16px !important; letter-spacing: 1px !important; line-height: 1 !important; padding: 15px 30px !important; height: auto !important; }
.fsh-buyback-form__card .wpforms-field-checkbox { margin-top: 24px !important; padding-top: 0 !important; }
.fsh-buyback-form__card .wpforms-field-checkbox .wpforms-field-label { margin-bottom: 10px !important; }

/* Koszyk (desktop): szersze pole kodu kuponu – domyślnie WooCommerce/Hello
   dawały wąskie pole, w którym dłuższy kod się nie mieścił */
@media (min-width: 1025px) {
	.woocommerce-cart table.cart td.actions .coupon .input-text,
	.woocommerce .coupon #coupon_code {
		width: 300px !important;
		max-width: 100%;
		box-sizing: border-box;
	}
	.woocommerce-cart table.cart td.actions .coupon {
		display: flex;
		align-items: stretch;
		gap: 8px;
	}
	.woocommerce-cart table.cart td.actions .coupon .input-text { margin: 0 !important; }
}

/* Koszyk: tabela sum w "Podsumowaniu koszyka" bez własnego czarnego tła
   i ramki – leży bezpośrednio na tle boksu (#101014); zostają tylko linie
   między wierszami */
.woocommerce-cart .cart_totals table.shop_table,
.woocommerce-cart .cart_totals table.shop_table td,
.woocommerce-cart .cart_totals table.shop_table th,
.woocommerce-cart .cart_totals table.shop_table tbody tr:hover td {
	background: transparent !important;
}
.woocommerce-cart .cart_totals table.shop_table { border: 0 !important; }
/* Koszyk: boks "Podsumowanie koszyka" na SZARYM tle (#1c1c1e, jak cennik
   klejenia i boks "Co skupujemy"), zamiast prawie czarnego #101014 */
.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce-cart .wc-block-cart__sidebar,
.woocommerce-cart .wp-block-woocommerce-cart-totals-block {
	background: #1c1c1e !important;
	border: 1px solid #2a2a2d !important;
}

/* Koszyk: nagłówek "Podsumowanie koszyka" – biały (wcześniejsza reguła
   bez !important przegrywała i tytuł był czarny na szarym boksie) */
.woocommerce-cart .cart_totals h2,
.woocommerce-cart .cart-collaterals h2,
.cart_totals > h2 { color: #fff !important; background: transparent !important; }
/* Koszyk – domyślne kolory widżetu "Koszyk" Elementora Pro (białe sekcje,
   czarny tytuł #000, szare opisy) przestawione na ciemny motyw sklepu. */
.woocommerce-cart {
	--sections-title-color: #fff;
	--sections-background-color: #1c1c1e;
	--sections-border-color: #2a2a2d;
	--sections-descriptions-color: #d0d0d4;
	--sections-radio-buttons-color: #fff;
	--sections-border-radius: 0;
}
.woocommerce-cart .cart_totals h2 {
	font-family: var(--fsh-font) !important;
	font-size: 26px !important;
	font-weight: 600 !important;
	text-transform: uppercase;
	letter-spacing: .02em;
	margin: 0 0 16px !important;
}

/* Zamówienie: metody płatności – logo/ikona każdej metody wyrównane do
   PRAWEJ i w jednakowym "pudełku" (90×28, object-fit: contain), zamiast
   stać zaraz za nazwą w różnych, przypadkowych rozmiarach. */
.woocommerce ul.wc_payment_methods li.wc_payment_method {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	column-gap: 10px;
}
.woocommerce ul.wc_payment_methods li.wc_payment_method > input.input-radio { flex: 0 0 auto; margin: 0 !important; }
.woocommerce ul.wc_payment_methods li.wc_payment_method > label {
	flex: 1 1 0;
	min-width: 0;
	display: flex !important;
	align-items: center;
	gap: 12px;
	margin: 0 !important;
}
.woocommerce ul.wc_payment_methods li.wc_payment_method > label img {
	margin: 0 0 0 auto !important;
	width: 90px !important;
	height: 28px !important;
	max-height: none !important;
	object-fit: contain;
	object-position: right center;
	float: none !important;
	flex: 0 0 auto;
}
.woocommerce ul.wc_payment_methods li.wc_payment_method > .payment_box { flex: 1 1 100%; }

/* Zamówienie – InPost: "Wybrany punkt odbioru:" i blok wybranego paczkomatu
   miały jasnozielone tło wtyczki (#9cf9b7, front.css inpost-for-woocommerce)
   → czerwień sklepu z białym tekstem; zielony hover przycisków powiązanych
   punktów (#ddf6dd) też na przygaszoną czerwień. */
.easypack-visible-point-header,
.ep-chosen-parcel-machine {
	background: var(--fsh-red) !important;
	color: #fff !important;
	padding: 6px 10px;
}
.ep-chosen-parcel-machine * { color: #fff !important; }
.inpost-pl-related-point-btn:hover { background: rgba(225,29,42,.2) !important; }

/* Płatność kartą: teksty poza ramką Stripe (np. "Zapisz na koncie") na biało */
.payment_method_stripe_cc,
.payment_method_stripe_cc label,
.wc-stripe_cc-container label { color: #fff !important; }

/* Zamówienie: wiersz z checkboxem "Stworzyć konto?" bez szarego boksu
   (ma tę samą klasę .create-account co boks z polami konta, stąd tło) */
.woocommerce-checkout p.form-row.create-account {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
}

/* ==========================================================================
   Zamówienie: "ZAPAKUJ NA PREZENT – 20,00 zł (opcjonalne)" (wtyczka
   gift-wrapping-for-woocommerce, pole #tgpc_enable_checkout_gift_wrapper_field
   nad metodami płatności) – wyraźny boks zamiast zwykłego checkboxa:
   szare tło, czerwona ramka, czerwony trójkąt w rogu (jak karty sklepu),
   duża czerwona ikona prezentu, biały napis Teko 22px, duży checkbox;
   po zaznaczeniu tło lekko czerwienieje.
   ========================================================================== */
#tgpc_enable_checkout_gift_wrapper_field {
	position: relative;
	margin: 0 0 24px !important;
	padding: 18px 22px !important;
	background: #1c1c1e;
	border: 2px solid var(--fsh-red);
	transition: background-color .3s cubic-bezier(.2,.7,.2,1);
}
#tgpc_enable_checkout_gift_wrapper_field::after {
	content: "";
	position: absolute;
	right: -2px; bottom: -2px;
	width: 20px; height: 20px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
#tgpc_enable_checkout_gift_wrapper_field:has(input:checked) { background: rgba(225,29,42,.16); }
#tgpc_enable_checkout_gift_wrapper_field label {
	display: flex !important;
	align-items: center;
	gap: 14px;
	margin: 0 !important;
	cursor: pointer;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 22px !important;
	line-height: 1.1;
	text-transform: uppercase;
	letter-spacing: .02em;
}
#tgpc_enable_checkout_gift_wrapper_field input[type="checkbox"] {
	flex: 0 0 auto;
	width: 22px !important;
	height: 22px !important;
	margin: 0 !important;
	accent-color: var(--fsh-red);
	cursor: pointer;
}
#tgpc_enable_checkout_gift_wrapper_field .tgpc-enable-checkout-gift-wrapper--label_icon {
	flex: 0 0 auto;
	width: 30px !important;
	height: 30px !important;
	fill: var(--fsh-red) !important;
	color: var(--fsh-red) !important;
}
#tgpc_enable_checkout_gift_wrapper_field .tgpc-enable-checkout-gift-wrapper--label_icon path { fill: var(--fsh-red) !important; }
#tgpc_enable_checkout_gift_wrapper_field .optional {
	margin-left: auto;
	font-family: inherit;
	font-size: 15px;
	font-weight: 400;
	text-transform: none;
	letter-spacing: 0;
	color: #a9a9ad;
}

/* Zamówienie: "Kraj / region" (i województwo – select2) tej samej wysokości
   co zwykłe pola (~46px). Wcześniej line-height 2.2 przy tekście 18px
   dawało pole ponad 60px. Wysokość na sztywno + tekst wyśrodkowany
   line-height'em, strzałka na pełną wysokość. */
.woocommerce-checkout form.checkout input.input-text,
.woocommerce-checkout form.checkout select { height: 46px !important; line-height: 1.2; box-sizing: border-box; }
.woocommerce-checkout form.checkout .select2-container .select2-selection--single {
	height: 46px !important;
	padding: 0 12px !important;
	box-sizing: border-box;
}
.woocommerce-checkout form.checkout .select2-container .select2-selection__rendered {
	line-height: 44px !important;
	padding: 0 24px 0 0 !important;
}
.woocommerce-checkout form.checkout .select2-container .select2-selection__arrow {
	height: 44px !important;
	top: 0 !important;
	right: 8px !important;
}

/* ==========================================================================
   Formularz "Odstąpienie od umowy" (wtyczka eu-withdrawal, .euwb-*) –
   wtyczka ma jasny wygląd (tło #fafafa, czarny h3, niebieski zaokrąglony
   przycisk, białe pola); przestawiony na ciemny styl sklepu: szary boks
   jak "Co skupujemy"/cennik, czerwony narożnik, tytuł z paskami "/ /",
   pola jak w zamówieniu, standardowy czerwony przycisk ze ściętym rogiem.
   Dotyczy też kolejnych kroków formularza (lista produktów, komunikaty).
   ========================================================================== */
.euwb-form-wrap {
	position: relative;
	max-width: 640px !important;
	margin: 32px 0 !important;
	padding: 28px 28px 30px !important;
	background: #1c1c1e !important;
	border: 1px solid #2a2a2d !important;
	border-radius: 0 !important;
	color: #fff;
}
.euwb-form-wrap::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 20px; height: 20px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.euwb-form-wrap h3 {
	margin: 0 0 20px !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 26px;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.euwb-form-wrap h3::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 12px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.euwb-form-wrap :is(p, li, label, .euwb-legal, .euwb-hint) { color: #fff !important; }
.euwb-legal, .euwb-hint { font-size: 18px !important; }
.euwb-req { color: var(--fsh-red); }
.euwb-lookup input[type="number"],
.euwb-lookup input[type="email"],
.euwb-form-wrap input[type="text"],
.euwb-form-wrap input[type="email"],
.euwb-form-wrap input[type="number"],
.euwb-form-wrap textarea,
.euwb-form-wrap select {
	max-width: 100% !important;
	height: 46px;
	background: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	border-radius: 0 !important;
	color: #fff !important;
	font-size: 18px !important;
	outline: none !important;
}
.euwb-form-wrap textarea { height: auto; }
.euwb-form-wrap :is(input, textarea, select):focus { border-color: var(--fsh-red) !important; }
.euwb-button,
.euwb-form-wrap .button {
	background: var(--fsh-red) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 0 !important;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
	font-family: var(--fsh-font) !important;
	font-weight: 600 !important;
	font-size: 16px !important;
	letter-spacing: 1px;
	line-height: 1 !important;
	text-transform: uppercase;
	padding: 15px 30px !important;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1), color .3s cubic-bezier(.2,.7,.2,1);
}
.euwb-button:hover,
.euwb-button:focus,
.euwb-form-wrap .button:hover { background: #000 !important; color: var(--fsh-red) !important; }
.euwb-items li { border-bottom-color: var(--fsh-border) !important; }
.euwb-excluded { color: #8a8a90 !important; }
.euwb-badge { background: #2a2a2d !important; color: #d0d0d4 !important; border-radius: 0 !important; }
.euwb-message { border-radius: 0 !important; font-size: 18px !important; }
.euwb-success { background: rgba(46,160,67,.14) !important; border: 1px solid #2ea043 !important; color: #b7f0c4 !important; }
.euwb-error { background: rgba(225,29,42,.14) !important; border: 1px solid var(--fsh-red) !important; color: #ffb3b6 !important; }
.euwb-confirm-step,
.euwb-legal-notice { background: #101014 !important; border: 1px solid var(--fsh-border) !important; border-radius: 0 !important; color: #fff !important; }

/* ==========================================================================
   O NAS – nowy widok (jak kontakt / klejenie / skup):
   - sekcja 7af1913 (sam ukryty nagłówek "O Nas" + margin-top 400px, stąd
     wielka pusta dziura pod subheaderem) – ukryta;
   - "Z miłości do futbolu" (7d33ea6): tekst z lewej (tytuł z paskami
     "/ /", biały 18px), zdjęcie z prawej w ramce z czerwonym narożnikiem;
   - "Liczby mówią same za siebie" (aa3c457): szary pas na pełną szerokość,
     liczniki jako karty (duża czerwona liczba Teko, biały podpis).
   ========================================================================== */
.elementor-96 .elementor-element-7af1913 { display: none !important; }

.elementor-96 .elementor-element.elementor-element-7d33ea6 { padding: 0 24px 64px !important; margin: 0 !important; background: transparent !important; }
.elementor-96 .elementor-element-7d33ea6 > .elementor-container {
	max-width: var(--fsh-max-width) !important;
	gap: 48px;
	align-items: center;
}
.elementor-96 .elementor-element-7d33ea6 .elementor-column { min-width: 0; }
.elementor-96 .elementor-element-7d33ea6 .elementor-widget-wrap { padding: 0 !important; }
.elementor-96 .elementor-element-173faf5 .elementor-image-box-title {
	margin: 0 0 24px !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: clamp(28px, 2.6vw, 36px) !important;
	line-height: 1.1;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.elementor-96 .elementor-element-173faf5 .elementor-image-box-title::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 14px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.elementor-96 .elementor-element-173faf5 .elementor-image-box-description,
.elementor-96 .elementor-element-173faf5 .elementor-image-box-description span {
	color: #fff !important;
	font-size: 18px !important;
	line-height: 1.7 !important;
}
.elementor-96 .elementor-element-e235669 .elementor-widget-container {
	position: relative;
	max-width: 460px;
	margin-left: auto;
	border: 1px solid #2a2a2d;
}
.elementor-96 .elementor-element-e235669 img {
	display: block;
	width: 100% !important;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center 20%;
}
.elementor-96 .elementor-element-e235669 .elementor-widget-container::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 24px; height: 24px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}

.elementor-96 .elementor-element.elementor-element-aa3c457 {
	position: relative;
	isolation: isolate;
	padding: 56px 24px !important;
	margin: 0 0 64px !important;
	background: transparent !important;
}
.elementor-96 .elementor-element-aa3c457::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 0; bottom: 0; left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background: #1c1c1e;
	border-block: 1px solid #2a2a2d;
}
.elementor-96 .elementor-element-aa3c457 > .elementor-container { max-width: var(--fsh-max-width) !important; gap: 24px; align-items: stretch; }
.elementor-96 .elementor-element-074ae51 { display: none !important; }
.elementor-96 .elementor-element-7d27ca3 { width: 34% !important; }
.elementor-96 .elementor-element-6987376,
.elementor-96 .elementor-element-df902d3 { width: 33% !important; }
.elementor-96 .elementor-element-aa3c457 .elementor-widget-wrap { padding: 0 !important; }
.elementor-96 .elementor-element-2efe9a1 { text-align: left !important; }
.elementor-96 .elementor-element-2efe9a1 > .elementor-widget-container { padding: 0 !important; }
.elementor-96 .elementor-element-2efe9a1 .elementor-heading-title {
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: clamp(26px, 2.4vw, 34px) !important;
	line-height: 1.1;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.elementor-96 .elementor-element-2efe9a1 .elementor-heading-title::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 14px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.elementor-96 .elementor-widget-counter,
.elementor-96 .elementor-widget-counter > .elementor-widget-container { height: 100%; }
.elementor-96 .elementor-widget-counter .elementor-counter {
	position: relative;
	height: 100%;
	box-sizing: border-box;
	display: flex;
	flex-direction: column-reverse;
	justify-content: center;
	gap: 6px;
	padding: 26px 28px;
	background: #0e0e0f;
	border: 1px solid #2e2e32;
}
.elementor-96 .elementor-widget-counter .elementor-counter::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 16px; height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.elementor-96 .elementor-counter-number-wrapper {
	justify-content: flex-start !important;
	font-family: var(--fsh-font) !important;
	font-weight: 600 !important;
	font-size: 56px !important;
	line-height: 1 !important;
	color: var(--fsh-red) !important;
}
.elementor-96 .elementor-counter-title {
	text-align: left !important;
	color: #fff !important;
	font-size: 18px !important;
	text-transform: uppercase;
	letter-spacing: .04em;
}
@media (max-width: 767px) {
	.elementor-96 .elementor-element-7d33ea6 > .elementor-container { gap: 32px; }
	.elementor-96 .elementor-element-e235669 .elementor-widget-container { margin: 0 auto; }
	.elementor-96 .elementor-element-7d27ca3,
	.elementor-96 .elementor-element-6987376,
	.elementor-96 .elementor-element-df902d3 { width: 100% !important; }
	.elementor-96 .elementor-element.elementor-element-aa3c457 { padding: 40px 20px !important; }
	.elementor-96 .elementor-counter-number-wrapper { font-size: 44px !important; }
}

/* ==========================================================================
   BLOG – nowy widok. Archiwum (/blog/, szablon Elementor Pro 21586):
   stary nagłówek (animowany "Blog" + separator, sekcja 3a91abbe) ukryty –
   tytuł jest we wspólnym subheaderze; karty wpisów (Premium Addons, skórka
   "modern") w siatce jak reszta sklepu: ciemna karta z ramką i czerwonym
   narożnikiem, zdjęcie 4:3 z przybliżeniem, tytuł Teko biały, data/kategoria
   szare, zajawka biała 18px; hover: czerwona linia wsuwa się u dołu karty.
   Pojedynczy wpis: treść jak polityka/regulamin (biała, 1100px).
   ========================================================================== */
.elementor-21586 .elementor-element-3a91abbe { display: none !important; }
body.fsh-has-subhero .elementor-location-archive { padding-top: 56px; }
.elementor-21586 .elementor-element-e741e83 { padding: 0 24px 64px !important; }
.elementor-21586 .elementor-element-e741e83 > .elementor-container { max-width: var(--fsh-max-width) !important; }
.elementor-21586 .premium-blog-wrap {
	display: grid !important;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: 24px;
	height: auto !important;
}
.elementor-21586 .premium-blog-post-outer-container {
	position: static !important;
	width: auto !important;
	transform: none !important;
	padding: 0 !important;
	margin: 0 !important;
}
.elementor-21586 .premium-blog-post-container {
	position: relative;
	height: 100%;
	display: flex;
	flex-direction: column;
	background: #141414 !important;
	border: 1px solid var(--fsh-border);
	box-shadow: none !important;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1);
}
.elementor-21586 .premium-blog-post-container:hover { background: #1a1a1a !important; }
.elementor-21586 .premium-blog-post-container::before {
	content: "";
	position: absolute;
	z-index: 2;
	right: -1px; bottom: -1px;
	width: 16px; height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
.elementor-21586 .premium-blog-post-container::after {
	content: "";
	position: absolute;
	z-index: 2;
	left: -1px; right: 15px; bottom: -1px;
	height: 2px;
	background: var(--fsh-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .3s cubic-bezier(.2,.7,.2,1);
	pointer-events: none;
}
.elementor-21586 .premium-blog-post-container:hover::after { transform: scaleX(1); }
.elementor-21586 .premium-blog-thumbnail-container img {
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	object-position: center 30%;
}
.elementor-21586 .premium-blog-effect-container { display: none !important; } /* ramka-overlay wtyczki */
.elementor-21586 .premium-blog-content-wrapper {
	background: transparent !important;
	padding: 22px 24px 26px !important;
	margin: 0 !important;
	box-shadow: none !important;
	flex: 1;
}
.elementor-21586 .premium-blog-entry-title,
.elementor-21586 .premium-blog-entry-title a {
	margin: 0 0 10px !important;
	color: #fff !important;
	font-family: var(--fsh-font) !important;
	font-weight: 600 !important;
	font-size: 26px !important;
	line-height: 1.1 !important;
	text-transform: uppercase;
	letter-spacing: .02em;
	text-decoration: none !important;
}
.elementor-21586 .premium-blog-post-container:hover .premium-blog-entry-title a { color: var(--fsh-red) !important; }
.elementor-21586 .premium-blog-entry-meta,
.elementor-21586 .premium-blog-entry-meta a,
.elementor-21586 .premium-blog-entry-meta i { color: #a9a9ad !important; font-size: 16px !important; }
.elementor-21586 .premium-blog-entry-meta > .premium-blog-meta-separator:first-child { display: none; }
.elementor-21586 .premium-blog-post-content { margin: 14px 0 0 !important; color: #fff !important; font-size: 18px !important; line-height: 1.6 !important; }

/* pojedynczy wpis */
body.single-post .page-content {
	box-sizing: border-box;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	padding-left: 24px;
	padding-right: 24px;
	padding-bottom: 64px;
}
body.single-post .page-content :is(h1, h2, h3, h4, h5, h6, p, li, strong, b, td, th, .elementor-widget-text-editor) { color: #fff !important; }
body.single-post .page-content :is(p, li, .elementor-widget-text-editor) a { color: var(--fsh-red) !important; }

/* ==========================================================================
   MOJE KONTO (zalogowany) – nowy widok: zakładki i treść obok siebie
   (280px + reszta, max 1100px); zakładki jako lista kafli Teko uppercase,
   hover z czerwoną linią u dołu, aktywna czerwona; cały tekst biały;
   tytuły z paskami "/ /"; adresy jako szare karty z czerwonym narożnikiem;
   pola jak w zamówieniu (46px, ciemne, czerwona ramka po kliknięciu).
   ========================================================================== */
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) {
	display: grid;
	grid-template-columns: 280px minmax(0, 1fr);
	gap: 40px;
	align-items: start;
	max-width: var(--fsh-max-width);
	margin: 0 auto 64px;
	padding: 0 24px;
	box-sizing: border-box;
}
.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content { float: none !important; width: auto !important; }
.woocommerce-account .woocommerce-MyAccount-navigation ul { background: transparent !important; border: 0 !important; display: flex; flex-direction: column; gap: 8px; }
.woocommerce-account .woocommerce-MyAccount-navigation-link a {
	position: relative;
	padding: 14px 20px !important;
	background: #141414;
	border: 1px solid var(--fsh-border) !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 18px;
	text-transform: uppercase;
	letter-spacing: .03em;
	text-decoration: none !important;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1);
}
.woocommerce-account .woocommerce-MyAccount-navigation-link a::after {
	content: "";
	position: absolute;
	left: -1px; right: -1px; bottom: -1px;
	height: 2px;
	background: var(--fsh-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .3s cubic-bezier(.2,.7,.2,1);
}
.woocommerce-account .woocommerce-MyAccount-navigation-link a:hover { background: #1a1a1a; color: #fff !important; }
.woocommerce-account .woocommerce-MyAccount-navigation-link a:hover::after { transform: scaleX(1); }
.woocommerce-account .woocommerce-MyAccount-navigation-link.is-active a {
	background: var(--fsh-red) !important;
	border-color: var(--fsh-red) !important;
	color: #fff !important;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
}
.woocommerce-account .woocommerce-MyAccount-navigation-link.is-active a::after { display: none; }

.woocommerce-account .woocommerce-MyAccount-content,
.woocommerce-account .woocommerce-MyAccount-content :is(p, li, span, label, address, td, th, legend, em, strong, mark, small, .woocommerce-Address address) {
	color: #fff !important;
}
.woocommerce-account .woocommerce-MyAccount-content mark { background: transparent !important; font-weight: 600; }
.woocommerce-account .woocommerce-MyAccount-content :is(p, li, address, label) { font-size: 18px; }
.woocommerce-account .woocommerce-MyAccount-content a:not(.button):not(.woocommerce-button) { color: var(--fsh-red) !important; }
.woocommerce-account .woocommerce-MyAccount-content :is(h2, h3),
.woocommerce-account .woocommerce-Address-title h2,
.woocommerce-account .woocommerce-Address-title h3,
.woocommerce-account fieldset legend {
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 26px;
	line-height: 1.1;
	text-transform: uppercase;
	letter-spacing: .02em;
}
.woocommerce-account .woocommerce-MyAccount-content > h2::after,
.woocommerce-account .woocommerce-MyAccount-content > h3::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 12px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
.woocommerce-account .woocommerce-Addresses { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.woocommerce-account .woocommerce-Addresses::before,
.woocommerce-account .woocommerce-Addresses::after { display: none !important; }
.woocommerce-account .woocommerce-Address {
	position: relative;
	float: none !important;
	width: auto !important;
	padding: 24px 26px;
	background: #1c1c1e;
	border: 1px solid #2a2a2d;
}
.woocommerce-account .woocommerce-Address::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 16px; height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
}
.woocommerce-account .woocommerce-Address-title { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.woocommerce-account .woocommerce-Address-title .edit { color: var(--fsh-red) !important; font-size: 16px; }
.woocommerce-account fieldset { background: #1c1c1e; border: 1px solid #2a2a2d !important; padding: 20px 24px !important; }
.woocommerce-account form .input-text,
.woocommerce-account form select { height: 46px; box-sizing: border-box; font-size: 18px !important; }
.woocommerce-account form label { color: #fff !important; }
.woocommerce-account .woocommerce-info,
.woocommerce-account .woocommerce-message {
	background: #141414 !important;
	border: 1px solid var(--fsh-border) !important;
	border-left: 3px solid var(--fsh-red) !important;
	color: #fff !important;
}
@media (max-width: 900px) {
	.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) { grid-template-columns: 1fr; gap: 28px; }
	.woocommerce-account .woocommerce-Addresses { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
	.elementor-21586 .premium-blog-post-container,
	.elementor-21586 .premium-blog-post-container::after,
	.woocommerce-account .woocommerce-MyAccount-navigation-link a,
	.woocommerce-account .woocommerce-MyAccount-navigation-link a::after { transition: none !important; }
}

/* O nas: sekcja "Liczby mówią same za siebie" (boksy z licznikami, aa3c457)
   usunięta na życzenie właściciela */
.elementor-96 .elementor-element-aa3c457 { display: none !important; }

/* ==========================================================================
   Zdjęcia w ramkach SPÓJNIE z kartami produktów w sklepie (li.product):
   karta #101014, ramka rgba(255,255,255,.16), zaokrąglenie 14px, 16px
   odstępu wokół zdjęcia, samo zdjęcie zaokrąglone 8px. Dotyczy zdjęcia na
   /o-nas/ i kart wpisów na blogu – czerwone narożniki/linie hover przy
   zdjęciach usunięte (nie pasują do zaokrąglonej ramki).
   ========================================================================== */
.elementor-96 .elementor-element-e235669 .elementor-widget-container {
	padding: 16px;
	background: #101014;
	border: 1px solid rgba(255,255,255,.16) !important;
	border-radius: 14px;
}
.elementor-96 .elementor-element-e235669 .elementor-widget-container::after { display: none !important; }
.elementor-96 .elementor-element-e235669 img { border-radius: 8px; }

.elementor-21586 .premium-blog-post-container {
	padding: 16px 16px 5px;
	background: #101014 !important;
	border: 1px solid rgba(255,255,255,.16) !important;
	border-radius: 14px;
	overflow: hidden;
}
.elementor-21586 .premium-blog-post-container:hover { background: #101014 !important; }
.elementor-21586 .premium-blog-post-container::before,
.elementor-21586 .premium-blog-post-container::after { display: none !important; }
.elementor-21586 .premium-blog-thumb-effect-wrapper,
.elementor-21586 .premium-blog-thumbnail-container { border-radius: 8px; overflow: hidden; }
.elementor-21586 .premium-blog-thumbnail-container img { border-radius: 8px; }
.elementor-21586 .premium-blog-content-wrapper { padding: 18px 4px 20px !important; }
/* Blog: skórka "modern" Premium Addons przesuwa blok treści (tytuł, data,
   zajawka) o 50px W GÓRĘ na zdjęcie (top:-50px) – tytuł chował się na
   zdjęciu. Treść zawsze POD zdjęciem, w normalnym przepływie. */
.elementor-21586 .premium-blog-post-container .premium-blog-content-wrapper {
	position: static !important;
	top: 0 !important;
	z-index: auto !important;
	margin: 0 !important;
	clear: both;
}
.elementor-21586 .premium-blog-inner-container { display: block !important; }

/* Moje konto: elementy siatki przypisane do kolumn WPROST – wcześniej
   pierwszym elementem siatki bywał pojemnik komunikatów WooCommerce
   (.woocommerce-notices-wrapper), więc zakładki lądowały w szerokiej
   kolumnie treści i "rozjeżdżało" się. Zakładki = lewa kolumna 280px
   (nie szersze), treść = prawa, wszystko inne na pełną szerokość. */
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > * { grid-column: 1 / -1; min-width: 0; }
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation { grid-column: 1; max-width: 280px; width: 100% !important; }
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content { grid-column: 2; }
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-notices-wrapper:empty { display: none; }
@media (max-width: 900px) {
	.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation { max-width: none; }
	.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content { grid-column: 1; }
}

/* ==========================================================================
   WPIS NA BLOGU (Elementor, stare sekcje – wzór na "Match issue – co to
   znaczy", post 21535; klasy .elementor-widget-* działają dla każdego wpisu
   zbudowanego tak samo). Nowy widok jak reszta podstron:
   - tytuł jest w subheaderze → animowany h1 w treści ukryty; grube czerwone
     separatory (divider) ukryte;
   - treść na 1100px (sekcje "stretched"/full-width sprowadzone do pudełka);
   - h2 = tytuły sekcji (Teko 34px, białe, paski "/ /"), h3 = podtytuły;
   - akapity (w tym "nagłówki" Elementora z tagiem <p>) = zwykły tekst:
     biały 18px, bez wersalików, lewy;
   - zdjęcia i karuzele w ramkach jak karty produktów sklepu;
   - 3 atuty (icon-box) jako kafle z czerwoną ikoną.
   ========================================================================== */
body.single-post .page-content { max-width: none !important; padding: 0 0 64px !important; }
body.single-post .page-content .elementor-section {
	width: auto !important;
	left: auto !important;
	max-width: var(--fsh-max-width);
	margin: 0 auto 48px !important;
	padding: 0 24px !important;
	box-sizing: border-box;
	background: transparent !important;
}
body.single-post .page-content .elementor-section .elementor-container { max-width: none !important; gap: 32px; }
body.single-post .page-content .elementor-section .elementor-widget-wrap { padding: 0 !important; }
body.single-post .page-content .elementor-widget-animated-headline,
body.single-post .page-content .elementor-widget-divider { display: none !important; }

body.single-post .page-content .elementor-widget-heading h2.elementor-heading-title {
	margin: 0 0 20px !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600 !important;
	font-size: clamp(28px, 2.6vw, 34px) !important;
	line-height: 1.15 !important;
	text-transform: uppercase;
	letter-spacing: .02em;
	text-align: left !important;
}
body.single-post .page-content .elementor-widget-heading h2.elementor-heading-title::after {
	content: "";
	display: block;
	width: 72px;
	height: 4px;
	margin-top: 14px;
	background: linear-gradient(to right,
		var(--fsh-red) 0 52px, transparent 52px 60px, var(--fsh-red) 60px 72px);
	transform: skewX(-45deg);
	transform-origin: left bottom;
}
body.single-post .page-content .elementor-widget-heading h3.elementor-heading-title {
	margin: 8px 0 14px !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600 !important;
	font-size: 26px !important;
	line-height: 1.15 !important;
	text-transform: uppercase;
	letter-spacing: .02em;
	text-align: left !important;
}
body.single-post .page-content .elementor-widget-heading :is(p, div, span).elementor-heading-title {
	color: #fff !important;
	font-weight: 400 !important;
	font-size: 18px !important;
	line-height: 1.7 !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	text-align: left !important;
}
body.single-post .page-content .elementor-widget-heading .elementor-heading-title a { color: var(--fsh-red) !important; }
body.single-post .page-content .elementor-widget-heading { text-align: left !important; }
/* wstęp pod tytułem nieco większy */
body.single-post .page-content .elementor-element-dc6698f .elementor-heading-title { font-size: 21px !important; }

/* zdjęcia i karuzele – ramki jak karty produktów */
body.single-post .page-content .elementor-widget-image .elementor-widget-container,
body.single-post .page-content .elementor-widget-image-carousel .elementor-widget-container {
	padding: 16px;
	background: #101014;
	border: 1px solid rgba(255,255,255,.16);
	border-radius: 14px;
	overflow: hidden;
}
body.single-post .page-content .elementor-widget-image img,
body.single-post .page-content .elementor-widget-image-carousel img { border-radius: 8px; }
body.single-post .page-content .elementor-widget-image-carousel .swiper-pagination-bullet { background: #fff; opacity: .4; }
body.single-post .page-content .elementor-widget-image-carousel .swiper-pagination-bullet-active { background: var(--fsh-red); opacity: 1; }
body.single-post .page-content .elementor-widget-image-carousel .elementor-swiper-button { color: #fff; }

/* przyciski "Sprawdź koszulki match issue…" – od lewej, jak tekst */
body.single-post .page-content .elementor-widget-button { text-align: left !important; }
body.single-post .page-content .elementor-widget-button .elementor-button-wrapper { text-align: left !important; }

/* 3 atuty na dole wpisu – kafle */
body.single-post .page-content .elementor-widget-icon-box .elementor-widget-container {
	position: relative;
	height: 100%;
	box-sizing: border-box;
	padding: 22px 24px;
	background: #141414;
	border: 1px solid var(--fsh-border);
}
body.single-post .page-content .elementor-widget-icon-box .elementor-widget-container::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 16px; height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
}
body.single-post .page-content .elementor-icon-box-icon .elementor-icon,
body.single-post .page-content .elementor-icon-box-icon .elementor-icon i,
body.single-post .page-content .elementor-icon-box-icon .elementor-icon svg { color: var(--fsh-red) !important; fill: var(--fsh-red) !important; }
body.single-post .page-content .elementor-icon-box-title,
body.single-post .page-content .elementor-icon-box-title a {
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600 !important;
	font-size: 22px !important;
	text-transform: uppercase;
	letter-spacing: .02em;
}
body.single-post .page-content .elementor-icon-box-description { color: #fff !important; font-size: 18px !important; }
@media (max-width: 767px) {
	body.single-post .page-content .elementor-section { padding: 0 20px !important; margin-bottom: 36px !important; }
}

/* Moje konto → Adresy: w wąskich kartach (2 kolumny obok zakładek) tytuł
   "Adres rozliczeniowy/do wysyłki" + link "Edytuj" w jednym wierszu się
   rozjeżdżały (floaty WooCommerce .title h2 / .edit). Teraz w pionie:
   tytuł, pod nim link "Edytuj", niżej adres – równe odstępy. */
.woocommerce-account .woocommerce-Address-title {
	display: block !important;
	margin: 0 0 16px !important;
}
.woocommerce-account .woocommerce-Address-title::before,
.woocommerce-account .woocommerce-Address-title::after { display: none !important; }
.woocommerce-account .woocommerce-Address-title h2,
.woocommerce-account .woocommerce-Address-title h3 {
	float: none !important;
	margin: 0 0 6px !important;
	font-size: 22px !important;
}
.woocommerce-account .woocommerce-Address-title .edit {
	float: none !important;
	display: inline-block;
	font-size: 16px !important;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.woocommerce-account .woocommerce-Address address {
	margin: 0 !important;
	font-style: normal !important;
	line-height: 1.6;
	overflow-wrap: anywhere;
}
.woocommerce-account .woocommerce-Addresses { margin-top: 20px; }
@media (min-width: 901px) and (max-width: var(--fsh-max-width)) {
	.woocommerce-account .woocommerce-Addresses { grid-template-columns: 1fr; }
}

/* Moje konto → Szczegóły konta (i formularz edycji adresu): odstępy między
   polami, pod etykietami, wokół sekcji "Zmiana hasła" i nad przyciskiem;
   imię + nazwisko obok siebie z przerwą 24px. */
.woocommerce-account .woocommerce-EditAccountForm,
.woocommerce-account .woocommerce-address-fields { max-width: 720px; }
.woocommerce-account .woocommerce-EditAccountForm .form-row,
.woocommerce-account .woocommerce-address-fields .form-row {
	margin: 0 0 22px !important;
	padding: 0 !important;
}
.woocommerce-account .woocommerce-EditAccountForm .form-row label,
.woocommerce-account .woocommerce-address-fields .form-row label {
	display: block;
	margin: 0 0 8px !important;
	line-height: 1.3;
}
.woocommerce-account .woocommerce-EditAccountForm .form-row-first,
.woocommerce-account .woocommerce-address-fields .form-row-first { width: calc(50% - 12px) !important; float: left !important; }
.woocommerce-account .woocommerce-EditAccountForm .form-row-last,
.woocommerce-account .woocommerce-address-fields .form-row-last { width: calc(50% - 12px) !important; float: right !important; }
.woocommerce-account .woocommerce-EditAccountForm .clear { clear: both; }
.woocommerce-account .woocommerce-EditAccountForm #account_display_name_description,
.woocommerce-account .woocommerce-EditAccountForm #account_display_name_description em {
	display: block;
	margin-top: 8px;
	font-size: 16px !important;
	color: #a9a9ad !important;
	font-style: normal !important;
}
.woocommerce-account .woocommerce-EditAccountForm fieldset {
	margin: 32px 0 !important;
	padding: 24px 26px 4px !important;
}
.woocommerce-account .woocommerce-EditAccountForm fieldset legend {
	float: left;
	width: 100%;
	margin: 0 0 20px !important;
	padding: 0 !important;
	font-size: 22px !important;
}
.woocommerce-account .woocommerce-EditAccountForm fieldset legend + * { clear: both; }
.woocommerce-account .woocommerce-EditAccountForm .password-input { display: block; position: relative; }
.woocommerce-account .woocommerce-EditAccountForm .show-password-input { top: 50% !important; transform: translateY(-50%); right: 12px !important; }
.woocommerce-account .woocommerce-EditAccountForm > p:last-of-type,
.woocommerce-account .woocommerce-address-fields > p:last-of-type { margin-top: 28px !important; }
@media (max-width: 600px) {
	.woocommerce-account .woocommerce-EditAccountForm .form-row-first,
	.woocommerce-account .woocommerce-EditAccountForm .form-row-last,
	.woocommerce-account .woocommerce-address-fields .form-row-first,
	.woocommerce-account .woocommerce-address-fields .form-row-last { width: 100% !important; float: none !important; }
}

/* Wpis na blogu – układ sekcji dwukolumnowych (tekst + zdjęcie/karuzela):
   kolumny po równo (50% minus połowa przerwy 48px), wyrównane do góry, tekst
   ma swoje odstępy; sekcja 1067da2 (karuzela z lewej, tekst z prawej) tak
   samo; na telefonie wszystko w jednej kolumnie, zdjęcie pod tekstem. */
@media (min-width: 768px) {
	body.single-post .page-content .elementor-section > .elementor-container:has(> .elementor-col-50) {
		display: flex;
		flex-wrap: nowrap;
		gap: 48px;
		align-items: flex-start !important;
	}
	body.single-post .page-content .elementor-section > .elementor-container > .elementor-col-50 {
		width: calc(50% - 24px) !important;
		flex: 0 0 calc(50% - 24px);
	}
	body.single-post .page-content .elementor-section > .elementor-container > .elementor-col-33 {
		width: auto !important;
		flex: 1 1 0;
	}
	body.single-post .page-content .elementor-section > .elementor-container:has(> .elementor-col-33) { gap: 24px; align-items: stretch !important; }
	body.single-post .page-content .elementor-section-content-middle > .elementor-container > .elementor-column > .elementor-widget-wrap { align-content: flex-start !important; align-items: flex-start !important; }
}
body.single-post .page-content .elementor-widget-wrap > .elementor-widget:not(:last-child) { margin-bottom: 20px !important; }
body.single-post .page-content .elementor-widget-heading ul,
body.single-post .page-content .elementor-widget-heading ol { margin: 12px 0 0 20px; }
body.single-post .page-content .elementor-widget-heading li { margin: 0 0 6px; }
@media (max-width: 767px) {
	body.single-post .page-content .elementor-section > .elementor-container { flex-direction: column; gap: 24px; }
	body.single-post .page-content .elementor-section > .elementor-container > .elementor-column { width: 100% !important; }
}

/* Blog: czerwony trójkąt w prawym dolnym rogu kart wpisów (jak na innych
   kartach sklepu) – karta ma overflow:hidden, więc trójkąt jest przycięty
   zaokrągleniem 14px i "siedzi" w samym rogu */
.elementor-21586 .premium-blog-post-container::before {
	display: block !important;
	content: "";
	position: absolute;
	z-index: 2;
	right: 0; bottom: 0;
	width: 26px; height: 26px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
@media (max-width: 767px) {
	/* sekcje z "odwróć na telefonie" w Elementorze (np. karuzela Nike): tekst nad zdjęciami */
	body.single-post .page-content .elementor-section.elementor-reverse-mobile > .elementor-container { flex-direction: column-reverse; }
}

/* ==========================================================================
   Wpis na blogu – 3 atuty na dole (icon-box: dostawa / oryginalność /
   płatności) ujednolicone z kaflami reszty strony (kontakt telefon/e-mail,
   kroki na klejeniu/skupie): ciemny kafel #141414 z ramką, ikona w kółku
   z czerwoną obwódką, tytuł Teko obok ikony, czerwony trójkąt w rogu;
   hover: czerwona linia wsuwa się od lewej u dołu, kółko wypełnia się
   czerwienią (ikona biała), tło lekko jaśnieje. Tła kolumn z Elementora
   (kolor + overlay) wyłączone.
   ========================================================================== */
body.single-post .page-content .elementor-col-33,
body.single-post .page-content .elementor-col-33 > .elementor-widget-wrap { background: transparent !important; }
body.single-post .page-content .elementor-col-33 .elementor-background-overlay { display: none !important; }
body.single-post .page-content .elementor-widget-icon-box,
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container { height: 100%; }
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container {
	position: relative;
	box-sizing: border-box;
	padding: 20px 24px !important;
	background: #141414 !important;
	border: 1px solid var(--fsh-border) !important;
	border-radius: 0 !important;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1);
}
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container:hover { background: #1a1a1a !important; }
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container::after {
	content: "";
	position: absolute;
	right: -1px; bottom: -1px;
	width: 16px; height: 16px;
	background: linear-gradient(135deg, transparent 50%, var(--fsh-red) 50%);
	pointer-events: none;
}
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container::before {
	content: "";
	position: absolute;
	left: -1px; right: 15px; bottom: -1px;
	height: 2px;
	background: var(--fsh-red);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .3s cubic-bezier(.2,.7,.2,1);
	pointer-events: none;
}
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container:hover::before { transform: scaleX(1); }
body.single-post .page-content .elementor-icon-box-wrapper {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	gap: 16px;
	text-align: left !important;
}
body.single-post .page-content .elementor-icon-box-icon { margin: 0 !important; flex: 0 0 auto; }
body.single-post .page-content .elementor-icon-box-icon .elementor-icon {
	display: grid !important;
	place-items: center;
	width: 52px !important;
	height: 52px !important;
	font-size: 22px !important;
	border: 1.5px solid var(--fsh-red) !important;
	border-radius: 50% !important;
	background: transparent !important;
	color: var(--fsh-red) !important;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1), color .3s cubic-bezier(.2,.7,.2,1);
}
body.single-post .page-content .elementor-icon-box-icon .elementor-icon i,
body.single-post .page-content .elementor-icon-box-icon .elementor-icon svg {
	color: inherit !important;
	fill: currentColor !important;
	width: 22px; height: 22px;
	font-size: 22px !important;
}
body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container:hover .elementor-icon {
	background: var(--fsh-red) !important;
	color: #fff !important;
}
body.single-post .page-content .elementor-icon-box-content { flex: 1; min-width: 0; }
body.single-post .page-content .elementor-icon-box-title { margin: 0 !important; line-height: 1.15 !important; }
@media (prefers-reduced-motion: reduce) {
	body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container,
	body.single-post .page-content .elementor-widget-icon-box > .elementor-widget-container::before,
	body.single-post .page-content .elementor-icon-box-icon .elementor-icon { transition: none !important; }
}

/* Wpisy: stare boksy atutów z Elementora (icon-box) ukryte – zamiast nich na
   końcu treści ta sama sekcja co na stronie głównej (#fsh-process,
   dopinana w functions.php); pas na pełną szerokość okna jak na głównej.
   Pusta już sekcja nagłówkowa wpisu (animowany tytuł + separator; wstęp
   przeniesiony do lewej kolumny niżej) ukryta. */
body.single-post .page-content .elementor-section:has(.elementor-widget-icon-box) { display: none !important; }
body.single-post .page-content .elementor-element-3d81122b { display: none !important; }
.fsh-post-process {
	width: 100vw;
	margin: 16px 0 0 calc(50% - 50vw);
	box-sizing: border-box;
}
.fsh-post-process .fsh-process { max-width: var(--fsh-max-width); margin: 0 auto; box-sizing: border-box; }

/* ==========================================================================
   JEDNA SZEROKOŚĆ TREŚCI WSZĘDZIE: --fsh-max-width (1200px – ta sama co
   kontenery Elementora i pasy na stronie głównej). Wszystkie pudełka treści
   podstron (kontakt, klejenie, skup, o nas, blog, wpis, konto, polityka,
   regulamin) liczone jako 1200px łącznie z 24px marginesem bocznym
   (box-sizing: border-box), więc krawędzie tekstu wszędzie w tym samym
   miejscu. Limit Hello (.site-main 1140px) zdjęty na tych stronach.
   ========================================================================== */
body.fsh-has-subhero .site-main,
body.single-post .site-main { max-width: none !important; padding-left: 0 !important; padding-right: 0 !important; }
.fsh-contact-main,
.fsh-printing-pricing__inner,
.fsh-printing-intro, .fsh-printing-about, .fsh-printing-faq,
.fsh-buyback-hero, .fsh-buyback-steps, .fsh-buyback-form,
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation),
body:is(.privacy-policy, .page-id-3) .page-content,
body.single-post .page-content .elementor-section {
	box-sizing: border-box !important;
	max-width: var(--fsh-max-width) !important;
	margin-left: auto !important;
	margin-right: auto !important;
	padding-left: 24px !important;
	padding-right: 24px !important;
}
/* pudełka, które są wewnątrz sekcji z własnym paddingiem – bez podwójnego */
.fsh-printing-pricing__inner { padding-left: 0 !important; padding-right: 0 !important; max-width: calc(var(--fsh-max-width) - 48px) !important; }
.fsh-buyback-steps, .fsh-buyback-form { width: 100%; }
/* koszyk / zamówienie – treść WooCommerce w tym samym pudełku */
body.woocommerce-cart .page-content > .elementor,
body.woocommerce-checkout .page-content > .elementor {
	box-sizing: border-box;
	max-width: var(--fsh-max-width);
	margin: 0 auto;
	padding: 0 24px 64px;
}
/* Elementor (o nas, skup, klejenie, kontakt…): kontenery boxed do tej samej szerokości */
body.fsh-has-subhero .page-content .e-con-boxed > .e-con-inner,
body.fsh-has-subhero .page-content .elementor-section-boxed > .elementor-container { max-width: var(--fsh-max-width) !important; }
.fsh-post-process .fsh-process { max-width: var(--fsh-max-width) !important; padding-left: 24px !important; padding-right: 24px !important; }
/* kontakt (15) i klejenie (19921) mają własny subheader (bez klasy
   fsh-has-subhero) – ten sam brak limitu Hello i ta sama szerokość */
body:is(.page-id-15, .page-id-19921) .site-main { max-width: none !important; padding-left: 0 !important; padding-right: 0 !important; }
body:is(.page-id-15, .page-id-19921) .page-content .e-con-boxed > .e-con-inner { max-width: var(--fsh-max-width) !important; }
/* Wpis: sekcja atutów (#fsh-process) NA PEŁNĄ SZEROKOŚĆ jak na stronie
   głównej – kafle rozłożone na całą szerokość okna, bez limitu 1200px
   (wyjątek od "jednej szerokości" – na głównej też jest pełna) */
.fsh-post-process .fsh-process {
	max-width: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 40px 24px !important;
}

/* ==========================================================================
   Karta produktu – warianty jako przyciski (wtyczka Variation Swatches,
   .cfvsw-*) i pola vouchera (Flexible Coupons, div.pdf-coupon-fields –
   wstawiane AJAX-em po wyborze kwoty). Wtyczka swatchy daje białe tło
   (#fff) + biały tekst sklepu = kwoty niewidoczne; pola vouchera bez
   żadnego stylu. Teraz: kwoty jako ciemne "pigułki" ze ściętym rogiem
   (6px, jak plakietki), wybrana czerwona; pola jak w zamówieniu.
   Przykład: /voucher-prezentowy/.
   ========================================================================== */
.single-product table.variations th.label label { color: #fff !important; font-size: 18px; }
.cfvsw-swatches-container { display: flex; flex-wrap: wrap; gap: 10px; }
.cfvsw-swatches-option.cfvsw-label-option {
	min-height: 44px !important;
	margin: 0 !important;
	padding: 0 16px !important;
	background: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	border-radius: 0 !important;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%);
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 18px !important;
	letter-spacing: .02em;
	transition: background-color .2s ease, border-color .2s ease;
}
.cfvsw-swatches-option.cfvsw-label-option .cfvsw-swatch-inner { color: inherit !important; width: auto; height: auto; }
.cfvsw-swatches-option.cfvsw-label-option:hover { border-color: var(--fsh-red) !important; }
.cfvsw-swatches-option.cfvsw-label-option.cfvsw-selected-swatch {
	background: var(--fsh-red) !important;
	border-color: var(--fsh-red) !important;
	color: #fff !important;
}
.cfvsw-swatches-option.cfvsw-swatches-disabled,
.cfvsw-swatches-option.cfvsw-swatches-out-of-stock { opacity: .35; }
.single-product .reset_variations { color: var(--fsh-red) !important; font-size: 16px; margin-top: 8px; display: inline-block; }
.single-product .woocommerce-variation-price .price,
.single-product .woocommerce-variation-price .woocommerce-Price-amount { color: #fff; }

/* pola vouchera */
.pdf-coupon-fields { width: 100%; margin: 8px 0 16px; }
.pdf-coupon-fields .form-row { margin: 0 0 18px !important; padding: 0 !important; }
.pdf-coupon-fields label { display: block; margin: 0 0 8px; color: #fff !important; font-size: 18px; }
.pdf-coupon-fields .required { color: var(--fsh-red); }
.pdf-coupon-fields input.input-text,
.pdf-coupon-fields textarea,
.pdf-coupon-fields select {
	width: 100% !important;
	box-sizing: border-box;
	height: 46px;
	padding: 11px 12px !important;
	background: #101014 !important;
	border: 1px solid var(--fsh-border) !important;
	border-radius: 0 !important;
	color: #fff !important;
	font-size: 18px !important;
	outline: none;
}
.pdf-coupon-fields textarea { height: auto; min-height: 110px; }
.pdf-coupon-fields :is(input, textarea, select):focus { border-color: var(--fsh-red) !important; }
.pdf-coupon-fields .description,
.pdf-coupon-fields small { color: #a9a9ad !important; font-size: 16px; }

/* Warianty podzielone na "Wersja online" / "Wersja drukowana" (JS w functions.php) */
.cfvsw-swatches-container.fsh-swatch-split { display: flex; flex-direction: column; gap: 18px; }
.fsh-swatch-group__title {
	margin: 0 0 10px !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 18px !important;
	text-transform: uppercase;
	letter-spacing: .04em;
}
.fsh-swatch-group__row { display: flex; flex-wrap: wrap; gap: 10px; }

/* ==========================================================================
   Pole ilości z przyciskami − / + (JS w functions.php) zamiast natywnych
   strzałek: jeden spójny blok 48px wysokości – [−][ 1 ][+], ciemne tło,
   ramka jak inne pola, przyciski białe, na hover czerwone.
   ========================================================================== */
.quantity.fsh-qty {
	display: inline-flex !important;
	align-items: stretch;
	height: 48px;
	border: 1px solid var(--kk-line-2, rgba(255,255,255,.24));
	background: #101014;
}
.quantity.fsh-qty input.qty {
	-moz-appearance: textfield;
	appearance: textfield;
	width: 52px !important;
	height: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-left: 1px solid var(--fsh-border) !important;
	border-right: 1px solid var(--fsh-border) !important;
	background: transparent !important;
	color: #fff !important;
	text-align: center;
	font-family: var(--fsh-font);
	font-size: 20px !important;
	box-shadow: none !important;
}
.quantity.fsh-qty input.qty::-webkit-inner-spin-button,
.quantity.fsh-qty input.qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.fsh-qty-btn {
	flex: 0 0 auto;
	width: 42px;
	height: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	clip-path: none !important;
	background: transparent !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-size: 26px !important;
	line-height: 1 !important;
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease;
}
.fsh-qty-btn:hover,
.fsh-qty-btn:focus-visible { background: var(--fsh-red) !important; color: #fff !important; outline: none; }
.quantity.fsh-qty:focus-within { border-color: var(--fsh-red); }

/* Karta produktu: pole ilości [−][1][+] i "Dodaj do koszyka" w JEDNYM
   rzędzie, ta sama wysokość 48px, wyrównane do środka – WooCommerce daje
   .quantity float + margines, a przy wariantach oba elementy siedzą w
   osobnym bloku .woocommerce-variation-add-to-cart (bez flexa), przez co
   ilość wypadała niżej. Pola vouchera (pdf-coupon-fields) na pełną
   szerokość nad nimi. */
.summary.entry-summary .woocommerce-variation-add-to-cart,
.summary.entry-summary form.cart:not(.variations_form) {
	display: flex !important;
	flex-wrap: wrap;
	align-items: center !important;
	gap: 14px;
}
.summary.entry-summary .woocommerce-variation-add-to-cart > .pdf-coupon-fields { flex: 0 0 100%; margin: 0; }
.summary.entry-summary .quantity {
	float: none !important;
	margin: 0 !important;
	vertical-align: middle;
}
.summary.entry-summary .single_add_to_cart_button {
	float: none !important;
	margin: 0 !important;
	height: 48px !important;
	min-height: 48px;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	line-height: 1 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	box-sizing: border-box;
	vertical-align: middle;
}
.summary.entry-summary .woocommerce-variation-add-to-cart > input[type="hidden"] { display: none; }
.quantity.fsh-qty { box-sizing: border-box; } /* 48px łącznie z ramką – równo z przyciskiem */

/* ==========================================================================
   Karta produktu (produkty proste, np. pojedyncza koszulka): "Dodaj do
   koszyka" W JEDNYM RZĘDZIE z ceną, wyrównany do góry, po prawej. Siatka
   na .summary: tytuł (cały wiersz), cena | formularz koszyka, pod spodem
   najniższa cena z 30 dni, stan magazynu i reszta na całą szerokość.
   Produkty z wariantami (voucher) bez zmian – ich formularz (warianty,
   pola) jest za duży na kolumnę obok ceny. Telefon: bez zmian (pod sobą).
   (Omnibus <div> WooCommerce drukuje wewnątrz <p class="price">, więc
   przeglądarka zamyka <p> wcześniej i zostaje pusty <p> – ukryty.)
   ========================================================================== */
@media (min-width: 768px) {
	.product-type-simple .summary.entry-summary {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) auto;
		column-gap: 24px;
		align-items: start;
	}
	.product-type-simple .summary.entry-summary > * { grid-column: 1 / -1; min-width: 0; }
	.product-type-simple .summary.entry-summary > .product_title { grid-row: 1; }
	.product-type-simple .summary.entry-summary > p.price { grid-row: 2; grid-column: 1; margin: 0 0 6px !important; align-self: start; }
	.product-type-simple .summary.entry-summary > form.cart {
		grid-row: 2;
		grid-column: 2;
		align-self: start;
		margin: 0 !important;
		justify-content: flex-end;
	}
	.product-type-simple .summary.entry-summary > .pwp-omnibus-price__info { grid-row: 3; }
	.product-type-simple .summary.entry-summary > p:empty { display: none; }
}
/* Pusty pojemnik pól vouchera (Flexible Coupons drukuje go w formularzu
   KAŻDEGO produktu) miał width:100% + margines 8/16px i w formularzu
   koszyka zajmował cały pierwszy wiersz – "Dodaj do koszyka" spadał pod
   niego, niżej niż cena. Pusty = niewidoczny; na voucherze pojawia się
   dopiero, gdy AJAX wstawi pola. Ukryte pole ilości (sztuka 1) też bez
   miejsca. */
.pdf-coupon-fields:empty { display: none !important; }
.summary.entry-summary form.cart .quantity:not(:has(input[type="number"])) { display: none !important; }

/* Kategorie / sklep / podobne produkty (desktop): nazwa produktu w karcie
   20px (h3.woocommerce-loop-product__title – h3 zamiast h2, functions.php).
   Wyjęte z ogólnej reguły "tekst 18px". */
@media (min-width: 1025px) {
	ul.products li.product .woocommerce-loop-product__title { font-size: 20px !important; }
}
/* h3 z kitu Elementora = wersaliki + letter-spacing (h2 tego nie miało) –
   nazwy produktów zostają pisane normalnie, jak przed zmianą znacznika */
ul.products li.product h3.woocommerce-loop-product__title {
	text-transform: none !important;
	letter-spacing: normal !important;
	font-weight: 400;
}

/* ==========================================================================
   RESPONSYWNOŚĆ – poprawki z audytu w prawdziwej przeglądarce (chrome-
   headless-shell, szerokości 360–1440px).
   ========================================================================== */

/* SKLEP / KATEGORIE, telefon: 2 kolumny kart się nie mieściły – kolumny
   "1fr" nie zwężają się poniżej zawartości (przycisk "DODAJ DO KOSZYKA"
   bez łamania = min. ~204px na kartę → lista 422px na ekranie 390px).
   minmax(0,1fr) + treść karty dopasowana do wąskiej kolumny. */
@media (max-width: 640px) {
	.fsh-shop-main ul.products,
	.fsh-shop-main ul.products[class*="columns-"],
	.related.products ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 10px !important;
	}
	.fsh-shop-main ul.products li.product,
	.related.products ul.products li.product {
		min-width: 0;
		padding: 8px 8px 4px !important;
		border-radius: 10px !important;
	}
	.fsh-shop-main ul.products li.product img,
	.related.products ul.products li.product img { border-radius: 6px !important; }
	ul.products li.product .woocommerce-loop-product__title {
		font-size: 15px !important;
		line-height: 1.25 !important;
		min-height: calc(1.25em * 3) !important;
		margin: 8px 0 4px !important;
		overflow-wrap: anywhere;
	}
	ul.products li.product .price { font-size: 16px !important; }
	ul.products li.product .button,
	ul.products li.product > a.button {
		display: flex !important;
		align-items: center;
		justify-content: center;
		width: 100% !important;
		min-width: 0;
		box-sizing: border-box;
		padding: 11px 6px !important;
		font-size: 14px !important;
		letter-spacing: .5px !important;
		white-space: normal !important;
		text-align: center;
		line-height: 1.1 !important;
	}
	.fsh-loop-badge {
		max-width: calc(100% - 12px);
		font-size: 11px !important;
		white-space: normal;
		box-sizing: border-box;
	}
}

/* KONTAKT, telefon: różne odstępy z lewej i prawej – adres e-mail miał
   white-space:nowrap i rozpychał kafel o ~27px poza krawędź treści; do
   tego kontener Elementora dokładał własne 10px. Kolumna siatki może się
   teraz zwęzić (minmax 0), długi e-mail łamie się, kontener bez paddingu –
   treść równo 24px od obu krawędzi (jak na innych podstronach). */
.fsh-contact-main { grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); }
@media (max-width: 900px) { .fsh-contact-main { grid-template-columns: minmax(0, 1fr) !important; } }
.fsh-contact-info__item { min-width: 0; }
.fsh-contact-info__value { white-space: normal !important; overflow-wrap: anywhere; }
.elementor-15 .elementor-element-c9f31a2,
.elementor-19921 .elementor-element-6c72e91 { --padding-left: 0px; --padding-right: 0px; padding-left: 0 !important; padding-right: 0 !important; }
/* Sklep, telefon/tablet: .fsh-shop-layout ma align-items:flex-start, więc
   lista produktów nie rozciągała się do szerokości ekranu, tylko brała
   szerokość zawartości (2 × 206px = 422px > 390px ekranu). Wymuszone
   rozciągnięcie na całą dostępną szerokość. */
@media (max-width: 960px) {
	.fsh-shop-layout > .fsh-shop-main {
		align-self: stretch !important;
		width: 100% !important;
		max-width: 100% !important;
		flex: 1 1 100% !important;
		min-width: 0 !important;
	}
}
/* Voucher (produkt z wariantami): form.cart ma display:flex + dzieci
   "flex: 0 0 auto" (reguła dla przycisków produktów prostych), więc tabela
   wariantów i blok ceny/pól/przycisku brały szerokość zawartości (606px)
   i wychodziły poza kolumnę – na telefonie poza ekran. W formularzu
   wariantów każde dziecko = pełny wiersz kolumny. */
.summary.entry-summary form.variations_form > *:not(.screen-reader-text) {
	flex: 1 1 100% !important;
	width: 100% !important;
	max-width: 100%;
	min-width: 0 !important;
}
.summary.entry-summary form.variations_form table.variations { table-layout: fixed; }
.summary.entry-summary form.variations_form table.variations td,
.summary.entry-summary form.variations_form table.variations th { display: block; width: 100%; padding: 0 0 8px; }

/* Filtry (hero strony głównej + filtry sklepu): etykiety "Liga angielska",
   "Dowolny rozmiar/stan/sezon" do LEWEJ – przycisk <button> ma domyślnie
   text-align:center, a pole z tekstem rozciąga się na całą szerokość, więc
   każda etykieta miała inne wcięcie (widoczne na telefonie). */
#fsh-kk .fsh-kk-pop-btn,
#fsh-shop-filters .fsh-kk-pop-btn,
.fsh-kk-pop-txt,
.fsh-kk-pop-val { text-align: left !important; justify-content: flex-start; }

/* Strona główna, telefon/tablet: ramka "NOWY DROP ZA" była pozycjonowana
   absolutnie w prawym górnym rogu hero i nachodziła na tytuł "SKLEP
   Z KOSZULKAMI PIŁKARSKIMI". Tu stoi normalnie w układzie – nad tytułem,
   przy prawej krawędzi. */
@media (max-width: 900px) { /* ≤900 = mobilny układ hero; 901+ ma układ desktopowy z ramką w rogu */
	.fsh-kk-nextdrop {
		position: relative !important;
		top: auto !important;
		right: auto !important;
		width: fit-content;
		margin: 14px 16px 0 auto;
	}
}

/* Telefon: plakietka z informacjami o produkcie (rozmiar · sezon · wersja
   · stan) NAD zdjęciem zamiast na nim – na wąskim ekranie zasłaniała
   dużą część koszulki.
   - listy produktów: plakietka jest w linku-okładce (flex, kolumna) →
     pierwszy element, nad zdjęciem;
   - karta produktu: plakietka jest w kontenerze galerii (flex) z order 0,
     zdjęcie ma order 1 → osobny pełny wiersz nad zdjęciem. */
@media (max-width: 767px) {
	ul.products li.product .fsh-loop-badge {
		position: static !important;
		order: -1;
		align-self: stretch;
		max-width: none !important;
		margin: 0 0 8px;
		box-sizing: border-box;
	}
	ul.products li.product > a.woocommerce-LoopProduct-link { display: flex; flex-direction: column; }
	.woocommerce-product-gallery .fsh-gallery-badge {
		position: static !important;
		flex: 0 0 100%;
		box-sizing: border-box;
		margin: 0 0 10px;
		border-right: 0;
		border-left: 3px solid var(--fsh-red, #e11d2a);
		font-size: 15px;
	}
	.woocommerce-product-gallery.wpgs--with-images { flex-wrap: wrap; }
}
@media (max-width: 767px) {
	/* galeria po flex-wrap: suwak (slick) i miniatury na pełny wiersz,
	   z twardym limitem szerokości – bez tego slick liczył szerokość
	   od nieograniczonego elementu flex i rozciągał się na ~40 000px */
	.woocommerce-product-gallery.wpgs--with-images > .wpgs-for,
	.woocommerce-product-gallery.wpgs--with-images > .wpgs-nav {
		flex: 0 0 100% !important;
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
	}
}

/* Karta produktu: form.cart ma clearfix WooCommerce (::before/::after
   "display:table") – we flexie to niewidoczne elementy + odstęp gap 14px,
   przez co "Dodaj do koszyka" był wcięty względem ceny (widać na telefonie). */
.summary.entry-summary form.cart::before,
.summary.entry-summary form.cart::after { content: none !important; display: none !important; }

/* Kategorie / sklep: przyciski "Dodaj do koszyka" na jednym poziomie w każdym
   rzędzie. Reguła "karta = kolumna flex, cena + przycisk na dole" nigdy nie
   działała – starsza "display:block !important" z selektorem
   ul.products[class*="columns-"] li.product ma większą szczegółowość.
   Ten sam selektor + flex: link (zdjęcie+tytuł+cena) rośnie, cena dosunięta
   do dołu linku, przycisk zawsze na dole karty; karty w rzędzie mają równą
   wysokość (grid stretch), więc przyciski w rzędzie są na tej samej linii. */
.fsh-shop-main ul.products[class*="columns-"] li.product,
.related.products ul.products[class*="columns-"] li.product {
	display: flex !important;
	flex-direction: column !important;
	height: 100%;
	box-sizing: border-box;
}
.fsh-shop-main ul.products[class*="columns-"] li.product > a.woocommerce-LoopProduct-link,
.related.products ul.products[class*="columns-"] li.product > a.woocommerce-LoopProduct-link {
	display: flex !important;
	flex-direction: column;
	flex: 1 1 auto;
}
.fsh-shop-main ul.products[class*="columns-"] li.product .price,
.related.products ul.products[class*="columns-"] li.product .price { margin-top: auto !important; }
.fsh-shop-main ul.products[class*="columns-"] li.product > a.button,
.related.products ul.products[class*="columns-"] li.product > a.button { margin-top: 10px !important; flex: 0 0 auto; }
@media (max-width: 767px) {
	/* tytuł bez sztywnych 3 linii – wyrównanie robi teraz flex */
	ul.products li.product .woocommerce-loop-product__title { min-height: 0 !important; }
}

/* ==========================================================================
   Filtry sklepu / kategorii:
   - nagłówek panelu: "Filtry" | "Wyczyść wszystko" | krzyżyk – w jednym
     wierszu, bez nakładania (krzyżyk był position:absolute na "wyczyść"
     i dostawał od motywu bazowego duży czerwony przycisk); "Wyczyść" przy
     prawej krawędzi (desktop) / tuż przed krzyżykiem (telefon), biały;
   - boczny przycisk "FILTRY" (telefon/tablet) mniejszy: wąska zakładka
     przy prawej krawędzi ekranu.
   ========================================================================== */
.fsh-shop-filters__head { display: flex !important; align-items: center; gap: 14px; padding-right: 0 !important; }
.fsh-shop-filters__head h2 { flex: 1 1 auto; }
#fsh-shop-filters .fsh-shop-reset {
	margin-left: auto;
	flex: 0 0 auto;
	color: #fff !important;
	text-align: right;
	white-space: nowrap;
}
#fsh-shop-filters .fsh-shop-reset:hover { color: var(--fsh-red) !important; }
@media (max-width: 960px) {
	.fsh-shop-filters-close {
		position: static !important;
		transform: none !important;
		flex: 0 0 32px;
		width: 32px !important;
		height: 32px !important;
		min-height: 0 !important;
		padding: 0 !important;
		background: transparent !important;
		border: 1px solid rgba(255,255,255,.24) !important;
		border-radius: 0 !important;
		clip-path: none !important;
		color: #fff !important;
		font-size: 22px !important;
		line-height: 1 !important;
	}
	.fsh-shop-filters-close:hover { border-color: var(--fsh-red) !important; color: var(--fsh-red) !important; background: transparent !important; }

	.fsh-shop-filters-toggle {
		width: 30px !important;
		min-width: 0 !important;
		height: auto !important;
		min-height: 0 !important;
		padding: 12px 0 !important;
		font-size: 12px !important;
		letter-spacing: .08em !important;
		line-height: 1 !important;
		border-radius: 6px 0 0 6px !important;
		clip-path: none !important;
	}
}

/* ==========================================================================
   LIGHTBOX zdjęć produktu (Fancybox z Woo Product Gallery Slider) –
   domyślny wygląd odstawał od sklepu: półprzezroczyste tło (prześwitywała
   strona), nazwa pliku jako podpis, szare kwadraty strzałek i paska
   narzędzi, zbędny "udostępnij". Teraz: prawie czarne tło, bez podpisu,
   licznik "1 / 5" biały Teko, przyciski białe na przezroczystym tle
   (hover czerwony), strzałki w kółku z białą obwódką jak w galerii,
   zdjęcie z marginesem od krawędzi (na telefonie mniejszym).
   ========================================================================== */
.fancybox-bg { background: #050506 !important; }
.fancybox-is-open .fancybox-bg { opacity: .96 !important; }
.fancybox-caption,
.fancybox-caption-wrap,
.fancybox-button--share { display: none !important; }
.fancybox-infobar {
	color: #fff !important;
	font-family: var(--fsh-font);
	font-size: 18px !important;
	letter-spacing: .06em;
	mix-blend-mode: normal !important;
	opacity: 1 !important;
	padding: 0 18px !important;
	line-height: 56px !important;
	height: 56px !important;
}
.fancybox-toolbar { top: 0; right: 0; }
.fancybox-button,
.fancybox-toolbar .fancybox-button {
	width: 56px !important;
	height: 56px !important;
	padding: 16px !important;
	background: transparent !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 0 !important;
	clip-path: none !important;
	box-shadow: none !important;
	opacity: 1 !important;
	transition: color .2s ease;
}
.fancybox-button svg path { fill: currentColor !important; }
.fancybox-button:hover { color: var(--fsh-red) !important; }
.fancybox-navigation .fancybox-button {
	top: 50% !important;
	width: 64px !important;
	height: 64px !important;
	padding: 10px !important;
	margin-top: -32px;
}
.fancybox-navigation .fancybox-button div {
	width: 44px !important;
	height: 44px !important;
	padding: 10px !important;
	box-sizing: border-box;
	border: 1.5px solid rgba(255,255,255,.7);
	border-radius: 50%;
	background: rgba(0,0,0,.35) !important;
	transition: border-color .2s ease, background-color .2s ease;
}
.fancybox-navigation .fancybox-button:hover div { border-color: var(--fsh-red); background: var(--fsh-red) !important; }
.fancybox-navigation .fancybox-button:hover { color: #fff !important; }
.fancybox-button--arrow_left { left: 12px !important; }
.fancybox-button--arrow_right { right: 12px !important; }
.fancybox-slide--image { padding: 64px 90px !important; }
.fancybox-image { border-radius: 8px; }
@media (max-width: 767px) {
	.fancybox-slide--image { padding: 60px 12px 80px !important; }
	.fancybox-navigation .fancybox-button { top: auto !important; bottom: 12px !important; margin-top: 0; }
	.fancybox-button--arrow_left { left: calc(50% - 70px) !important; }
	.fancybox-button--arrow_right { right: calc(50% - 70px) !important; }
	.fancybox-button--zoom,
	.fancybox-button--fsenter,
	.fancybox-button--fsexit { display: none !important; }
}

/* Klejenie: przycisk "Zobacz cennik" pod wstępem – płynnie zjeżdża do
   sekcji #cennik (odstęp od przyklejonego headera przez scroll-margin) */
.fsh-printing-intro { margin-bottom: 20px !important; }
.fsh-printing-intro-cta {
	box-sizing: border-box;
	max-width: var(--fsh-max-width);
	margin: 0 auto 48px;
	padding: 0 24px;
	text-align: left; /* równo z tekstem wstępu nad nim */
}
.fsh-printing-to-pricing.elementor-button {
	display: inline-flex;
	align-items: center;
	background: var(--fsh-red) !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-weight: 600;
	font-size: 16px;
	letter-spacing: 1px;
	text-transform: uppercase;
	line-height: 1;
	padding: 15px 30px;
	transition: background-color .3s cubic-bezier(.2,.7,.2,1), color .3s cubic-bezier(.2,.7,.2,1);
}
.fsh-printing-to-pricing.elementor-button:hover { background: #000 !important; color: var(--fsh-red) !important; }
html { scroll-behavior: smooth; }
#cennik { scroll-margin-top: 110px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Kotwice (#formularz na skupie/kontakcie, #cennik na klejeniu): przyklejony
   header po przewinięciu ma 170px (desktop) / 142px (telefon) i zasłaniał
   górę sekcji – strona "zjeżdżała za nisko". Odstęp = wysokość headera
   + oddech. */
#formularz, #cennik { scroll-margin-top: 190px !important; }
@media (max-width: 767px) { #formularz, #cennik { scroll-margin-top: 160px !important; } }

/* Skup, telefon: kolumny jedna pod drugą – formularz wyceny PRZED "Co
   skupujemy" + FAQ, żeby "Wyceń koszulki" lądował na formularzu, a nie na
   liście pytań. */
@media (max-width: 900px) {
	.fsh-buyback-form { display: flex !important; flex-direction: column; gap: 40px; }
	.fsh-buyback-form__card { order: -1; }
}

/* Klejenie, telefon: karty cennika na pełną szerokość (kolumna flex miała
   align-items:flex-start → lista kart zwężała się do zawartości) */
@media (max-width: 900px) {
	.fsh-printing-pricing__inner { align-items: stretch !important; }
	.fsh-printing-pricing__grid,
	.fsh-printing-pricing__intro { width: 100%; }
}

/* Filtry (telefon/tablet): nagłówek panelu ("Filtry" | "Wyczyść" | ×)
   PRZYKLEJONY do góry popupu – zamykanie widoczne zawsze, także po
   przewinięciu długiej listy lig. Tło jak panel, żeby treść pod spodem
   nie prześwitywała. */
@media (max-width: 960px) {
	.fsh-shop-filters__head {
		position: sticky !important;
		top: -21px;                 /* = padding panelu */
		z-index: 5;
		margin: -21px -21px 0;
		padding: 21px 21px 14px !important;
		background: #121116;
		border-bottom: 1px solid rgba(255,255,255,.1);
	}
	/* boczna zakładka "FILTRY" na 1/4 wysokości ekranu od góry */
	.fsh-shop-filters-toggle {
		top: 25vh !important;
		bottom: auto !important;
		transform: none;
	}
}

/* Formularze WPForms (skup, kontakt): pola "small/medium" miały 25/60%
   szerokości – na telefonie/wąskiej karcie pola były węższe niż karta
   (większy odstęp z prawej). Wszystkie pola na pełną szerokość karty;
   pole "Dodaj zdjęcia" (upload) ciemne jak reszta zamiast białego. */
:is(.fsh-contact-form__card, .fsh-buyback-form__card) .wpforms-field :is(input, textarea, select):not([type="checkbox"]):not([type="radio"]):not([type="file"]),
:is(.fsh-contact-form__card, .fsh-buyback-form__card) .wpforms-field .iti {
	width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box;
}
:is(.fsh-contact-form__card, .fsh-buyback-form__card) .wpforms-field-file-upload .wpforms-uploader {
	background: #101014 !important;
	border: 1px dashed rgba(255,255,255,.3) !important;
	border-radius: 0 !important;
	color: #fff !important;
}
:is(.fsh-contact-form__card, .fsh-buyback-form__card) .wpforms-field-file-upload .wpforms-uploader :is(span, p, .modern-title, .modern-hint) { color: #d0d0d4 !important; }
:is(.fsh-contact-form__card, .fsh-buyback-form__card) .wpforms-field-file-upload .wpforms-uploader svg { fill: var(--fsh-red) !important; }
:is(.fsh-contact-form__card, .fsh-buyback-form__card) .wpforms-field-file-upload .wpforms-uploader:hover { border-color: var(--fsh-red) !important; }

/* Klejenie: wstęp + "Zobacz cennik" w jednym pasku.
   Desktop: tekst z lewej, przycisk z prawej, wyrównany do PIERWSZEJ linii
   tekstu (align-items:flex-start, bez górnego marginesu).
   Telefon: przycisk pod tekstem, wyśrodkowany. */
.fsh-printing-introbar {
	box-sizing: border-box;
	max-width: var(--fsh-max-width);
	margin: 56px auto 48px;
	padding: 0 24px;
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px 40px;
}
.fsh-printing-introbar .fsh-printing-intro,
.fsh-printing-introbar .fsh-printing-intro-cta {
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
}
.fsh-printing-introbar .fsh-printing-intro { flex: 1 1 auto; }
.fsh-printing-introbar .fsh-printing-intro-cta { flex: 0 0 auto; }
@media (max-width: 767px) {
	.fsh-printing-introbar { flex-direction: column; align-items: stretch; margin: 40px auto 36px; }
	.fsh-printing-introbar .fsh-printing-intro-cta { text-align: center !important; }
}

/* Strona główna, 901–1280px (małe laptopy): "W SKLEPIE MAMY 1,481 PRODUKTÓW"
   miało 54–72px, nie mieściło się w jednej linii i drugi wiersz nachodził
   na pierwszy – tu mniejsze i z normalną wysokością linii. */
@media (min-width: 901px) and (max-width: 1280px) {
	.fsh-kk-sub { font-size: clamp(38px, 4.3vw, 54px) !important; line-height: 1.05 !important; }
}

/* Sklep / kategorie (desktop): panel filtrów WYDŁUŻONY – bez limitu
   wysokości okna i bez własnego paska przewijania; rośnie razem z listą
   produktów obok (wszystkie sekcje filtrów widoczne od razu). Lista lig
   też dłuższa (560px zamiast 300px). Bez sticky – przy panelu wyższym niż
   okno sticky blokowałby dostęp do dolnych filtrów. */
@media (min-width: 961px) {
	.fsh-shop-filters {
		position: relative !important;
		top: auto !important;
		max-height: none !important;
		overflow: visible !important;
	}
	.fsh-shop-liga-tree { max-height: 560px !important; }
}

/* Stopka, telefon/tablet: 2 rzędy po 2 kolumny pół na pół –
   [marka + opis | Informacje], [Sklep | Pomoc] (wcześniej marka i Informacje
   były na całą szerokość). */
@media (max-width: 1024px) {
	.elementor-51490 .elementor-element-cec135c,
	.elementor-51490 .elementor-element-268e0b9,
	.elementor-51490 .elementor-element-622e65b,
	.elementor-51490 .elementor-element-81ebfe2 {
		width: calc(50% - 12px) !important;
		flex: 0 1 calc(50% - 12px) !important;
		min-width: 0;
	}
	.elementor-51490 .elementor-element-cec135c .elementor-widget-text-editor p { font-size: 15px !important; line-height: 1.5 !important; }
}
/* Stopka: zewnętrzny kontener f0617ac ma domyślne 10px paddingu Elementora
   → czerwony pasek copyright nie dochodził do krawędzi ekranu (widać na
   telefonie). Padding zdjęty, pasek na pełną szerokość. */
.elementor-51490 .elementor-element.elementor-element-f0617ac {
	--padding-left: 0px; --padding-right: 0px; --padding-bottom: 0px;
	padding-left: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important;
}
.elementor-51490 .elementor-element-57e1b2f { width: 100% !important; }

/* Aktywne filtry nad listą produktów: "Wyczyść wszystko" w tym samym
   wierszu co etykieta i pigułki, przy prawej krawędzi, BIAŁY (był szary
   55% i dostawał od motywu bazowego duży padding przycisku – na telefonie
   wisiał w osobnym wierszu na środku). */
.fsh-shop-activefilters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.fsh-shop-activefilters .fsh-af-clear {
	width: auto !important;
	min-height: 0 !important;
	height: auto !important;
	margin: 0 0 0 auto !important;
	padding: 4px 0 !important;
	background: none !important;
	border: 0 !important;
	clip-path: none !important;
	color: #fff !important;
	font-size: 16px !important;
	letter-spacing: .02em;
	text-underline-offset: 3px;
	white-space: nowrap;
}
.fsh-shop-activefilters .fsh-af-clear:hover { color: var(--fsh-red) !important; }
/* Kategorie: opis kategorii (term-description) pod paginacją – był
   przyklejony (0px odstępu). Odstęp jak między sekcjami + cienka linia. */
.fsh-shop-main .woocommerce-pagination + .term-description,
.fsh-shop-main .term-description {
	margin-top: 48px !important;
	padding-top: 32px;
	border-top: 1px solid rgba(255,255,255,.1);
}
@media (max-width: 767px) {
	.fsh-shop-main .term-description { margin-top: 36px !important; padding-top: 24px; }
}

/* Sortowanie produktów ("Sortuj od najnowszych") w kolorystyce sklepu –
   jak wybór waluty/języka na dole ekranu: czarne tło, czerwona ramka,
   czerwona strzałka zamiast natywnej, opcje ciemne. */
.woocommerce-ordering select.orderby,
.fsh-shop-main .woocommerce-ordering select {
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	box-sizing: border-box;
	height: 46px;
	padding: 0 44px 0 14px !important;
	background-color: #000 !important;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23e11d2a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: right 16px center !important;
	border: 1px solid var(--fsh-red) !important;
	border-radius: 0 !important;
	color: #fff !important;
	font-family: var(--fsh-font);
	font-size: 17px !important;
	letter-spacing: .02em;
	cursor: pointer;
	outline: none;
}
.woocommerce-ordering select.orderby:focus { box-shadow: 0 0 0 2px rgba(225,29,42,.35); }
.woocommerce-ordering select.orderby option { background: #101014; color: #fff; }

/* ==========================================================================
   Własne listy wyboru (sortowanie / waluta / język) – przycisk + okienko
   jak filtry na stronie głównej (JS w functions.php).
   ========================================================================== */
.fsh-sel { position: relative; display: inline-block; vertical-align: middle; max-width: 100%; }
.woocommerce-ordering .fsh-sel { display: block; }
.fsh-sel__native {
	position: absolute !important;
	inset: 0;
	width: 100% !important;
	height: 100% !important;
	opacity: 0 !important;
	pointer-events: none !important;
}
.fsh-sel-btn {
	display: inline-flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	max-width: 100%;
	box-sizing: border-box;
	margin: 0 !important;
	padding: 0 12px !important;
	background: #000 !important;
	border: 1px solid var(--fsh-red) !important;
	border-radius: 0 !important;
	clip-path: none !important;
	color: #fff !important;
	font-family: var(--fsh-font) !important;
	font-size: 15px !important;
	font-weight: 500 !important;
	letter-spacing: .03em !important;
	text-transform: uppercase;
	line-height: 1 !important;
	cursor: pointer;
	transition: background-color .2s ease;
}
.fsh-sel-btn--sort { width: 100% !important; font-size: 17px !important; text-transform: none; padding: 0 14px !important; }
.fsh-sel-btn:hover { background: #1a1a1a !important; }
.fsh-sel-btn__txt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.fsh-sel-btn__car {
	flex: 0 0 12px;
	width: 12px;
	height: 8px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23e11d2a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.fsh-sel-backdrop {
	position: fixed; inset: 0; z-index: 9998;
	background: rgba(3,3,4,.65);
	-webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
	opacity: 0; transition: opacity .16s ease;
}
.fsh-sel-backdrop.is-open { opacity: 1; }
.fsh-sel-panel {
	position: fixed; z-index: 9999; top: 50%; left: 50%;
	width: min(92vw, 420px);
	max-height: min(80vh, 560px); overflow-y: auto;
	box-sizing: border-box;
	background: #121116;
	border: 1px solid rgba(255,255,255,.24);
	border-top: 3px solid var(--fsh-red);
	border-radius: 15px;
	padding: 21px;
	box-shadow: 0 30px 80px rgba(0,0,0,.65);
	opacity: 0; transform: translate(-50%,-50%) scale(.96);
	transition: opacity .16s ease, transform .16s ease;
}
.fsh-sel-panel.is-open { opacity: 1; transform: translate(-50%,-50%) scale(1); }
.fsh-sel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 14px; }
.fsh-sel-title { font-family: var(--fsh-font); font-weight: 600; font-size: 24px; color: #fff; text-transform: uppercase; letter-spacing: .04em; }
.fsh-sel-close {
	width: 32px !important; height: 32px !important; min-height: 0 !important;
	padding: 0 !important; margin: 0 !important;
	background: transparent !important; border: 1px solid rgba(255,255,255,.24) !important;
	border-radius: 0 !important; clip-path: none !important;
	color: #fff !important; font-size: 22px !important; line-height: 1 !important; cursor: pointer;
}
.fsh-sel-close:hover { border-color: var(--fsh-red) !important; color: var(--fsh-red) !important; }
.fsh-sel-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.fsh-sel-opt {
	display: flex !important; align-items: center; justify-content: space-between;
	width: 100% !important; min-height: 46px;
	margin: 0 !important; padding: 10px 14px !important;
	background: #0b0b0d !important;
	border: 1px solid rgba(255,255,255,.13) !important;
	border-radius: 0 !important; clip-path: none !important;
	color: #fff !important;
	font-family: var(--fsh-font) !important; font-size: 18px !important; font-weight: 500 !important;
	letter-spacing: .02em !important; text-transform: none !important; text-align: left;
	cursor: pointer; transition: border-color .15s ease, background-color .15s ease;
}
.fsh-sel-opt:hover,
.fsh-sel-opt:focus-visible { border-color: var(--fsh-red) !important; outline: none; }
.fsh-sel-opt.is-selected { background: var(--fsh-red) !important; border-color: var(--fsh-red) !important; }
.fsh-sel-opt.is-selected::after { content: "✓"; font-size: 18px; }
body.fsh-sel-lock { overflow: hidden; }
@media (prefers-reduced-motion: reduce) { .fsh-sel-panel, .fsh-sel-backdrop { transition: none; } }

/* Okienko wyboru – dopracowane opcje: "przełączniki" zamiast pełnych
   czerwonych bloków. Kółko po lewej (wybrana = czerwona kropka), wybrana
   opcja: czerwona ramka + czerwony pasek z lewej na ciemnym tle; hover:
   jaśniejsze tło; bez białej obwódki fokusu (fokus = czerwona ramka). */
.fsh-sel-head {
	padding-bottom: 14px;
	border-bottom: 1px solid rgba(255,255,255,.1);
}
.fsh-sel-list { gap: 8px; }
.fsh-sel-opt {
	position: relative;
	justify-content: flex-start !important;
	gap: 14px;
	padding: 12px 16px !important;
	background: #0b0b0d !important;
	border: 1px solid rgba(255,255,255,.13) !important;
	outline: none !important;
	box-shadow: none !important;
}
.fsh-sel-opt::before {
	content: "";
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	box-sizing: border-box;
	border: 1.5px solid rgba(255,255,255,.45);
	border-radius: 50%;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.fsh-sel-opt:hover { background: #17171a !important; border-color: rgba(255,255,255,.3) !important; }
.fsh-sel-opt:hover::before { border-color: #fff; }
.fsh-sel-opt:focus-visible { border-color: var(--fsh-red) !important; }
.fsh-sel-opt.is-selected {
	background: #17171a !important;
	border-color: var(--fsh-red) !important;
	box-shadow: inset 3px 0 0 var(--fsh-red) !important;
}
.fsh-sel-opt.is-selected::before {
	border-color: var(--fsh-red);
	box-shadow: inset 0 0 0 4px #17171a, inset 0 0 0 9px var(--fsh-red);
}
.fsh-sel-opt.is-selected::after { content: none !important; }
.fsh-sel-btn--sort { text-transform: none !important; }

/* Stopka (desktop): na PEŁNĄ szerokość – bez pudełka 1200px; boczny odstęp
   jak w headerze (--fsh-header-gutter), więc kolumny stopki zaczynają się
   i kończą na tej samej linii co logo / ikony w headerze. */
@media (min-width: 1025px) {
	.elementor-51490 .elementor-element-92a1ecd {
		--padding-left: var(--fsh-header-gutter, 40px) !important;
		--padding-right: var(--fsh-header-gutter, 40px) !important;
		padding-left: var(--fsh-header-gutter, 40px) !important;
		padding-right: var(--fsh-header-gutter, 40px) !important;
	}
	.elementor-51490 .elementor-element-92a1ecd > .e-con-inner {
		max-width: none !important;
		width: 100% !important;
		margin: 0 !important;
	}
	.elementor-51490 .elementor-element-cec135c,
	.elementor-51490 .elementor-element-268e0b9,
	.elementor-51490 .elementor-element-622e65b,
	.elementor-51490 .elementor-element-81ebfe2 { --padding-left: 0px; --padding-right: 0px; padding-left: 0 !important; padding-right: 0 !important; }
}
/* przyciski waluty/języka: szerokość wg tekstu (min. jak wcześniej),
   bez ucinania po przetłumaczeniu strony na EN/DE */
.fsh-sel-btn:not(.fsh-sel-btn--sort) { width: auto !important; }
.fsh-sel-btn:not(.fsh-sel-btn--sort) .fsh-sel-btn__txt { overflow: visible; text-overflow: clip; }
.fsh-mobile-bottombar { flex-wrap: wrap; row-gap: 8px; }

/* Strona główna, telefon: treść pierwszej sekcji wyżej, żeby na pierwszym
   ekranie było widać "Pokaż wyniki" (także na niższych telefonach) –
   mniejszy górny odstęp, ciaśniejsze odstępy, niższe przyciski filtrów
   z tekstem 16px. */
@media (max-width: 767px) {
	.fsh-kk-hero { padding-top: 12px !important; padding-bottom: 16px !important; min-height: 0 !important; }
	.fsh-kk-nextdrop { margin: 0 0 10px auto !important; }
	.fsh-kk-console { gap: 10px !important; }
	.fsh-kk-title { font-size: clamp(28px, 8vw, 34px) !important; line-height: 1.05 !important; }
	.fsh-kk-sub { margin-top: 0 !important; }
	#fsh-kk .fsh-kk-pop-btn { padding: 8px 14px !important; font-size: 16px !important; }
	#fsh-kk .fsh-kk-pop-val { font-size: 16px !important; }
	#fsh-kk .fsh-kk-pop-car { font-size: 14px; }
	.fsh-kk-bottombar { margin-top: 6px !important; }
}
/* (tytuł hero na telefonie zostaje na połowie szerokości, z lewej – wersja na pełną szerokość odrzucona) */

/* Strona główna, telefon: cała sekcja wyżej – ramka "NOWY DROP" w prawym
   górnym rogu OBOK tytułu (tytuł ma tylko ~połowę szerokości, z lewej),
   zamiast osobnego wiersza nad nim; ramka kompaktowa, żeby nie wchodziła
   na tytuł. */
@media (max-width: 767px) {
	.fsh-kk-nextdrop {
		position: absolute !important;
		top: 12px !important;
		right: 16px !important;
		margin: 0 !important;
		width: auto;
		padding: 6px 10px !important;
		gap: 1px;
	}
	.fsh-kk-nextdrop__label { font-size: 12px !important; }
	.fsh-kk-nextdrop__timer { font-size: 15px !important; letter-spacing: .02em; }
	.fsh-kk-nextdrop__sub { font-size: 11px !important; }
	.fsh-kk-title { max-width: 50% !important; }
}

/* Okienka filtrów na stronie głównej: krzyżyk zamykania wyraźny – BIAŁY,
   w ramce, w prawym górnym rogu okienka (jak w okienkach sortowania/waluty
   i w filtrach sklepu). Tytuł ma miejsce, żeby nie wchodził pod krzyżyk. */
#fsh-kk .fsh-kk-pop-close {
	position: absolute !important;
	top: 14px;
	right: 14px;
	width: 32px !important;
	height: 32px !important;
	padding: 0 !important;
	background: transparent !important;
	border: 1px solid rgba(255,255,255,.55) !important;
	border-radius: 0 !important;
	clip-path: none !important;
	color: #fff !important;
	font-size: 22px !important;
	line-height: 1 !important;
	z-index: 2;
}
#fsh-kk .fsh-kk-pop-close:hover { border-color: var(--fsh-red) !important; color: var(--fsh-red) !important; background: transparent !important; }
.fsh-kk-pop-head { padding-right: 44px; min-height: 32px; }
/* krzyżyk w okienkach filtrów głównej: w wierszu tytułu (wyśrodkowany
   w pionie z tytułem, przy prawej krawędzi), biały w ramce */
#fsh-kk .fsh-kk-pop-close { position: static !important; margin-left: auto !important; flex: 0 0 32px; }
.fsh-kk-pop-head { padding-right: 0 !important; align-items: center !important; }

/* Filtry sklepu: "Producent" w 2 kolumnach (siatka zamiast jednej kolumny);
   długie nazwy łamią się w swojej komórce; bez wewnętrznego przewijania. */
#fsh-shop-producent.fsh-shop-liga-tree {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2px 8px;
	max-height: none !important;
	overflow: visible !important;
}
#fsh-shop-producent .fsh-shop-liga-row { min-width: 0; padding: 6px 4px; }
#fsh-shop-producent .fsh-shop-liga-row :is(span, label) { min-width: 0; overflow-wrap: anywhere; line-height: 1.2; }

/* Filtry sklepu – Producent: pierwszych 20, reszta po "Pokaż więcej (N)"
   (zaznaczeni spoza pierwszej 20 widoczni zawsze) */
#fsh-shop-producent.is-collapsed > label:nth-child(n+21):not(:has(input:checked)) { display: none; }
#fsh-shop-filters .fsh-shop-more {
	display: inline-block;
	margin: 10px 0 0;
	padding: 0 !important;
	width: auto !important;
	height: auto !important;
	min-height: 0 !important;
	background: none !important;
	border: 0 !important;
	clip-path: none !important;
	color: var(--fsh-red) !important;
	font-family: var(--fsh-font);
	font-size: 16px !important;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}
#fsh-shop-filters .fsh-shop-more:hover { color: #fff !important; }
