/* Koszyk, zamówienie i płatności (rodzina cart): /koszyk, /platnosc-gosc, /manual-payment i stan sukcesu zamówienia (wycinek do konta).
   Port mockup/css/checkout.css (kodowanie: redesign/tools/jinja/codemod/prefix.mjs, potem ręcznie): prefiks klas kr-, tokeny --kr-*, reguły narzędzi roboczych mockupu
   (okno Stripe, placeholdery luk BL, panel stanów) pominięte. Nagłówek strony (kr-cat, kr-cat__head, kr-wm) to wzorzec katalogu z catalogue.css, powtórzony tu, bo strona
   koszyka nie ładuje kr-catalogue.css (reguły są identyczne, więc arkusze nie kolidują). Okruszki, pola, przyciski, kr-swap, kr-stock to SHELL (kr-components.css).
   Prefiksy bloków: ck (koszyk), pay (płatności). Tylko tokeny z kr-tokens.css, ostre krawędzie, w znacznikach nie ma style="" (CSP stron prywatnych).
   Ruch: transform/opacity/clip-path; stany początkowe „ukrytych” elementów wyłącznie w prefers-reduced-motion: no-preference, więc bez ruchu treść jest od razu widoczna.
   Indeksy opóźnień (--kr-i, --kr-w) liczy CSS po :nth-child, nie atrybut style. Klasę is-intro (wejście strony) ustawia kr-cart.js / kr-payment.js. */

/* =====================================================================
   NAGŁÓWEK STRONY: okruszki (SHELL), tytuł z maską słów, duch typograficzny
   Wzorzec katalogu (catalogue.css: .cat, .cat__head, .wm). Górny odstęp pod przyklejonym nagłówkiem daje kr-header-offset na <main>.
   ===================================================================== */

.kr-cat {
	padding-bottom: var(--kr-s9);
}

.kr-cat__head {
	position: relative;
	isolation: isolate;
	overflow: clip;
	padding-block: var(--kr-s5) var(--kr-s6);
}

.kr-cat__title {
	font-size: clamp(2rem, 3.6vw, 3.25rem);
	font-weight: 300;
	letter-spacing: -0.03em;
	line-height: 1.08;
	text-wrap: balance;
}

.kr-cat__title:focus-visible {
	outline-offset: 6px;
}

/* duch typograficzny jako treść generowana (czysto dekoracyjny: poza drzewem dostępności i poza testem kontrastu) */
.kr-cat__head::after {
	content: attr(data-ghost);
	position: absolute;
	z-index: -1;
	right: -1vw;
	bottom: -0.1em;
	font-size: clamp(6rem, 17vw, 16rem);
	font-weight: 200;
	letter-spacing: -0.05em;
	line-height: 0.8;
	color: rgb(17 17 17 / 4.5%);
	white-space: nowrap;
	user-select: none;
	pointer-events: none;
}

@media (max-width: 767px) {
	.kr-cat__head::after {
		display: none;
	}
}

.kr-wm {
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding-bottom: 0.14em;
	margin-bottom: -0.14em;
}

.kr-wm__w {
	display: inline-block;
}

/* indeks opóźnienia słowa (mockup ustawiał --w skryptem) */
.kr-wm:nth-child(2) .kr-wm__w { --kr-w: 1; }
.kr-wm:nth-child(3) .kr-wm__w { --kr-w: 2; }
.kr-wm:nth-child(4) .kr-wm__w { --kr-w: 3; }
.kr-wm:nth-child(5) .kr-wm__w { --kr-w: 4; }
.kr-wm:nth-child(n + 6) .kr-wm__w { --kr-w: 5; }

@keyframes kr-cat-word {
	from {
		translate: 0 112%;
	}
}

@keyframes kr-cat-ghost {
	from {
		opacity: 0;
		translate: 5vw 0;
	}
}

@keyframes kr-cat-fade {
	from {
		opacity: 0;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.kr-cat.is-intro .kr-wm__w {
		animation: kr-cat-word 900ms var(--kr-ease-out) both;
		animation-delay: calc(80ms + var(--kr-w, 0) * 70ms);
	}

	.kr-cat.is-intro .kr-cat__head::after {
		animation: kr-cat-ghost 1400ms var(--kr-ease-out) 200ms both;
	}

	[data-kr-cart].is-intro .kr-ck__head::after {
		animation: none;
	}

	.kr-cat.is-intro .kr-crumbs {
		animation: kr-cat-fade 600ms var(--kr-ease-out) both;
	}
}

/* =====================================================================
   STRONA /koszyk: nagłówek, układ
   ===================================================================== */

.kr-ck__count {
	margin: var(--kr-s3) 0 0;
	font-size: 0.9375rem;
	color: var(--kr-muted);
	font-variant-numeric: tabular-nums;
}

.kr-ck__count b {
	display: inline-block;
	color: var(--kr-ink);
	font-weight: 600;
}

.kr-ck__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--kr-s7);
	align-items: start;
}

@media (min-width: 1100px) {
	.kr-ck__layout {
		grid-template-columns: minmax(0, 1fr) minmax(340px, 400px);
		gap: var(--kr-s8);
	}

	/* podsumowanie zostaje na oku przy wypełnianiu pól; wyższe od ekranu przewija się razem ze stroną */
	.kr-ck__aside {
		position: sticky;
		top: calc(var(--kr-header-h) + var(--kr-s4));
	}
}

.kr-ck__main {
	display: grid;
	gap: var(--kr-s6);
	min-width: 0;
}

/* sekcje: cienka linia ink na początku każdej poza pierwszą (rysuje się przy wejściu) */
.kr-ck-sec {
	position: relative;
	display: grid;
	gap: var(--kr-s4);
	min-width: 0;
}

.kr-ck-sec + .kr-ck-sec {
	padding-top: var(--kr-s6);
}

.kr-ck-sec + .kr-ck-sec::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 1px;
	background: var(--kr-line-strong);
	transform-origin: left;
}

.kr-ck-h2 {
	margin: 0;
	padding: 0;
	font-size: 1.375rem;
	font-weight: 300;
	letter-spacing: -0.02em;
	line-height: 1.2;
}

legend.kr-ck-h2 {
	margin-bottom: var(--kr-s3);
}

.kr-ck-lead {
	max-width: 62ch;
	margin: 0;
	font-size: 0.9375rem;
	line-height: 1.6;
	color: var(--kr-muted);
	text-wrap: pretty;
}

.kr-ck-req,
.kr-ck-note {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--kr-muted);
}

.kr-ck-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0 var(--kr-s5);
	margin: 0;
	font-size: 0.8125rem;
	font-weight: 600;
}

.kr-ck-links a {
	text-decoration: underline;
	text-underline-offset: 0.2em;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

.kr-ck-alert {
	display: flex;
	align-items: flex-start;
	gap: var(--kr-s3);
	margin: 0;
	padding: var(--kr-s3) var(--kr-s4);
	border-left: 2px solid var(--kr-danger);
	background: var(--kr-stone);
	font-size: 0.9375rem;
	line-height: 1.5;
}

.kr-ck-alert .kr-ms {
	margin-top: 1px;
	font-size: 20px;
	color: var(--kr-danger);
}

.kr-ck-alert a {
	font-weight: 600;
}

/* =====================================================================
   LINIE KOSZYKA
   ===================================================================== */

.kr-ck-lines {
	display: grid;
	margin: 0;
	padding: 0;
	list-style: none;
}

.kr-ck-line {
	padding-block: var(--kr-s5);
}

.kr-ck-line:first-child {
	padding-top: 0;
}

.kr-ck-line + .kr-ck-line {
	border-top: 1px solid var(--kr-line);
}

.kr-ck-line article {
	display: grid;
	grid-template-columns: 112px minmax(0, 1fr) auto;
	gap: var(--kr-s2) var(--kr-s5);
	align-items: start;
}

.kr-ck-line__media {
	position: relative;
	display: grid;
	place-items: center;
	width: 112px;
	aspect-ratio: 1;
	background: var(--kr-stone);
	overflow: hidden;
}

.kr-ck-line__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	mix-blend-mode: multiply;
}

.kr-ck-line__media::after {
	content: "";
	position: absolute;
	inset: 0;
	box-shadow: var(--kr-image-outline);
	pointer-events: none;
}

/* ścieżka awaryjna obrazu: ikona zegarka zamiast zdjęcia, pole nie zapada się */
.kr-ck-line__ph {
	display: none;
	color: var(--kr-muted);
	font-size: 40px;
}

.kr-ck-line__media.is-broken img {
	display: none;
}

.kr-ck-line__media.is-broken .kr-ck-line__ph {
	display: block;
}

.kr-ck-line__body {
	display: grid;
	justify-items: start;
	gap: var(--kr-s1);
	min-width: 0;
}

.kr-ck-line__brand {
	margin: 0;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.kr-ck-line__name {
	margin: 0;
	font-size: 1.125rem;
	font-weight: 400;
	line-height: 1.3;
	overflow-wrap: anywhere;
	text-wrap: balance;
}

.kr-ck-line__name a {
	text-decoration: none;
}

@media (hover: hover) and (pointer: fine) {
	.kr-ck-line__name a:hover {
		text-decoration: underline;
		text-underline-offset: 0.2em;
	}
}

.kr-ck-line__qty {
	margin: 0;
	font-size: 0.875rem;
	color: var(--kr-muted);
}

.kr-ck-line__lead {
	margin: var(--kr-s1) 0 0;
	font-size: 0.8125rem;
}

.kr-ck-line__lead .kr-ms {
	font-size: 18px;
}

.kr-ck-line__unit {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--kr-s1) var(--kr-s2);
	margin: var(--kr-s1) 0 0;
	font-size: 0.875rem;
	color: var(--kr-muted);
	font-variant-numeric: tabular-nums;
}

.kr-ck-line__now {
	font-size: 1.0625rem;
	font-weight: 600;
	color: var(--kr-ink);
}

.kr-ck-line__now.is-sale {
	color: var(--kr-sale);
}

.kr-ck-line__off {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--kr-sale);
}

.kr-ck-line__was {
	font-size: 0.8125rem;
	text-decoration-thickness: 1px;
}

.kr-ck-line__low {
	margin: 0;
	font-size: 0.75rem;
	color: var(--kr-muted);
}

.kr-ck-line__total {
	display: grid;
	justify-items: end;
	margin: 0;
	font-size: 0.8125rem;
	color: var(--kr-muted);
	text-align: right;
}

.kr-ck-line__total strong {
	font-size: 1.25rem;
	font-weight: 600;
	letter-spacing: -0.01em;
	color: var(--kr-ink);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.kr-ck-line__ctl,
.kr-ck-qty {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: var(--kr-s2) var(--kr-s4);
	margin: var(--kr-s3) 0 0;
}

.kr-ck-qty__f {
	width: 96px;
	gap: var(--kr-s1);
}

.kr-ck .kr-ck-qty .kr-ck-qty__f.kr-field input[type="number"] {
	height: 44px;
	padding: 0 var(--kr-s3);
	text-align: center;
	font-variant-numeric: tabular-nums;
}

.kr-ck .kr-btn--sm,
.kr-pay .kr-btn--sm {
	min-height: 44px;
}

.kr-ck-rm {
	display: inline-flex;
	align-items: center;
	gap: var(--kr-s2);
	min-height: 44px;
	padding: 0 var(--kr-s2);
	border: 0;
	background: none;
	color: var(--kr-muted);
	font-size: 0.8125rem;
	font-weight: 600;
	transition: color var(--kr-t-hover) ease, scale var(--kr-t-press) var(--kr-ease-out);
}

.kr-ck-rm span:not(.kr-ms) {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.kr-ck-rm:active {
	scale: 0.96;
}

.kr-ck-rm[aria-disabled="true"] {
	cursor: progress;
	opacity: 0.6;
}

@media (hover: hover) and (pointer: fine) {
	.kr-ck-rm:hover {
		color: var(--kr-ink);
	}
}

.kr-ck-qty__err {
	flex-basis: 100%;
}

.kr-ck-line__status {
	flex-basis: 100%;
	margin: 0;
	font-size: 0.8125rem;
	color: var(--kr-muted);
}

.kr-ck-line__status:empty {
	display: none;
}

.kr-ck-line__status[data-kind="error"],
.kr-ck-line__status[role="alert"] {
	color: var(--kr-danger);
	font-weight: 500;
}

.kr-ck-line.is-leaving {
	opacity: 0;
	translate: -12px 0;
	transition: opacity 170ms var(--kr-ease-out), translate 170ms var(--kr-ease-out);
	pointer-events: none;
}

/* cofnięcie usunięcia (wzór: szuflada koszyka, D-R58) */
.kr-ck-undo:empty {
	display: none;
}

.kr-ck-undo__row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kr-s3);
	margin-bottom: var(--kr-s5);
	padding: var(--kr-s3) var(--kr-s4);
	border-left: 2px solid var(--kr-ink);
	background: var(--kr-stone);
	font-size: 0.875rem;
}

@media (max-width: 767px) {
	.kr-ck-line article {
		grid-template-columns: 80px minmax(0, 1fr);
		gap: var(--kr-s3) var(--kr-s4);
	}

	.kr-ck-line__media {
		width: 80px;
	}

	.kr-ck-line__total {
		grid-column: 2;
		justify-items: start;
		text-align: left;
	}
}

/* =====================================================================
   POLA, OPCJE WYBORU, ADRESY
   ===================================================================== */

.kr-ck .kr-field input:not([type="checkbox"]):not([type="radio"]),
.kr-ck .kr-field select {
	width: 100%;
	height: 56px;
	padding: 0 var(--kr-s4);
	border: 1px solid #868a8e;
	background: var(--kr-paper);
	font-size: 1rem;
	transition: border-color var(--kr-t-hover) ease;
}

.kr-ck .kr-field input:not([type="checkbox"]):not([type="radio"])[aria-invalid="true"] {
	border-color: var(--kr-danger);
}

.kr-ck .kr-field input:disabled {
	background: var(--kr-stone);
	color: var(--kr-muted);
}

.kr-ck-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--kr-s4);
}

.kr-ck-f {
	min-width: 0;
	align-content: start;
}

.kr-ck-f--wide {
	grid-column: 1 / -1;
}

@media (max-width: 575px) {
	.kr-ck-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* lista rozwijana z makra select_field (.kr-select: ramka ze strzałką); styl jak w mockupie (.ck-select), na wypadek gdyby powłoka nie miała jeszcze własnego */
.kr-ck .kr-select {
	position: relative;
}

.kr-ck .kr-select select {
	appearance: none;
	padding-right: 48px;
}

.kr-ck .kr-select .kr-ms {
	position: absolute;
	top: 50%;
	right: var(--kr-s4);
	translate: 0 -50%;
	pointer-events: none;
}

.kr-ck-set {
	display: grid;
	gap: var(--kr-s3);
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.kr-ck-opt {
	position: relative;
	display: flex;
	align-items: center;
	gap: var(--kr-s3);
	min-height: 60px;
	padding: var(--kr-s3) var(--kr-s4);
	border: 1px solid var(--kr-line);
	background: var(--kr-paper);
	cursor: pointer;
	transition: border-color var(--kr-t-hover) ease, box-shadow var(--kr-t-hover) ease, background-color var(--kr-t-press) ease;
}

.kr-ck-opt input {
	flex: none;
	width: 20px;
	height: 20px;
	margin: 0;
	accent-color: var(--kr-ink);
}

[data-kr-cart] .kr-ck-opt input[type="radio"]:not(:checked):not(:disabled)::before {
	border-color: #868a8e;
}

/* wybrana opcja: ramka ink 2 px bez zmiany wymiarów (druga linia jako cień wewnętrzny) */
.kr-ck-opt:has(input:checked) {
	border-color: var(--kr-ink);
	box-shadow: inset 0 0 0 1px var(--kr-ink);
}

.kr-ck-opt:active {
	background: var(--kr-stone);
}

@media (hover: hover) and (pointer: fine) {
	.kr-ck-opt:hover {
		border-color: var(--kr-ink);
	}
}

.kr-ck-opt__b {
	display: flex;
	flex: 1;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--kr-s1) var(--kr-s4);
	min-width: 0;
}

.kr-ck-opt__t {
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--kr-s1) var(--kr-s2);
	font-weight: 600;
	overflow-wrap: anywhere;
}

.kr-ck-opt__t > .kr-ms {
	font-size: 22px;
}

.kr-ck-opt__tag {
	font-weight: 400;
	color: var(--kr-muted);
}

.kr-ck-opt__fee {
	font-size: 0.8125rem;
	color: var(--kr-muted);
}

.kr-ck-opt__fee b {
	font-weight: 600;
	color: var(--kr-ink);
	font-variant-numeric: tabular-nums;
}

.kr-ck-checks,
.kr-ck-consents {
	display: grid;
	gap: var(--kr-s3);
}

.kr-ck-consent .kr-check,
.kr-ck-checks .kr-check {
	align-items: center;
	min-height: 44px;
}

.kr-ck-consent .kr-check input[aria-invalid="true"] {
	outline: 2px solid var(--kr-danger);
	outline-offset: 2px;
}

[data-kr-cart] .kr-ck-consents .kr-check input[type="checkbox"],
[data-kr-cart] #checkout-addresses .kr-check input[type="checkbox"] {
	--checkbox-size: 24px;
	appearance: auto;
	accent-color: var(--kr-ink);
	background-image: none;
}

[data-kr-cart] .kr-ck-consents .kr-check input[type="checkbox"]:not(:checked),
[data-kr-cart] #checkout-addresses .kr-check input[type="checkbox"]:not(:checked) {
	border-color: #868a8e;
}

[data-kr-cart] .kr-check input[type="checkbox"]:focus-visible:not([aria-invalid="true"]),
[data-kr-cart] .kr-ck-opt input[type="radio"]:focus-visible:not([aria-invalid="true"]) {
	outline: 2px solid #005fcc;
	outline-offset: 2px;
}

.kr-ck-guest {
	display: grid;
	gap: var(--kr-s4);
}

.kr-ck-guest .kr-ck-set {
	margin-top: var(--kr-s3);
}

/* edytor adresów: akordeon na natywnych <details> */
.kr-ck-adets {
	display: grid;
	border-top: 1px solid var(--kr-line);
}

.kr-ck-ad {
	border-bottom: 1px solid var(--kr-line);
}

.kr-ck-ad > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--kr-s3);
	min-height: 56px;
	padding: var(--kr-s2) 0;
	font-weight: 600;
	list-style: none;
	cursor: pointer;
	overflow-wrap: anywhere;
}

.kr-ck-ad > summary::-webkit-details-marker {
	display: none;
}

.kr-ck-ad > summary .kr-ms {
	transition: rotate var(--kr-t-ui) var(--kr-ease-out);
}

.kr-ck-ad[open] > summary .kr-ms {
	rotate: 180deg;
}

.kr-ck-ad__p {
	padding-bottom: var(--kr-s5);
}

.kr-ck-aform {
	display: grid;
	gap: var(--kr-s4);
}

.kr-ck-aform__act {
	display: flex;
	flex-wrap: wrap;
	gap: var(--kr-s3);
}

/* =====================================================================
   PODSUMOWANIE I PRZYCISK ZAMÓWIENIA
   ===================================================================== */

.kr-ck-sum {
	display: grid;
	gap: var(--kr-s4);
	padding: var(--kr-s6) var(--kr-s5);
	background: var(--kr-stone);
}

.kr-ck-sum__dl {
	display: grid;
	margin: 0;
}

.kr-ck-sum__r {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--kr-s4);
	padding-block: var(--kr-s3);
	border-bottom: 1px solid var(--kr-line);
	font-size: 0.9375rem;
}

.kr-ck-sum__r dt {
	color: var(--kr-muted);
	font-weight: 400;
}

.kr-ck-sum__r dd {
	margin: 0;
	font-weight: 600;
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.kr-ck-sum__r--total {
	padding-top: var(--kr-s4);
	border-bottom: 0;
}

.kr-ck-sum__r--total dt {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--kr-ink);
}

.kr-ck-sum__r--total strong {
	font-size: 1.75rem;
	font-weight: 300;
	letter-spacing: -0.02em;
	white-space: nowrap;
}

.kr-ck-cta-box {
	display: grid;
	gap: var(--kr-s3);
}

/* przycisk zamówienia: długi komunikat procesu zawija się w przycisku, wysokość zostaje stała (komórka .swap) */
.kr-ck-cta {
	white-space: normal;
	line-height: 1.25;
	text-align: center;
}

.kr-ck-cta .kr-swap__c span:last-child,
.kr-ck-cta .kr-swap__b span:last-child {
	text-transform: none;
	letter-spacing: 0.02em;
}

.kr-ck-cta[data-state="busy"] {
	background: var(--kr-ink);
	border-color: var(--kr-ink);
	color: var(--kr-paper);
	cursor: progress;
	pointer-events: none;
}

.kr-ck-cta[data-state="done"] {
	background: var(--kr-ok);
	border-color: var(--kr-ok);
	color: #fff;
	pointer-events: none;
}

.kr-ck-cta[data-kr-cta-blocked] {
	scale: 1;
}

/* tarcza przed Bootstrapem 4 i starym CSS aplikacji (audyt powłoki W1): a:hover (0,1,1) przebija reset o zerowej specyficzności, więc odsyłacze-przyciski
   i kr-text-link rodziny nie dostają podkreślenia po najechaniu; zaokrąglenia przycisków (!important starego CSS) zdejmuje tarcza SHELL (kr-base.css, K2) */
.kr-ck a.kr-btn:hover,
.kr-pay a.kr-btn:hover,
.kr-ck a.kr-text-link:hover,
.kr-pay a.kr-text-link:hover {
	text-decoration: none;
}

/* ukryty stan „w toku” przycisku nie kręci wskaźnika w tle (SHELL animuje .kr-spinner bez końca); obraca się dopiero, gdy stan jest widoczny */
.kr-swap__c .kr-spinner {
	animation-play-state: paused;
}

[data-state="busy"] .kr-swap__c .kr-spinner {
	animation-play-state: running;
}

.kr-ck-hint,
.kr-ck-status {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.5;
}

.kr-ck-hint {
	color: var(--kr-ink-soft);
}

.kr-ck-hint[hidden],
.kr-ck-status:empty {
	display: none;
}

.kr-ck-status[data-kind="error"],
.kr-ck-status[role="alert"] {
	color: var(--kr-danger);
	font-weight: 500;
}

.kr-ck-status a,
.kr-ck-hint a {
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.kr-ck-continue {
	justify-self: start;
}

/* raty w podsumowaniu (kuck_installments, placement checkout): mockup nie projektuje bloku, więc prosty układ z tokenów, jak wiersze podsumowania */
.kr-ck-inst {
	display: grid;
	gap: var(--kr-s2);
	padding-top: var(--kr-s3);
	border-top: 1px solid var(--kr-line);
}

.kr-ck-inst__t {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.kr-ck-inst__label {
	margin: 0;
	font-weight: 600;
}

.kr-ck-inst__summary {
	margin: 0;
	font-size: 0.875rem;
	color: var(--kr-muted);
}

.kr-ck-inst__terms {
	display: grid;
	margin: 0;
}

.kr-ck-inst__terms > div {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--kr-s4);
	padding-block: var(--kr-s2);
	border-bottom: 1px solid var(--kr-line);
	font-size: 0.875rem;
}

.kr-ck-inst__terms dt {
	color: var(--kr-muted);
	font-weight: 400;
}

.kr-ck-inst__terms dd {
	margin: 0;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.kr-ck-inst .kr-text-link {
	justify-self: start;
}

/* =====================================================================
   STANY: pusty, błąd, dostęp, ładowanie, sukces
   ===================================================================== */

.kr-ck-state,
.kr-ck-done {
	display: grid;
	justify-items: start;
	gap: var(--kr-s4);
	max-width: 62ch;
	padding-block: var(--kr-s6) var(--kr-s9);
}

.kr-ck-state__ico,
.kr-ck-done__ico {
	display: grid;
	place-items: center;
	width: 72px;
	height: 72px;
	border: 1px solid var(--kr-line-strong);
}

.kr-ck-state__t,
.kr-ck-done__t {
	margin: 0;
	font-size: clamp(1.5rem, 2.4vw, 2rem);
	font-weight: 300;
	letter-spacing: -0.02em;
	line-height: 1.15;
	text-wrap: balance;
}

.kr-ck-state__t:focus-visible,
.kr-ck-done__t:focus-visible {
	outline-offset: 6px;
}

.kr-ck-state__p,
.kr-ck-done__p {
	margin: 0;
	color: var(--kr-muted);
	text-wrap: pretty;
}

.kr-ck-done__p strong {
	color: var(--kr-ink);
	font-weight: 600;
	overflow-wrap: anywhere;
}

.kr-ck-state__act,
.kr-ck-done__act {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--kr-s3) var(--kr-s5);
	margin-top: var(--kr-s2);
}

.kr-ck-state__act .kr-btn,
.kr-ck-done__act .kr-btn {
	max-width: 100%;
	padding-block: var(--kr-s2);
	white-space: normal;
	text-align: center;
	line-height: 1.3;
}

.kr-ck-state--err .kr-ck-state__t {
	color: var(--kr-danger);
}

.kr-ck-state--err .kr-ck-state__ico {
	border-color: var(--kr-danger);
	color: var(--kr-danger);
}

.kr-ck-done__ico {
	border-color: var(--kr-ok);
	color: var(--kr-ok);
}

/* ładowanie: szkielet układu, połysk przesuwa się transformacją */
.kr-ck-skel {
	pointer-events: none;
}

.kr-ck-skel__line {
	display: grid;
	grid-template-columns: 112px minmax(0, 1fr);
	gap: var(--kr-s5);
	padding-block: 0 var(--kr-s5);
}

.kr-ck-skel__img,
.kr-ck-skel i {
	position: relative;
	display: block;
	overflow: hidden;
	background: var(--kr-stone-deep);
}

.kr-ck-skel__img {
	aspect-ratio: 1;
}

.kr-ck-skel__txt {
	display: grid;
	align-content: start;
	gap: var(--kr-s3);
}

.kr-ck-skel i {
	height: 14px;
}

.kr-ck-skel__txt i:nth-child(1) {
	width: 30%;
}

.kr-ck-skel__txt i:nth-child(2) {
	width: 70%;
	height: 20px;
}

.kr-ck-skel__txt i:nth-child(3) {
	width: 45%;
}

.kr-ck-skel__sum {
	display: grid;
	gap: var(--kr-s4);
	padding: var(--kr-s6) var(--kr-s5);
	background: var(--kr-stone);
}

.kr-ck-skel__sum i:last-child {
	height: 52px;
	margin-top: var(--kr-s3);
}

.kr-ck-skel__img::after,
.kr-ck-skel i::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, transparent, rgb(255 255 255 / 55%), transparent);
	translate: -100% 0;
}

/* =====================================================================
   STRONY PŁATNOŚCI: /platnosc-gosc, /manual-payment, potwierdzenie zamówienia
   ===================================================================== */

.kr-pay__card {
	display: grid;
	justify-items: start;
	gap: var(--kr-s5);
	max-width: 760px;
	padding-block: var(--kr-s5) var(--kr-s8);
}

.kr-pay__top {
	display: flex;
	align-items: center;
	gap: var(--kr-s5);
}

.kr-pay__ico {
	display: grid;
	flex: none;
	place-items: center;
	width: 88px;
	height: 88px;
	border: 1px solid var(--kr-line-strong);
}

.kr-pay[data-tone="ok"] .kr-pay__ico {
	border-color: var(--kr-ok);
	color: var(--kr-ok);
}

.kr-pay[data-tone="danger"] .kr-pay__ico {
	border-color: var(--kr-danger);
	color: var(--kr-danger);
}

.kr-pay[data-tone="warn"] .kr-pay__ico {
	border-color: var(--kr-warn);
	color: var(--kr-warn);
}

.kr-pay__msg {
	margin: 0;
	font-size: clamp(1.25rem, 2.3vw, 1.875rem);
	font-weight: 300;
	letter-spacing: -0.02em;
	line-height: 1.25;
	text-wrap: balance;
}

.kr-pay__msg:focus-visible {
	outline-offset: 6px;
}

/* tor stanu: cztery odcinki (zapisane, oczekuje, przetwarzane, potwierdzone); dekoracja, treść niesie komunikat */
.kr-pay__track {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--kr-s1);
	width: min(100%, 420px);
}

.kr-pay__seg {
	height: 3px;
	background: var(--kr-line);
	transform-origin: left;
}

.kr-pay__seg.is-on {
	background: var(--kr-ink);
}

.kr-pay[data-tone="ok"] .kr-pay__seg.is-on {
	background: var(--kr-ok);
}

.kr-pay[data-tone="danger"] .kr-pay__seg.is-on {
	background: var(--kr-danger);
}

.kr-pay[data-tone="warn"] .kr-pay__seg.is-on {
	background: var(--kr-warn);
}

.kr-pay__act {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--kr-s3) var(--kr-s5);
}

.kr-pay__sub {
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--kr-muted);
}

.kr-pay__sub[data-kind="error"],
.kr-pay__sub[role="alert"] {
	color: var(--kr-danger);
	font-weight: 500;
}

.kr-pay__sub:empty {
	display: none;
}

.kr-pay__amount {
	display: grid;
	gap: var(--kr-s1);
	margin: 0;
}

.kr-pay__amount dt {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--kr-muted);
}

.kr-pay__amount dd {
	margin: 0;
	font-size: clamp(2rem, 4vw, 3rem);
	font-weight: 300;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
}

.kr-pay__note {
	margin: 0;
	padding: var(--kr-s3) var(--kr-s4);
	border-left: 2px solid var(--kr-ink);
	background: var(--kr-stone);
	font-size: 0.9375rem;
}

.kr-pay__btn {
	max-width: 100%;
	white-space: normal;
	line-height: 1.25;
	text-align: center;
}

.kr-pay__btn .kr-swap__c span:last-child,
.kr-pay__btn .kr-swap__b span:last-child {
	text-transform: none;
	letter-spacing: 0.02em;
}

.kr-pay__btn[data-state="busy"] {
	background: var(--kr-ink);
	border-color: var(--kr-ink);
	color: var(--kr-paper);
	cursor: progress;
	pointer-events: none;
}

.kr-pay__btn[data-state="done"] {
	background: var(--kr-ok);
	border-color: var(--kr-ok);
	color: #fff;
	pointer-events: none;
}

/* potwierdzenie zamówienia na stronie zamówienia konta */
.kr-pay-order {
	display: grid;
	gap: var(--kr-s6);
	max-width: 1000px;
	padding-block: var(--kr-s4) var(--kr-s8);
}

.kr-pay-order__done {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--kr-s3) var(--kr-s5);
	align-items: center;
	padding: var(--kr-s5);
	background: var(--kr-stone);
	border-left: 2px solid var(--kr-ok);
}

.kr-pay-order__done .kr-pay__ico {
	width: 64px;
	height: 64px;
	border-color: var(--kr-ok);
	color: var(--kr-ok);
}

.kr-pay-order__t {
	margin: 0;
	font-size: clamp(1.5rem, 2.6vw, 2.125rem);
	font-weight: 300;
	letter-spacing: -0.02em;
	line-height: 1.15;
}

.kr-pay-order__t:focus-visible {
	outline-offset: 6px;
}

.kr-pay-order__p {
	margin: var(--kr-s1) 0 0;
	color: var(--kr-ink-soft);
}

.kr-pay-order__p strong {
	font-weight: 600;
	overflow-wrap: anywhere;
}

.kr-pay-tbl {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9375rem;
	font-variant-numeric: tabular-nums;
}

.kr-pay-tbl th,
.kr-pay-tbl td {
	padding: var(--kr-s3) var(--kr-s3) var(--kr-s3) 0;
	border-bottom: 1px solid var(--kr-line);
	text-align: left;
	vertical-align: top;
}

.kr-pay-tbl thead th {
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--kr-muted);
	border-bottom-color: var(--kr-line-strong);
}

.kr-pay-tbl td:nth-child(n + 3),
.kr-pay-tbl th:nth-child(n + 3) {
	text-align: right;
}

.kr-pay-tbl tfoot th,
.kr-pay-tbl tfoot td {
	border-bottom: 0;
	font-weight: 600;
}

.kr-pay-tbl__wrap {
	overflow-x: auto;
}

.kr-pay-tbl__brand {
	display: block;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.kr-pay-tbl__ref,
.kr-pay-tbl__lead {
	display: block;
	margin-top: var(--kr-s1);
	font-size: 0.75rem;
	color: var(--kr-muted);
}

.kr-pay-tbl__ref {
	display: none;
}

.kr-pay-eyebrow {
	margin: 0 0 var(--kr-s1);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--kr-muted);
}

.kr-pay-order__sec {
	display: grid;
	justify-items: start;
	gap: var(--kr-s3);
	padding-top: var(--kr-s6);
	border-top: 1px solid var(--kr-line-strong);
}

.kr-pay-order__h {
	margin: 0;
	font-size: clamp(1.375rem, 2.2vw, 1.75rem);
	font-weight: 300;
	letter-spacing: -0.02em;
	overflow-wrap: anywhere;
	line-height: 1.5;
}

.kr-pay-meta {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--kr-s4) var(--kr-s5);
	width: 100%;
	margin: var(--kr-s2) 0 0;
}

.kr-pay-meta--col {
	grid-template-columns: minmax(0, 1fr);
	gap: var(--kr-s3);
}

.kr-pay-meta dt {
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--kr-muted);
}

.kr-pay-meta dd {
	margin: var(--kr-s1) 0 0;
	font-size: 1rem;
	font-variant-numeric: tabular-nums;
	overflow-wrap: anywhere;
}

.kr-pay-order__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--kr-s6) var(--kr-s7);
	padding-top: var(--kr-s6);
	border-top: 1px solid var(--kr-line-strong);
}

.kr-pay-order__tbl {
	display: grid;
	gap: var(--kr-s3);
}

@media (max-width: 767px) {
	.kr-pay-meta {
		grid-template-columns: minmax(0, 1fr);
	}

	.kr-pay-order__grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 575px) {
	.kr-pay__top {
		align-items: flex-start;
		flex-direction: column;
		gap: var(--kr-s4);
	}

	.kr-pay-order__done {
		grid-template-columns: minmax(0, 1fr);
	}

	.kr-pay-tbl th:nth-child(2),
	.kr-pay-tbl td:nth-child(2) {
		display: none;
	}

	.kr-pay-tbl__ref {
		display: block;
	}
}

.kr-ck__layout[hidden],
.kr-ck-done[hidden],
.kr-ck-hint[hidden] {
	display: none;
}

/* =====================================================================
   TARCZA PRZED STARYM CSS (audyt powłoki K2, W1; sprawdza tests/cart-legacy.mjs)
   kuck_shop.bundle.css i Bootstrap 4 ładują się przed arkuszami kr-*. Globalna poprawka dla wszystkich przycisków, etykiet i odsyłaczy należy do powłoki
   (kr-base.css: border-radius 0 !important na button i a[class*=btn], label bez marginesu, odsyłacze bez klasy podkreślone). Poniżej tylko to, czego dotyczą własne klasy
   rodziny; po wdrożeniu poprawki powłoki reguły są zbędne, ale nieszkodliwe.
   ===================================================================== */

.kr-page .kr-ck-rm {
	border-radius: 0 !important;
}

.kr-ck-opt {
	margin-bottom: 0;
}

@media (scripting: none) {
	[data-kr-pay] [data-kuck-guest-payment-retry],
	[data-kr-pay] [data-kuck-manual-payment-start] {
		display: none;
	}

	[data-kr-cart] .kr-ck-sec--guest,
	[data-kr-cart] [data-kuck-guest-cart-line],
	[data-kr-cart] [data-kuck-remove-cart-line],
	[data-kr-cart] [data-kr-cta] {
		display: none;
	}
}

/* =====================================================================
   WARSTWA RUCHU
   Ten sam język ruchu co home, katalog i produkt: kurtyna zdjęć, osiadanie obrazu (1,1 → 1), unoszenie ze staggerem 55 ms,
   rysowane linie sekcji. Wejście strony ≈ 1,2 s; interakcje poniżej 300 ms. Stany początkowe tylko w no-preference.
   ===================================================================== */

/* indeksy opóźnień wejścia po pozycji (mockup ustawiał --i skryptem; CSP nie zna style="") */
.kr-ck-line:nth-child(2) { --kr-i: 1; }
.kr-ck-line:nth-child(3) { --kr-i: 2; }
.kr-ck-line:nth-child(4) { --kr-i: 3; }
.kr-ck-line:nth-child(5) { --kr-i: 4; }
.kr-ck-line:nth-child(6) { --kr-i: 5; }
.kr-ck-line:nth-child(7) { --kr-i: 6; }
.kr-ck-line:nth-child(8) { --kr-i: 7; }
.kr-ck-line:nth-child(9) { --kr-i: 8; }
.kr-ck-line:nth-child(10) { --kr-i: 9; }
.kr-ck-line:nth-child(n + 11) { --kr-i: 10; }
.kr-ck__main > .kr-ck-sec:nth-child(2) { --kr-i: 1; }
.kr-ck__main > .kr-ck-sec:nth-child(3) { --kr-i: 2; }
.kr-ck__main > .kr-ck-sec:nth-child(4) { --kr-i: 3; }
.kr-ck__main > .kr-ck-sec:nth-child(5) { --kr-i: 4; }
.kr-ck__main > .kr-ck-sec:nth-child(6) { --kr-i: 5; }
.kr-ck__main > .kr-ck-sec:nth-child(7) { --kr-i: 6; }
.kr-ck__main > .kr-ck-sec:nth-child(n + 8) { --kr-i: 7; }
.kr-pay__note { --kr-i: 1; }
.kr-pay__card > .kr-pay__act { --kr-i: 1; }
.kr-pay__amount ~ .kr-pay__top .kr-pay__msg { --kr-i: 1; }
.kr-pay__amount ~ .kr-pay__act { --kr-i: 2; }
.kr-pay__note ~ .kr-pay__top .kr-pay__msg { --kr-i: 2; }
.kr-pay__note ~ .kr-pay__act { --kr-i: 3; }
.kr-pay-order__tbl { --kr-i: 2; }
.kr-pay__seg:nth-child(2) { --kr-i: 1; }
.kr-pay__seg:nth-child(3) { --kr-i: 2; }
.kr-pay__seg:nth-child(4) { --kr-i: 3; }

@keyframes kr-ck-rise {
	from {
		opacity: 0;
		translate: 0 12px;
	}
}

@keyframes kr-ck-line {
	from {
		scale: 0 1;
	}
}

@keyframes kr-ck-wipe {
	from {
		clip-path: inset(0 100% 0 0);
	}
}

@keyframes kr-ck-settle {
	from {
		scale: 1.1;
	}
}

@keyframes kr-ck-pop {
	from {
		opacity: 0;
		scale: 0.82;
	}
}

@keyframes kr-ck-bump {
	40% {
		scale: 1.16;
	}
}

@keyframes kr-ck-shimmer {
	to {
		translate: 100% 0;
	}
}

@keyframes kr-ck-fade {
	from {
		opacity: 0;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.kr-ck.is-intro .kr-ck-line {
		animation: kr-ck-rise 560ms var(--kr-ease-out) both;
		animation-delay: calc(240ms + var(--kr-i, 0) * 55ms);
	}

	.kr-ck.is-intro .kr-ck-line__media {
		animation: kr-ck-wipe 720ms var(--kr-ease-out) both;
		animation-delay: calc(200ms + var(--kr-i, 0) * 55ms);
	}

	.kr-ck.is-intro .kr-ck-line__media img {
		animation: kr-ck-settle 900ms var(--kr-ease-out) both;
		animation-delay: calc(200ms + var(--kr-i, 0) * 55ms);
	}

	.kr-ck.is-intro .kr-ck-sec + .kr-ck-sec {
		animation: kr-ck-rise 560ms var(--kr-ease-out) both;
		animation-delay: calc(340ms + var(--kr-i, 0) * 55ms);
	}

	.kr-ck.is-intro .kr-ck-sec + .kr-ck-sec::before {
		animation: kr-ck-line 800ms var(--kr-ease-io) both;
		animation-delay: calc(380ms + var(--kr-i, 0) * 55ms);
	}

	.kr-ck.is-intro .kr-ck-sum,
	.kr-ck.is-intro .kr-ck-state,
	.kr-ck.is-intro .kr-ck-done {
		animation: kr-ck-rise 600ms var(--kr-ease-out) 360ms both;
	}

	.kr-ck.is-intro .kr-ck__count {
		animation: kr-cat-fade 600ms var(--kr-ease-out) 300ms both;
	}

	.kr-ck__count.is-bump b {
		animation: kr-ck-bump 260ms var(--kr-ease-out);
	}

	.kr-ck-ad[open] > .kr-ck-ad__p {
		animation: kr-ck-rise 260ms var(--kr-ease-out) both;
	}

	.kr-ck-undo__row {
		animation: kr-ck-rise 240ms var(--kr-ease-out) both;
	}

	.kr-ck-done__ico {
		animation: kr-ck-pop 360ms var(--kr-ease-out) 120ms both;
	}

	.kr-ck-skel__img::after,
	.kr-ck-skel i::after {
		animation: kr-ck-shimmer 1500ms linear infinite;
	}

	/* strony płatności */
	.kr-pay.is-intro .kr-pay__ico {
		animation: kr-ck-pop 360ms var(--kr-ease-out) 200ms both;
	}

	.kr-pay.is-intro .kr-pay__msg,
	.kr-pay.is-intro .kr-pay__act,
	.kr-pay.is-intro .kr-pay__amount,
	.kr-pay.is-intro .kr-pay__note,
	.kr-pay.is-intro .kr-pay-order__done,
	.kr-pay.is-intro .kr-pay-order__tbl {
		animation: kr-ck-rise 560ms var(--kr-ease-out) both;
		animation-delay: calc(240ms + var(--kr-i, 0) * 55ms);
	}

	.kr-pay.is-intro .kr-pay__seg {
		animation: kr-ck-line 700ms var(--kr-ease-io) both;
		animation-delay: calc(360ms + var(--kr-i, 0) * 55ms);
	}
}

/* mniej ruchu, nie zero: okno i status zanikają w 160 ms */
@media (prefers-reduced-motion: reduce) {




	.kr-ck-line.is-leaving {
		translate: 0 0;
		transition: opacity 160ms linear;
	}

	.kr-ck-ad > summary .kr-ms {
		transition: none;
	}

	.kr-ck-undo__row {
		animation: kr-ck-fade 160ms linear both;
	}
}
