/* =====================================================================
   WooCommerce — kasa / koszyk / podziękowanie w stylu PoczujExcel
   Style Woo są wyłączone (functions: woocommerce_enqueue_styles empty),
   więc pełne stylowanie klasycznego checkoutu jest tutaj.
   ===================================================================== */

.woocommerce, .woocommerce-page { color: var(--pe-text, #24312a); }

/* Nagłówek strony */
.woocommerce .pe-main > .pe-container,
.woocommerce-checkout .entry-content { max-width: 1100px; }

/* --- Powiadomienia --- */
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews {
	list-style: none; margin: 0 0 1.4rem; padding: 1em 1.2em; border-radius: 10px;
	border: 1px solid var(--pe-line, #E1E7DE); background: var(--pe-paper, #F6F9F3);
	font-size: 0.95rem;
}
.woocommerce-message { border-color: #bfe3a8; background: #f1f9ea; }
.woocommerce-error { border-color: #e6b3b3; background: #fbeeee; }
.woocommerce-error li { list-style: none; }

/* --- Układ dwukolumnowy --- */
.woocommerce-checkout .col2-set,
.woocommerce-checkout #customer_details { margin-bottom: 2rem; }
@media (min-width: 900px) {
	.woocommerce-checkout form.checkout {
		display: grid; grid-template-columns: 1.15fr 0.85fr;
		column-gap: 2.4rem; row-gap: 0.4rem; align-items: start;
	}
	/* Komunikaty błędów (WC wstrzykuje je do formularza przez AJAX) — na całą
	   szerokość, w GÓRNYM wierszu, żeby nie wpadały w komórkę gridu na dole. */
	.woocommerce-checkout form.checkout > .woocommerce-NoticeGroup,
	.woocommerce-checkout form.checkout > .woocommerce-error,
	.woocommerce-checkout form.checkout > .woocommerce-message,
	.woocommerce-checkout form.checkout > .woocommerce-info {
		grid-column: 1 / -1; grid-row: 1;
	}
	/* Dane rozliczeniowe: lewa kolumna; podsumowanie po prawej. Wiersze od 2
	   (wiersz 1 zarezerwowany na komunikaty). */
	.woocommerce-checkout form.checkout #customer_details { grid-column: 1; grid-row: 2 / span 2; margin-bottom: 0; }
	.woocommerce-checkout form.checkout #order_review_heading { grid-column: 2; grid-row: 2; margin-top: 0; align-self: start; }
	.woocommerce-checkout form.checkout #order_review { grid-column: 2; grid-row: 3; align-self: start; }
	.woocommerce-checkout .col2-set .col-1,
	.woocommerce-checkout .col2-set .col-2 { width: 100%; float: none; }
}

/* --- Nagłówki --- */
.woocommerce h3, .woocommerce h2, #order_review_heading {
	font-weight: 800; color: var(--pe-forest, #17331E); margin: 0 0 1rem; font-size: 1.3rem;
}

/* --- Pola formularza --- */
.woocommerce form .form-row { padding: 0; margin: 0 0 1rem; display: flex; flex-direction: column; }
.woocommerce form .form-row label { font-weight: 700; font-size: 0.9rem; margin-bottom: 0.35rem; color: var(--pe-forest, #17331E); }
.woocommerce form .form-row .required { color: var(--pe-green, #0F5A32); border: 0; text-decoration: none; }

/* Inline komunikaty walidacji pod polem — czerwone, mniejsza czcionka.
   (WooCommerce/plugin dodaje je pod polem po nieudanym „Kupuję i płacę"). */
.woocommerce form .form-row .woocommerce-error,
.woocommerce form .form-row .wc-block-components-validation-error,
.woocommerce form .form-row .field-validation-error,
.woocommerce form .form-row > .error,
.woocommerce .form-row.woocommerce-invalid > .woocommerce-error {
	margin: 0.3rem 0 0; padding: 0; border: 0; background: none; list-style: none;
	color: #c0392b; font-size: 0.78rem; font-weight: 400; line-height: 1.4;
}
.woocommerce form .form-row .woocommerce-error a,
.woocommerce form .form-row .field-validation-error a { color: #c0392b; font-weight: 700; }
/* Czerwona ramka pola z błędem (wizualny sygnał) */
.woocommerce .form-row.woocommerce-invalid input.input-text,
.woocommerce .form-row.woocommerce-invalid select,
.woocommerce .form-row.woocommerce-invalid textarea { border-color: #d98b8b; }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection {
	width: 100%; padding: 0.72em 0.9em; border-radius: 8px;
	border: 1px solid var(--pe-line, #E1E7DE); background: var(--pe-white, #fff);
	font-size: 1rem; font-family: inherit; line-height: 1.4; min-height: 46px;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
	outline: 2px solid var(--pe-lime, #7CC94E); outline-offset: 1px; border-color: transparent;
}
.woocommerce .select2-container--default .select2-selection--single { height: 46px; display: flex; align-items: center; }
.woocommerce form .form-row-first, .woocommerce form .form-row-last { width: 100%; }
@media (min-width: 560px) {
	#customer_details .woocommerce-billing-fields__field-wrapper { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
	#customer_details .form-row-wide, #customer_details .validate-required.form-row-wide { grid-column: 1 / -1; }
}

/* --- Podsumowanie zamówienia --- */
#order_review {
	background: var(--pe-paper, #F6F9F3); border: 1px solid var(--pe-line, #E1E7DE);
	border-radius: 14px; padding: 1.5rem;
}
.woocommerce-checkout-review-order-table { width: 100%; border-collapse: collapse; margin-bottom: 1rem; font-size: 0.98rem; }
.woocommerce-checkout-review-order-table th,
.woocommerce-checkout-review-order-table td { padding: 0.7em 0; text-align: left; border-bottom: 1px solid var(--pe-line, #E1E7DE); }
.woocommerce-checkout-review-order-table td:last-child,
.woocommerce-checkout-review-order-table th:last-child { text-align: right; }
/* Wyzeruj ciemne „wypełnienie" nagłówka/pasków z .pe-entry table (main.css). */
#order_review table.woocommerce-checkout-review-order-table th { background: transparent; color: var(--pe-text, #24312a); font-weight: 700; border-color: var(--pe-line, #E1E7DE); }
#order_review table.woocommerce-checkout-review-order-table td { background: transparent; }
#order_review table.woocommerce-checkout-review-order-table th,
#order_review table.woocommerce-checkout-review-order-table td { border-left: 0; border-right: 0; }
/* „Łącznie" — czarne, wyraźne. */
#order_review .woocommerce-checkout-review-order-table .order-total th,
#order_review .woocommerce-checkout-review-order-table .order-total td,
#order_review .woocommerce-checkout-review-order-table .order-total td .woocommerce-Price-amount {
	border-bottom: 0; padding-top: 1em; font-size: 1.15rem; font-weight: 800; color: #111;
}
.woocommerce-checkout-review-order-table .cart_item .product-name { font-weight: 600; color: var(--pe-text, #24312a); }

/* Miniatura produktu przy nazwie — zdjęcie po lewej, tekst w osobnej kolumnie.
   Kolumny robimy flexem, nie floatem: przy floacie trzeci i kolejny wiersz
   tekstu (np. nazwa łamiąca się na dwie linie + etykieta „Bonus gratis")
   schodził poniżej miniatury i zaczynał się pod nią. */
#order_review td.product-name { overflow: hidden; }
.pe-citem { display: inline-flex; align-items: flex-start; gap: 0.7rem; vertical-align: top; max-width: 100%; }
.pe-citem__img { flex: 0 0 auto; line-height: 0; }
.pe-citem__img img { width: 44px; height: 44px; border-radius: 8px; object-fit: cover; border: 1px solid var(--pe-line, #E1E7DE); background: #fff; display: block; margin: 0; }
.pe-citem__name { flex: 1 1 auto; min-width: 0; font-weight: 600; }
#order_review .product-quantity { color: var(--pe-text-soft, #5a6b5e); font-weight: 600; }

/* --- Płatności --- */
#payment { background: transparent; border-radius: 0; }
#payment ul.payment_methods { list-style: none; margin: 0 0 1rem; padding: 0; border: 0; }
#payment ul.payment_methods li { padding: 0.7em 0; border-bottom: 1px solid var(--pe-line, #E1E7DE); }
#payment ul.payment_methods li label { font-weight: 700; display: inline-flex; align-items: center; gap: 0.5em; }
#payment .payment_box { background: var(--pe-white, #fff); border-radius: 8px; padding: 0.9em 1em; font-size: 0.9rem; margin-top: 0.6em; }
#payment .payment_box::before { display: none; }

/* --- Zgody / regulamin --- */
.woocommerce-terms-and-conditions-wrapper { margin: 1rem 0; font-size: 0.9rem; }
.woocommerce-privacy-policy-text { font-size: 0.85rem; color: var(--pe-text-soft, #5a6b5e); }

/* --- Przyciski --- */
.woocommerce #payment #place_order,
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce .button {
	background: var(--pe-accent, #7CC94E); color: var(--pe-accent-ink, #17331E);
	font-weight: 800; border: 0; border-radius: 8px; padding: 0.95em 1.6em; cursor: pointer;
	font-size: 1.05rem; transition: background-color 0.15s ease; width: 100%; margin-top: 0.6rem;
}
.woocommerce #payment #place_order:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce .button:hover {
	background: var(--pe-green-deep, #0b3f23); color: var(--pe-white, #fff);
}
.woocommerce .button.wc-backward, .woocommerce a.button.wc-backward { width: auto; }

/* Kupon w kasie = domyślny natywny WooCommerce (toggle jak „Powracający klient?").
   Bez własnych nadpisań — wygląd z ogólnego .woocommerce-info powyżej. */

/* --- Podziękowanie (order-received) — markowa karta „Gratulacje" --- */
.pe-ty { display: flex; justify-content: center; padding: 1rem 0 2rem; }
.pe-ty__card {
	background: var(--pe-white, #fff); border: 1px solid var(--pe-line, #E1E7DE);
	border-radius: 14px; max-width: 580px; width: 100%; padding: 48px 40px; text-align: center;
	box-shadow: 0 6px 26px rgba(23, 51, 30, 0.07);
}
/* ★ Emoji zastąpione ikoną pe_icon() (zasada twarda). Krążek z ptaszkiem
   zamiast 🎉 — ta sama rola wizualna, spójnie z resztą serwisu. */
.pe-ty__mark {
	display: inline-flex; align-items: center; justify-content: center;
	width: 60px; height: 60px; border-radius: 50%; margin-bottom: 18px;
	background: var(--pe-green, #0F5A32); color: #fff;
}
.pe-ty__mark svg { width: 30px; height: 30px; }
.pe-ty__mark--warn { background: #8c2f2f; }
/* Oczekiwanie na płatność: złoto (akcent „uwaga", ten sam wyjątek co gwiazdki/upsell),
   ikona ciemna dla kontrastu (biała na złocie byłaby nieczytelna). */
.pe-ty__mark--wait { background: #E9B84A; color: #17331E; }
.pe-ty__card--wait { border-color: #ecd9a6; }
.pe-ty__icon svg { width: 18px; height: 18px; }
.pe-ty__title { font-size: clamp(1.5rem, 3vw, 1.7rem); font-weight: 800; color: var(--pe-forest, #17331E); margin: 0 0 10px; line-height: 1.25; }
.pe-ty__sub { font-size: 1rem; color: var(--pe-text-soft, #5a6b5e); margin: 0 0 30px; line-height: 1.5; }
/* ★ Selektor złożony (0,2,0) celowo bije `.pe-entry a` (0,1,1) z main.css — bez tego
   tekst przycisku dostaje kolor linku treści (zieleń) i znika na zielonym tle. To ten
   sam nawracający konflikt specyficzności co przy `.pe-btn` i boxach poradników.
   Strona podziękowania renderuje się w `.pe-entry`, więc regułę trzeba przebić. */
.pe-ty .pe-ty__btn {
	display: inline-block; background: var(--pe-green, #0F5A32); color: #fff;
	font-size: 1.05rem; font-weight: 800; padding: 15px 34px; border-radius: 8px;
	text-decoration: none; box-shadow: 0 4px 14px rgba(15, 90, 50, 0.22);
	transition: background-color 0.15s ease;
}
.pe-ty .pe-ty__btn:hover { background: var(--pe-green-deep, #0b3f23); color: #fff; }
.pe-ty__divider { border: 0; border-top: 1px solid var(--pe-line, #E1E7DE); margin: 36px 0 24px; }
.pe-ty__info-title { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--pe-text-soft, #5a6b5e); margin: 0 0 14px; text-align: left; }
.pe-ty__list { list-style: none !important; text-align: left; margin: 0 !important; padding: 0 !important; display: flex; flex-direction: column; gap: 11px; }
.pe-ty__list > li { margin: 0 !important; padding-left: 0 !important; position: static; display: flex; gap: 10px; align-items: flex-start; font-size: 0.9rem; color: var(--pe-text-soft, #5a6b5e); line-height: 1.5; }
.pe-ty__list > li::before { content: none !important; display: none !important; }
.pe-ty__icon { flex: 0 0 auto; margin-top: 1px; }
.pe-ty__card--failed { border-color: #e6b3b3; }
@media (max-width: 560px) { .pe-ty__card { padding: 32px 22px; } }

/* Style formularza „ustaw hasło" są w main.css — ten arkusz ładuje się WYŁĄCZNIE
   na stronach WooCommerce, a formularz pojawia się też na podziękowaniu po
   zapisie darmowym, które renderuje się pod adresem strony głównej. */

/* --- Strona kasy: szeroki, czysty układ --- */
.woocommerce-checkout .pe-header__inner, .woocommerce-cart .pe-header__inner { min-height: 3.4rem; }
.pe-checkout-page { max-width: 1180px; padding-top: 1rem; padding-bottom: 3rem; }

/* nadpisanie wąskiego wrappera gdyby gdzieś wracał */
.woocommerce-checkout .pe-entry { max-width: none; }

/* --- Pas gwarancji pod całą kasą (pełna szerokość, jak stopka) ---
   Własna klasa .pe-coguar (NIE .pe-guarantee — tamta to box na stronach
   Ćwiczenia/Kalkulator i kolidowała: max-width 44rem + margin auto = wąski,
   oderwany box). */
.pe-coguar {
	clear: both; width: 100%; box-sizing: border-box;
	margin: 0.5rem 0 0; padding: 1.5rem 1.6rem; text-align: center;
	background: var(--pe-paper, #F6F9F3); border: 1px solid var(--pe-line, #E1E7DE);
	border-radius: 14px;
	display: flex; flex-direction: column; align-items: center; gap: 0.6rem;
}
.pe-coguar__badge {
	width: 52px; height: 52px; border-radius: 50%;
	background: #e7f5da; color: var(--pe-green, #0F5A32);
	display: flex; align-items: center; justify-content: center; margin-bottom: 0.2rem;
}
.pe-coguar__badge svg { width: 28px; height: 28px; }
.pe-coguar__body { max-width: 640px; }
.pe-coguar__body strong { display: block; font-size: 1.15rem; color: var(--pe-forest, #17331E); margin-bottom: 0.35rem; }
.pe-coguar__body p { margin: 0 auto 1rem; font-size: 0.92rem; color: var(--pe-text-soft, #5a6b5e); line-height: 1.55; }
.pe-coguar__trust { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem 1.6rem; font-size: 0.9rem; font-weight: 700; color: var(--pe-forest, #17331E); }
.pe-coguar__trust li { display: inline-flex; align-items: center; gap: 0.4em; }
.pe-coguar__trust .pe-icon { color: var(--pe-green, #0F5A32); width: 1.05em; height: 1.05em; }

/* Etykieta bonusu w koszyku i na kasie (patrz pe_bonus_item_name w inc/woocommerce.php). */
.pe-bonus-tag {
	display: inline-block;
	margin-left: .5em;
	padding: 2px 10px;
	border-radius: 999px;
	background: rgba(124, 201, 78, .18);
	color: var(--pe-green-deep, #044922);
	font-size: .72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	vertical-align: middle;
}
.woocommerce td.product-price ins,
.woocommerce td.product-subtotal ins {
	text-decoration: none;
	font-weight: 700;
	color: var(--pe-green, #0F5A32);
}
.woocommerce td.product-price del,
.woocommerce td.product-subtotal del {
	opacity: .55;
	margin-right: .35em;
}

/* Etykieta bonusu siedzi wewnątrz .pe-citem__name (obok tekstu, nie pod
   floatowaną miniaturą) — dlatego zaczyna nowy wiersz dopiero tam, gdzie trzeba. */
.pe-citem__name .pe-bonus-tag { margin-left: .5em; }
/* Cena bonusu: „19,00 zł" i „0 zł" nie mogą się łamać w środku. */
.woocommerce td.product-total del,
.woocommerce td.product-total ins,
.woocommerce td.product-price del,
.woocommerce td.product-price ins,
.woocommerce td.product-subtotal del,
.woocommerce td.product-subtotal ins { white-space: nowrap; }

/* Ilość „× N" siedzi teraz wewnątrz kolumny z nazwą (patrz pe_checkout_item_thumb). */
.pe-citem__qty { margin-left: .5em; color: var(--pe-text-soft, #5a6b5e); font-weight: 600; white-space: nowrap; }

/* Cena w promocji: katalogowa przekreślona NAD ceną do zapłaty (nie obok),
   żeby w wąskiej kolumnie podsumowania nie łamały się w przypadkowym miejscu. */
#order_review td.product-total del,
#order_review td.product-total ins,
.woocommerce td.product-price del,
.woocommerce td.product-price ins,
.woocommerce td.product-subtotal del,
.woocommerce td.product-subtotal ins { display: block; white-space: nowrap; line-height: 1.3; }
#order_review td.product-total del,
.woocommerce td.product-price del,
.woocommerce td.product-subtotal del { opacity: .55; font-size: .9em; }
#order_review td.product-total ins,
.woocommerce td.product-price ins,
.woocommerce td.product-subtotal ins { text-decoration: none; font-weight: 700; color: var(--pe-green, #0F5A32); }

/* -------------------------------------------------------------------------
   ORDER BUMP W KASIE (inc/order-bump.php)
   Odpowiednik bumpów z CartFlows. Ramka przerywana w złocie #E9B84A — tym
   samym akcencie pilności co na stronach upsella (jedyny dopuszczony wyjątek
   od palety zieleni, obok gwiazdek ocen). Blok siedzi wewnątrz #order_review,
   więc odświeża się razem z podsumowaniem po `update_checkout`.
   ---------------------------------------------------------------------- */

.pe-bump { margin: 1.5rem 0; }

.pe-bump__intro {
	margin: 0 0 .6rem;
	font-weight: 700;
	font-size: .95rem;
	color: var(--pe-forest, #17331E);
}

.pe-bump__item {
	border: 2px dashed #E9B84A;
	border-radius: .75rem;
	background: var(--pe-paper, #F6F9F3);
	overflow: hidden;
	transition: border-color .15s ease, background-color .15s ease;
}

.pe-bump__item + .pe-bump__item { margin-top: .85rem; }

/* Zaznaczony dodatek przestaje być ofertą, a staje się częścią zamówienia:
   ramka ciągła zamiast przerywanej, a cały kafelek gaśnie — decyzja zapadła,
   więc blok oddaje uwagę reszcie kasy. Nadal czytelny i klikalny, żeby dało się
   go odznaczyć; po najechaniu wraca do pełnej mocy.

   ⚠ NIEROZWIĄZANE: `border-color` z tej reguły NIE jest stosowany — pomiar
   getComputedStyle pokazuje złoty kolor z reguły bazowej, mimo że ta reguła ma
   wyższą szczegółowość, leży dalej w pliku, a `border-style: solid` z niej
   działa. Wymuszenie koloru przez CSSOM też nic nie dało, więc to nie jest
   zwykła kolizja kaskady. Zamiana longhandów na pełny skrót `border` też nie
   pomogła. Stan zaznaczenia niosą więc TŁO i przezroczystość, i wizualnie to
   wystarcza (zaakceptowane przez Piotra) — ale nie zakładaj, że zmiana koloru
   ramki tutaj cokolwiek da, dopóki ktoś nie znajdzie źródła nadpisania. */
.pe-bump__item.is-checked {
	border: 2px solid rgba(15, 90, 50, .35);
	background: var(--pe-paper, #F6F9F3);
	opacity: .72;
}
.pe-bump__item.is-checked:hover,
.pe-bump__item.is-checked:focus-within { opacity: 1; }

.pe-bump__item.is-busy { opacity: .6; pointer-events: none; }

.pe-bump__label {
	display: flex;
	align-items: center;
	gap: .6rem;
	margin: 0;
	padding: .7rem .9rem;
	background: rgba(233, 184, 74, .18);
	cursor: pointer;
	font-weight: 700;
	color: var(--pe-ink, #141414);
}

.pe-bump__item.is-checked .pe-bump__label { background: rgba(15, 90, 50, .1); }

.pe-bump__check {
	width: 1.15rem;
	height: 1.15rem;
	margin: 0;
	flex: 0 0 auto;
	accent-color: var(--pe-green, #0F5A32);
	cursor: pointer;
}

.pe-bump__body {
	display: flex;
	gap: .9rem;
	align-items: flex-start;
	padding: .9rem;
}

/* Miniatura ma stałą szerokość — inaczej długi opis ściskałby ją do paska. */
.pe-bump__img { flex: 0 0 4.5rem; }
.pe-bump__img img { display: block; width: 100%; height: auto; border-radius: .4rem; }

.pe-bump__text { flex: 1 1 auto; min-width: 0; }

.pe-bump__title {
	display: block;
	font-size: 1rem;
	line-height: 1.3;
	color: var(--pe-forest, #17331E);
}

.pe-bump__price {
	margin: .3rem 0 .4rem;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: .5rem;
}

.pe-bump__price del { opacity: .55; text-decoration: line-through; }
.pe-bump__price ins {
	text-decoration: none;
	font-weight: 800;
	font-size: 1.15rem;
	color: var(--pe-green, #0F5A32);
}

.pe-bump__save {
	font-size: .8rem;
	font-weight: 700;
	padding: .1rem .5rem;
	border-radius: 999px;
	background: var(--pe-green, #0F5A32);
	color: #fff;
}

.pe-bump__desc {
	margin: 0;
	font-size: .875rem;
	line-height: 1.5;
	color: var(--pe-text-soft, #5a6b5e);
}

@media (max-width: 480px) {
	.pe-bump__body { gap: .7rem; padding: .75rem; }
	.pe-bump__img { flex-basis: 3.25rem; }
}

/* Komunikat błędu bumpu (np. oferta wygasła albo padł nonce). Czerwień zostaje
   czerwienią — czytelność sygnału ważniejsza niż paleta, tak jak w tutor.css. */
.pe-bump__err {
	margin: .6rem .9rem .9rem;
	padding: .5rem .7rem;
	border-radius: .4rem;
	background: #fdecec;
	color: #a3231f;
	font-size: .85rem;
	font-weight: 600;
}

/* Pigułka dodatku z kasy — ciemniejsza od bonusowej, żeby dwie etykiety w tym
   samym koszyku dało się rozróżnić rzutem oka. Bonus jest jasny i limonkowy
   (gratis), dodatek ciemnozielony i wypełniony (pozycja płatna).
   Kontrast białego tekstu na #0F5A32: 8,3:1. */
.pe-bonus-tag--bump {
	background: var(--pe-green, #0F5A32);
	color: #fff;
}

/* -------------------------------------------------------------------------
   KUPON W PRAWEJ KOLUMNIE (inc/coupon.php)
   Woo renderuje swój formularz nad całą kasą; my przenosimy pole pod
   podsumowanie, bo tam klient patrzy na kwotę. Startuje zwinięte, żeby nie
   sugerować, że gdzieś jest kod, którego klient nie ma.
   ---------------------------------------------------------------------- */

.pe-coupon { margin: 1.25rem 0; }

.pe-coupon__toggle {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: 0;
	border: 0;
	background: none;
	color: var(--pe-green, #0F5A32);
	font: inherit;
	font-size: .92rem;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}
.pe-coupon__toggle:hover { color: var(--pe-green-deep, #044922); }
.pe-coupon__toggle .pe-icon { width: 1.1em; height: 1.1em; flex: 0 0 auto; }

.pe-coupon__panel { margin-top: .75rem; }
.pe-coupon__panel[hidden] { display: none; }

.pe-coupon__row { display: flex; gap: .5rem; flex-wrap: wrap; }

.pe-coupon__input {
	flex: 1 1 10rem;
	min-width: 0;
	padding: .6rem .75rem;
	border: 1px solid var(--pe-line, #E1E7DE);
	border-radius: .4rem;
	font: inherit;
	text-transform: uppercase;
}
.pe-coupon__input:focus {
	outline: 2px solid var(--pe-green, #0F5A32);
	outline-offset: 1px;
	border-color: var(--pe-green, #0F5A32);
}

.pe-coupon__apply { flex: 0 0 auto; white-space: nowrap; }
.pe-coupon__apply[disabled] { opacity: .6; cursor: default; }

.pe-coupon__msg { margin: .5rem 0 0; font-size: .85rem; font-weight: 600; min-height: 1em; }
.pe-coupon__msg:empty { margin: 0; min-height: 0; }
.pe-coupon__msg[data-stan="ok"]   { color: var(--pe-green, #0F5A32); }
/* Czerwień zostaje czerwienią — czytelność sygnału ważniejsza niż paleta. */
.pe-coupon__msg[data-stan="blad"] { color: #a3231f; }

/* ==========================================================================
   POLA KASY — dane do faktury (zastępuje Flexible Checkout Fields)
   Logika i klucze meta: inc/checkout-fields.php
   ========================================================================== */

/* ★ Pola firmowe NIE są chowane tu, tylko w JS. Gdyby skrypt nie wystartował,
   mają zostać widoczne — kasa bez możliwości poproszenia o fakturę jest gorsza
   niż kasa z kilkoma polami za dużo. Klasa --js pojawia się dopiero z JS. */
.pe-invoice-field--js { display: none; }

.pe-invoice-toggle {
	margin: 1.25rem 0 .25rem;
	padding: .9rem 1rem;
	border: 1px dashed var(--pe-line, #E1E7DE);
	border-radius: .5rem;
	background: var(--pe-paper, #F6F9F3);
}

.pe-invoice-toggle label {
	display: flex;
	align-items: center;
	gap: .6rem;
	margin: 0;
	font-weight: 600;
	cursor: pointer;
}

.pe-invoice-toggle input[type="checkbox"] {
	width: 1.15rem;
	height: 1.15rem;
	accent-color: var(--pe-green, #0F5A32);
	flex: 0 0 auto;
	margin: 0;
}

/* Zaznaczony checkbox = dane firmowe są częścią zamówienia, nie propozycją,
   więc ramka przestaje być przerywana. Ta sama logika co przy order bumpie. */
.pe-invoice-toggle:has(input:checked) {
	border-style: solid;
	border-color: var(--pe-green, #0F5A32);
}

/* ---- Listy interfejsu Woo/Paynow: bez znacznika z treści ----

   ★★ Kasa dziedziczy `.pe-entry ul > li::before` — limonkowy kwadracik, którym
   oznaczamy punkty list w PORADNIKACH. Trafiał przez to także w metody płatności
   i w klauzulę RODO Paynow, gdzie wyglądał jak przypadkowa ozdoba przy przycisku radio.

   ⚠ Reguły z `.pe-entry` NIE WOLNO usuwać ani zawężać globalnie: na tej samej
   stronie kasy jest **125 pozycji zwykłych list w treści** (regulamin), gdzie ten
   znacznik jest zamierzony. Zmierzone w przeglądarce — 132 dotknięte `li` łącznie.
   Dlatego zerujemy punktowo, po selektorach należących do interfejsu, a nie do treści. */
#payment ul.payment_methods > li::before,
#payment .data-processing-list > li::before,
#payment .payment_box ul > li::before { content: none; }

/* ---- Pola do faktury: gwiazdka TYLKO na polach wymaganych (adres) ----

   ★ MODEL (Piotr 2026-07-22): fakturę dostaje każdy, kto ją zaznaczy. Nazwa firmy i NIP
   są OPCJONALNE (wypełnia firma), więc niech pokazują szczere „(opcjonalne)" Woo. Wymagany
   jest tylko adres (`.pe-invoice-required`) — i tylko on dostaje gwiazdkę.

   ★★ DLACZEGO NIE `'required' => true` W DEFINICJI POLA: pola są ukryte dla kupującego bez
   faktury. Atrybut `required` na ukrytym polu blokuje wysyłkę formularza bez widocznego
   komunikatu, więc requiredness przełącza JS (`prop('required', on)`) razem z widocznością,
   a tu poprawiamy tylko warstwę wizualną. Pola są widoczne tylko wtedy, gdy są wymagane,
   więc gwiazdka nie potrzebuje warunku.

   ★★ PODWÓJNA GWIAZDKA (naprawione): adres to RDZENNE pola Woo, które przy kraju PL są
   wymagane przez lokalizację → Woo dokłada własny `<span class="required">*</span>`
   (wc-template-functions.php:3201), a nasz `::after` dokładał drugą. Chowamy OBA natywne
   znaczniki (`.optional` i `.required`) i pokazujemy dokładnie jedną własną — jednolicie,
   niezależnie od decyzji Woo o polu.

   ⚠ Nie dotyczy przełącznika (`.pe-invoice-toggle`) ani firmy/NIP-u — tam „(opcjonalne)"
   jest prawdą. */
.pe-invoice-required label .optional,
.pe-invoice-required label .required { display: none; }
.pe-invoice-required label::after {
	content: " *";
	color: var(--pe-green, #0F5A32);
	font-weight: 700;
}

/* ===== PAYNOW BLIK — większe, czytelne pole na kod ===== */
.payment_method_pay_by_paynow_pl_blik label[for="paynow_blik_code"]{
	display:block; margin:0 0 .45rem; font-weight:600;
}
#paynow_blik_code{
	width:100%; max-width:15rem; box-sizing:border-box;
	font-size:1.6rem; line-height:1.2; text-align:center; letter-spacing:.5em;
	text-indent:.25em; /* połowa letter-spacing → kompensuje odstęp po ostatnim znaku, caret dokładnie na środku */
	padding:.6em .5em; border-radius:.5rem;
}

/* ===== LOGOWANIE POWRACAJĄCEGO KLIENTA W KASIE ===== */
.woocommerce-form-login{
	margin:0 0 1.5rem; padding:1.25rem 1.25rem 1.4rem;
	border:1px solid var(--pe-line,#E1E7DE); border-radius:.6rem; background:#fff;
}
.woocommerce-form-login .form-row{ margin:0 0 1rem; }
.woocommerce-form-login label{ display:block; margin:0 0 .35rem; font-weight:600; }
.woocommerce-form-login .input-text{
	width:100%; box-sizing:border-box; padding:.7rem .8rem;
	border:1px solid var(--pe-line,#E1E7DE); border-radius:.5rem; background:#fff;
}
/* pusty przycisk pokaż/ukryj hasło (dodawany JS-em WooCommerce) — chowamy, wyglądał jak zepsute pole */
.woocommerce-form-login .show-password-input{ display:none; }
.woocommerce-form-login__rememberme{ display:flex !important; align-items:center; gap:.5rem; margin:.25rem 0 1rem; font-weight:400; }
.woocommerce-form-login__rememberme input{ width:auto; margin:0; }
.woocommerce-form-login .woocommerce-form-login__submit{ width:100%; margin:0; }
.woocommerce-form-login .lost_password{ margin:.75rem 0 0; }
/* neutralizacja lawendowego tła autouzupełniania przeglądarki */
.woocommerce-form-login .input-text:-webkit-autofill{ -webkit-box-shadow:0 0 0 1000px #fff inset; box-shadow:0 0 0 1000px #fff inset; }

/* ===== KOMUNIKATY WALIDACJI PÓL W KASIE — mniejsza czcionka ===== */
/* WooCommerce wstawia je jako .woocommerce-error (tekst „%s jest wymaganym polem"),
   ciemne i większe; wcześniejszy styl łapał tylko te w .form-row. */
body.woocommerce-checkout .woocommerce-error,
body.woocommerce-checkout .woocommerce-error li,
body.woocommerce-checkout .woocommerce-NoticeGroup .woocommerce-error,
body.woocommerce-checkout .wc-block-components-validation-error {
	font-size:0.82rem !important; line-height:1.45; font-weight:400;
}

/* ===== GWARANCJA POD PRZYCISKIEM (w prawej kolumnie #order_review) — kompaktowo ===== */
#order_review .pe-coguar{
	margin:1rem 0 0; padding:1rem 1rem 0; border:0; border-top:1px solid var(--pe-line,#E1E7DE);
	border-radius:0; background:transparent; gap:.4rem;
}
#order_review .pe-coguar__badge{ width:40px; height:40px; margin-bottom:0; }
#order_review .pe-coguar__badge svg{ width:22px; height:22px; }
#order_review .pe-coguar__body strong{ font-size:1rem; margin-bottom:.25rem; }
#order_review .pe-coguar__body p{ font-size:.82rem; margin:0 auto .6rem; line-height:1.45; }
#order_review .pe-coguar__trust{ gap:.35rem .9rem; font-size:.78rem; }
