/* ==========================================================================
   ui-koszyk.css (v3 "Meridian"): koszyk z pozycjami i pusty koszyk (is_cart()).
   Ładowany po ui-kasa.css (część wspólna) przez inc/ui/kasa.php: ewardega_ui_kasa_assets.
   Numery sekcji jak przed podziałem pliku (historia rund w STAN-PROJEKTU.md).
   ========================================================================== */

.ui-kasa--empty .ui-kasa-hd { margin-top: clamp(40px, 7vw, 88px); }

/* 3. Koszyk ---------------------------------------------------------------- */
body.ewa-ui .ui-kasa--cart .woocommerce { display: grid; gap: 24px; align-items: start; }
.ui-kasa--cart .woocommerce > .woocommerce-notices-wrapper:empty { display: none; }
@media (min-width: 1024px) {
	body.ewa-ui .ui-kasa--cart .woocommerce { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 40px; }
	.ui-kasa--cart .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
	.ui-kasa--cart .cart-collaterals { position: sticky; top: 88px; }
}
body.ewa-ui .ui-kasa .woocommerce-cart-form { margin: 0; }
body.ewa-ui .ui-kasa table.shop_table.cart { display: block; width: 100%; margin: 0; border: 0 !important; border-radius: 0; background: none; border-collapse: separate; }
body.ewa-ui .ui-kasa table.shop_table.cart thead { display: none; }
body.ewa-ui .ui-kasa table.shop_table.cart tbody { display: grid; gap: 12px; }
body.ewa-ui .ui-kasa table.shop_table.cart td { display: block; padding: 0; border: 0 !important; background: none; text-align: left !important; }
body.ewa-ui .ui-kasa table.shop_table.cart td.product-price { display: none; }
body.ewa-ui .ui-kasa table.shop_table.cart td::before { display: none !important; }
body.ewa-ui .ui-kasa tr.cart_item {
	position: relative; display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; grid-template-areas: "th name rm" "th qty sub";
	gap: 8px 16px; align-items: start; padding: 16px; border-radius: var(--ui-r-l); background: var(--ui-card); border: 1px solid var(--ui-line); box-shadow: var(--ui-sh-1);
}
@media (min-width: 600px) { body.ewa-ui .ui-kasa tr.cart_item { grid-template-columns: 88px minmax(0, 1fr) auto; padding: 18px 18px 18px 18px; } }
body.ewa-ui .ui-kasa td.product-thumbnail { grid-area: th; }
body.ewa-ui .ui-kasa td.product-thumbnail a { display: block; }
body.ewa-ui .ui-kasa td.product-thumbnail img { width: 100% !important; max-width: none; aspect-ratio: 4 / 5; height: auto; border-radius: 12px; object-fit: cover; background: var(--ui-noir); box-shadow: inset 0 0 0 1px var(--ui-gold-a); }
body.ewa-ui .ui-kasa td.product-name { grid-area: name; min-width: 0; font-size: 1.0625rem; font-weight: 600; line-height: 1.3; letter-spacing: -.01em; }
body.ewa-ui .ui-kasa td.product-name a { text-decoration: none; }
body.ewa-ui .ui-kasa td.product-name a:hover { text-decoration: underline; text-underline-offset: 3px; }
/* Przycisk usuwania w rogu karty (poza siatką), więc nazwa i chipy mają całą szerokość kolumny treści:
   dwa chipy (data, miasto) mieszczą się w jednym rzędzie także przy 390 px */
body.ewa-ui .ui-kasa tr.cart_item { grid-template-areas: "th name name" "th qty sub"; }
body.ewa-ui .ui-kasa tr.cart_item td.product-remove { grid-area: auto; position: absolute; top: 6px; right: 6px; margin: 0; }
body.ewa-ui .ui-kasa td.product-name > a { display: block; padding-right: 36px; }
/* Data i miasto: dwa chipy z ikonami jak w szufladzie i bilecie (inc/ui/zakup.php; ikony maską, bo nazwa idzie przez wp_kses_post) */
body.ewa-ui .ui-kasa .ui-cart-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
body.ewa-ui .ui-kasa .ui-cart-chip {
	display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 3px 10px;
	border-radius: 999px; border: 1px solid var(--ui-line); background: rgba(22, 18, 14, .04); font-size: var(--ui-fs-xs); font-weight: 600; line-height: 1.2; color: var(--ui-ink-2);
}
body.ewa-ui .ui-kasa .ui-cart-chip::before { content: ""; flex: none; width: 14px; height: 14px; background: var(--ui-gold-ink); -webkit-mask: var(--ic) center / contain no-repeat; mask: var(--ic) center / contain no-repeat; }
body.ewa-ui .ui-kasa .ui-cart-chip--date { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round'%3E%3Crect x='3.5' y='5' width='17' height='15' rx='2.5'/%3E%3Cpath d='M3.5 9.5h17M8 3.4v3.2M16 3.4v3.2'/%3E%3C/svg%3E"); }
body.ewa-ui .ui-kasa .ui-cart-chip--city { --ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linejoin='round'%3E%3Cpath d='M12 21s6.5-5 6.5-10.5a6.5 6.5 0 1 0-13 0C5.5 16 12 21 12 21Z'/%3E%3Ccircle cx='12' cy='10.2' r='2.3'/%3E%3C/svg%3E"); }
body.ewa-ui .ui-kasa td.product-name dl.variation { margin: 6px 0 0; font-size: var(--ui-fs-xs); font-weight: 400; color: var(--ui-ink-3); }
body.ewa-ui .ui-kasa td.product-price { display: none; }
body.ewa-ui .ui-kasa td.product-quantity { grid-area: qty; align-self: end; }
/* Cena na osi stepera -/+ (ta sama wysokość 46 px, środek w środku) */
body.ewa-ui .ui-kasa td.product-subtotal { grid-area: sub; align-self: end; display: flex !important; align-items: center; justify-content: flex-end; min-height: 46px; text-align: right !important; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.ewa-ui .ui-kasa td.product-remove { grid-area: rm; justify-self: end; margin: -10px -10px 0 0; }
/* Stepper liczby miejsc (ui-kasa.js); bez JS zostaje pole liczbowe Woo */
body.ewa-ui .ui-kasa .quantity { display: inline-flex; align-items: center; border: 1px solid var(--ui-line-2); border-radius: 999px; background: var(--ui-card); }
body.ewa-ui .ui-kasa .quantity .qty {
	width: 48px; height: 44px; padding: 0; border: 0; background: transparent; text-align: center; font: 600 1rem var(--ui-font); color: var(--ui-ink);
	font-variant-numeric: tabular-nums; -moz-appearance: textfield; appearance: textfield;
}
body.ewa-ui .ui-kasa .quantity .qty::-webkit-inner-spin-button, body.ewa-ui .ui-kasa .quantity .qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
body.ewa-ui .ui-kasa .ui-qs-btn { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; border: 0; background: none; color: var(--ui-ink); cursor: pointer; transition: background-color var(--ui-t1); }
body.ewa-ui .ui-kasa .ui-qs-btn:hover { background: rgba(22, 18, 14, .06); }
body.ewa-ui .ui-kasa .ui-qs-btn .ui-ic { width: 18px; height: 18px; }
body.ewa-ui .ui-kasa .ui-qs-btn:disabled { opacity: .35; cursor: default; }
/* Wiersz akcji: kod rabatowy i aktualizacja */
body.ewa-ui .ui-kasa table.shop_table.cart tr:has(> td.actions) { display: block; }
body.ewa-ui .ui-kasa td.actions { display: flex !important; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 4px 4px 0 !important; }
/* Kod rabatowy jako stopka karty ostatniej pozycji (nie luzem między kartami): ten sam papier i ramka, linia dołu
   karty pozycji oddziela go od produktu, oś tekstu = oś treści karty (16 px telefon, 18 px od 600 px). */
body.ewa-ui .ui-kasa tr.cart_item:has(+ tr > td.actions) { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
body.ewa-ui .ui-kasa table.shop_table.cart tr.cart_item + tr:has(> td.actions) { margin-top: -12px; }
body.ewa-ui .ui-kasa tr.cart_item + tr > td.actions { padding: 2px 12px 6px !important; background: var(--ui-card); border: 1px solid var(--ui-line) !important; border-top: 0 !important; border-radius: 0 0 var(--ui-r-l) var(--ui-r-l); box-shadow: var(--ui-sh-1); }
@media (min-width: 600px) { body.ewa-ui .ui-kasa tr.cart_item + tr > td.actions { padding-inline: 14px !important; } }
body.ewa-ui .ui-kasa td.actions .coupon { display: flex; flex-wrap: nowrap; gap: 8px; align-items: center; float: none !important; width: 100%; }
body.ewa-ui .ui-kasa td.actions .coupon.ui-kasa-closed { display: none; }
body.ewa-ui .ui-kasa td.actions .coupon .input-text { flex: 1 1 auto; min-width: 0; width: auto !important; min-height: 48px; margin: 0 !important; padding: 0 16px !important; border-radius: 14px; border: 1px solid var(--ui-line-2); background: var(--ui-card); font-size: 1rem; }
body.ewa-ui .ui-kasa :is(td.actions .button, .ui-kasa-ctoggle) {
	display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 18px !important; border-radius: 999px !important;
	font: 600 .9375rem var(--ui-font) !important; color: var(--ui-ink) !important; background: transparent !important; border: 1px solid var(--ui-line-2) !important; float: none !important; cursor: pointer;
}
body.ewa-ui .ui-kasa td.actions .button:hover:not(:disabled) { border-color: var(--ui-ink) !important; }
/* Kod rabatowy w koszyku jak w kasie: pole i przycisk "Zastosuj" w jednym rzędzie, przycisk atramentem (runda 2, pkt 7) */
body.ewa-ui .ui-kasa td.actions .coupon .button { flex: none; min-height: 48px; color: var(--ui-snow) !important; background: var(--ui-ink) !important; border-color: var(--ui-ink) !important; }
body.ewa-ui .ui-kasa td.actions .coupon .button:hover:not(:disabled) { background: var(--ui-noir) !important; }
body.ewa-ui .ui-kasa td.actions .button:disabled { opacity: .5; cursor: default; }
body.ewa-ui .ui-kasa td.actions .ui-kasa-ctoggle { border: 0 !important; padding: 0 4px !important; text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--ui-line-2); color: var(--ui-ink-2) !important; }
body.ewa-ui .ui-kasa .ui-kasa-ctoggle:hover { color: var(--ui-ink) !important; text-decoration-color: currentColor; }
body.ewa-ui.ui-kasa-js .ui-kasa td.actions [name="update_cart"] { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); padding: 0 !important; border: 0 !important; }

/* Karta podsumowania koszyka: bilet (ciemny) */
body.ewa-ui .ui-kasa .cart-collaterals { display: grid; gap: 18px; width: auto; float: none; }
body.ewa-ui .ui-kasa .cart-collaterals .cart_totals {
	position: relative; isolation: isolate; float: none; width: auto; padding: 26px 24px 24px; border-radius: var(--ui-r-l); color: var(--ui-snow);
	background: radial-gradient(120% 80% at 100% 0, rgba(201, 164, 106, .1), transparent 55%), var(--ui-noir-2); box-shadow: var(--ui-sh-2);
}
.ui-kasa .cart_totals .ui-cert-frame { z-index: -1; }
body.ewa-ui .ui-kasa .cart_totals h2 { margin: 0 0 16px !important; padding: 0 !important; font: 600 var(--ui-fs-xs)/1.4 var(--ui-font) !important; letter-spacing: .16em !important; text-transform: uppercase !important; color: var(--ui-gold) !important; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table { display: block; width: 100%; margin: 0 0 18px; border: 0 !important; background: none; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table tbody { display: flex; flex-direction: column; gap: 10px; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table tr { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; order: 1; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table :is(th, td) { display: block; padding: 0 !important; border: 0 !important; background: none; color: inherit; font-size: var(--ui-fs-s); text-align: left; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table td::before { display: none !important; }
body.ewa-ui .ui-kasa .cart_totals th { font-weight: 400 !important; color: var(--ui-snow-2) !important; }
body.ewa-ui .ui-kasa .cart_totals td { font-weight: 600; text-align: right !important; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table tr.ui-kasa-split { order: 2; display: block; padding-block: 2px; }
body.ewa-ui .ui-kasa .cart_totals tr.ui-kasa-split td { width: 100%; }
body.ewa-ui .ui-kasa .cart_totals table.shop_table tr.order-total { order: 3; padding-block: 12px; border-block: 1px solid var(--ui-hair); }
body.ewa-ui .ui-kasa .cart_totals tr.order-total th { color: var(--ui-snow) !important; font-weight: 600 !important; }
body.ewa-ui .ui-kasa .cart_totals tr.order-total td, body.ewa-ui .ui-kasa .cart_totals tr.order-total strong { font-size: 1.75rem; font-weight: 300; letter-spacing: -.02em; }
/* Elewacja 2.2: zadatek dziś w bilecie jako wielka cienka liczba (§1 zasada 4: prawdziwa kwota, na ciemnym jednolite złoto) */
body.ewa-ui .ui-kasa .cart_totals tr.order-total { align-items: last baseline; }
body.ewa-ui .ui-kasa .cart_totals tr.order-total :is(td, strong) { font-size: min(var(--ui-fs-num-s, 3rem), 4.25rem); font-weight: 200; line-height: .95; letter-spacing: -.035em; color: var(--ui-gold); }
body.ewa-ui .ui-kasa .cart_totals table.shop_table tr.fee { order: 4; }
body.ewa-ui .ui-kasa .cart_totals tr.cart-discount td { color: var(--ui-free-d); }
body.ewa-ui .ui-kasa .cart_totals .woocommerce-remove-coupon { color: var(--ui-snow-2); font-weight: 400; margin-left: 6px; }
body.ewa-ui .ui-kasa .wc-proceed-to-checkout { display: grid; gap: 14px; padding: 0 !important; }
body.ewa-ui .ui-kasa a.checkout-button:active { transform: scale(.98); } /* kasa (#place_order): zero ruchu, elewacja §3.11 */
body.ewa-ui .ui-kasa a.checkout-button::after {
	content: ""; width: 18px; height: 18px; flex: none; background: currentColor; transition: transform var(--ui-t2) var(--ui-ease);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4.5 12h15M13.5 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4.5 12h15M13.5 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (prefers-reduced-motion: no-preference) { body.ewa-ui .ui-kasa a.checkout-button:hover::after { animation: ui-kasa-arr .32s var(--ui-ease) both; } }
/* Maska ma rozmiar pola (18 px), więc procenty nie przesuwają: przesunięcie w px */
@keyframes ui-kasa-arr { 45% { -webkit-mask-position: 20px 50%; mask-position: 20px 50%; } 46% { -webkit-mask-position: -20px 50%; mask-position: -20px 50%; } }
.ui-kasa .cart_totals .ui-secure { color: var(--ui-snow-3); }
.ui-kasa .cart_totals .ui-secure .ui-ic { color: var(--ui-gold); }
/* Lista "w cenie" w ciemnej karcie koszyka (hook woocommerce_after_cart_totals jest wewnątrz .cart_totals) */
.ui-kasa .cart_totals .ui-kasa-perks { margin-top: 18px; padding: 16px 0 0; border-top: 1px solid var(--ui-hair); color: var(--ui-snow-2); font-size: var(--ui-fs-xs); }
.ui-kasa .cart_totals .ui-kasa-perks .ui-ic { color: var(--ui-gold); }
.ui-kasa .cart_totals .ui-kasa-perks a { color: var(--ui-snow); }
/* Pusty koszyk */
body.ewa-ui .ui-kasa--empty :is(.wc-empty-cart-message, .cart-empty, .return-to-shop) { display: none !important; }
body.ewa-ui.woocommerce-cart .ui-kasa .woocommerce-message .wc-forward { display: none !important; }

/* Koszyk od 1024 px: przebieg rezerwacji w lewej kolumnie (inc/ui/kasa.php: ewardega_ui_kasa_cart_route).
   Stoi (elewacja §3.0: jedyny ruch koszyka to rozbicie zadatku w bilecie, dwa ruchome efekty na ekranie to błąd). */
.ui-kroute { display: none; }
@media (min-width: 1024px) {
	.ui-kasa .ui-kroute {
		display: block; margin-top: 28px; padding: 26px 28px 28px; border: 1px solid var(--ui-line); border-radius: var(--ui-r-l);
		background: radial-gradient(90% 120% at 0 0, rgba(201, 164, 106, .08), transparent 60%), var(--ui-paper);
	}
	.ui-kroute .ui-label { margin: 0 0 22px; color: var(--ui-gold-ink); }
	.ui-kroute__track { position: relative; }
	/* Jawna szerokość od środka kropki 1 do środka kropki 3 (dwie kolumny i dwa odstępy 24 px); SVG z left/right i width: auto
	   brał własne 100 px z viewBox (runda 2, pkt 1). */
	.ui-kroute__line { position: absolute; top: 6px; left: 7px; width: calc((100% - 48px) * 2 / 3 + 48px); height: 2px; overflow: visible; }
	.ui-kroute__line path { fill: none; stroke: var(--ui-gold); stroke-width: 1.25; }
	.ui-kroute ol { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; }
	.ui-kroute li { display: grid; gap: 4px; align-content: start; min-width: 0; }
	.ui-kroute li i {
		display: block; width: 14px; height: 14px; margin-bottom: 12px; border-radius: 50%; border: 1.5px solid var(--ui-gold); background: var(--ui-paper);
	}
	.ui-kroute li:first-child i { background: var(--ui-gold); box-shadow: 0 0 0 4px rgba(201, 164, 106, .22); }
	.ui-kroute small { font-size: var(--ui-fs-xs); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--ui-ink-3); }
	.ui-kroute b { font-size: 1.0625rem; font-weight: 600; letter-spacing: -.01em; color: var(--ui-ink); }
	.ui-kroute li > span { font-size: var(--ui-fs-xs); line-height: 1.5; color: var(--ui-ink-2); text-wrap: pretty; }
}

/* 16. Elewacja 2.2 (noc, runda 1) ------------------------------------------ */
/* Sygnatura koszyka „Rozbicie zadatku” (§3.0, §3.11): pasek proporcji w bilecie wypełnia się raz od 0 do udziału zadatku.
   Tylko scale na kompozytorze, 600 ms expo bez przerzutu; kwoty stoją od pierwszej klatki. Po odświeżeniu AJAX
   (zmiana liczby miejsc) stan końcowy od razu (ui-kasa.js: body.ui-ksplit-seen). Kasa, sheet i szuflada: pasek stoi. */
@media (prefers-reduced-motion: no-preference) { body.ewa-ui:not(.ui-ksplit-seen) .ui-kasa--cart .cart_totals .ui-split i { transform-origin: 0 50%; animation: ui-ksplit .6s var(--ui-ease-out-expo, var(--ui-ease)) both; } }
/* Pusty koszyk: zapewnienia z briefu 1.5 domykają lewą kartę (bez pustego dołu) */
.ui-kempty__perks { margin-top: 4px; padding: 18px 0 0; border-top: 1px solid var(--ui-line); }

/* Pusty koszyk: droga rezerwacji (własny rysunek Meridian) i najbliższe terminy w karcie noir ----------- */
.ui-kempty { display: grid; gap: 20px; max-width: 980px; margin: 0 auto; }
@media (min-width: 900px) { .ui-kempty { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 28px; align-items: stretch; } }
.ui-kempty__intro {
	display: grid; align-content: center; gap: 18px; padding: clamp(24px, 4vw, 40px); border: 1px solid var(--ui-line); border-radius: var(--ui-r-l);
	background: radial-gradient(90% 120% at 0 0, rgba(201, 164, 106, .1), transparent 60%), var(--ui-paper);
}
/* Trzy kroki zwykłą listą numerowaną (numer w złotym kółku jak tytuły sekcji kasy). Ensō: sekcja 18. */
.ui-kempty__steps { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.ui-kempty__steps li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 14px; align-items: center; font-size: 1rem; font-weight: 600; line-height: 1.35; letter-spacing: -.005em; color: var(--ui-ink); }
.ui-kempty__steps small {
	display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--ui-gold);
	font-size: var(--ui-fs-xs); font-weight: 700; line-height: 1; color: var(--ui-gold-ink);
}
.ui-kempty__steps li:first-child small { color: var(--ui-noir); background: var(--ui-gold); }
.ui-kempty__next {
	position: relative; isolation: isolate; display: grid; align-content: start; gap: 14px; padding: clamp(22px, 3vw, 30px); border-radius: var(--ui-r-l); color: var(--ui-snow);
	background: radial-gradient(120% 80% at 100% 0, rgba(201, 164, 106, .12), transparent 55%), var(--ui-noir-2); box-shadow: var(--ui-sh-2);
}
.ui-kempty__next .ui-cert-frame { z-index: -1; }
.ui-kempty__next .ui-label { margin: 0; color: var(--ui-gold); }
.ui-kempty__list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.ui-kempty__row {
	display: grid; grid-template-columns: 56px minmax(0, 1fr) 20px; gap: 14px; align-items: center; min-height: 72px; padding: 8px 12px 8px 8px;
	border-radius: 16px; border: 1px solid var(--ui-hair); background: rgba(246, 242, 236, .03); color: var(--ui-snow); text-decoration: none;
	transition: border-color var(--ui-t1), background-color var(--ui-t1);
}
.ui-kempty__row:hover { border-color: var(--ui-gold-a); background: rgba(246, 242, 236, .06); }
.ui-kempty__row .ui-dp { width: 56px; height: 56px; border-radius: 12px; }
.ui-kempty__t { display: grid; gap: 3px; min-width: 0; }
.ui-kempty__t b { font-size: 1rem; font-weight: 600; line-height: 1.3; letter-spacing: -.005em; }
.ui-kempty__t small { font-size: var(--ui-fs-xs); color: var(--ui-snow-2); }
.ui-kempty__t .ui-st { margin-top: 2px; }
.ui-kempty__row > .ui-ic { width: 20px; height: 20px; color: var(--ui-gold); transition: transform var(--ui-t2) var(--ui-ease); }
.ui-kempty__row:hover > .ui-ic { transform: translateX(3px); }
.ui-kempty__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; }
.ui-kempty__cta .ui-btn { flex: 1 1 auto; white-space: nowrap; }

/* Koszyk: "Rozbicie zadatku" czytelne bez ruchu (pkt 6). Pasek 8 px (ten sam co w kasie), bez podpisów pod odcinkami:
   kwoty stoją w wierszach karty (odbiór kasy 2026-10-12, pkt 6). Kolor i znacznik podziału: sekcja 18. */
body.ewa-ui .ui-kasa .cart_totals .ui-split { height: 8px; }

/* 18. Elewacja 2.2 (noc, runda 3) ------------------------------------------ */
/* Sygnatura "Rozbicie zadatku" (pkt 4): odcinek zadatku złotem (ten sam kolor co "500 zł dziś" i kwota zadatku w bilecie),
   na granicy jasnozłoty znacznik wystający nad i pod pasek, więc podział widać także przy 11% szerokości. Wypełnienie
   rusza od pierwszej klatki (bez opóźnienia, sekcja 16); liczby stoją. */
body.ewa-ui .ui-kasa .cart_totals .ui-split { overflow: visible; background: var(--ui-hair); }
body.ewa-ui .ui-kasa .cart_totals .ui-split i { min-width: 6px; background: var(--ui-gold); }
body.ewa-ui .ui-kasa .cart_totals .ui-split i::after { top: -5px; bottom: -5px; right: -1px; width: 2px; border-radius: 1px; background: var(--ui-gold-hi); box-shadow: 0 0 0 2px var(--ui-noir-2); }

/* Link nazwy kursu: cel 44 px (WCAG 2.5.8, wymóg projektu) bez zmiany układu karty */
body.ewa-ui .ui-kasa td.product-name > a { padding-block: 11px; margin-block: -11px; }

/* Pusty koszyk (pkt 7): ensō osiowo nad H1 (inc/ui/kasa.php: ewardega_ui_kasa_head), w skali znaku, nie ikony.
   Pędzlowa kreska ze słownika form (§1.2) bez odsłony stożkiem (obrót czytał się jak spinner ładowania): raz wchodzi
   jasnością i skalą 0,94 → 1, bez obrotu i bez pętli. Bez JS i przy ograniczonym ruchu stoi od razu. */
.ui-kasa--empty .ui-kasa-hd { margin-top: clamp(24px, 5vw, 56px); }
.ui-kempty__enso { width: clamp(112px, 8vw + 80px, 140px); aspect-ratio: 1; margin-bottom: 8px; color: var(--ui-gold); }
.ui-kempty__enso svg { display: block; width: 100%; height: 100%; }
.ui-kempty__enso .il--enso { -webkit-mask: none; mask: none; transition: none; }
@media (prefers-reduced-motion: no-preference) {
	.ui-kempty__enso { animation: ui-kenso 1.1s var(--ui-ease-out-expo, var(--ui-ease)) .1s both; }
}
@keyframes ui-kenso { from { opacity: 0; scale: .94; } }

/* 19. Odbiór kasy, runda 2 (2026-10-12) ------------------------------------ */
/* pkt 1: poniżej 380 px stepper (136 px) i kwota nie mieszczą się obok siebie w kolumnie treści (przy 320 px kwota
   wchodziła pod przycisk "+"). Stepper schodzi pod miniaturę i bierze jej kolumnę, kwota zostaje na jego osi po prawej. */
@media (max-width: 379px) {
	body.ewa-ui .ui-kasa tr.cart_item { grid-template-areas: "th name name" "qty qty sub"; column-gap: 12px; }
	body.ewa-ui .ui-kasa td.product-subtotal { justify-self: end; }
}
/* pkt 12: pusty koszyk od 900 px. Lewa karta ma etykietę "Jak to działa" na wysokości "Najbliższe terminy" (ta sama
   górna krawędź treści co karta noir), kroki idą od góry, zapewnienia domykają dół karty zamiast pływać w środku. */
.ui-kempty__intro > .ui-label { margin: 0; color: var(--ui-gold-ink); }
@media (min-width: 900px) {
	.ui-kempty__intro { align-content: start; padding-block: clamp(22px, 3vw, 30px); }
}

/* 20. Odbiór kasy, runda 3 (2026-10-12) ------------------------------------ */
/* Pusty koszyk. Telefon i tablet (do 899 px, jedna kolumna): karta terminów pierwsza, bo kto trafił do pustego koszyka,
   chce wybrać termin, a nie czytać instrukcję; "Jak to działa" pod nią. Jasna karta nie ma linków, więc kolejność Tab
   się nie rozjeżdża. Od 900 px: karty od góry, każda swojej wysokości (jasna nie rozciąga się do ciemnej, bez dziury
   między krokami a zapewnieniami). */
@media (max-width: 899px) { .ui-kempty__next { order: -1; } }
@media (min-width: 900px) { .ui-kempty { align-items: start; } }
