/* ============================================================
   MW Motyw — KOSZYK: szuflada koszyka, pozycja koszyka (tez checkout),
   strona /koszyk/ (podsumowanie, kupon), pasek progu darmowej dostawy, polecane.
   Ładowany na KAŻDYM naszym widoku (szuflada siedzi w nagłówku).

   Tokeny i chrom: assets/tokeny.css. MOBILE FIRST.

   ⚠️ Pułapki:
   - reset `.mw-widok <tag>` ma (0,1,1) — komponenty na button/a/ul/li/p
     piszemy jako `.mw-widok .mw-klasa` (0,2,0), inaczej reset je zjada.
   - klasa z display:grid/flex bije atrybut [hidden], wiec taki element
     dostaje jawne `[hidden]{display:none}`.
   ============================================================ */

/* ============ SZUFLADA KOSZYKA (Figma 282:2441 desktop, 283:3436 telefon) ============ */
/* jedna szuflada z prawej na kazdej szerokosci: ikona w naglowku i kazde dodanie do koszyka */
/* telefon: panel przewija sie caly, naglowek i stopka z CTA sticky (strefa kciuka); desktop: polecane w kolumnie z lewej */
/* powloka, naglowek, tytul i X: utility .mw-drawer w tokeny.css (wspolne z szukajka i filtrami, 29.09) */
/* telefon: dzieci koszyka sa bezposrednio elementami panelu, zeby stopka mogla byc sticky na jego dole */
.mw-cart-drawer__cart{ display:contents; }
.mw-cart-drawer__picks .mw-polecane__head .mw-h2{ line-height:var(--mw-lh-tight); }
.mw-cart-drawer__total,
.mw-sumy .mw-sumy__wiersz--razem,
.mw-checkout-view .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-item.wc-block-components-totals-footer-item,
.mw-konto__main .woocommerce table.shop_table tfoot tr:has(.mw-razem) :is(th, td){ line-height:var(--mw-lh-tight); } /* „Razem" wszedzie jednakowo (MW-27, konto 12.10); kroj: naglowek 24/500 w tokeny.css */
.mw-cart-drawer__picks .mw-polecane__head{ margin-bottom:var(--mw-s4); } /* zdjecie 24 pod glowa, jak pierwsza pozycja koszyka (Tomek 06.10) */
.mw-cart-drawer__items > .mw-cart-item:first-child{ padding-top:var(--mw-s4); }
.mw-cart-drawer__body{ flex:1 1 auto; padding:0 var(--mw-drawer-pad); } /* flex: przy krotkim koszyku stopka i tak siedzi na dole */
.mw-cart-drawer__body .mw-nota{ margin-top:var(--mw-s3); }
.mw-cart-drawer__empty{ display:grid; gap:var(--mw-s3); justify-items:center; text-align:center; padding:var(--mw-s7) 0; }
/* link z podkresleniem, nie przycisk: przejscie do koszyka i USUN */
.mw-widok :is(.mw-cart-drawer__link, .mw-cart-item__remove){ padding-bottom:var(--mw-s1); color:var(--mw-ink); text-decoration:none; border-bottom:1px solid var(--mw-ink); }
.mw-widok :is(.mw-cart-drawer__link, .mw-cart-item__remove):hover{ color:var(--mw-ink-3); }
.mw-cart-drawer__picks{ order:2; padding:var(--mw-s4) var(--mw-drawer-pad); border-top:1px solid var(--mw-line); }
.mw-cart-drawer__picks .mw-polecane{ margin-top:0; }
/* siatka 2 kolumny przewijana z szuflada, nie pas: swipe w szufladzie nie dzialal, w dol i tak sie przewija (Tomek 14.09) */
.mw-widok .mw-cart-drawer__picks .mw-polecane__tasma{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:var(--mw-s3); overflow:visible; padding:0; scroll-snap-type:none; }
.mw-cart-drawer__picks .mw-polecane__strzalki{ display:none; }
.mw-cart-drawer__picks .mw-polecany{ position:relative; min-width:0; }
/* stopka szuflady = wzorzec stopki podsumowania (checkout: wiersze pod pozycjami; koszyk: tlo panelu nizej) */
.mw-cart-drawer__footer,
.mw-checkout-view .wc-block-checkout__sidebar .wc-block-components-checkout-order-summary__content > :not(.wp-block-woocommerce-checkout-order-summary-cart-items-block){ display:grid; gap:var(--mw-s2);
  padding:var(--mw-s3) var(--mw-drawer-pad); border-top:1px solid var(--mw-line); background:var(--mw-surface-2); }
.mw-cart-drawer__footer{ order:3; position:sticky; bottom:0; z-index:2; padding-block:var(--mw-s4); } /* 24 gora i dol (Tomek 06.10) */
.mw-cart-drawer__footer[hidden]{ display:none; }
/* telefon, kupon rozwiniety: stopka nie przyklejona, zaraz pod pozycjami (przy bledzie zaslaniala 58 % ekranu, A7) */
@media (width < 900px){ /* bp:desktop */ .mw-cart-drawer__footer:has(.mw-kupon__etykieta[aria-expanded="true"]){ position:static; order:1; } }
.mw-cart-drawer__total,
.mw-checkout-view .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-item.wc-block-components-totals-footer-item{ display:flex; justify-content:space-between; align-items:baseline; }
/* „w tym X VAT” pod suma przy wlaczonych podatkach (MW-51): jak wiersz podatku w checkoucie */
.mw-cart-drawer__total,
.mw-sumy .mw-sumy__wiersz--razem{ flex-wrap:wrap; row-gap:var(--mw-s1); }
.mw-widok .mw-tax-note,
.mw-checkout-view .mw-checkout__main .wc-block-components-totals-footer-item .wc-block-components-totals-item__description{ flex:1 0 100%; margin:0; font-family:var(--mw-body); font-weight:400; line-height:var(--mw-lh-base); text-align:end; }
.mw-prog-dostawy{ display:grid; gap:var(--mw-s2); }
.mw-cart-drawer__actions{ display:grid; gap:var(--mw-s3); } /* przycisk 16 pod dopiskiem, jak na /koszyk/ */
/* dopisek nad CTA (bez kreski, Tomek 14.09), tekst progu, pusty koszyk: utility notka 16 (tokeny.css) */
@media (width >= 900px){ /* bp:desktop */
  .mw-cart-drawer__panel{ max-width:calc(var(--mw-drawer-w) + var(--mw-drawer-aside-w)); overflow:hidden; display:grid; grid-template-columns:var(--mw-drawer-aside-w) minmax(0,1fr); }
  /* bez polecanych szuflada zweza sie do samego koszyka */
  .mw-cart-drawer__panel:has([data-mw-cart-picks][hidden]){ max-width:var(--mw-drawer-w); grid-template-columns:minmax(0,1fr); }
  .mw-cart-drawer__cart{ display:flex; flex-direction:column; min-height:0; grid-column:-2; grid-row:1; border-left:1px solid var(--mw-line); }
  .mw-cart-drawer__head,.mw-cart-drawer__footer{ position:static; }
  .mw-cart-drawer__body{ flex:1 1 auto; overflow-y:auto; }
  /* polecane: kolumna z lewej, pionowa lista */
  .mw-cart-drawer__picks{ grid-column:1; grid-row:1; padding:0 var(--mw-s4) var(--mw-s3); border-top:0; overflow-y:auto; background:var(--mw-paper); } /* biale (Tomek 06.10) */
  /* tytul polecanych w tym samym rzedzie co „Koszyk (n)": 64 px + kreska, zdjecie startuje na wysokosci pierwszej pozycji (Tomek 18.09) */
  .mw-cart-drawer__picks .mw-polecane__head{ display:flex; align-items:center; min-height:calc(var(--mw-s3) * 2 + var(--mw-s5) + 1px); /* +1 kreska: border-box, jak naglowek koszyka 65 */
    margin:0 calc(-1 * var(--mw-s4)) var(--mw-s4); padding-inline:var(--mw-s4); border-bottom:1px solid var(--mw-line); }
  .mw-widok .mw-cart-drawer__picks .mw-polecane__tasma{ grid-template-columns:minmax(0,1fr); }
  /* ukryty pasek rozmiarow wisi pod kafelkiem i wydluzal przewijanie o 39: kolumna konczy sie na ostatnim kafelku + dol 16 */
  .mw-cart-drawer__picks .mw-polecany{ overflow:clip; }
  /* sekcja i kafelek szerokie jak tytul kolumny; pusty koszyk ma dwie kolumny, bez tego */
  .mw-cart-drawer__panel:not(:has(.mw-cart-drawer__empty)) .mw-cart-drawer__picks{ container-type:inline-size; overflow-x:hidden; scrollbar-width:none; }
  /* bez paska przewijania szerokosc kolumny nie zalezy od systemu (klasyczny pasek zjadal 15) */
  .mw-cart-drawer__panel:not(:has(.mw-cart-drawer__empty)) .mw-cart-drawer__picks::-webkit-scrollbar{ display:none; }
  .mw-cart-drawer__panel:not(:has(.mw-cart-drawer__empty)) .mw-cart-drawer__picks .mw-polecane{ inline-size:var(--mw-drawer-pick-w); max-inline-size:100%; }
  /* kreska pod tytulem dalej do krawedzi kolumny: prawy margines = reszta szerokosci kolumny poza sekcja */
  .mw-cart-drawer__panel:not(:has(.mw-cart-drawer__empty)) .mw-cart-drawer__picks .mw-polecane__head{ margin-inline-end:calc(100% - 100cqw - var(--mw-s4)); }
  /* pusty koszyk: kolumna z lewej obok bialej pustki nie ma sensu; jedna kolumna, bestsellery pasem pod pustym stanem jak na telefonie */
  .mw-cart-drawer__panel:has(.mw-cart-drawer__empty){ max-width:var(--mw-drawer-w); grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto; align-content:start; overflow-y:auto; }
  /* min-height:auto: z min-height:0 rzad koszyka schodzil do zera, gdy bestsellery przekraczaly wysokosc okna */
  .mw-cart-drawer__panel:has(.mw-cart-drawer__empty) .mw-cart-drawer__cart{ grid-column:1; grid-row:1; min-height:auto; border-left:0; }
  .mw-cart-drawer__panel:has(.mw-cart-drawer__empty) .mw-cart-drawer__body{ flex:none; overflow:visible; }
  .mw-cart-drawer__panel:has(.mw-cart-drawer__empty) .mw-cart-drawer__picks{ grid-column:1; grid-row:2; padding:var(--mw-s4) var(--mw-drawer-pad); border-top:1px solid var(--mw-line); overflow:visible; background:none; }
  .mw-widok .mw-cart-drawer__panel:has(.mw-cart-drawer__empty) .mw-cart-drawer__picks .mw-polecane__tasma{ grid-template-columns:repeat(2, minmax(0,1fr)); }
}

/* ============ POZYCJA KOSZYKA (jedna dla szuflady i strony, 14.09) ============ */
/* zdjecie 2:3 wysokie jak opis (Tomek 09.10); X w rogu; stepper z lewej, cena z prawej */
/* checkout: pozycja podsumowania blokow WC dopieta selektorami (.wc-block-components-order-summary) */
.mw-cart-item, .mw-szw__poz,
.mw-checkout-view .wc-block-components-order-summary .wc-block-components-order-summary-item{ position:relative; padding:var(--mw-s3) 0;
  border-bottom:1px solid var(--mw-line); font-size:var(--mw-fs-base); line-height:var(--mw-lh-base); } /* wlasna baza: panel checkoutu ma 15 */
.mw-cart-item, .mw-szw__poz{ display:grid; grid-template-columns:auto minmax(0, 1fr); align-items:start; gap:var(--mw-s3); } /* checkout: siatka w checkout.css */
.mw-cart-item:last-child,
.mw-checkout-view .wc-block-components-order-summary .wc-block-components-order-summary-item:last-child{ border-bottom:0; }
/* wysokosc = opis (stretch), szerokosc z 2:3; contain:size: plik 500 px nie rozpycha kolumny */
.mw-cart-item__photo,.mw-cart-item__no-photo,.mw-szw__foto{ align-self:stretch; aspect-ratio:2/3; contain:size; display:block; background:var(--mw-surface-2); }
/* podpowiedzi szukajki: kadr o stalej szerokosci 72, wysokosc z proporcji, nie z opisu */
.mw-szw__foto{ inline-size:calc(var(--mw-s8) + var(--mw-s2)); align-self:start; }
/* aspect-ratio:auto zdejmuje atrybut height z wp_get_attachment_image, inaczej obraz nie wypelnia kadru */
.mw-cart-item__photo img{ width:100%; height:100%; aspect-ratio:auto; object-fit:cover; }
.mw-cart-item__info{ position:relative; display:flex; flex-direction:column; min-width:0; }
/* nazwa zostawia miejsce tylko na X usuwania (32); checkout zeruje (Tomek 09.10) */
.mw-widok .mw-cart-item__name,
.mw-checkout-view .wc-block-components-order-summary .wc-block-components-product-name{ display:block; text-decoration:none; padding-right:var(--mw-s5);
  font-family:var(--mw-body); font-size:var(--mw-fs-base); line-height:var(--mw-lh-snug); margin-bottom:var(--mw-s1); } /* 16: Alegreya, 18 bylo pod Cormorant (Tomek 09.10) */
.mw-widok .mw-cart-item__name:hover{ text-decoration:underline; }
.mw-widok .mw-cart-item__name{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } /* 1 linia: stala wysokosc pozycji (Tomek 09.10) */
/* meta i cena przekreslona: utility drobnego druku w tokeny.css */
.mw-cart-item__meta > span{ display:block; }
/* przedsprzedaz: osobny wiersz pod zdjeciem i opisem */
.mw-widok .mw-cart-item__preorder{ grid-column:1 / -1; margin:0; }
/* cena: samo „729 zl" na dole po prawej, przy ilosci; „1 x" to tekst bez elementu, gasnie rozmiarem czcionki */
/* przecena w dwoch wierszach: aktualna na gorze, przekreslona pod nia, wszedzie (Tomek 01.10, zastepuje 22.09) */
.mw-cart-item__price,
.mw-checkout-view .wc-block-components-order-summary .wc-block-components-order-summary-item__individual-prices{ margin:0; font-size:0;
  display:flex; flex-direction:column; align-items:flex-end; }
.mw-cart-item__price-current{ font-size:var(--mw-fs-base); } /* 16 jak nazwa (Tomek 09.10); checkout: checkout.css */
/* ilosc > 1: widoczne „2 × 839 zl” w jednym wierszu, przekreslona pod spodem (audyt 13.10, A5) */
.mw-cart-item:has(.mw-qty__field:not([value="1"])) .mw-cart-item__price{ display:block; text-align:end; } /* pismo: tekst pomocniczy w tokeny.css */
.mw-cart-item:has(.mw-qty__field:not([value="1"])) .mw-cart-item__price-old{ display:block; }
.mw-cart-item:has(.mw-qty__field:not([value="1"])) .mw-cart-item__price-current{ color:var(--mw-ink); }
/* stepper do dolu rzedu, rowno z dolem ceny przy przecenie w dwoch wierszach (Tomek 13.10) */
.mw-cart-item__bottom{ display:flex; justify-content:space-between; align-items:flex-end; padding-top:var(--mw-s3); }
@media (width < 900px){ /* bp:desktop */ .mw-cart-item__bottom{ padding-top:var(--mw-s2); } }
/* usun = X w prawym gornym rogu (Tomek 09.10); tekst „usun: nazwa” zostaje dla czytnika */
/* pole = sam X (12, viewBox przyciety do kresek): prawa krawedz rowno z cena; gora na srodku 1. linii nazwy */
.mw-widok .mw-cart-item__remove{ position:absolute; top:var(--mw-s1); right:0; inline-size:calc(3 * var(--mw-s1)); block-size:calc(3 * var(--mw-s1)); margin:0; padding:0; border:0; font-size:0; }
.mw-widok .mw-cart-item__remove::after{ content:""; position:absolute; inset:0; background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5.5 5.5 13 13'%3E%3Cpath d='M6 6l12 12M18 6L6 18' stroke='%23000' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='5.5 5.5 13 13'%3E%3Cpath d='M6 6l12 12M18 6L6 18' stroke='%23000' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") center / contain no-repeat; }
/* szuflada: X pozycji w pionie pod X szuflady (ten ma -8 marginesu), telefon i desktop (Tomek 14.10) */
.mw-cart-drawer .mw-cart-item .mw-cart-item__remove{ right:var(--mw-s2); }
/* pole dotyku 44: kasuje pozycje, wiec nie moze byc najmniejszym celem koszyka */
.mw-widok .mw-cart-item__remove::before{ content:""; position:absolute; inset:calc((100% - var(--mw-control-h)) / 2); }

/* ============ PASEK PROGU DARMOWEJ DOSTAWY ============ */
.mw-prog-dostawy.is-osiagniety .mw-prog-dostawy__txt{ color:var(--mw-ok); }
.mw-prog-dostawy__tor{ height:3px; background:var(--mw-line); border-radius:var(--mw-radius); overflow:hidden; }
.mw-prog-dostawy__pasek{ display:block; height:100%; background:var(--mw-black);
  transition:width .3s var(--mw-ease); }
.mw-prog-dostawy.is-osiagniety .mw-prog-dostawy__pasek{ background:var(--mw-ok); }

/* ============ STRONA KOSZYKA ============ */
.mw-koszyk__main{ padding:0 var(--mw-page-pad) var(--mw-s7); } /* szerokosc: .mw-focus-view w tokeny.css */
/* jedna kolumna: podsumowanie od 1200 to panel przy prawej krawedzi, nizej karta pod pozycjami */
/* minmax(0,1fr): bez tego karuzela polecanych rozpychala kolumne poza gutter na telefonie (01.10) */
.mw-koszyk__kolumny{ display:grid; grid-template-columns:minmax(0, 1fr); gap:var(--mw-s5); align-items:start; }

/* stepper 76x24: wysokosc 24 = minimum WCAG 2.2 AA (2.5.8); 24 razem z ramka 1+1 */
.mw-qty{ display:inline-flex; align-items:center; box-sizing:border-box; height:var(--mw-s4); border:1px solid var(--mw-taupe); border-radius:var(--mw-radius); }
.mw-widok .mw-qty__button{ position:relative; width:var(--mw-s4); height:100%; display:grid; place-items:center; }
/* pole dotyku 44 w pionie bez zmiany wygladu (jak rozmiary na karcie); w poziomie bez zmian, bo obok stoi pole ilosci */
.mw-widok .mw-qty__button::before{ content:""; position:absolute; inset:calc((100% - var(--mw-control-h)) / 2) 0; }
.mw-widok .mw-qty__button:hover{ color:var(--mw-ink); background:var(--mw-surface-2); }
/* minus przy 1 szt. nieaktywny (Tomek 02.10): kasowanie tylko przez USUN */
.mw-widok .mw-qty__button:disabled{ opacity:.35; cursor:default; background:none; color:var(--mw-ink-3); }
/* 16 px: iPhone zblizal strone przy polu ponizej 16 */
.mw-qty__field{ width:calc(var(--mw-s4) + var(--mw-s1)); height:100%; border:0; text-align:center; font:inherit; font-size:var(--mw-fs-base);
  background:transparent; -moz-appearance:textfield; appearance:textfield; }
.mw-qty__field::-webkit-outer-spin-button,
.mw-qty__field::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }

/* podsumowanie = karta jak panel checkoutu (uklad: tokeny.css); glowa z ::before, bo markup jej nie ma */
.mw-koszyk__podsumowanie{ background:var(--mw-surface-2); border:1px solid var(--mw-line); box-shadow:none; }
.mw-koszyk__podsumowanie::before{ content:"Podsumowanie" / ""; position:static; box-sizing:border-box; min-block-size:var(--mw-drawer-head-h); } /* nazwa z aria-label */
/* wiersze: 16 miedzy blokami, 24 na krancach; wiecej oddechu niz stopka szuflady, bo karta nie dzieli miejsca z pozycjami (Tomek 05.10) */
.mw-widok .mw-koszyk__podsumowanie > *{ flex:none; margin:var(--mw-s3) var(--mw-drawer-pad) 0; }
.mw-widok .mw-koszyk__podsumowanie > :first-child{ margin-block-start:var(--mw-s4); }
.mw-widok .mw-koszyk__podsumowanie > :last-child{ margin-block-end:var(--mw-s4); }
.mw-widok .mw-koszyk__podsumowanie > .mw-koszyk__dopisek{ margin-block-start:var(--mw-s1); } /* nalezy do „Razem" */
/* sekcje karty: pas kuponu pod glowa (tokeny.css, KUPON), pod nim pasek dostawy z wlasnym paddingiem, sumy tuz pod paskiem (Tomek 06.10) */
.mw-widok .mw-koszyk__podsumowanie > .mw-kupon{ margin:0; }
.mw-widok .mw-koszyk__podsumowanie > .mw-kupon:first-child{ border-block-start:0; } /* kreske niesie glowa karty */
.mw-widok .mw-koszyk__podsumowanie > .mw-kupon + *{ margin-block-start:var(--mw-s4); }
/* pasek darmowej dostawy: pelny pas z wlasnym paddingiem, ten sam w karcie /koszyk/ i w stopce szuflady (Tomek 06.10) */
.mw-widok :is(.mw-koszyk__podsumowanie, .mw-cart-drawer__footer) > .mw-prog-dostawy{ margin:0; padding:var(--mw-s4) var(--mw-drawer-pad); }
/* stopka szuflady jak karta /koszyk/: kupon, pasek dostawy, suma; ujemne marginesy zjadaja padding 24 i gap 8 stopki */
.mw-widok .mw-cart-drawer__footer > .mw-kupon:first-child{ margin-block-start:calc(-1 * var(--mw-s4)); border-block-start:0; } /* kreske niesie stopka */
.mw-widok .mw-cart-drawer__footer > .mw-prog-dostawy{ margin-inline:calc(-1 * var(--mw-drawer-pad)); }
.mw-widok .mw-cart-drawer__footer > .mw-kupon + .mw-prog-dostawy,
.mw-widok .mw-cart-drawer__footer > .mw-prog-dostawy + *{ margin-block-start:calc(-1 * var(--mw-s2)); }
/* suma, dopisek, przycisk: dopisek 4 pod „Razem”, przycisk 16 pod dopiskiem, jak w karcie /koszyk/ */
.mw-widok .mw-cart-drawer__footer > .mw-cart-drawer__total + .mw-cart-drawer__actions{ margin-block-start:calc(var(--mw-s1) - var(--mw-s2)); }
.mw-widok .mw-koszyk__podsumowanie > .mw-prog-dostawy + *{ margin-block-start:0; }
.mw-cart-drawer__footer > .mw-kupon{ min-width:0; margin-inline:calc(-1 * var(--mw-drawer-pad)); } /* jw. w stopce szuflady (MW-26) */
@media (width >= 1200px){ /* bp:wyjatek - panel od 1200 jak checkout */
  /* wysokosc tresci, gora rowno z lista pozycji: inset auto = miejsce z ukladu (Tomek 05.10, 08.10) */
  /* karta nie klei sie do krawedzi: z prawej tyle co odstep od listy = gutter strony (Tomek 08.10) */
  body.mw-focus-view:has(.mw-koszyk__podsumowanie){ padding-inline-end:calc(var(--mw-drawer-w) + var(--mw-focus-gutter) + var(--mw-page-pad)); }
  body.mw-focus-view #mw-glowna .mw-koszyk__podsumowanie{ inset-block:auto; inset-inline-end:calc(var(--mw-focus-gutter) + var(--mw-page-pad)); height:auto; max-height:calc(100svh - 2 * var(--mw-s5)); box-shadow:none; }
}
/* desktop: polecane przy dole ekranu, od dolu tyle co gutter z lewej; min. 40 nad nimi zostaje (Tomek 08.10) */
@media (width >= 900px){ /* bp:desktop */
  .mw-koszyk__main{ box-sizing:border-box; display:flex; flex-direction:column; min-block-size:100svh; padding-block-end:var(--mw-page-pad); }
  .mw-koszyk__main > .mw-koszyk{ flex:1 0 auto; display:flex; flex-direction:column; gap:var(--mw-s6); }
  .mw-koszyk > .mw-polecane{ margin-block-start:auto; }
}
.mw-kupon__etykieta{ display:block; margin-bottom:var(--mw-s2); }
.mw-widok .mw-kupon__wiersz[hidden]{ display:none; } /* uklad wiersza: tokeny.css (KUPON) */
/* etykieta jako przycisk rozwijania (koszyk.js), strzalka WC (chevronDown); pismo i pas: tokeny.css (KUPON) */
.mw-widok button.mw-kupon__etykieta{ display:flex; justify-content:space-between; align-items:center; inline-size:100%; margin:0; color:var(--mw-ink); text-align:start; }
/* hover przelacznika: bez kreski (to nie link), strzalka 2 px w strone, w ktora wskazuje (Tomek 12.10) */
.mw-widok button.mw-kupon__etykieta:hover::after,
.mw-checkout-view .mw-checkout__main .wc-block-components-panel__button:hover .wc-block-components-panel__button-icon{ translate:0 calc(var(--mw-s1) / 2); }
.mw-widok button.mw-kupon__etykieta[aria-expanded="true"]:hover::after,
.mw-checkout-view .mw-checkout__main .wc-block-components-panel__button[aria-expanded="true"]:hover .wc-block-components-panel__button-icon{ translate:0 calc(var(--mw-s1) / -2); }
.mw-widok button.mw-kupon__etykieta::after{ content:""; flex:none; inline-size:var(--mw-s4); block-size:var(--mw-s4); background:currentColor;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z'/%3E%3C/svg%3E") center / contain no-repeat; }
.mw-widok button.mw-kupon__etykieta[aria-expanded="true"]::after{ transform:rotate(180deg); }
@media (width < 900px){ /* bp:desktop */ .mw-widok button.mw-kupon__etykieta{ min-block-size:var(--mw-control-h); } } /* cel dotyku jak w checkoucie */
.mw-kupon__pole{ flex:1 1 auto; min-width:0; inline-size:0; font:inherit; } /* inline-size 0: pole nie rozpycha stopki szuflady; skora w tokeny.css */
.mw-widok .mw-kupon__zastosuj{ flex:0 0 auto; }
.mw-widok .mw-kupon .mw-field-error{ margin-top:var(--mw-s2); } /* skora: blad pola w tokeny.css */
.mw-widok .mw-kupony{ display:grid; gap:var(--mw-s1); }
.mw-kupony__poz{ display:flex; align-items:center; justify-content:space-between; gap:var(--mw-s2);
  background:var(--mw-paper); padding:var(--mw-s2) var(--mw-s3); border-radius:var(--mw-radius); }
.mw-widok .mw-kupony__usun{ display:grid; place-items:center; width:var(--mw-s4); height:var(--mw-s4); color:var(--mw-ink-3); }
.mw-widok .mw-kupony__usun:hover{ color:var(--mw-ink); }

.mw-sumy{ display:grid; gap:var(--mw-s2); margin:0; }
/* checkout: wiersze sum blokow WC dopiete selektorami */
.mw-sumy__wiersz,
.mw-checkout-view .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-item{ display:flex; justify-content:space-between; font-size:var(--mw-fs-sm); }
.mw-sumy__wiersz dd{ margin:0; }
.mw-sumy__wiersz--rabat dd:last-child{ margin-inline-start:var(--mw-s2); white-space:nowrap; color:var(--mw-ok); }
/* rabat jak w checkoucie: „Rabat: kod × … −kwota” (Tomek 12.10) */
.mw-sumy__wiersz--rabat{ align-items:baseline; gap:var(--mw-s1); }
.mw-sumy__wiersz--rabat dt::after{ content:":"; }
.mw-widok .mw-sumy__kody{ flex:1 1 auto; display:flex; flex-wrap:wrap; gap:var(--mw-s2); }
.mw-sumy__kod{ display:inline-flex; align-items:center; gap:var(--mw-s1); }
.mw-widok .mw-sumy__kod .mw-kupony__usun{ margin-block:calc((1lh - var(--mw-s4)) / 2); } /* krzyzyk 24 nie podnosi wiersza */
/* „Razem” 16 pod ostatnim wierszem (8 rytmu + 8), koszyk i checkout (Tomek 12.10) */
.mw-sumy .mw-sumy__wiersz--razem,
.mw-checkout-view .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-footer-item{ margin-block-start:var(--mw-s2); }
.mw-widok .mw-koszyk__wroc{ display:block; text-align:center; }
.mw-widok .mw-koszyk__wroc:hover{ color:var(--mw-ink); }
@media (width < 900px){ /* bp:desktop */ .mw-widok .mw-koszyk__podsumowanie > .mw-koszyk__wroc{ margin-block-end:var(--mw-s3); } } /* telefon 16 pod linkiem (Tomek 08.10); (0,3,0) bije > :last-child z l. 170 */

/* pusty koszyk; tytul = .mw-h2 (tokeny.css) */
.mw-koszyk__pusty{ display:grid; gap:var(--mw-s3); justify-items:center; text-align:center; padding:var(--mw-s8) var(--mw-s3); }

/* komunikaty (kupony, usunięcia) i komunikaty WC w checkoucie (klasyczne i baner blokow): jedna skora (Tomek 06.10) */
/* padding banera blokow WC ma !important, zostaje jego 16 */
.mw-nota, .mw-konto__main :is(.woocommerce-info, .woocommerce-message, .woocommerce-error, .wc-block-components-notice-banner),
.mw-checkout-view :is(.woocommerce-info, .woocommerce-message, .woocommerce-notice, .woocommerce-error, .wc-block-components-notice-banner, .p24-payment-status){
  padding:var(--mw-s3); border:1px solid var(--mw-line); border-radius:var(--mw-radius); background:var(--mw-surface-2); /* 16 (Tomek 12.10) */
  color:var(--mw-ink-3); font-size:var(--mw-fs-base); margin-bottom:var(--mw-s2); list-style:none; text-wrap:pretty; } /* bez sierot w ostatniej linii */
@media (width < 900px){ /* bp:desktop */ .mw-noty .mw-nota{ text-align:center; } } /* koszyk na telefonie wysrodkowany (Tomek 13.10) */
.mw-nota--error, .mw-konto__main .woocommerce-error,
.mw-checkout-view :is(.woocommerce-error, .wc-block-components-notice-banner.is-error){ border-color:var(--mw-error-line); background:var(--mw-error-bg); color:var(--mw-error); }
.mw-nota--success, .mw-konto__main .woocommerce-message,
.mw-checkout-view :is(.woocommerce-message, .wc-block-components-notice-banner.is-success){ border-color:var(--mw-ok-line); background:var(--mw-ok-bg); color:var(--mw-ok); }
/* bez ikon WC (kolko z wykrzyknikiem, ::before klasycznych); X zamkniecia jak X szuflady */
:is(.mw-checkout-view, .mw-konto__main) .wc-block-components-notice-banner > svg,
.mw-checkout-view :is(.woocommerce-info, .woocommerce-message, .woocommerce-error)::before,
.mw-konto__main :is(.woocommerce-info, .woocommerce-message, .woocommerce-error)::before{ display:none; content:none; }
/* baner min. 44 jak kontrolka (Tomek 06.10); 8 gora/dol dla dlugich; WC ma 16 !important */
/* WC fokusuje baner po zaladowaniu (tabindex -1, role alert): bez obrysu, czytnik i tak go oglasza */
:is(.mw-checkout-view, .mw-konto__main) :is(.wc-block-components-notice-banner, .woocommerce-message, .woocommerce-info, .woocommerce-error)[tabindex="-1"]:focus{ outline:none; }
:is(.mw-checkout-view, .mw-konto__main) .wc-block-components-notice-banner{ display:flex; align-items:center; gap:var(--mw-s2); box-sizing:border-box; min-block-size:var(--mw-control-h); padding-block:var(--mw-s2) !important; }
/* X: WC ma !important na kolorze i marginesie (6 px w dol), stad !important jak przy skorach InPost i Apaczki */
.mw-checkout-view .mw-checkout__main .wc-block-components-notice-banner > .wc-block-components-notice-banner__dismiss.contained{
  flex:none; opacity:1; margin:0 0 0 auto !important; color:inherit !important; }
.mw-checkout-view .mw-checkout__main .wc-block-components-notice-banner > .wc-block-components-notice-banner__dismiss svg{ fill:currentColor; }

/* blokada klikow na czas operacji AJAX; checkout: zapis wyboru dostawy (atrybut ze skryptu w checkout.php) */
[data-mw-koszyk-strona][aria-busy="true"],
.mw-cart-drawer__panel[aria-busy="true"],
.mw-checkout__content[data-mw-shipping-busy] #shipping-option .wc-block-components-radio-control__option{ pointer-events:none; cursor:progress; } /* bez opacity: koszyk gasl przy kazdej operacji (Tomek 14.09) */
/* stan ladowania (A4): ilosc = pulsujacy pasek w miejscu ceny, usuwanie = pozycja blednie (Tomek 13.10) */
.mw-cart-item[data-mw-busy="remove"]{ opacity:.4; pointer-events:none; cursor:progress; }
.mw-cart-item[data-mw-busy="qty"] .mw-cart-item__price{ border-radius:var(--mw-radius); background:var(--mw-line); animation:mw-busy-pulse 1s ease-in-out infinite alternate; }
/* [data-mw-poz] = sila reguly ceny przy ilosci > 1 (0,4,0), wyzej w pliku */
.mw-cart-item[data-mw-poz][data-mw-busy="qty"] :is(.mw-cart-item__price, .mw-cart-item__price *){ color:transparent; }
@keyframes mw-busy-pulse{ from{ opacity:1; } to{ opacity:.35; } }
@media (prefers-reduced-motion: reduce){ .mw-cart-item[data-mw-busy="qty"] .mw-cart-item__price{ animation:none; } }

/* ============ POLECANE (cross-sell): karuzela ============
   2 kafelki na telefonie, 3–5 wg szerokości; swipe + strzałki (desktop).
   Używana w koszyku („Skompletuj stylizację") i na karcie („Do tego pasują"). */
.mw-polecane{ margin-top:var(--mw-s6); }
.mw-polecane__head{ display:flex; align-items:center; justify-content:space-between;
  gap:var(--mw-s3); margin-bottom:var(--mw-s3); }
.mw-polecane__strzalki{ display:none; gap:var(--mw-s2); }
@media (width >= 900px){ /* bp:desktop */ .mw-polecane__strzalki:not([hidden]){ display:flex; } } /* hidden: wszystko sie miesci (koszyk.js) */
/* body karty to tez .mw-widok, wiec osobne .mw-pdp przy polecanych zbedne */
.mw-widok .mw-polecane__strzalka{ border:1px solid var(--mw-taupe); border-radius:var(--mw-radius);
  color:var(--mw-ink-3); background:var(--mw-paper); }
.mw-widok .mw-polecane__strzalka:hover:not(:disabled){ color:var(--mw-ink); border-color:var(--mw-ink); }
.mw-widok .mw-polecane__strzalka:disabled{ opacity:.35; cursor:default; }
/* odstep 16 (Tomek 30.09); --mw-gap lokalnie, bo z niego liczy sie szerokosc karty */
.mw-widok .mw-polecane__tasma{ --mw-gap:var(--mw-s3); display:flex; gap:var(--mw-gap);
  scroll-snap-type:x mandatory; padding:0; }
/* tasma przycina w pionie: obrys fokusu do srodka zamiast zapasu 4 pod spodem (Tomek 08.10) */
.mw-widok .mw-polecane__tasma :focus-visible{ outline-offset:-2px; }
/* telefon: 2 na ekran; desktop: kafel tej samej szerokosci co siatka i karuzela home (--mw-tile-w), liczba wynika z miejsca - bez progow 700/1000/1300 (audyt 18.09) */
.mw-polecany{ flex:0 0 calc((100% - var(--mw-gap)) / 2); scroll-snap-align:start; min-width:0; }
@media (width >= 900px){ /* bp:desktop */ .mw-polecany{ flex-basis:var(--mw-tile-w); } }
.mw-polecany__foto img,.mw-polecany__brak{ width:100%; height:auto; aspect-ratio:3/4; object-fit:cover;
  display:block; background:var(--mw-surface-2); }
.mw-widok .mw-polecany__nazwa{ display:block; margin-top:var(--mw-s2);
  font-size:var(--mw-fs-sm); line-height:var(--mw-lh-snug); text-decoration:none; }
.mw-widok .mw-polecany__nazwa:hover{ text-decoration:underline; }
.mw-polecany__cena{ font-size:var(--mw-fs-xs); margin:var(--mw-s1) 0 0; }
.mw-polecany__cena del{ color:var(--mw-ink-3); }
.mw-polecany__cena ins{ text-decoration:none; }
/* telefon i dotyk: bez szybkiego dodania, kafelek prowadzi na karte (Tomek 14.09) */
.mw-widok .mw-polecany__dodaj,
.mw-polecany__rozmiary{ display:none; }
@media (width >= 900px) and (hover:hover){ /* bp:desktop */
  /* jak pasek kafelka: najazd na kafelek = pasek na dole zdjecia, najazd na pasek = rzad rozmiarow pod nim; dol zdjecia z cqw (3:4) */
  .mw-polecany{ position:relative; container-type:inline-size; --mw-sizes-h:calc(var(--mw-control-h) + var(--mw-s3)); }
  .mw-polecany__foto{ display:block; aspect-ratio:3/4; }
  /* jak szyba kafelka: szyba = rzad rozmiarow wyzszy o pasek (104), schowany pod dolna krawedzia zdjecia; pasek to etykieta bez tla nad nim */
  .mw-widok .mw-polecany__dodaj,
  .mw-widok .mw-polecany__rozmiary{ position:absolute; inset-inline:0; top:calc(100cqw * 4 / 3); margin:0;
    translate:0 0; opacity:0; visibility:hidden; transition:opacity .18s var(--mw-ease), translate .18s var(--mw-ease), clip-path .18s var(--mw-ease), visibility 0s .18s; }
  .mw-widok .mw-polecany__dodaj{ display:grid; z-index:1; }
  .mw-widok .mw-polecany__rozmiary{ display:block; box-sizing:border-box;
    block-size:calc(var(--mw-sizes-h) + var(--mw-control-h)); padding:var(--mw-control-h) var(--mw-s2) var(--mw-s3); clip-path:inset(0 0 var(--mw-sizes-h) 0); }
  /* najazd na kafelek: od razu pasek i rozmiary, jednym ruchem, jak kafelek listingu (Tomek 05.10) */
  .mw-polecany:is(:hover, :focus-within) .mw-polecany__dodaj{ translate:0 calc(-100% - var(--mw-sizes-h)); opacity:1; visibility:visible; transition-delay:0s; }
  .mw-polecany:is(:hover, :focus-within) .mw-polecany__rozmiary{ translate:0 -100%; clip-path:inset(0); opacity:1; visibility:visible; transition-delay:0s; }
  .mw-polecany__etyk{ display:none; }
  /* chipy: --card z tokeny.css; wysrodkowane, do dolu rzedu */
  .mw-widok .mw-polecany__chipy{ block-size:100%; flex-wrap:nowrap; align-items:flex-end; justify-content:center; gap:var(--mw-s1); }
  /* szesc chipow w waskim kafelku: kurcza sie rowno jak li na kafelku, nie spadaja do drugiego rzedu */
  .mw-widok .mw-polecany__chipy button{ flex:0 1 calc(var(--mw-control-h) - var(--mw-s2)); min-inline-size:0; }
}
/* w koszyku: oddzielona linią, na dole strony — nie dominuje */
.mw-koszyk__main .mw-polecane{ border-top:1px solid var(--mw-line); padding-top:var(--mw-s5); }
@media (width >= 900px){ /* bp:desktop */
  /* cztery kafelki z szerokosci kolumny (Tomek 22.09); od 1200 kolumna konczy sie na panelu */
  .mw-koszyk__main .mw-polecany{ flex-basis:calc((100% - 3 * var(--mw-gap)) / 4); }
}
