/* =========================================================================
   Tokeny kolorów strony produktu (2026-07-29)

   Powód: audyt wykazał 89 kolorów wpisanych na sztywno i ZERO zmiennych — przez co
   każda zmiana palety była ręcznym przeszukiwaniem 1600 linii, a jeden odcień tekstu
   drugorzędnego zdążył się rozjechać poniżej progu kontrastu WCAG w kilku miejscach.

   Tokenizujemy kolory MARKI (te, które muszą zmieniać się razem). Pojedyncze,
   dekoracyjne odcienie zostają wpisane wprost — token dla wartości użytej raz
   niczego nie ułatwia, a dokłada warstwę pośrednią.
   ========================================================================= */
:root {
	/* akcent */
	--ff-zloto:            #b8962e;   /* główny akcent, CTA, zaznaczenia */
	--ff-zloto-jasne:      #c59c57;   /* obrysy, stany hover */
	--ff-zloto-obrys:      #dcc68c;   /* delikatne ramki akcentowe */

	/* tekst */
	--ff-atrament:         #2b1f14;   /* tekst główny */
	--ff-atrament-mocny:   #231f1a;   /* nagłówki, najwyższy kontrast */
	--ff-brzoz:            #5a3a10;   /* etykiety i akcenty tekstowe */
	--ff-tekst-drugi:      #6b5636;   /* tekst drugorzędny — przechodzi WCAG AA */
	--ff-tekst-cichy:      #6f665a;   /* podpisy, metadane */

	/* powierzchnie */
	--ff-biel:             #fff;
	--ff-biel-cieplo:      #fffdf9;
	--ff-krem:             #fffaf2;

	/* linie */
	--ff-linia:            #efe4d0;
	--ff-linia-mocna:      #e5d5bc;
	--ff-linia-jasna:      #eadfce;

	/* stany */
	--ff-blad:             #c84b3f;
	--ff-brownie:          #7a4e2d;   /* wybrany wariant / stan aktywny */
}

			.ff-standard-addons {
				margin: 18px 0 6px;
				padding: 16px;
				border: 1px solid var(--ff-linia-mocna);
				border-radius: 14px;
				background: var(--ff-krem);
			}

			.ff-standard-addons__head h3 {
				margin: 0 0 2px;
				font-size: 15px;
				color: var(--ff-brzoz);
			}

			.ff-standard-addons__head p {
				margin: 0 0 12px;
				font-size: 12px;
				color: #9a7740;
			}

			.ff-standard-addons__list {
				display: grid;
				gap: 8px;
			}

			.ff-standard-addon {
				display: flex;
				align-items: center;
				gap: 10px;
				padding: 10px 12px;
				border: 1px solid var(--ff-linia-mocna);
				border-radius: 10px;
				background: var(--ff-biel);
				cursor: pointer;
				transition: border-color .15s ease, box-shadow .15s ease;
			}

			.ff-standard-addon:hover {
				border-color: #c8963e;
			}

			.ff-standard-addon input {
				margin: 0;
				flex: 0 0 auto;
			}

			.ff-standard-addon__body {
				display: flex;
				flex-direction: column;
				flex: 1 1 auto;
			}

			.ff-standard-addon__label {
				font-size: 14px;
				font-weight: 600;
				color: #3a2a12;
			}

			.ff-standard-addon__desc {
				font-size: 12px;
				color: var(--ff-tekst-drugi);
			}

			.ff-standard-addon__price {
				flex: 0 0 auto;
				font-size: 14px;
				font-weight: 700;
				color: var(--ff-brzoz);
				white-space: nowrap;
			}

			.single-product .product_title {
				margin-top: 8px;
				margin-bottom: 10px;
				line-height: 1.08;
			}

			.ff-pdp-badge {
				display: inline-flex;
				align-items: center;
				min-height: 30px;
				margin: 4px 0 14px;
				padding: 0 12px;
				border: 1px solid var(--ff-linia-mocna);
				border-radius: 999px;
				background: rgba(255, 250, 242, 0.92);
				color: #9a7740;
				font-size: 11px;
				font-weight: 700;
				letter-spacing: 0.12em;
				text-transform: uppercase;
			}

			body.single-product div.product .woocommerce-product-gallery {
				opacity: 1 !important;
			}

			body.single-product div.product .woocommerce-product-gallery__wrapper {
				border-radius: 24px;
				overflow: hidden;
				background: #f7f1e8;
			}

			body.single-product div.product .woocommerce-product-gallery__image a,
			body.single-product div.product .woocommerce-product-gallery__image img {
				display: block;
			}

			body.single-product div.product .woocommerce-product-gallery__image img {
				width: 100%;
				height: auto;
			}

			body.single-product div.product .flex-viewport {
				border-radius: 24px;
				overflow: hidden;
				background: #f7f1e8;
			}

			body.single-product div.product .flex-control-thumbs {
				display: flex;
				gap: 12px;
				margin: 16px 0 0;
				padding: 0 0 6px;
				overflow-x: auto;
				scrollbar-width: thin;
				scroll-snap-type: x proximity;
			}

			body.single-product div.product .ff-gallery-thumbs-shell {
				position: relative;
				padding: 0 46px;
			}

			body.single-product div.product .ff-gallery-thumbs-shell.is-static {
				padding: 0;
			}

			body.single-product div.product .flex-control-thumbs::-webkit-scrollbar {
				height: 6px;
			}

			body.single-product div.product .flex-control-thumbs::-webkit-scrollbar-thumb {
				background: rgba(197, 156, 87, 0.45);
				border-radius: 999px;
			}

			body.single-product div.product .flex-control-thumbs li {
				float: none !important;
				width: 92px !important;
				flex: 0 0 92px;
				margin: 0 !important;
				list-style: none;
				scroll-snap-align: start;
			}

			body.single-product div.product .flex-control-thumbs img {
				display: block;
				width: 100%;
				aspect-ratio: 1 / 1;
				padding: 4px;
				border: 1px solid #e6d9c7;
				border-radius: 16px;
				background: linear-gradient(180deg, var(--ff-biel) 0%, #faf6ef 100%);
				box-shadow: 0 10px 24px rgba(0, 0, 0, 0.07);
				object-fit: cover;
				opacity: 0.72;
				transition: transform .25s ease, opacity .25s ease, box-shadow .25s ease, border-color .25s ease;
			}

			body.single-product div.product .flex-control-thumbs img:hover {
				transform: translateY(-3px);
				border-color: var(--ff-zloto-jasne);
				box-shadow: 0 16px 30px rgba(0, 0, 0, 0.12);
				opacity: 1;
			}

			body.single-product div.product .flex-control-thumbs .flex-active,
			body.single-product div.product .flex-control-thumbs .flex-active:hover {
				border-color: var(--ff-zloto-jasne);
				background: linear-gradient(180deg, #fffdfa 0%, #f6ecde 100%);
				box-shadow: 0 0 0 2px rgba(197, 156, 87, 0.18), 0 16px 34px rgba(0, 0, 0, 0.10);
				transform: translateY(-2px);
				opacity: 1;
			}

			body.single-product div.product .flex-direction-nav a {
				width: 38px;
				height: 38px;
				border-radius: 999px;
				background: rgba(255, 255, 255, 0.96);
				box-shadow: 0 8px 18px rgba(0, 0, 0, 0.10);
			}

			body.single-product div.product .flex-direction-nav a::before {
				color: #b88d47;
				font-size: 18px;
			}

			body.single-product div.product .ff-gallery-thumbs-nav {
				position: absolute;
				top: 50%;
				z-index: 3;
				display: inline-flex;
				align-items: center;
				justify-content: center;
				width: 34px;
				height: 34px;
				border: 1px solid var(--ff-linia-jasna);
				border-radius: 999px;
				background: rgba(255, 255, 255, 0.96);
				color: #b88d47;
				box-shadow: 0 8px 18px rgba(0, 0, 0, 0.10);
				transform: translateY(calc(-50% + 8px));
				cursor: pointer;
				transition: opacity .2s ease, transform .2s ease, box-shadow .2s ease, border-color .2s ease;
			}

			body.single-product div.product .ff-gallery-thumbs-nav:hover:not(:disabled) {
				border-color: var(--ff-zloto-jasne);
				box-shadow: 0 12px 22px rgba(0, 0, 0, 0.12);
				transform: translateY(calc(-50% + 8px)) scale(1.04);
			}

			body.single-product div.product .ff-gallery-thumbs-nav:disabled {
				opacity: 0;
				pointer-events: none;
			}

			body.single-product div.product .ff-gallery-thumbs-nav--prev {
				left: 0;
			}

			body.single-product div.product .ff-gallery-thumbs-nav--next {
				right: 0;
			}

			.ff-product-reassurance-strip {
				display: grid;
				gap: 14px;
				margin-top: 26px;
				padding: 18px;
				border: 1px solid var(--ff-linia-jasna);
				border-radius: 20px;
				background: linear-gradient(180deg, var(--ff-biel-cieplo) 0%, #fff9f2 100%);
				box-shadow: 0 10px 24px rgba(53, 39, 20, 0.04);
			}

			.ff-product-reassurance-strip__eyebrow {
				display: inline-block;
				margin-bottom: 8px;
				font-size: 11px;
				font-weight: 700;
				letter-spacing: 0.14em;
				text-transform: uppercase;
				color: #a17a3d;
			}

			.ff-product-reassurance-strip__lead h3 {
				margin: 0 0 6px;
				font-size: 20px;
				line-height: 1.2;
				color: var(--ff-atrament-mocny);
			}

			.ff-product-reassurance-strip__lead p {
				margin: 0;
				font-size: 14px;
				line-height: 1.65;
				color: #665d51;
			}

			.ff-product-reassurance-strip__grid {
				display: grid;
				grid-template-columns: repeat(3, minmax(0, 1fr));
				gap: 10px;
			}

			.ff-product-reassurance-strip__card {
				display: flex;
				flex-direction: column;
				gap: 4px;
				padding: 14px;
				border: 1px solid #eee2d1;
				border-radius: 16px;
				background: rgba(255,255,255,0.78);
			}

			.ff-product-reassurance-strip__value {
				font-size: 17px;
				font-weight: 700;
				line-height: 1.2;
				color: var(--ff-atrament-mocny);
			}

			.ff-product-reassurance-strip__label {
				font-size: 12px;
				line-height: 1.55;
				color: #6c6256;
			}

			.ff-purchase-trust-row {
				display: flex;
				align-items: center;
				justify-content: space-between;
				gap: 14px;
				margin: 16px 0 10px;
				padding: 12px 14px;
				border: 1px solid #ece0d0;
				border-radius: 16px;
				background: linear-gradient(180deg, #fffefb 0%, #fff8ef 100%);
			}

			.ff-purchase-trust-row__logos {
				display: flex;
				align-items: center;
				gap: 10px;
				flex-wrap: wrap;
			}

			.ff-trust-logo {
				display: inline-flex;
				align-items: center;
				justify-content: center;
				min-width: 88px;
				min-height: 40px;
				padding: 0 14px;
				border: 1px solid #e8dccb;
				border-radius: 999px;
				background: rgba(255,255,255,0.96);
				box-shadow: 0 6px 16px rgba(53, 39, 20, 0.05);
			}

			.ff-trust-logo img {
				display: block;
				max-width: 64px;
				max-height: 18px;
				width: auto;
				height: auto;
			}

			.ff-purchase-trust-row__copy {
				display: flex;
				flex-direction: column;
				align-items: flex-end;
				gap: 2px;
				text-align: right;
			}

			.ff-purchase-trust-row__copy span {
				font-size: 13px;
				font-weight: 700;
				line-height: 1.4;
				color: #302921;
			}

			.ff-purchase-trust-row__copy small {
				font-size: 12px;
				line-height: 1.45;
				color: #7a7063;
			}

			.ff-product-process-box {
				margin-top: 28px;
				padding: 24px;
				border: 1px solid rgba(199, 165, 113, 0.26);
				border-radius: 24px;
				background: linear-gradient(180deg, #fffdfa 0%, #fff9f1 100%);
				box-shadow: 0 18px 40px rgba(34, 28, 21, 0.06);
				display: grid;
				gap: 18px;
			}

			.ff-product-process-box__head {
				display: grid;
				gap: 8px;
			}

			.ff-product-process-box__eyebrow {
				display: inline-flex;
				align-items: center;
				width: fit-content;
				padding: 6px 12px;
				border-radius: 999px;
				background: rgba(197, 156, 87, 0.12);
				color: #9f7442;
				font-size: 11px;
				font-weight: 700;
				letter-spacing: 0.14em;
				text-transform: uppercase;
			}

			.ff-product-process-box__head h3 {
				margin: 0;
				font-size: 24px;
				line-height: 1.15;
				color: #211a14;
			}

			.ff-product-process-box__head p {
				margin: 0;
				max-width: 52ch;
				font-size: 14px;
				line-height: 1.7;
				color: var(--ff-tekst-cichy);
			}

			.ff-product-process-box__steps {
				display: grid;
				gap: 12px;
			}

			.ff-process-step {
				display: grid;
				grid-template-columns: 38px 1fr;
				gap: 14px;
				padding: 14px 16px;
				border-radius: 18px;
				border: 1px solid rgba(199, 165, 113, 0.18);
				background: rgba(255,255,255,0.75);
			}

			.ff-process-step__num {
				display: inline-flex;
				align-items: center;
				justify-content: center;
				width: 38px;
				height: 38px;
				border-radius: 50%;
				background: #a36d37;
				color: var(--ff-biel);
				font-size: 14px;
				font-weight: 700;
			}

			.ff-process-step__text {
				display: grid;
				gap: 4px;
			}

			.ff-process-step__text strong {
				font-size: 15px;
				line-height: 1.35;
				color: #211a14;
			}

			.ff-process-step__text span {
				font-size: 13px;
				line-height: 1.65;
				color: var(--ff-tekst-cichy);
			}

			.ff-product-process-box__trust {
				display: grid;
				grid-template-columns: repeat(3, minmax(0, 1fr));
				gap: 12px;
			}

			.ff-product-process-box__trust-item,
			.ff-product-process-box__trust-logos {
				padding: 14px 16px;
				border-radius: 18px;
				border: 1px solid rgba(199, 165, 113, 0.18);
				background: rgba(255,255,255,0.75);
			}

			.ff-product-process-box__trust-item {
				display: grid;
				gap: 4px;
			}

			.ff-product-process-box__trust-label {
				font-size: 11px;
				font-weight: 700;
				letter-spacing: 0.12em;
				text-transform: uppercase;
				color: #9f7442;
			}

			.ff-product-process-box__trust-item strong {
				font-size: 14px;
				line-height: 1.45;
				color: #211a14;
			}

			.ff-product-process-box__trust-logos {
				display: flex;
				align-items: center;
				justify-content: center;
				gap: 14px;
			}

			.ff-product-process-box__trust-logos img {
				display: block;
				width: auto;
				max-height: 22px;
			}

			.ff-product-info-accordion {
				display: block !important;
				width: 100% !important;
				margin-top: 32px !important;
				padding-top: 6px !important;
				border-top: 1px solid #e9dfd2;
			}

			.ff-product-info-accordion .ff-acc-item:first-child {
				display: none !important;
			}

			.ff-product-info-accordion .ff-acc-item {
				display: block !important;
				width: 100% !important;
				margin: 0 !important;
				border-bottom: 1px solid #e9dfd2;
				background: var(--ff-biel);
			}

			.ff-product-info-accordion .ff-acc-item summary {
				list-style: none;
				display: flex !important;
				align-items: center !important;
				justify-content: space-between !important;
				gap: 16px;
				width: 100% !important;
				margin: 0 !important;
				padding: 18px 2px !important;
				box-sizing: border-box !important;
				cursor: pointer;
				text-align: left !important;
			}

			.ff-product-info-accordion .ff-acc-item summary::-webkit-details-marker {
				display: none;
			}

			.ff-acc-heading {
				display: flex !important;
				align-items: center !important;
				justify-content: flex-start !important;
				gap: 12px !important;
				flex: 1 1 auto !important;
				min-width: 0 !important;
				width: auto !important;
				text-align: left !important;
			}

			.ff-acc-icon {
				display: flex !important;
				align-items: center;
				justify-content: center;
				width: 34px;
				height: 34px;
				min-width: 34px;
				border-radius: 10px;
				background: #faf6ef;
				font-size: 16px;
				line-height: 1;
				flex-shrink: 0;
			}

			.ff-acc-title-wrap {
				display: flex !important;
				flex-direction: column !important;
				align-items: flex-start !important;
				justify-content: center !important;
				flex: 1 1 auto !important;
				min-width: 0 !important;
				text-align: left !important;
			}

			.ff-acc-title {
				display: block;
				font-size: 16px;
				font-weight: 700;
				line-height: 1.25;
				color: #1f1f1f;
				text-align: left !important;
			}

			.ff-acc-subtitle {
				display: block;
				margin-top: 3px;
				font-size: 12px;
				line-height: 1.4;
				color: #8b8175;
				text-align: left !important;
			}

			.ff-acc-toggle {
				position: relative;
				width: 18px;
				height: 18px;
				min-width: 18px;
				flex: 0 0 18px !important;
				margin-left: 10px;
			}

			.ff-acc-toggle::before,
			.ff-acc-toggle::after {
				content: "";
				position: absolute;
				top: 50%;
				left: 50%;
				width: 14px;
				height: 2px;
				border-radius: 999px;
				background: #b78b4a;
				transform: translate(-50%, -50%);
				transition: transform 0.22s ease, opacity 0.22s ease;
			}

			.ff-acc-toggle::after {
				transform: translate(-50%, -50%) rotate(90deg);
			}

			.ff-product-info-accordion details[open] .ff-acc-toggle::after {
				opacity: 0;
				transform: translate(-50%, -50%) rotate(90deg) scaleX(0.3);
			}

			.ff-acc-content {
				padding: 0 0 20px;
			}

			.ff-steps {
				display: flex;
				flex-direction: column;
				gap: 14px;
				padding: 4px 0 2px;
			}

			.ff-step {
				display: flex;
				align-items: flex-start;
				gap: 12px;
				padding: 12px 14px;
				border: 1px solid #f0e7da;
				border-radius: 14px;
				background: #fcfaf7;
			}

			.ff-step-num {
				display: flex;
				align-items: center;
				justify-content: center;
				width: 30px;
				height: 30px;
				min-width: 30px;
				margin-top: 1px;
				border-radius: 50%;
				background: #b78b4a;
				color: var(--ff-biel);
				font-size: 13px;
				font-weight: 700;
				line-height: 1;
			}

			.ff-step-text strong {
				display: block;
				margin-bottom: 4px;
				font-size: 14px;
				line-height: 1.35;
				color: #1f1f1f;
			}

			.ff-step-text span {
				display: block;
				font-size: 13px;
				line-height: 1.6;
				color: #5f5a54;
			}

			.ff-delivery-grid {
				display: grid;
				grid-template-columns: 1fr 1fr;
				gap: 12px;
			}

			.ff-delivery-item {
				padding: 14px;
				border: 1px solid #f0e7da;
				border-radius: 14px;
				background: #fcfaf7;
			}

			.ff-di-label {
				margin-bottom: 5px;
				font-size: 11px;
				line-height: 1.4;
				letter-spacing: 0.06em;
				text-transform: uppercase;
				color: #9b907f;
			}

			.ff-di-value {
				font-size: 14px;
				font-weight: 700;
				line-height: 1.4;
				color: #1f1f1f;
			}

			.ff-native-select {
				position: absolute !important;
				left: -9999px !important;
				width: 1px !important;
				height: 1px !important;
				overflow: hidden !important;
				opacity: 0 !important;
				pointer-events: none !important;
			}

			.variations label {
				display: block;
				margin-bottom: 8px;
				font-weight: 600;
			}

			.fameframe-swatches {
				display: flex;
				flex-wrap: wrap;
				gap: 10px;
				margin-bottom: 4px;
			}

			.ff-swatch-helper {
				margin: 10px 0 0;
				font-size: 13px;
				line-height: 1.6;
				color: #6e6559;
			}

			.fameframe-swatches.is-invalid .ff-swatch {
				border-color: var(--ff-blad);
				box-shadow: 0 0 0 4px rgba(200, 75, 63, 0.08);
			}

			.ff-variation-field-error {
				margin: 10px 0 0;
				font-size: 13px;
				line-height: 1.55;
				color: #9c3329;
			}

			.ff-variation-field-error[hidden] {
				display: none !important;
			}

			.ff-swatch {
				position: relative;
				display: flex;
				flex-direction: column;
				align-items: center;
				justify-content: center;
				gap: 6px;
				border: 2px solid #d4b483;
				border-radius: 8px;
				background: var(--ff-biel);
				color: #3a2e1e;
				font-family: inherit;
				font-size: 13px;
				font-weight: 500;
				cursor: pointer;
				user-select: none;
				transition: all .18s ease;
			}

			.ff-swatch:hover:not(.ff-unavailable) {
				border-color: #a07840;
				background: #fdf6ec;
			}

			.ff-swatch--typ {
				min-width: 90px;
				padding: 14px 18px;
			}

			.ff-swatch--dim {
				min-width: 70px;
				padding: 10px 16px;
			}

			.ff-swatch-icon svg {
				display: block;
				width: 32px;
				height: 32px;
			}

			.ff-swatch.ff-active {
				border-color: var(--ff-brownie);
				background: var(--ff-brownie);
				color: var(--ff-biel);
				box-shadow: 0 2px 8px rgba(122,78,45,.25);
			}

			.ff-swatch.ff-active.ff-unavailable {
				border-color: var(--ff-brownie);
				background: var(--ff-brownie);
				color: var(--ff-biel);
				opacity: 1;
				box-shadow: 0 2px 8px rgba(122,78,45,.25);
			}

			.ff-swatch.ff-active.ff-unavailable .ff-swatch-label {
				text-decoration: none;
			}

			.ff-swatch.ff-unavailable {
				border-color: #ddd;
				background: #f5f5f5;
				color: #999;
				cursor: pointer;
				opacity: .42;
			}

			.ff-swatch.ff-unavailable .ff-swatch-label {
				text-decoration: line-through;
			}

			.ff-swatch.ff-unavailable::after {
				content: '';
				position: absolute;
				inset: 0;
				border-radius: 6px;
				background: repeating-linear-gradient(135deg, transparent, transparent 4px, rgba(0,0,0,.06) 4px, rgba(0,0,0,.06) 5px);
			}

			#ff-digital-note {
				display: none;
				width: 100%;
				margin-top: 14px;
				padding: 12px 14px;
				/* pełna ramka zamiast paska bocznego 3px — ten drugi jest wizualnym tikiem,
				   a tu i tak niósł zero informacji ponad samo tło */
				border: 1px solid #cfe3c8;
				border-radius: 10px;
				background: #f0f8ee;
				box-sizing: border-box;
				color: #3a6e2e;
				font-size: 14px;
				line-height: 1.5;
				text-align: left;
			}

			#ff-digital-note.ff-visible {
				display: block;
			}

			.ff-standard-upload-box {
				margin: 18px 0 18px;
				padding: 18px;
				border: 1px solid var(--ff-linia-jasna);
				border-radius: 20px;
				background: linear-gradient(180deg, var(--ff-biel-cieplo) 0%, #fff9f2 100%);
				box-shadow: 0 10px 24px rgba(53, 39, 20, 0.04);
			}

			.ff-standard-upload-box__head {
				margin-bottom: 18px;
			}



			.ff-standard-upload-box__head h3 {
				margin: 0 0 8px;
				font-size: 20px;
				line-height: 1.2;
				color: var(--ff-atrament-mocny);
			}

			.ff-standard-upload-box__head p,
			.ff-standard-upload-box__note {
				margin: 0;
				font-size: 14px;
				line-height: 1.65;
				color: #665d51;
			}

			.ff-standard-upload-box__tips {
				display: flex;
				flex-wrap: wrap;
				gap: 8px;
				margin-bottom: 12px;
			}

			.ff-standard-upload-tip {
				display: inline-flex;
				align-items: center;
				min-height: 34px;
				padding: 0 12px;
				border: 1px solid #e7dbc9;
				border-radius: 999px;
				background: rgba(255,255,255,0.82);
				color: #5f574b;
				font-size: 12px;
				font-weight: 600;
				letter-spacing: 0.01em;
			}

			.ff-standard-upload-box__helper {
				margin: 0 0 16px;
				font-size: 13px;
				line-height: 1.65;
				color: #73695c;
				max-width: 54ch;
			}

			.ff-standard-required {
				color: var(--ff-blad);
				font-weight: 700;
			}

			.ff-standard-personalization {
				display: grid;
				gap: 18px;
				margin-bottom: 18px;
			}

			.ff-standard-personalization__field {
				display: grid;
				gap: 10px;
				padding: 18px;
				border: 1px solid var(--ff-linia-jasna);
				border-radius: 20px;
				background: rgba(255,255,255,0.58);
			}

			.ff-standard-personalization__field-head {
				display: grid;
				gap: 4px;
			}

			.ff-standard-personalization__subcopy {
				margin: 0;
				font-size: 13px;
				line-height: 1.65;
				color: var(--ff-tekst-cichy);
			}

			.ff-standard-personalization__subcopy--accent {
				padding: 10px 12px;
				border-radius: 14px;
				background: rgba(197, 156, 87, 0.10);
				border: 1px solid rgba(197, 156, 87, 0.18);
				color: #5b4527;
			}

			.ff-standard-personalization__label {
				display: block;
				font-size: 14px;
				font-weight: 600;
				line-height: 1.4;
				color: var(--ff-atrament-mocny);
			}

			.ff-standard-personalization__field.is-invalid .ff-standard-personalization__label,
			.ff-standard-upload-box__field.is-invalid .ff-standard-upload-box__label {
				color: #9c3329;
			}

			.ff-standard-personalization__choices {
				display: grid;
				grid-template-columns: repeat(6, minmax(0, 1fr));
				gap: 8px;
			}

			.ff-standard-personalization__choice {
				position: relative;
				display: flex;
			}

			.ff-standard-personalization__choice input {
				position: absolute;
				opacity: 0;
				pointer-events: none;
			}

			.ff-standard-personalization__choice span {
				display: flex;
				align-items: center;
				justify-content: center;
				width: 100%;
				min-height: 48px;
				padding: 0 10px;
				border: 1px solid #e4d8c7;
				border-radius: 14px;
				background: rgba(255,255,255,0.86);
				color: #2e271f;
				font-size: 14px;
				font-weight: 600;
				cursor: pointer;
				transition: border-color .2s ease, background .2s ease, transform .2s ease, box-shadow .2s ease;
			}

			.ff-standard-personalization__choice span:hover {
				transform: translateY(-1px);
				border-color: var(--ff-zloto-jasne);
				box-shadow: 0 10px 22px rgba(40, 28, 10, 0.08);
			}

			.ff-standard-personalization__choice input:checked + span {
				border-color: var(--ff-brownie);
				background: var(--ff-brownie);
				color: var(--ff-biel);
				box-shadow: 0 10px 22px rgba(122,78,45,0.18);
			}

			.ff-standard-personalization__field.is-invalid .ff-standard-personalization__choice span {
				border-color: var(--ff-blad);
				box-shadow: 0 0 0 4px rgba(200, 75, 63, 0.08);
			}

			.ff-standard-price-preview {
				display: grid;
				gap: 4px;
				padding: 10px 0 0;
			}

			.ff-standard-price-preview span {
				font-size: 12px;
				line-height: 1.55;
				color: #7a7063;
			}

			.ff-standard-personalization__example {
				font-weight: 600;
				color: #6a512d !important;
			}

			.ff-price-source--hidden {
				display: none !important;
			}

			.single-product .single_variation_wrap .woocommerce-variation-price {
				display: none !important;
			}

			.single-product .ff-live-variation-price {
				margin: 16px 0 4px;
				font-size: clamp(27px, 3.3vw, 36px);
				line-height: 1.08;
				font-weight: 600;
				color: #2f3a46;
				letter-spacing: -0.025em;
				text-wrap: balance;
			}

			.single-product .ff-live-variation-price .woocommerce-Price-amount,
			.single-product .ff-live-variation-price bdi {
				color: inherit;
				font: inherit;
			}

			.single-product .ff-live-variation-price.is-range {
				font-size: clamp(24px, 2.9vw, 31px);
				line-height: 1.14;
				font-weight: 500;
				color: #435160;
				letter-spacing: -0.015em;
			}

			.single-product .ff-live-variation-price.is-hidden {
				display: none !important;
			}

			.single-product .ff-live-variation-note {
				margin: 0 0 18px;
				font-size: 12px;
				line-height: 1.6;
				color: #7d7469;
				max-width: 36ch;
			}

			.single-product .ff-live-variation-note.is-hidden {
				display: none !important;
			}

			.ff-standard-sticky-bar {
				display: none;
			}

			.ff-standard-personalization textarea {
				width: 100%;
				min-height: 132px;
				padding: 14px 16px;
				border: 1px solid #e4d8c7;
				border-radius: 16px;
				background: rgba(255,255,255,0.86);
				color: #2e271f;
				font: inherit;
				line-height: 1.6;
				resize: vertical;
				box-sizing: border-box;
			}

			.ff-standard-personalization textarea:focus {
				outline: none;
				border-color: var(--ff-zloto-jasne);
				box-shadow: 0 0 0 4px rgba(197, 155, 82, 0.12);
			}


			.ff-standard-upload-box__field {
				margin-top: 16px;
			}

			.ff-standard-upload-box__label {
				display: block;
				margin-bottom: 10px;
				font-size: 14px;
				font-weight: 700;
				color: #241e18;
			}

			.ff-standard-upload-box__dropzone {
				position: relative;
				display: flex;
				flex-direction: column;
				align-items: center;
				justify-content: center;
				gap: 8px;
				min-height: 190px;
				padding: 26px 20px;
				margin-bottom: 12px;
				border: 2px dashed #d9c3a0;
				border-radius: 22px;
				background: linear-gradient(180deg, #fffefb 0%, #fff8ee 100%);
				text-align: center;
				cursor: pointer;
				transition: border-color 0.18s ease, background 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
			}

			.ff-standard-upload-box__dropzone:hover,
			.ff-standard-upload-box__dropzone.is-dragover {
				border-color: #b58a4e;
				background: linear-gradient(180deg, #fffdf7 0%, #fff3df 100%);
				transform: translateY(-1px);
				box-shadow: 0 12px 28px rgba(72, 48, 19, 0.08);
			}

			.ff-standard-upload-box__field.is-invalid .ff-standard-upload-box__dropzone {
				border-color: var(--ff-blad);
				background: linear-gradient(180deg, #fffdfb 0%, #fff1ee 100%);
				box-shadow: 0 12px 28px rgba(156, 51, 41, 0.08);
			}

			.ff-standard-upload-box__dropzone input[type="file"] {
				position: absolute;
				inset: 0;
				opacity: 0;
				cursor: pointer;
			}

			.ff-standard-upload-box__icon {
				display: inline-flex;
				align-items: center;
				justify-content: center;
				width: 52px;
				height: 52px;
				border-radius: 999px;
				background: var(--ff-brownie);
				color: var(--ff-biel);
				font-size: 28px;
				line-height: 1;
			}

			.ff-standard-upload-box__title {
				font-size: 16px;
				font-weight: 700;
				color: #2f2821;
			}

			.ff-standard-upload-box__subtitle,
			.ff-standard-upload-box__meta {
				font-size: 14px;
				line-height: 1.6;
				color: #6f6558;
			}

			.ff-standard-upload-box__list {
				display: grid;
				gap: 10px;
				margin-bottom: 14px;
			}

			.ff-standard-upload-box__list[hidden] {
				display: none !important;
			}

			.ff-standard-upload-file {
				display: flex;
				align-items: center;
				justify-content: space-between;
				gap: 12px;
				padding: 12px 14px;
				border: 1px solid var(--ff-linia-jasna);
				border-radius: 16px;
				background: #fffdfa;
			}

			.ff-standard-upload-file__meta {
				display: grid;
				gap: 2px;
				min-width: 0;
			}

			.ff-standard-upload-file__name {
				font-size: 14px;
				font-weight: 600;
				line-height: 1.5;
				color: #2f2821;
				word-break: break-word;
			}

			.ff-standard-upload-file__size {
				font-size: 12px;
				line-height: 1.4;
				color: #776d60;
			}

			.ff-standard-upload-file__remove {
				flex: 0 0 auto;
				padding: 0;
				border: 0;
				background: transparent;
				color: #9a7740;
				font-size: 12px;
				font-weight: 700;
				letter-spacing: 0.08em;
				text-transform: uppercase;
				cursor: pointer;
			}

			.ff-standard-upload-file__remove:hover {
				color: var(--ff-brownie);
			}

			.ff-standard-field-error {
				margin: 10px 0 0;
				font-size: 13px;
				line-height: 1.55;
				color: #9c3329;
			}

			.ff-standard-field-error[hidden] {
				display: none !important;
			}

			.ff-standard-upload-box__note {
				padding-top: 12px;
				border-top: 1px solid #eee2d1;
				font-size: 12px;
				color: #7a7063;
			}

			@media (max-width: 767px) {
				body.single-product div.product .woocommerce-product-gallery__wrapper,
				body.single-product div.product .flex-viewport {
					border-radius: 18px;
				}

				body.single-product div.product .ff-gallery-thumbs-shell {
					padding: 0 40px;
				}

				body.single-product div.product .flex-control-thumbs {
					gap: 8px;
					margin-top: 12px;
				}

				body.single-product div.product .flex-control-thumbs li {
					width: 78px !important;
					flex-basis: 78px;
				}

				body.single-product div.product .flex-control-thumbs img {
					border-radius: 12px;
				}

				body.single-product div.product .ff-gallery-thumbs-nav {
					width: 30px;
					height: 30px;
				}

				.ff-pdp-badge {
					margin-bottom: 12px;
					font-size: 10px;
					letter-spacing: 0.10em;
				}

				.ff-product-reassurance-strip {
					padding: 16px;
					border-radius: 18px;
				}

				.ff-product-reassurance-strip__lead h3 {
					font-size: 18px;
				}

				.ff-product-reassurance-strip__grid {
					grid-template-columns: 1fr;
				}

				.ff-purchase-trust-row {
					flex-direction: column;
					align-items: flex-start;
				}

				.ff-purchase-trust-row__copy {
					align-items: flex-start;
					text-align: left;
				}

				.ff-swatch--typ {
					min-width: 80px;
					padding: 12px 14px;
				}

				.ff-swatch--dim {
					min-width: 60px;
					padding: 9px 12px;
					font-size: 12px;
				}

				#ff-digital-note {
					margin-top: 12px;
					padding: 11px 12px;
					font-size: 13px;
				}

				.ff-standard-upload-box {
					padding: 16px;
					border-radius: 18px;
				}

				.ff-standard-sticky-bar {
					position: fixed;
					left: 12px;
					right: 12px;
					bottom: calc(12px + env(safe-area-inset-bottom, 0px));
					z-index: 48;
					display: grid;
					grid-template-columns: minmax(0, 1fr) auto;
					gap: 12px;
					align-items: center;
					padding: 12px 14px;
					border: 1px solid rgba(197, 156, 87, 0.2);
					border-radius: 18px;
					background: rgba(255, 252, 247, 0.96);
					box-shadow: 0 16px 34px rgba(35, 26, 17, 0.16);
					backdrop-filter: blur(14px);
				}

				.ff-standard-sticky-bar[hidden] {
					display: none !important;
				}

				.ff-standard-sticky-bar__content {
					display: grid;
					gap: 2px;
					min-width: 0;
				}

				.ff-standard-sticky-bar__eyebrow {
					font-size: 10px;
					font-weight: 700;
					letter-spacing: 0.12em;
					text-transform: uppercase;
					color: #9c7a43;
				}

				.ff-standard-sticky-bar__price {
					font-size: 20px;
					line-height: 1.05;
					font-weight: 700;
					color: var(--ff-atrament-mocny);
					letter-spacing: -0.02em;
				}

				.ff-standard-sticky-bar__summary {
					font-size: 11px;
					line-height: 1.45;
					color: var(--ff-tekst-cichy);
					white-space: nowrap;
					overflow: hidden;
					text-overflow: ellipsis;
				}

				.ff-standard-sticky-bar__action {
					display: inline-flex;
					align-items: center;
					justify-content: center;
					min-width: 108px;
					min-height: 44px;
					padding: 0 16px;
					border: 0;
					border-radius: 14px;
					background: #111111;
					color: var(--ff-biel);
					font-size: 13px;
					font-weight: 700;
					letter-spacing: 0.04em;
					text-transform: uppercase;
					cursor: pointer;
					box-shadow: 0 10px 24px rgba(17, 17, 17, 0.18);
				}

				.ff-standard-personalization__choices {
					grid-template-columns: repeat(3, minmax(0, 1fr));
				}

				.ff-standard-upload-box__head h3 {
					font-size: 18px;
				}

				.ff-product-process-box {
					padding: 20px;
					border-radius: 20px;
					gap: 16px;
				}

				.ff-product-process-box__head h3 {
					font-size: 21px;
				}

				.ff-product-process-box__trust {
					grid-template-columns: 1fr;
				}

				.ff-process-step {
					grid-template-columns: 34px 1fr;
					padding: 12px 14px;
				}

				.ff-process-step__num {
					width: 34px;
					height: 34px;
					font-size: 13px;
				}

				.ff-product-info-accordion {
					margin-top: 26px !important;
				}

				.ff-product-info-accordion .ff-acc-item summary {
					padding: 16px 0 !important;
					gap: 12px;
				}

				.ff-acc-title {
					font-size: 15px;
				}

				.ff-acc-subtitle {
					font-size: 11px;
				}

				.ff-delivery-grid {
					grid-template-columns: 1fr;
				}

				.ff-step {
					padding: 11px 12px;
				}
			}

/* =========================================================================
   PDP — prowadzona ścieżka zakupu (redesign 2026-07-29)

   Problem wyjściowy: przycisk zakupu był na 2677 px, konfigurator liczył 1438 px
   jednolitej ściany formularza, a lewa kolumna (galeria) kończyła się po ~1000 px
   zostawiając 3500 px pustki na desktopie. Upload zdjęć musi zostać wymagany przed
   płatnością (decyzja właściciela), więc skracamy nie samą ścieżkę, tylko jej
   ODCZUWANĄ długość: numerowane kroki + widoczny postęp + zawsze dostępne CTA.

   Nazwy z prefiksem .ff-buystep, bo .ff-step jest już zajęte przez akordeon
   "Jak to działa" niżej na stronie.
   ========================================================================= */

/* --- Sticky galeria: zabija martwą lewą kolumnę na desktopie --- */
@media (min-width: 993px) {
	/* Astra układa te kolumny na floatach (div.product ma display:block), przez co sticky galerii
	   był ograniczony CAŁYM div.product — a ten zawiera też opis i "Podobne produkty" (4520 px).
	   Efekt: galeria wjeżdżała na te sekcje. Grid rozwiązuje to u źródła, bo dla elementu siatki
	   blokiem zawierającym jest jego OBSZAR siatki — galeria może więc przykleić się najwyżej
	   do końca pierwszego wiersza i zatrzymuje się przed opisem. */
	body.single-product div.product {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		column-gap: 48px;
		align-items: stretch;
	}
	body.single-product div.product > .ff-gallery-col,
	body.single-product div.product > .summary {
		grid-row: 1;
		width: 100% !important;   /* Astra daje tu procentową szerokość pod floaty */
		max-width: none !important;
		float: none !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
	body.single-product div.product > .ff-gallery-col { grid-column: 1; }
	body.single-product div.product > .summary { grid-column: 2; }

	/* Sam element siatki jako blok zawierający okazał się niewystarczający — Chrome nie ograniczał
	   sticky do obszaru siatki i galeria dalej jechała na opis. Dlatego galeria dostaje własny
	   kontener (.ff-gallery-col), który rozciąga się na całą wysokość wiersza; sticky wewnątrz
	   niego ma już twardą, skończoną granicę. */
	body.single-product .ff-gallery-col { height: 100%; }

	/* Galeria nie jest już bezpośrednim dzieckiem div.product, więc procentowa szerokość Astry
	   (pod dawny układ na floatach) znów zaczęła obowiązywać i ściskała ją do 50% kolumny.
	   Nadpisujemy ją w nowym miejscu w drzewie. */
	body.single-product .ff-gallery-col > .woocommerce-product-gallery {
		width: 100% !important;
		max-width: none !important;
		float: none !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	/* Sekcje pod spodem na pełną szerokość i — co kluczowe — POZA wierszem galerii. */
	body.single-product div.product > .woocommerce-tabs,
	body.single-product div.product > .related,
	body.single-product div.product > .up-sells {
		grid-column: 1 / -1;
	}
	body.single-product div.product > .onsale { grid-column: 1; grid-row: 1; }

	/* !important konieczne: WooCommerce/Astra ustawia `div.product div.images{position:relative}`
	   z tą samą specyficznością, a ładuje się PO nas. */
	body.single-product .ff-gallery-col .woocommerce-product-gallery {
		position: sticky !important;
		top: 96px;
	}
}

/* --- Skorupa kroku --- */
.ff-buystep {
	border: 1px solid var(--ff-linia);
	border-radius: 14px;
	background: var(--ff-biel);
	margin: 0 0 12px;
	overflow: hidden;
	transition: border-color .2s ease, box-shadow .2s ease;
}
.ff-buystep:last-child { margin-bottom: 0; }

.ff-buystep__head {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 14px 16px;
}
.ff-buystep__num {
	flex: 0 0 auto;
	width: 26px; height: 26px;
	border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center;
	background: #F2E7D2; color: var(--ff-brzoz);
	font-size: 13px; font-weight: 700; line-height: 1;
	transition: background .2s ease, color .2s ease;
}
.ff-buystep__heading { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ff-buystep__title { font-size: 15px; font-weight: 700; color: var(--ff-atrament); line-height: 1.25; }
.ff-buystep__sub { font-size: 12.5px; color: var(--ff-tekst-drugi); line-height: 1.4; }
.ff-buystep__summary {
	font-size: 12.5px; font-weight: 600; color: var(--ff-brzoz);
	line-height: 1.4;
}
.ff-buystep__body { padding: 0 16px 16px; }

/* Stan: ukończony — ptaszek zamiast numeru, wygaszona ramka */
.ff-buystep.is-done .ff-buystep__num {
	background: var(--ff-zloto); color: transparent; position: relative;
}
.ff-buystep.is-done .ff-buystep__num::after {
	content: ""; position: absolute; inset: 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7' stroke='%23FFFBF3' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/13px no-repeat;
}
.ff-buystep.is-done .ff-buystep__sub { display: none; }

/* Stan: aktywny — podbita ramka, żeby oko wiedziało gdzie jest */
.ff-buystep.is-active {
	border-color: var(--ff-zloto-obrys);
	box-shadow: 0 6px 20px rgba(40, 28, 10, .07);
}
.ff-buystep.is-active .ff-buystep__num { background: var(--ff-zloto); color: var(--ff-atrament); }

/* Stan: błąd walidacji */
.ff-buystep.has-error { border-color: #d98b8b; }
.ff-buystep.has-error .ff-buystep__num { background: #d98b8b; color: var(--ff-biel); }

/* Krok 1 owija natywną tabelę wariantów WooCommerce — zdejmujemy jej marginesy */
.ff-buystep[data-ff-buystep="variant"] .variations { margin: 0; }
.ff-buystep[data-ff-buystep="variant"] .variations tbody tr:last-child td { padding-bottom: 0; }

/* Konfigurator: kroki niosą teraz ramkę, więc pudełko zewnętrzne ją oddaje */
.ff-standard-upload-box {
	border: 0 !important;
	background: transparent !important;
	padding: 0 !important;
}

/* --- Stały pasek zakupowy (mobile) --- */
@media (max-width: 992px) {
	.ff-standard-sticky-bar {
		position: fixed;
		left: 0; right: 0; bottom: 0;
		z-index: 60;
		display: flex;
		align-items: center;
		gap: 12px;
		padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
		background: rgba(255, 253, 249, .97);
		border-top: 1px solid var(--ff-linia);
		box-shadow: 0 -6px 24px rgba(40, 28, 10, .10);
	}
	.ff-standard-sticky-bar__action {
		flex: 0 0 auto;
		min-height: 48px;
		padding: 0 20px;
		border-radius: 999px;
		background: var(--ff-zloto);
		color: var(--ff-atrament);
		font-weight: 700;
		border: 0;
	}
	.ff-standard-sticky-bar__action[disabled] {
		background: #e5d9bf; color: #9a8a63; cursor: not-allowed;
	}
	/* miejsce, żeby pasek nie zasłaniał końca strony */
	body.single-product { padding-bottom: 78px; }
}

/* --- Gwarancja bezpośrednio pod CTA (tam gdzie rodzi się obawa) --- */
.ff-buy-reassurance {
	display: flex; flex-wrap: wrap; gap: 6px 14px;
	/* rodzic (.woocommerce-variation-add-to-cart) jest flex-row z ilością i przyciskiem,
	   więc bez wymuszenia pełnej szerokości gwarancja ląduje OBOK przycisku, nie pod nim */
	flex-basis: 100%; width: 100%;
	margin: 10px 0 0;
	font-size: 12.5px; color: #6b5a3f; line-height: 1.4;
}
.ff-buy-reassurance span { display: inline-flex; align-items: center; gap: 5px; }
.ff-buy-reassurance span::before {
	content: ""; width: 13px; height: 13px; flex: 0 0 auto;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7' stroke='%23B8962E' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* --- Tablet: kroki oddychają, ale kolumny jeszcze się nie rozjeżdżają --- */
@media (min-width: 768px) and (max-width: 992px) {
	.ff-buystep__body { padding: 0 18px 18px; }
	.ff-buystep__head { padding: 16px 18px; }
}

@media (max-width: 480px) {
	.ff-buystep__head { padding: 12px 13px; gap: 10px; }
	.ff-buystep__body { padding: 0 13px 13px; }
	.ff-buystep__title { font-size: 14.5px; }
}

@media (prefers-reduced-motion: reduce) {
	.ff-buystep, .ff-buystep__num { transition: none; }
}

/* =========================================================================
   Dostępność — poprawki po audycie 2026-07-29
   ========================================================================= */

/* --- Widoczny fokus klawiatury (WCAG 2.4.7 Focus Visible, AA) ---
   Zweryfikowane Tabem: kafelek wariantu z fokusem był PIKSELOWO IDENTYCZNY
   z niefokusowanym (outline:none z resetu motywu, brak cienia). Osoba korzystająca
   z klawiatury nie widziała, gdzie jest, w pierwszym obowiązkowym kroku zakupu.
   Używamy :focus-visible, więc pierścień nie pojawia się przy kliknięciu myszą. */
body.single-product .ff-swatch:focus-visible,
body.single-product .ff-pers__number:focus-visible,
body.single-product .ff-pers__text:focus-visible,
body.single-product .single_add_to_cart_button:focus-visible,
body.single-product [data-ff-standard-sticky-action]:focus-visible,
body.single-product .ff-gallery-thumbs-nav:focus-visible,
body.single-product .ff-buystep a:focus-visible,
body.single-product .ff-promise a:focus-visible,
body.single-product .ff-standard-upload-file__remove:focus-visible {
	outline: 3px solid var(--ff-zloto) !important;
	outline-offset: 2px !important;
	border-radius: 8px;
}

/* Radio liczby postaci jest wizualnie ukryty — pierścień musi trafić na widoczny kafelek. */
body.single-product .ff-standard-personalization__choice:has(input:focus-visible) {
	outline: 3px solid var(--ff-zloto);
	outline-offset: 2px;
	border-radius: 10px;
}

/* Dropzone jest klikalna przez input w środku — pokazujemy fokus na całym polu. */
body.single-product .ff-standard-upload-box__dropzone:has(input:focus-visible) {
	outline: 3px solid var(--ff-zloto);
	outline-offset: 2px;
}

/* --- Kontrast breadcrumbu (WCAG 1.4.3) ---
   Astra renderuje go w #777 (4.48:1 przy progu 4.5). Ten sam ciemniejszy odcień
   rodziny co reszta tekstu drugorzędnego. */
body.single-product .woocommerce-breadcrumb,
body.single-product .woocommerce-breadcrumb a,
body.single-product .ast-breadcrumbs,
body.single-product .ast-breadcrumbs a {
	color: var(--ff-tekst-drugi);
}

/* Tytuły kroków i bloków to teraz prawdziwe <h2> (semantyka), ale wizualnie mają zostać
   etykietami — bez tego dziedziczą duży rozmiar nagłówka z motywu. */
body.single-product .ff-buystep__title {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.25;
	color: var(--ff-atrament);
	margin: 0;
	text-transform: none;
	letter-spacing: normal;
}
body.single-product .ff-promise__title {
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--ff-brzoz);
	margin: 0 0 10px;
}
body.single-product .ff-product-process-box__head h2 {
	font-size: 20px;
	line-height: 1.25;
	margin: 0 0 8px;
}

/* =========================================================================
   Domknięcie audytu 2026-07-29
   ========================================================================= */

/* --- Karty w kartach ---
   Audyt wykazał 6 zagnieżdżeń: pola personalizacji miały własną ramkę wewnątrz
   ramki kroku, a kroki procesu wewnątrz ramki bloku "Po zamówieniu". Ramka wokół
   ramki nie buduje hierarchii, tylko szum — wewnętrzne oddzielamy tłem i odstępem. */
.ff-buystep .ff-standard-personalization__field {
	border: 0;
	background: transparent;
	padding: 0;
	margin: 0 0 16px;
}
.ff-buystep .ff-standard-personalization__field:last-child { margin-bottom: 0; }

/* Przełącznik zostaje wyróżniony, ale tłem zamiast obrysu — to realny wybór klienta,
   więc ma się odróżniać od zwykłego pola. */
.ff-buystep .ff-pers__row--toggle {
	border: 0;
	background: var(--ff-krem);
	border-radius: 12px;
	padding: 12px 14px;
}

.ff-product-process-box .ff-process-step {
	border: 0;
	background: transparent;
	padding: 0;
}
.ff-product-process-box .ff-process-step + .ff-process-step { margin-top: 14px; }

/* --- Cele dotykowe (WCAG 2.5.5) ---
   Kafelki wariantu miały 37 px wysokości, nawigacja miniatur 34 px. */
.ff-swatch { min-height: 44px; }
.ff-gallery-thumbs-nav { min-width: 44px; min-height: 44px; }
.woocommerce div.product form.cart .quantity .minus,
.woocommerce div.product form.cart .quantity .plus { min-width: 44px; min-height: 44px; }

/* --- Ruch: alternatywa dla osób z ograniczonym ruchem ---
   Audyt: 10 przejść w pliku, tylko 1 blok prefers-reduced-motion. */
@media (prefers-reduced-motion: reduce) {
	.ff-buystep,
	.ff-buystep__num,
	.ff-swatch,
	.ff-standard-personalization__choice,
	.ff-standard-upload-box__dropzone,
	.ff-standard-sticky-bar,
	.ff-standard-sticky-bar__action,
	.single_add_to_cart_button,
	ul.products li.product,
	.ff-standard-upload-file {
		transition: none !important;
		animation: none !important;
	}
	ul.products li.product:hover { transform: none !important; }
}
