/*
Theme Name: Fizjomarket
Template: blocksy
Description: Motyw potomny Blocksy dla sklepu fizjomarket.pl. Kod w repo (theme/fizjomarket), wdrażany przez scripts/deploy-theme.sh.
Version: 1.6.1
Text Domain: fizjomarket
*/

/* Kolory: paleta Blocksy (--theme-palette-color-1…8) ustawiana w scripts/setup-ux.php — kolory marki z content/marka/README.md.
   Fonty, typografia, przyciski, karty i sekcje strony głównej: "System wizualny" na końcu pliku. */

/* Pasek postępu do darmowej wysyłki — koszyk i checkout, projektowany mobile-first */
.fizjomarket-free-shipping {
	margin: 0 0 16px;
	padding: 12px 14px;
	border-radius: 8px;
	background: var(--theme-palette-color-6);
	font-size: 15px;
	line-height: 1.4;
}

.fizjomarket-free-shipping__bar {
	height: 6px;
	margin-top: 8px;
	border-radius: 3px;
	background: var(--theme-palette-color-5);
	overflow: hidden;
}

.fizjomarket-free-shipping__fill {
	height: 100%;
	background: var(--theme-palette-color-1);
	transition: width 0.3s ease;
}

.fizjomarket-free-shipping--done {
	background: var(--fizjomarket-success-bg);
}

/* Pola faktury ukryte, dopóki klient nie zaznaczy "Chcę fakturę na firmę" */
.fizjomarket-invoice-field.is-hidden {
	display: none;
}

/* Zakładka "Bezpieczeństwo produktu" (GPSR) — czytelna lista etykieta/wartość na telefonie */
.fizjomarket-gpsr {
	margin: 0 0 24px;
}

.fizjomarket-gpsr dt {
	margin-top: 16px;
	font-weight: 600;
}

.fizjomarket-gpsr dd {
	margin: 4px 0 0;
}

.fizjomarket-gpsr dd ul {
	margin: 0;
	padding-left: 20px;
}

.fizjomarket-gpsr__note {
	font-size: 14px;
	opacity: 0.75;
}

/* Przyklejony pasek "Dodaj do koszyka" — tylko telefon */
.fizjomarket-sticky-cart {
	display: none;
}

@media (max-width: 767px) {
	.fizjomarket-sticky-cart {
		position: fixed;
		right: 0;
		bottom: 0;
		left: 0;
		z-index: 50;
		display: flex;
		align-items: center;
		gap: 12px;
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
		background: var(--theme-palette-color-8);
		box-shadow: 0 -2px 12px rgba(20, 38, 36, 0.12);
		transform: translateY(100%);
		transition: transform 0.25s ease;
	}

	.fizjomarket-sticky-cart.is-visible {
		transform: translateY(0);
	}

	.fizjomarket-sticky-cart__info {
		display: flex;
		flex: 1;
		flex-direction: column;
		min-width: 0;
		line-height: 1.3;
	}

	.fizjomarket-sticky-cart__name {
		overflow: hidden;
		font-size: 13px;
		white-space: nowrap;
		text-overflow: ellipsis;
	}

	.fizjomarket-sticky-cart__price {
		font-size: 16px;
		font-weight: 700;
	}

	/* 44 px = minimalny wygodny cel dotyku; selektor mocniejszy niż ".woocommerce button.button" (0,2,1) */
	.fizjomarket-sticky-cart .fizjomarket-sticky-cart__button.button {
		flex-shrink: 0;
		min-height: 44px;
	}

	/* Stopka strony nie chowa się pod paskiem */
	body.has-fizjomarket-sticky-cart {
		padding-bottom: 72px;
	}
}

/* ===== Poprawki z audytu UX 2026-09-29 (audyty/2026-09-29 Audyt UX fizjomarket.pl.md) ===== */

/* P1-8: informacje zaufania pod przyciskiem zakupu */
.fizjomarket-trust {
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
	font-size: 14px;
	line-height: 1.5;
}

.fizjomarket-trust li {
	position: relative;
	padding: 4px 0 4px 24px;
}

.fizjomarket-trust li::before {
	content: "✓";
	position: absolute;
	left: 0;
	font-weight: 700;
	color: var(--theme-palette-color-1);
}

/* P1-2: koszyk — kupon schowany pod linkiem, bez "Zaktualizuj koszyk" (ilość aktualizuje się sama) */
.woocommerce-cart .woocommerce-cart-form .coupon {
	display: none;
}

.woocommerce-cart .woocommerce-cart-form .coupon.is-open {
	display: flex;
	gap: 8px;
}

.woocommerce-cart .woocommerce-cart-form button[name="update_cart"] {
	display: none;
}

.fizjomarket-coupon-toggle {
	min-height: 44px;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font-size: 15px;
	text-decoration: underline;
	cursor: pointer;
}

/* Dodatkowy przycisk "Przejdź do zamówienia" nad tabelą koszyka — tylko telefon */
.fizjomarket-cart-top-cta {
	display: none !important; /* .button z Blocksy/WooCommerce ustawia display: inline-flex */
}

/* P1-4: pole "Kraj" ukryte — sprzedajemy tylko do Polski, wartość PL i tak jest wysyłana.
   !important: JS WooCommerce (adresy) wpisuje polu display w atrybut style */
#billing_country_field,
#shipping_country_field {
	display: none !important;
}

/* Pole uwag: Blocksy ustawia textarea sztywne 170 px — atrybut rows nie wystarcza */
#order_comments {
	height: 72px;
	min-height: 72px;
}

/* Linki stopki i breadcrumbs: min. 24 px wysokości także na komputerze (WCAG 2.5.8) */
#footer-menu .menu a,
.ct-breadcrumbs a {
	display: inline-block;
	padding-top: 6px;
	padding-bottom: 6px;
}

/* P2-5: symbol waluty w tym samym rozmiarze co kwota */
.woocommerce-Price-currencySymbol {
	font-size: inherit;
}

@media (max-width: 767px) {
	.fizjomarket-cart-top-cta {
		display: flex !important;
		justify-content: center;
		width: 100%;
		min-height: 48px;
		margin: 0 0 16px;
	}

	/* P1-5: cele dotyku min. 44×44 px. Globalnie: wszystkie przyciski Blocksy i pole ilości 48 px */
	:root {
		--theme-button-min-height: 48px;
		--theme-form-field-height: 48px;
	}

	/* Karta produktu: Blocksy (global.css) ustawia formularzowi zakupu 40 px poniżej 690 px — pole ilości dziedziczy tę zmienną */
	.entry-summary-items > .ct-product-add-to-cart > form.cart {
		--theme-button-min-height: 48px;
	}

	.quantity,
	/* koszyk: Blocksy ma tu regułę o wadze 4 klas (38 px na małych ekranach) */
	.woocommerce-cart .cart_item .product-mobile-actions .quantity[data-type] {
		--quantity-height: 48px;
	}

	.product_meta a,
	ul.entry-meta li a {
		display: inline-block;
		padding: 12px 0;
	}

	.ct-header-trigger,
	.ct-header-cart .ct-cart-item,
	#offcanvas .ct-toggle-close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-width: 44px;
		min-height: 44px;
	}

	.woocommerce-cart a.remove {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
	}

	.woocommerce-checkout input[type="checkbox"],
	.woocommerce-cart input[type="checkbox"],
	#ship-to-different-address input[type="checkbox"] {
		flex-shrink: 0;
		width: 24px;
		height: 24px;
		margin: 0 10px 0 0; /* odstęp od tekstu tu, nie gap etykiety — patrz niżej */
	}

	.woocommerce-checkout .form-row label.checkbox,
	.woocommerce-checkout .woocommerce-form__label-for-checkbox {
		display: flex;
		align-items: flex-start;
		gap: 0; /* WooCommerce wstawia &nbsp; przed gwiazdką — przy gap liczyłby się jak osobny element (24 px dziury) */
		min-height: 44px;
		padding: 10px 0;
		line-height: 1.4;
	}

	#footer-menu .menu a {
		display: inline-block;
		padding: 13px 8px; /* 44 px wysokości (audyt 4, P3) */
		font-size: 14px;
		text-transform: none;
	}

	.ct-breadcrumbs {
		font-size: 14px;
	}

	/* MailPoet nadaje stylom formularza selektor z #id — bez !important nie da się ich nadpisać */
	.mailpoet_form input.mailpoet_text,
	.mailpoet_form input.mailpoet_submit {
		min-height: 48px !important;
	}

	/* P1-7: hierarchia nagłówków — H2 nie może być większy niż H1 */
	body h2 {
		font-size: 24px;
		line-height: 1.25;
	}

	body h3 {
		font-size: 20px;
		line-height: 1.3;
	}

	.single-product .product_title {
		font-size: 28px;
		line-height: 1.2;
	}

	.single-product .woocommerce-Tabs-panel h2 {
		margin: 24px 0 8px;
		font-size: 20px;
	}

	/* Audyt 2 P1-2: tytuł karty produktu poniżej nagłówka sekcji (24 px) — reguła "body h2" wyżej go powiększała */
	body h2.woocommerce-loop-product__title {
		font-size: 18px;
		line-height: 1.35;
		hyphens: none;
	}
}

/* Audyt 2 P1-2: cena na karcie produktu wyraźniejsza niż etykiety (była 15 px) — wszystkie szerokości */
[data-products] .price {
	font-size: 17px;
	font-weight: 700;
	color: var(--theme-palette-color-4);
}

/* Audyt 2 P1-3: komputer — nazwa produktu (H1) większa niż nagłówki opisu (H2 były 35 px, H1 30 px) */
@media (min-width: 768px) {
	.single-product .product_title {
		font-size: 36px;
		line-height: 1.15;
	}

	.single-product .woocommerce-Tabs-panel h2 {
		margin: 32px 0 12px;
		font-size: 24px;
	}
}

/* P2-8: najczęstsze pytania (bloki "details") — cały wiersz klikalny, min. 44 px */
.wp-block-details {
	border-bottom: 1px solid var(--theme-palette-color-5);
}

.wp-block-details summary {
	min-height: 44px;
	padding: 12px 0;
	font-weight: 600;
	cursor: pointer;
}

/* ===== Audyt 2 (2026-09-29), P2 ===== */

/* P2-1: gwiazdka pól obowiązkowych — #ff0000 miała 3,74:1; ciepła czerwień 6,53:1 */
.woocommerce form .form-row .required {
	color: #a3302a;
}

/* P2-7: nazwa produktu w koszyku — cel dotyku min. 24 px (był 20 px) */
.woocommerce-cart-form .product-name a {
	display: inline-block;
	padding: 6px 0;
}

@media (max-width: 767px) {
	/* P2-6: breadcrumbs w jednej linii — bez ostatniego elementu (dubluje nazwę produktu w H1) */
	.single-product .ct-breadcrumbs > .last-item,
	.single-product .ct-breadcrumbs > span:nth-last-child(2) > .ct-separator {
		display: none;
	}

	/* P2-3: sklep w 2 kolumnach (157 px) — krótsze tytuły i przycisk "Dodaj do koszyka" w jednej linii */
	body.woocommerce-shop h2.woocommerce-loop-product__title,
	body.tax-product_cat h2.woocommerce-loop-product__title,
	.cross-sells h2.woocommerce-loop-product__title {
		font-size: 16px;
		line-height: 1.3;
	}

	/* Nagłówek sklepu/kategorii (hero typ 2): na telefonie kompaktowy pas zamiast 250 px + 50 px odstępu —
	   pierwsze produkty wyżej o ~180 px */
	.hero-section[data-type="type-2"] > [class*="ct-container"] {
		min-height: 0;
		padding: 28px 0;
	}

	.hero-section[data-type="type-2"] .page-title {
		font-size: 26px;
	}

	.hero-section[data-type="type-2"] + .ct-container[data-vertical-spacing*="top"] {
		padding-top: 24px;
	}

	body.woocommerce-shop [data-products] .button,
	body.tax-product_cat [data-products] .button,
	.cross-sells [data-products] .button {
		--theme-button-padding: 5px 10px;
		font-size: 14px;
		white-space: nowrap;
	}
}

/* ===== Kontrola układu 2026-09-29 (telefon 390 px, komputer 1280 px) ===== */

/* Blok "Wybrane produkty" na stronie głównej (wc-block-grid) ma atrybut data-products="[ID…]",
   który Blocksy bierze za swoją siatkę sklepu — cała lista lądowała w 1 z 2 kolumn (telefon)
   albo 1 z 3 (tablet). Opakowanie jako zwykły blok; układ produktów zostaje z WooCommerce. */
.wc-block-grid[data-products] {
	display: block;
}

/* Komunikaty WooCommerce w palecie sklepu */
body .woocommerce-info,
body .woocommerce-message,
body .woocommerce-error {
	border-color: transparent;
	color: var(--theme-palette-color-3);
}

body .woocommerce-info {
	background-color: var(--theme-palette-color-6);
}

body .woocommerce-message {
	background-color: var(--fizjomarket-success-bg);
}

body .woocommerce-error {
	background-color: #f6e3df;
}

/* Wysuwane menu (telefon): jasny panel w palecie zamiast domyślnego prawie czarnego rgba(18, 21, 25, .98).
   Blocksy ustawia tło selektorem [data-header*="type-1"] #offcanvas .ct-panel-inner — "html" daje przewagę */
html [data-header] #offcanvas .ct-panel-inner {
	background-color: var(--theme-palette-color-7);
	box-shadow: -8px 0 24px rgba(20, 38, 36, 0.12);
}

#offcanvas .mobile-menu,
#offcanvas .ct-toggle-close {
	--theme-link-initial-color: var(--theme-palette-color-4);
	--theme-link-hover-color: var(--theme-palette-color-2);
	--theme-link-active-color: var(--theme-palette-color-2);
	--theme-icon-color: var(--theme-palette-color-4);
	--theme-icon-hover-color: var(--theme-palette-color-2);
}

/* Gwiazdka przy "akceptuję regulamin" przy tekście, nie na prawym brzegu */
.woocommerce-form__label-for-checkbox .woocommerce-terms-and-conditions-checkbox-text {
	flex: 0 1 auto;
}

@media (min-width: 768px) {
	/* Hierarchia nagłówków na komputerze: H1 stron 40 px > H2 30 px > H3 22 px (było 30 / 35 / 30) */
	body h2 {
		font-size: 30px;
		line-height: 1.25;
	}

	body h3 {
		font-size: 22px;
		line-height: 1.3;
	}

	.page-title {
		font-size: 40px;
		line-height: 1.15;
	}

	/* Długość linii ~80 znaków zamiast ~150: strony informacyjne (tytuł i treść w jednej kolumnie) i opis produktu */
	body.page:not(.home):not(.woocommerce-cart):not(.woocommerce-checkout):not(.woocommerce-account) article,
	.woocommerce-Tabs-panel {
		--theme-block-max-width: 760px;
		--wp--style--global--content-size: 760px; /* tej zmiennej używa układ "constrained" WordPressa */
	}

	/* Akapity sekcji strony głównej (hero, "O Fizjomarket", newsletter) — max. ~80 znaków w linii */
	.home .entry-content > .wp-block-group > p {
		max-width: 640px;
	}
}

/* ===================================================================================
   System wizualny — od 2026-10-14 w kolorach marki Fizjomarket (content/marka/README.md): głęboka morska zieleń,
   koralowy akcent, mięta i piasek; układ z Soremi (szeryfowe nagłówki,
   białe karty z obramowaniem, zaokrąglone przyciski, pasek zaufania). Mobile-first.
   =================================================================================== */

/* Fonty z theme/fizjomarket/fonts (OFL): Inter — tekst, Source Serif 4 — nagłówki. Zmienne (wght), latin + latin-ext */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("fonts/inter-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("fonts/inter-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: "Source Serif 4";
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	src: url("fonts/source-serif-4-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Source Serif 4";
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	src: url("fonts/source-serif-4-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Tokeny poza paletą Blocksy. Kontrast (WCAG): przyciski #0e6b63/biały 6,4:1, tekst 10,8:1, tekst pomocniczy 5,6:1 (na mięcie 5,1:1) */
:root {
	--fizjomarket-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
	--fizjomarket-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fizjomarket-mint: #e3efeb;         /* etykiety, ikony w kółkach, pasek zaufania */
	--fizjomarket-mist: #f2f7f5;         /* tło zdjęć na kartach, stopka */
	--fizjomarket-sand: #f6f1ea;         /* ciepłe tło sekcji (ciepło = masaż z grzaniem) */
	--fizjomarket-coral: #e07a52;        /* akcent marki — tylko dekoracja (kropki, ikony), nie tekst: 3,0:1 */
	--fizjomarket-ink-dark: #0a4f49;     /* ciemna zieleń: tekst na mięcie (8,1:1) */
	--fizjomarket-line-strong: #b9d3cc;  /* obramowanie po najechaniu, przycisk z obrysem */
	--fizjomarket-muted: #5e6b68;        /* tekst pomocniczy */
	--fizjomarket-success-bg: #e4f4ea;   /* "darmowa dostawa osiągnięta", komunikat dodania do koszyka */
	--fizjomarket-radius: 16px;          /* karty */
	--fizjomarket-radius-sm: 10px;       /* pola formularzy */
	--fizjomarket-shadow: 0 8px 24px rgba(14, 60, 56, 0.08);
	--fizjomarket-band: linear-gradient(135deg, #eef5f2 0%, #e3efeb 50%, #f6f1ea 100%);

	--theme-font-family: var(--fizjomarket-sans);
	--theme-line-height: 1.6;
	--theme-button-border-radius: 999px;
	--theme-button-font-weight: 600;
	--theme-form-field-border-radius: var(--fizjomarket-radius-sm);
	-webkit-font-smoothing: antialiased;
}

/* Nagłówki szeryfowe, półgrube, ciasne — jak we wzorach. Tytuły kart produktów zostają bezszeryfowe (niżej) */
h1,
h2,
h3,
h4,
.page-title,
.product_title {
	--theme-font-family: var(--fizjomarket-serif);
	--theme-font-weight: 600;
	--theme-line-height: 1.2;
	letter-spacing: -0.01em;
}

h5,
h6 {
	--theme-font-weight: 600;
}

/* Przyciski: zielone "pigułki". Blok przycisków WordPressa (strona główna) i siatka bloków WooCommerce
   mają własne style — wyrównane do przycisków Blocksy */
.wp-block-button__link {
	border-radius: 999px;
	font-weight: 600;
}

.button,
.wp-block-button__link {
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.button:hover,
.wp-block-button__link:hover {
	box-shadow: 0 6px 16px rgba(14, 107, 99, 0.25);
}

/* Przycisk drugorzędny (obrys) — .is-style-outline na stronie głównej */
.wp-block-button.is-style-outline > .wp-block-button__link {
	border: 1.5px solid var(--fizjomarket-line-strong);
	background: var(--theme-palette-color-8);
	color: var(--theme-palette-color-4);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	border-color: var(--theme-palette-color-1);
	color: var(--theme-palette-color-1);
	box-shadow: none;
}

/* ---------- Pasek zaufania nad nagłówkiem (inc/design.php) ---------- */

.fizjomarket-topbar {
	background: var(--fizjomarket-mint);
	color: var(--theme-palette-color-4);
	font-size: 13px;
	font-weight: 500;
	line-height: 1.3;
}

.fizjomarket-topbar__list {
	display: flex;
	justify-content: center;
	gap: 40px;
	max-width: var(--theme-normal-container-max-width, 1290px);
	margin: 0 auto;
	padding: 9px 16px;
	list-style: none;
}

.fizjomarket-topbar__list li {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
}

.fizjomarket-topbar .fizjomarket-icon {
	flex-shrink: 0;
	color: var(--theme-palette-color-1);
}

@media (max-width: 767px) {
	.fizjomarket-topbar__list li:not(:first-child) {
		display: none;
	}
}

/* ---------- Nagłówek ---------- */

.ct-header [data-row="middle"] {
	border-bottom: 1px solid var(--theme-palette-color-5);
}

/* Menu: zwykłe litery 15 px zamiast wersalików 12 px z Blocksy */
[data-header] .ct-header [data-id="menu"] > ul > li > a {
	--theme-font-size: 15px;
	--theme-font-weight: 500;
	--theme-text-transform: none;
	--theme-link-initial-color: var(--theme-palette-color-4);
	--theme-link-hover-color: var(--theme-palette-color-1);
}

[data-header] #offcanvas [data-id="mobile-menu"] {
	--theme-font-family: var(--fizjomarket-serif);
	--theme-font-size: 24px;
	--theme-font-weight: 500;
}

/* ---------- Karty produktów: siatka bloków (strona główna) i siatka Blocksy (sklep, upsell) ---------- */

.wc-block-grid .wc-block-grid__products li.wc-block-grid__product,
[data-products] > li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: 10px 10px 14px;
	border: 1px solid var(--theme-palette-color-5);
	border-radius: var(--fizjomarket-radius);
	background: var(--theme-palette-color-8);
	text-align: left;
	transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

.wc-block-grid .wc-block-grid__products li.wc-block-grid__product:hover,
[data-products] > li.product:hover {
	border-color: var(--fizjomarket-line-strong);
	box-shadow: var(--fizjomarket-shadow);
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-image,
[data-products] > li.product figure {
	position: relative;
	overflow: hidden;
	margin: 0 0 12px;
	border-radius: 12px;
	background: var(--fizjomarket-mist);
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-image img,
[data-products] > li.product figure img {
	border-radius: 12px;
	transition: transform 0.4s ease;
}

.wc-block-grid .wc-block-grid__products li.wc-block-grid__product:hover .wc-block-grid__product-image img,
[data-products] > li.product:hover figure img {
	transform: scale(1.03);
}

.fizjomarket-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 2;
	padding: 5px 10px;
	border-radius: 999px;
	background: var(--fizjomarket-mint);
	color: var(--fizjomarket-ink-dark);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.2;
}

/* W siatce Blocksy etykieta jest przed <figure> — pozycjonowana względem karty */
[data-products] > li.product > .fizjomarket-badge {
	top: 20px;
	left: 20px;
}

.fizjomarket-card-brand {
	margin: 0 0 2px;
	color: var(--theme-palette-color-4);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.01em;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-title,
[data-products] .woocommerce-loop-product__title {
	--theme-font-family: var(--fizjomarket-sans);
	--theme-font-weight: 500;
	margin: 0 0 8px;
	font-family: var(--fizjomarket-sans);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: 0;
	color: var(--theme-palette-color-3);
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-link {
	color: inherit;
	text-decoration: none;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-price,
[data-products] .price {
	margin-top: auto; /* ceny i przyciski w jednej linii niezależnie od długości nazwy */
	margin-right: 0;
	margin-bottom: 12px;
	margin-left: 0; /* WooCommerce centruje cenę marginesami auto */
	text-align: left;
	font-size: 17px;
	font-weight: 700;
	color: var(--theme-palette-color-4);
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-add-to-cart,
[data-products] .ct-woo-card-actions {
	margin: 0;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-add-to-cart .wp-block-button__link,
[data-products] .ct-woo-card-actions .button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 44px;
	margin: 0;
	padding: 8px 12px;
	border-radius: 999px;
	background: var(--theme-palette-color-1);
	color: #fff;
	font-size: 14px;
	white-space: nowrap;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product-add-to-cart .wp-block-button__link:hover {
	background: var(--theme-palette-color-2);
	color: #fff;
}

@media (max-width: 767px) {
	/* Strona główna na telefonie: karty w poziomym pasku — pierwsza cała na pierwszym ekranie, następna
	   wystaje (widać, że jest więcej). Zamiast 3 kart jedna pod drugą (3 ekrany przewijania) */
	/* .has-N-columns: WooCommerce ustawia liście display: block regułą o wadze 3 klas */
	.home .wc-block-grid.has-3-columns .wc-block-grid__products,
	.home .wc-block-grid.has-4-columns .wc-block-grid__products {
		display: flex;
		flex-wrap: nowrap;
		gap: 12px;
		margin: 0 -16px;
		padding: 0 16px 8px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scroll-padding: 0 16px;
		scrollbar-width: none;
	}

	.home .wc-block-grid .wc-block-grid__products::-webkit-scrollbar {
		display: none;
	}

	.home .wc-block-grid .wc-block-grid__products li.wc-block-grid__product {
		flex: 0 0 58%;
		max-width: 58%;
		margin: 0;
		scroll-snap-align: start;
	}

	[data-products] > li.product {
		padding: 8px 8px 12px;
	}

	/* Tytuły kart 14 px bezszeryfowe (wcześniejsze reguły z audytów dawały 16–18 px) */
	body h2.woocommerce-loop-product__title,
	body.woocommerce-shop h2.woocommerce-loop-product__title,
	body.tax-product_cat h2.woocommerce-loop-product__title,
	.cross-sells h2.woocommerce-loop-product__title {
		font-size: 14px;
		line-height: 1.35;
	}

	body.woocommerce-shop [data-products] .button,
	body.tax-product_cat [data-products] .button {
		font-size: 13px;
	}
}

@media (min-width: 768px) {
	/* WooCommerce: .wc-block-grid.has-3-columns:not(.alignwide):not(.alignfull) … = 33,33% bez odstępów */
	.wc-block-grid.has-3-columns:not(.alignwide):not(.alignfull) .wc-block-grid__products li.wc-block-grid__product {
		flex: 1 0 calc(33.333% - 16px);
		max-width: calc(33.333% - 16px);
		margin: 0 8px 16px;
	}

	.wc-block-grid .wc-block-grid__products li.wc-block-grid__product,
	[data-products] > li.product {
		padding: 12px 12px 18px;
	}

	.wc-block-grid .wc-block-grid__products .wc-block-grid__product-title,
	[data-products] .woocommerce-loop-product__title {
		font-size: 16px;
	}
}

/* ---------- Karta produktu ---------- */

.single-product .woocommerce-product-gallery img {
	border-radius: var(--fizjomarket-radius);
}

.single-product .entry-summary .price {
	color: var(--theme-palette-color-4);
}

.single-product .fizjomarket-trust {
	padding: 12px 16px;
	border-radius: 12px;
	background: var(--fizjomarket-mist);
}

/* Zakładki opisu: zwykłe litery zamiast wersalików 12 px */
.woocommerce-tabs .tabs {
	--theme-font-size: 15px;
	--theme-text-transform: none;
}

.onsale {
	border-radius: 999px;
}

/* ---------- Koszyk, zamówienie, komunikaty ---------- */

.woocommerce-cart .cart_totals,
.woocommerce-checkout #order_review,
.woocommerce-checkout .ct-order-review {
	border-radius: var(--fizjomarket-radius);
}

/* Breadcrumbs: spokojne, bez wersalików — nie konkurują z nazwą produktu */
.ct-breadcrumbs {
	--theme-font-weight: 500;
	--theme-text-transform: none;
	--theme-link-initial-color: var(--fizjomarket-muted);
	--theme-link-hover-color: var(--theme-palette-color-1);
	color: var(--fizjomarket-muted);
}

.fizjomarket-free-shipping {
	border-radius: 12px;
	background: var(--fizjomarket-mist);
}

body .woocommerce-info,
body .woocommerce-message,
body .woocommerce-error {
	border-radius: 12px;
}

body .woocommerce-info {
	background-color: var(--fizjomarket-mist);
}

/* Wybór Paczkomatu (wtyczka InPost PL, resources/assets/css/front.css): w palecie sklepu zamiast żółtego
   przycisku z czarnym cieniem i zielonego podświetlenia. Wiersz na całą szerokość tabeli:
   woocommerce/checkout/easypack-review-order-after-shipping.php (colspan="2") */
.woocommerce-checkout td.easypack-parcel-machine-select {
	text-align: start;
}

/* !important: wtyczka dokleja w <head> `.easypack_show_geowidget { background: … !important }`
   z koloru przycisku w swoich ustawieniach */
.woocommerce-checkout #easypack_show_geowidget.easypack_show_geowidget {
	max-width: none;
	margin: 4px 0 12px;
	padding: 14px 20px;
	border-radius: var(--theme-button-border-radius, 999px);
	background: var(--theme-button-background-initial-color, var(--theme-palette-color-1)) !important;
	box-shadow: none !important;
	color: var(--theme-button-text-initial-color, #fff);
	font-size: 15px !important;
	font-weight: 600;
	line-height: 1.3;
}

.woocommerce-checkout #easypack_show_geowidget.easypack_show_geowidget:hover {
	background: var(--theme-button-background-hover-color, var(--theme-palette-color-2)) !important;
}

.woocommerce-checkout #easypack_selected_point_data,
.woocommerce-checkout #selected-parcel-machine {
	margin: 0;
	padding: 12px 14px;
	border: 1px solid var(--theme-palette-color-5);
	border-radius: 12px;
	background: var(--fizjomarket-mist);
	font-size: 14px;
	line-height: 1.5;
	text-align: start;
}

.woocommerce-checkout .easypack-visible-point-header,
.woocommerce-checkout .ep-chosen-parcel-machine {
	margin-bottom: 4px;
	padding: 0;
	background: none;
	font-style: normal;
}

/* ---------- Strona główna (content/strona-glowna.html, klasy fizjomarket-*) — układ wzoru 2 z content/design/ ---------- */

/* Odstępy sekcji w jednym miejscu (bloki nie mają własnych paddingów) */
.home .entry-content > .wp-block-group {
	margin-top: 0;
	margin-bottom: 0;
	padding: 0 16px clamp(36px, 6vw, 72px);
}

.home .entry-content > .fizjomarket-hero {
	padding: 0 16px;
}

/* Hero: tekst po lewej, zdjęcie modelki po prawej, wtopione w miętowo-piaskowe tło (maska od lewej).
   Telefon: zdjęcie zostaje, ale jako tło prawej połowy — pierwsze produkty mają być blisko pierwszego ekranu */
.fizjomarket-hero {
	position: relative;
	overflow: hidden;
	background: var(--fizjomarket-band);
}

/* Kolumny i kolumna zdjęcia bez position — zdjęcie pozycjonuje się względem całej sekcji (od krawędzi ekranu) */
.fizjomarket-hero__cols {
	position: static;
	align-items: stretch;
	gap: 0;
	margin: 0;
}

.fizjomarket-hero__text {
	position: relative;
	z-index: 2;
	align-self: center;
	padding: clamp(28px, 6vw, 80px) 0;
}

.fizjomarket-hero h1 {
	margin: 0 0 14px;
	font-size: clamp(30px, 4.6vw, 56px);
	line-height: 1.1;
}

.fizjomarket-hero__text > p {
	max-width: 460px;
	margin: 0 0 22px;
	font-size: 17px;
}

.fizjomarket-hero .wp-block-buttons {
	gap: 10px;
}

.fizjomarket-hero__media {
	position: static;
	min-height: 560px;
}

/* Zdjęcie na całą prawą połowę sekcji, do krawędzi ekranu (jawna szerokość: <img> z samymi left/right
   brałby własną szerokość i urywał się w połowie). Lewa krawędź wtopiona w tło maską */
.fizjomarket-hero__photo {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	width: 56%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 28%;
	-webkit-mask-image: linear-gradient(to right, transparent 0, #000 26%);
	mask-image: linear-gradient(to right, transparent 0, #000 26%);
}

/* Szerokie ekrany (laptop, monitor 24–27"): zdjęcie na pół ekranu było poziomym wycinkiem pionowego portretu —
   samo zbliżenie oczu i ust. Tu pionowy kadr jak na telefonie (twarz, dłoń, ramię), dosunięty do prawej
   krawędzi treści i wtopiony w tło z obu stron; sekcja rośnie z ekranem, żeby kadr nie był wąski */
@media (min-width: 1000px) {
	.fizjomarket-hero__media {
		min-height: clamp(560px, 38vw, 720px);
	}

	.fizjomarket-hero__photo {
		right: max(16px, calc(50% - 600px));
		width: auto;
		max-width: 50%;
		aspect-ratio: 3 / 4;
		object-position: 42% 18%;
		-webkit-mask-image: linear-gradient(to right, transparent 0, #000 24%, #000 88%, transparent 100%);
		mask-image: linear-gradient(to right, transparent 0, #000 24%, #000 88%, transparent 100%);
	}
}

.fizjomarket-hero__points {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	margin: 22px 0 0;
	padding: 0;
	list-style: none;
	font-size: 13px;
}

.fizjomarket-hero__points li {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
}

.fizjomarket-hero__points .fizjomarket-icon {
	color: var(--theme-palette-color-1);
}

@media (max-width: 781px) {
	/* WordPress na telefonie: .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column
	   { flex-basis: 100% !important } (waga 3 klas) — tu 4 klasy */
	.fizjomarket-hero .wp-block-columns.fizjomarket-hero__cols {
		flex-wrap: nowrap !important;
	}

	.fizjomarket-hero .wp-block-columns.fizjomarket-hero__cols > .wp-block-column.fizjomarket-hero__text {
		flex-basis: 60% !important;
		max-width: 60%;
		padding: 28px 0 26px;
	}

	.fizjomarket-hero .wp-block-columns.fizjomarket-hero__cols > .wp-block-column.fizjomarket-hero__media {
		flex-basis: 0 !important;
		min-height: 0;
	}

	.fizjomarket-hero__photo {
		width: 58%;
		object-position: 42% 18%;
		-webkit-mask-image: linear-gradient(to right, transparent 0, rgba(0, 0, 0, 0.55) 30%, #000 60%);
		mask-image: linear-gradient(to right, transparent 0, rgba(0, 0, 0, 0.55) 30%, #000 60%);
	}

	.fizjomarket-hero h1 {
		font-size: 28px;
	}

	.fizjomarket-hero__text > p {
		margin-bottom: 16px;
		font-size: 14px;
		line-height: 1.5;
	}

	.fizjomarket-hero .wp-block-buttons {
		flex-direction: column;
		align-items: stretch;
		max-width: 200px;
		gap: 8px;
	}

	.fizjomarket-hero .wp-block-button__link {
		width: 100%;
		min-height: 44px;
		padding: 8px 16px;
		font-size: 14px;
	}

	/* Te same informacje są w pasku nad nagłówkiem */
	.fizjomarket-hero__points {
		display: none;
	}
}

/* Kafelki potrzeb skóry → nasze produkty. Tło: zbliżenia z naszych zdjęć produktów (krem, kwiaty) */
.fizjomarket-needs-section {
	padding-top: 20px !important;
}

.fizjomarket-needs-title {
	margin: 0 0 16px;
}

.fizjomarket-needs {
	display: grid;
	grid-template-columns: repeat(5, 1fr); /* partie ciała z scripts/create-products.sh */
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.fizjomarket-needs li {
	margin: 0;
}

.fizjomarket-needs a {
	display: block;
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--theme-palette-color-5);
	border-radius: var(--fizjomarket-radius);
	background: var(--theme-palette-color-8);
	color: inherit;
	text-decoration: none;
	transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

.fizjomarket-needs a:hover {
	border-color: var(--fizjomarket-line-strong);
	box-shadow: var(--fizjomarket-shadow);
}

.fizjomarket-needs__img {
	display: block;
	aspect-ratio: 16 / 10;
	background-color: var(--fizjomarket-mist);
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
}

.fizjomarket-needs strong {
	display: block;
	padding: 12px 14px 0;
	color: var(--theme-palette-color-4);
	font-family: var(--fizjomarket-serif);
	font-size: 18px;
	font-weight: 600;
}

.fizjomarket-needs strong + span {
	display: block;
	padding: 2px 14px 14px;
	color: var(--fizjomarket-muted);
	font-size: 13px;
}

@media (max-width: 781px) {
	/* Poziomy pasek, jak karty produktów */
	.fizjomarket-needs {
		display: flex;
		gap: 10px;
		margin: 0 -16px;
		padding: 0 16px 6px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scroll-padding: 0 16px;
		scrollbar-width: none;
	}

	.fizjomarket-needs::-webkit-scrollbar {
		display: none;
	}

	.fizjomarket-needs li {
		flex: 0 0 42%;
		scroll-snap-align: start;
	}

	.fizjomarket-needs strong {
		padding: 10px 12px 0;
		font-size: 16px;
	}

	.fizjomarket-needs strong + span {
		padding: 2px 12px 12px;
		font-size: 12px;
	}
}

/* Na telefonie produkty zaraz pod hero (DECISIONS.md, Mobile-first), kafelki potrzeb pod nimi.
   Na komputerze kolejność jak we wzorze: hero → kafelki → produkty */
@media (max-width: 781px) {
	.home .entry-content {
		display: flex;
		flex-direction: column;
	}

	.home .entry-content > * {
		order: 3;
		width: 100%;
	}

	.home .entry-content > .fizjomarket-hero {
		order: 1;
	}

	.home .entry-content > .fizjomarket-products {
		order: 2;
		padding-top: 24px;
	}
}

/* Nagłówek sekcji z linkiem "Wszystkie" po prawej */
.fizjomarket-section-head {
	align-items: baseline;
	justify-content: space-between;
	margin-bottom: 16px;
}

.fizjomarket-section-head h2 {
	margin: 0;
}

.fizjomarket-section-head p {
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	white-space: nowrap;
}

.fizjomarket-section-head a,
.fizjomarket-link {
	color: var(--theme-palette-color-1);
	font-weight: 600;
	text-decoration: none;
}

.fizjomarket-section-head a:hover,
.fizjomarket-link:hover {
	text-decoration: underline;
}

@media (max-width: 781px) {
	.fizjomarket-section-head {
		margin-bottom: 12px;
	}

	.fizjomarket-section-head h2 {
		font-size: 22px;
		white-space: nowrap;
	}
}

/* Baner produktu: tekst | zdjęcie | lista działania (wzór: "Retinal bez kompromisów") */
.fizjomarket-spot {
	display: grid;
	grid-template-columns: 1.1fr 1fr 1fr;
	align-items: center;
	gap: 32px;
	padding: clamp(24px, 4vw, 48px);
	border-radius: 24px;
	background: var(--fizjomarket-band);
}

.fizjomarket-eyebrow {
	margin: 0 0 6px;
	color: var(--theme-palette-color-1);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.fizjomarket-spot h2 {
	margin: 0 0 12px;
	font-size: clamp(28px, 3.6vw, 44px);
	line-height: 1.1;
}

.fizjomarket-spot__text p {
	margin: 0 0 18px;
}

.fizjomarket-spot__text p:last-child {
	margin: 0;
}

.fizjomarket-spot .wp-block-button__link {
	display: inline-flex;
	padding: 12px 24px;
	background: var(--theme-palette-color-1);
	color: #fff;
	text-decoration: none;
}

.fizjomarket-spot .wp-block-button__link:hover {
	background: var(--theme-palette-color-2);
}

.fizjomarket-spot__img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 20px;
	box-shadow: 0 20px 48px rgba(14, 60, 56, 0.14);
}

.fizjomarket-spot__list {
	display: grid;
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.fizjomarket-spot__list li {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0;
	color: var(--theme-palette-color-4);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.35;
}

.fizjomarket-spot__dot {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--theme-palette-color-8);
	color: var(--fizjomarket-coral); /* akcent marki, dekoracja (aria-hidden) */
	font-size: 14px;
}

@media (max-width: 781px) {
	.fizjomarket-spot {
		grid-template-columns: 1fr;
		gap: 20px;
	}

	.fizjomarket-spot__img {
		order: -1;
		aspect-ratio: 16 / 10;
	}
}

/* Dopisek pod poradnikiem: masażer nie zastępuje fizjoterapii */
.fizjomarket-note {
	margin: 0 0 20px;
	padding-left: 14px;
	border-left: 3px solid var(--fizjomarket-coral);
	color: var(--fizjomarket-muted);
	font-size: 14px;
	line-height: 1.5;
}

/* Sekcja z poradnikiem (dawniej "Duet"): jasna karta z zaokrąglonymi rogami */
.fizjomarket-duo {
	padding: clamp(24px, 4vw, 48px);
	border: 1px solid var(--theme-palette-color-5);
	border-radius: 24px;
	background: var(--fizjomarket-mist);
}

.fizjomarket-duo .wp-block-columns {
	align-items: center;
	gap: 40px;
	margin: 0;
}

.fizjomarket-duo__image img {
	width: 100%;
	border-radius: 20px;
}

.fizjomarket-steps {
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
	counter-reset: fizjomarket-step;
}

.fizjomarket-steps li {
	position: relative;
	margin: 0 0 14px;
	padding: 3px 0 0 44px;
	line-height: 1.45;
	counter-increment: fizjomarket-step;
}

.fizjomarket-steps li::before {
	content: counter(fizjomarket-step);
	position: absolute;
	top: 0;
	left: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--fizjomarket-mint);
	color: var(--theme-palette-color-1);
	font-size: 14px;
	font-weight: 700;
}

.fizjomarket-steps strong {
	display: block;
	color: var(--theme-palette-color-4);
}

/* Opinie klientów ([fizjomarket_opinie], inc/design.php) — sekcja znika, dopóki nie ma opinii */
.fizjomarket-reviews-section:not(:has(.fizjomarket-reviews)) {
	display: none;
}

.fizjomarket-reviews h2 {
	margin: 0 0 4px;
}

.fizjomarket-reviews__note {
	margin: 0 0 16px;
	color: var(--fizjomarket-muted);
	font-size: 14px;
}

.fizjomarket-reviews__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.fizjomarket-review {
	margin: 0;
	padding: 20px;
	border: 1px solid var(--theme-palette-color-5);
	border-radius: var(--fizjomarket-radius);
	background: var(--theme-palette-color-8);
}

.fizjomarket-review__stars {
	color: #e0a526;
	font-size: 16px;
	letter-spacing: 2px;
}

.fizjomarket-review__off {
	color: var(--theme-palette-color-5);
}

.fizjomarket-review blockquote {
	margin: 8px 0 12px;
	padding: 0;
	border: 0;
	font-size: 15px;
	font-style: normal;
}

.fizjomarket-review__meta {
	margin: 0;
	color: var(--fizjomarket-muted);
	font-size: 13px;
}

.fizjomarket-review__meta a {
	color: var(--theme-palette-color-1);
}

/* Marki: nazwy dużym szeryfem (nie logotypy marek — do nich nie mamy praw) */
.fizjomarket-brands {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 32px;
	padding: 20px 0;
	border-top: 1px solid var(--theme-palette-color-5);
	border-bottom: 1px solid var(--theme-palette-color-5);
}

.fizjomarket-brands h2 {
	margin: 0;
	font-size: 22px;
}

.fizjomarket-brands ul {
	display: flex;
	flex-wrap: wrap;
	gap: 4px clamp(24px, 4vw, 48px); /* 6 marek: na telefonie po 2–3 w wierszu */
	margin: 0;
	padding: 0;
	list-style: none;
}

.fizjomarket-brands li {
	margin: 0;
}

.fizjomarket-brands a {
	display: inline-block;
	padding: 6px 0;
	color: var(--theme-palette-color-4);
	font-family: var(--fizjomarket-serif);
	font-size: clamp(24px, 3vw, 34px);
	font-weight: 500;
	text-decoration: none;
}

.fizjomarket-brands a:hover {
	color: var(--theme-palette-color-1);
}

/* Kafelki zaufania: ikona w kółku + tytuł + opis */
.fizjomarket-features {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.fizjomarket-features li {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0;
	padding: 16px;
	border: 1px solid var(--theme-palette-color-5);
	border-radius: var(--fizjomarket-radius);
	background: var(--theme-palette-color-8);
}

.fizjomarket-features .fizjomarket-icon {
	flex-shrink: 0;
	box-sizing: content-box;
	width: 22px;
	height: 22px;
	padding: 11px;
	border-radius: 50%;
	background: var(--fizjomarket-mint);
	color: var(--theme-palette-color-1);
}

.fizjomarket-features strong {
	display: block;
	color: var(--theme-palette-color-4);
	font-size: 15px;
}

.fizjomarket-features span {
	display: block;
	color: var(--fizjomarket-muted);
	font-size: 14px;
	line-height: 1.4;
}

@media (min-width: 768px) {
	.fizjomarket-features {
		grid-template-columns: repeat(3, 1fr);
		gap: 16px;
	}
}

/* Newsletter: karta w jasnej mięcie */
.fizjomarket-newsletter {
	padding: clamp(28px, 5vw, 48px) 20px;
	border: 1px solid var(--theme-palette-color-5);
	border-radius: 24px;
	background: var(--fizjomarket-mist);
}

/* MailPoet: selektory z #id — bez !important nie da się nadpisać */
.fizjomarket-newsletter .mailpoet_form input.mailpoet_text {
	border-radius: var(--fizjomarket-radius-sm) !important;
}

.fizjomarket-newsletter .mailpoet_form input.mailpoet_submit {
	border-radius: 999px !important;
	background: var(--theme-palette-color-1) !important;
	color: #fff !important;
	font-weight: 600 !important;
}

/* ---------- Stopka ---------- */

/* Trustpilot (inc/design.php) — pas nad stopką, pokazuje się dopiero po podaniu ID konta */
.fizjomarket-trustpilot {
	max-width: 1200px;
	margin: 0 auto;
	padding: 24px 16px;
	text-align: center;
}

.fizjomarket-trustpilot__title {
	margin: 0 0 8px;
	color: var(--theme-palette-color-4);
	font-family: var(--fizjomarket-serif);
	font-size: 20px;
	font-weight: 600;
}

/* Ikona wyszukiwania: cel dotyku 15×15 → 39×39 px (WCAG 2.5.8). Blocksy: width 15 px przy border-box i
   padding: var(--toggle-button-padding) !important — content-box dokłada padding na zewnątrz;
   ujemny margines zachowuje układ (Blocksy: margin: var(--margin, 0 10px)) */
[data-header] [data-id="search"].ct-header-search {
	--toggle-button-padding: 12px;
	--margin: -12px -2px;
	box-sizing: content-box;
}

/* Bardzo wąskie telefony (320–374 px): bez kwoty przy koszyku — nachodziła na logo */
@media (max-width: 374px) {
	[data-header] .ct-header-cart .ct-label {
		display: none;
	}
}

.ct-footer {
	border-top: 1px solid var(--theme-palette-color-5);
	background: var(--fizjomarket-mist);
}

[data-footer] .ct-footer [data-id="menu"] ul {
	--theme-font-size: 14px;
	--theme-font-weight: 500;
	--theme-text-transform: none;
}

/* ===== Audyt 4 (2026-10-01) ===== */

/* P1-5: błędne pole w zamówieniu — ramka, etykieta i komunikat (inc/ux.php) w kolorze gwiazdki pól obowiązkowych
   (#a3302a, 6,53:1). Blocksy rysuje ramkę ze zmiennych ustawianych na samym polu — podmiana na polu, nie na wierszu */
.woocommerce form .form-row.woocommerce-invalid :is(input.input-text, select, textarea) {
	--theme-form-field-border-initial-color: #a3302a;
	--theme-form-field-border-focus-color: #a3302a;
}

.woocommerce form .form-row.woocommerce-invalid > label {
	color: #a3302a;
}

.woocommerce form .form-row .checkout-inline-error-message {
	margin: 6px 0 0;
	color: #a3302a;
	font-size: 14px;
	line-height: 1.4;
}

/* P1-8: pojemność i cena za litr pod ceną (inc/ux.php) */
.fizjomarket-unit-price {
	display: block;
	margin-top: 2px;
	color: var(--fizjomarket-muted);
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
}

.fizjomarket-unit-price > span {
	white-space: nowrap;
}

/* Audyt 5, P1-11: oszczędność zestawu pod ceną, link do zestawu przy składniku, zamiana w koszyku (inc/bundles.php) */
.fizjomarket-bundle-saving {
	display: block;
	margin-top: 2px;
	color: var(--fizjomarket-muted);
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
}

.fizjomarket-bundle-saving > * {
	white-space: nowrap;
}

.fizjomarket-bundle-saving strong {
	color: var(--fizjomarket-ink-dark);
	font-weight: 600;
}

.fizjomarket-bundle-hint {
	margin: 0 0 16px;
	font-size: 15px;
}

.fizjomarket-bundle-hint a {
	display: inline-block;
	padding: 10px 14px;
	border-radius: var(--fizjomarket-radius-sm);
	background: var(--fizjomarket-mint);
	color: var(--fizjomarket-ink-dark);
	font-weight: 600;
	text-decoration: none;
}

.fizjomarket-bundle-swap {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin: 0 0 16px;
	padding: 14px 16px;
	border-radius: var(--fizjomarket-radius-sm);
	background: var(--fizjomarket-mint);
}

.fizjomarket-bundle-swap p {
	flex: 1 1 220px;
	margin: 0;
	color: var(--theme-palette-color-3);
}

.fizjomarket-bundle-swap .button {
	min-height: 44px;
}

/* P1-6, P2-10: pusty wynik wyszukiwania i 404 — droga do sklepu */
.fizjomarket-dead-end {
	margin-top: 24px;
}

.fizjomarket-dead-end h2 {
	margin: 32px 0 16px;
	font-size: 22px;
}

.fizjomarket-404 {
	text-align: start;
}

.fizjomarket-404 .ct-search-form {
	max-width: 480px;
	margin: 16px 0 0;
}

/* P3: linki w tekście strony głównej — cel dotyku 44 px bez zmiany układu (padding elementu inline nie przesuwa wierszy) */
.fizjomarket-section-head a,
.fizjomarket-link,
.fizjomarket-newsletter a {
	padding-block: 12px;
}

/* P3: na komputerze te same minimalne cele co na telefonie (reguły z audytu 1 działały tylko poniżej 690 px) */
.woocommerce-cart a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 32px;
	min-height: 32px;
}

@media (min-width: 768px) {
	.woocommerce-checkout input[type="checkbox"] {
		width: 24px;
		height: 24px;
	}
}

/* Audyt 5, P1-9: kategorie nad siatką sklepu (inc/ux.php) */
.fizjomarket-cat-pills {
	display: flex;
	gap: 8px;
	margin: 0 0 24px;
	padding-bottom: 4px;
	overflow-x: auto;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.fizjomarket-cat-pills::-webkit-scrollbar {
	display: none;
}

.fizjomarket-cat-pills a {
	flex: none;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid #d9d0ee;
	border-radius: 999px;
	background: #fff;
	color: var(--theme-palette-color-3);
	font-size: 15px;
	white-space: nowrap;
	text-decoration: none;
}

.fizjomarket-cat-pills a:hover {
	border-color: var(--theme-palette-color-1);
	color: var(--theme-palette-color-1);
}

.fizjomarket-cat-pills a[aria-current="page"] {
	border-color: var(--theme-palette-color-1);
	background: var(--theme-palette-color-1);
	color: #fff;
}
