/* =========================================================================
   Dom i Ogród Styl — koszyk i kasa

   Osobny arkusz, ładowany wyłącznie na tych stronach. Powód jest
   w `inc/checkout.php`: główny arkusz blokuje render każdej strony sklepu,
   a te style dotyczą ułamka ruchu.

   Od 16.10.2026 koszyk i kasa są KLASYCZNE (szablony w woocommerce/ motywu,
   wzór: topsexshop.pl). Nadpisujemy WooCommerce SPECYFICZNOŚCIĄ: klasa
   `.ds-cart-page` / `.ds-checkout-page` na <body> daje nam zawsze o jedną
   klasę więcej niż selektory Woo. `!important` tylko tam, gdzie Woo sam go
   używa (kolor „×" przy usuwaniu pozycji).
   ========================================================================= */

/* ------------------------------------------------------------ POWŁOKA --- */

.ds-shell {
  max-width: var(--ds-max);
  margin-inline: auto;
  padding-inline: var(--ds-gutter);
  padding-block: clamp(24px, 4vw, 48px) clamp(48px, 7vw, 96px);
}

.ds-shell--checkout {
  /* Kasa jest węższa od katalogu: jedna kolumna formularza i podsumowanie.
     Pełne 1320 px rozciągałoby pola adresu na szerokość, na której oko gubi
     początek następnego wiersza. */
  max-width: 1180px;
}

/* --------------------------------------------------------- SZAPKA ------ */

.ds-cart-head {
  display: flex;
  flex-direction: column;
  gap: clamp(18px, 2.6vw, 28px);
  margin-bottom: clamp(22px, 3vw, 34px);
}

.ds-cart-head__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.ds-cart-head__title {
  font-family: var(--ds-display);
  font-weight: 500;
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.05;
  letter-spacing: -.03em;
  margin: 0;
  color: var(--ds-ink);
}

/* Licznik pozycji przy tytule — mniejszy i spokojniejszy niż sam tytuł. */
.ds-cart-head__count {
  margin-left: 10px;
  font-family: var(--ds-body);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--ds-muted);
  vertical-align: middle;
}

/* ------------------------------------------------------------- KROKI --- */

.ds-steps {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 14px;
}

.ds-steps__item {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--ds-muted);
}

/* Kreska między krokami rysowana pseudoelementem, żeby nie dokładać
   pustych elementów do drzewa dostępności. */
.ds-steps__item + .ds-steps__item::before {
  content: "";
  width: clamp(16px, 3vw, 34px);
  height: 1px;
  background: var(--ds-line);
  margin-right: 4px;
}

.ds-steps__dot {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1.5px solid var(--ds-line);
  background: var(--ds-paper);
  flex: none;
}

.ds-steps__dot svg { width: 13px; height: 13px; }

.ds-steps__item.is-current { color: var(--ds-ink); font-weight: 700; }
.ds-steps__item.is-current .ds-steps__dot {
  border-color: var(--ds-forest);
  background: var(--ds-forest);
  box-shadow: 0 0 0 4px var(--ds-moss);
}

.ds-steps__item.is-done { color: var(--ds-forest); }
.ds-steps__item.is-done .ds-steps__dot {
  border-color: var(--ds-forest);
  color: var(--ds-forest);
}

/* --------------------------------------------- POSTĘP DARMOWEJ DOSTAWY --- */

.ds-ship-progress {
  padding: 16px 20px 18px;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
}

.ds-ship-progress.is-reached {
  border-color: #BFD8C4;
  background: #F1F8F2;
}

.ds-ship-progress__text {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 1.5;
  color: var(--ds-muted);
}

.ds-ship-progress__text strong { color: var(--ds-ink); font-weight: 700; }
.ds-ship-progress.is-reached .ds-ship-progress__text strong { color: #1F6B33; }

/* Kwota z `wc_price()` przychodzi w <span class="woocommerce-Price-amount">
   — dziedziczy pogrubienie z <strong>, ale własny rozmiar czcionki Woo trzeba
   zdjąć, inaczej liczba jest mniejsza od zdania, w którym stoi. */
.ds-ship-progress__text .woocommerce-Price-amount { font-size: inherit; }

.ds-ship-progress__track {
  height: 7px;
  border-radius: 999px;
  background: var(--ds-moss);
  overflow: hidden;
}

.ds-ship-progress__bar {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--ds-forest), var(--ds-terracotta));
  transition: width .45s cubic-bezier(.4, 0, .2, 1);
}

.ds-ship-progress.is-reached .ds-ship-progress__bar {
  background: linear-gradient(90deg, #2F8447, #4CA366);
}

@media (prefers-reduced-motion: reduce) {
  .ds-ship-progress__bar { transition: none; }
}

/* ------------------------------------------------- PUSTY KOSZYK -------- */

.ds-empty {
  max-width: 640px;
  margin-inline: auto;
  text-align: center;
  padding: clamp(30px, 5vw, 56px) clamp(20px, 4vw, 40px);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
}

.ds-empty__icon {
  display: grid;
  place-items: center;
  width: 64px;
  height: 64px;
  margin: 0 auto 20px;
  border-radius: 50%;
  background: var(--ds-moss);
  color: var(--ds-forest);
}

.ds-empty__icon svg { width: 30px; height: 30px; }

.ds-empty__title {
  font-family: var(--ds-display);
  font-weight: 500;
  font-size: clamp(26px, 3.4vw, 36px);
  line-height: 1.1;
  letter-spacing: -.025em;
  margin: 0 0 12px;
  color: var(--ds-ink);
}

.ds-empty__lead {
  margin: 0 auto 24px;
  max-width: 48ch;
  font-size: 16px;
  line-height: 1.65;
  color: var(--ds-muted);
}

.ds-empty__search { margin-bottom: 24px; text-align: left; }

.ds-empty__depts {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-bottom: 26px;
}

.ds-empty__dept {
  display: inline-flex;
  align-items: center;
  padding: 9px 16px;
  border: 1px solid var(--ds-line);
  border-radius: 999px;
  background: var(--ds-linen);
  font-size: 14px;
  font-weight: 600;
  color: var(--ds-ink);
  text-decoration: none;
  transition: border-color .16s ease, background .16s ease;
}

.ds-empty__dept:hover { border-color: var(--ds-forest); background: var(--ds-moss); color: var(--ds-forest); }

.ds-empty__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 15px 34px;
  border-radius: 999px;
  background: var(--ds-forest);
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s ease;
}

.ds-empty__cta:hover { background: var(--ds-forest-deep); color: #fff; }

/* ================================================== ZAUFANIE I PŁATNOŚCI = */

.ds-assurance {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: clamp(28px, 4vw, 44px);
}

.ds-assurance__item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 18px;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
}

.ds-assurance__icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  flex: none;
  border-radius: 50%;
  background: var(--ds-moss);
  color: var(--ds-forest);
}

.ds-assurance__icon svg { width: 19px; height: 19px; }

.ds-assurance__body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ds-assurance__body strong { font-size: 15px; font-weight: 700; color: var(--ds-ink); }
.ds-assurance__body span { font-size: 13.5px; line-height: 1.45; color: var(--ds-muted); }

/* ---------------------------------------------------- LOGO PŁATNOŚCI --- */

/* Znaki płatności (.ds-paylogos) żyją w domiogrodstyl.css — są też w stopce. */

/* --------------------------------------------- PŁYWAJĄCY KOSZYK GAPLI -- */

/* `gapli-smart-cart` trzyma przy krawędzi ekranu kółko z liczbą pozycji
   i sumą. Na stronach katalogu to skrót do koszyka i ma sens. Na samym
   koszyku dubluje to, co klient właśnie ogląda, a na telefonie siada
   dokładnie na naszym pasku z sumą i przyciskiem płatności. */
.ds-cart-page .gapli-sc-floating-widget,
.ds-checkout-page .gapli-sc-floating-widget { display: none; }

/* ------------------------------------------------ PASEK PRZY KRAWĘDZI -- */

.ds-cartbar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 60;
  padding: 10px var(--ds-gutter) calc(10px + env(safe-area-inset-bottom));
  background: rgba(255, 255, 255, .97);
  border-top: 1px solid var(--ds-line);
  box-shadow: 0 -8px 30px rgba(30, 51, 40, .1);
  backdrop-filter: blur(8px);
}

.ds-cartbar[hidden] { display: none; }

.ds-cartbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  max-width: var(--ds-max);
  margin-inline: auto;
}

.ds-cartbar__sum { display: flex; flex-direction: column; line-height: 1.2; }
.ds-cartbar__label { font-size: 12px; color: var(--ds-muted); }

.ds-cartbar__price {
  font-family: var(--ds-display);
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -.02em;
  color: var(--ds-ink);
}

.ds-cartbar__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 50px;
  padding: 14px 28px;
  border-radius: 999px;
  background: var(--ds-forest);
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  text-decoration: none;
}

.ds-cartbar__cta:hover { background: var(--ds-forest-deep); color: #fff; }

/* Pasek jest narzędziem telefonu. Na desktopie podsumowanie jest przyklejone
   w kolumnie obok i widać je przez cały czas — drugi pasek byłby hałasem. */
@media (min-width: 861px) {
  .ds-cartbar { display: none; }
}

/* ========================================================= KASA ======== */

/* -------------------------------------------------- NAGŁÓWEK KASY ----- */

.ds-cohead {
  border-bottom: 1px solid var(--ds-line);
  background: var(--ds-paper);
}

.ds-cohead__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  max-width: var(--ds-max);
  margin-inline: auto;
  padding: 18px var(--ds-gutter);
}

.ds-cohead__logo { display: inline-flex; flex: none; }
.ds-cohead__logo img { height: 38px; width: auto; display: block; }

.ds-cohead__secure,
.ds-cohead__back {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  font-size: 14px;
  color: var(--ds-muted);
  text-decoration: none;
}

.ds-cohead__secure svg,
.ds-cohead__back svg { width: 16px; height: 16px; flex: none; }
.ds-cohead__secure { color: #1F6B33; }
.ds-cohead__back:hover { color: var(--ds-forest); }

/* Na telefonie zostaje logo i powrót — komunikat o szyfrowaniu powtarza się
   przy przycisku płatności, gdzie pracuje mocniej. */
@media (max-width: 700px) {
  .ds-cohead__secure { display: none; }
  .ds-cohead__back span { display: none; }
}

/* =============================================== EKRAN PO ZAPŁACIE ===== */

/* WooCommerce podaje podziękowanie pod adresem kasy, jako endpoint
   `order-received`, i renderuje je KLASYCZNIE — bez bloków. Stąd inny
   zestaw klas niż wszędzie wyżej. */

.ds-thankyou-page .woocommerce-notice--success,
.ds-thankyou-page .woocommerce-thankyou-order-received {
  padding: 18px 22px;
  margin: 0 0 24px;
  border: 1px solid #BFD8C4;
  border-radius: var(--ds-radius-lg);
  background: #F1F8F2;
  font-size: 17px;
  font-weight: 600;
  color: #1F6B33;
}

.ds-thankyou-page .woocommerce-order-overview {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 14px;
  margin: 0 0 28px;
  padding: 0;
  list-style: none;
}

.ds-thankyou-page .woocommerce-order-overview li {
  padding: 16px 18px;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius);
  background: var(--ds-paper);
  font-size: 13px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--ds-muted);
}

.ds-thankyou-page .woocommerce-order-overview li strong {
  display: block;
  margin-top: 6px;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ds-ink);
}

.ds-thankyou-page .woocommerce-order-details,
.ds-thankyou-page .woocommerce-customer-details {
  padding: clamp(20px, 2.4vw, 28px);
  margin: 0 0 20px;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
}

.ds-thankyou-page .woocommerce-order h2,
.ds-thankyou-page .woocommerce-column__title {
  font-family: var(--ds-display);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -.02em;
  margin: 0 0 16px;
  color: var(--ds-ink);
}

.ds-thankyou-page .woocommerce-table--order-details { width: 100%; border-collapse: collapse; }

.ds-thankyou-page .woocommerce-table--order-details th,
.ds-thankyou-page .woocommerce-table--order-details td {
  padding: 12px 0;
  border-bottom: 1px solid var(--ds-line);
  text-align: left;
  font-size: 15px;
}

.ds-thankyou-page .woocommerce-table--order-details tfoot th { font-weight: 700; color: var(--ds-ink); }

/* Podziękowanie to jedna kolumna — reguły siatki kasy nie mają tu czego układać. */
.ds-thankyou-page .wc-block-checkout,
.ds-thankyou-page .woocommerce { display: block; }

/* ------------------------------------------------------------ POMOC ---- */

.ds-cohelp {
  margin-top: clamp(28px, 4vw, 44px);
  padding-top: clamp(20px, 3vw, 28px);
  border-top: 1px solid var(--ds-line);
  text-align: center;
}

.ds-cohelp__lead {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 600;
  color: var(--ds-ink);
}

.ds-cohelp__links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 22px;
  margin: 0;
  font-size: 14px;
}

.ds-cohelp__links a { color: var(--ds-muted); text-decoration: none; }
.ds-cohelp__links a:hover { color: var(--ds-forest); text-decoration: underline; }

/* ----------------------------------------------------- STOPKA KASY ----- */

.ds-cofooter {
  border-top: 1px solid var(--ds-line);
  background: var(--ds-paper);
}

.ds-cofooter__inner {
  max-width: var(--ds-max);
  margin-inline: auto;
  padding: 22px var(--ds-gutter);
  text-align: center;
}

.ds-cofooter__links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px 20px;
  margin: 0 0 8px;
  font-size: 13.5px;
}

.ds-cofooter__links a { color: var(--ds-muted); text-decoration: none; }
.ds-cofooter__links a:hover { color: var(--ds-forest); }

.ds-cofooter__legal { margin: 0; font-size: 12.5px; color: var(--ds-muted); }

/* ====================================================== KOSZYK ========= */

/* Wzór: koszyk topsexshop.pl. Lista pozycji i półka „Dobierz do zamówienia"
   po lewej, przyklejone podsumowanie z wyborem przewoźnika po prawej.
   Klasyczny szablon Woo owija wszystko w `.woocommerce` — to on jest siatką. */

/* Moduły gapli-smart-cart malują przyciski `var(--gapli-sc-color) !important`.
   Kolor marki podajemy przez ich własne zmienne — bez wojny na !important. */
.ds-cart-page,
.ds-checkout-page {
  --gapli-sc-color: var(--ds-forest);
  --gapli-sc-color-hover: var(--ds-forest-deep);
  --gapli-sc-success: #1F6B33;
  --gapli-sc-radius: 14px;
}

.ds-cart-page {
  --ds-side-w: 360px;
  /* WooCommerce 10+ maluje pola własnymi zmiennymi w regułach o wyższej
     specyficzności niż nasze klasy — podanie mu zmiennych jest czystsze niż
     przebijanie każdej reguły z osobna. */
  --wc-form-border-color: var(--ds-line);
  --wc-form-border-radius: 12px;
}

.ds-cart-page .ds-shell .woocommerce:has(> .woocommerce-cart-form) {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--ds-side-w);
  gap: clamp(20px, 2.6vw, 32px);
  align-items: start;
}

/* Arkusz Woo dla motywów blokowych (woocommerce-blocktheme.css) ogranicza
   klasyczny `.woocommerce` do 1000 px — siatka ma mieć szerokość powłoki. */
.ds-cart-page .ds-shell .woocommerce,
.ds-checkout-page .ds-shell .woocommerce { max-width: none; }

.ds-cart-page .woocommerce > * { min-width: 0; }
.ds-cart-page .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.ds-cart-page .woocommerce-notices-wrapper:empty { display: none; }
.ds-cart-page .woocommerce-cart-form { grid-column: 1; }

.ds-cart-page .cart-collaterals {
  grid-column: 2;
  position: sticky;
  /* Nagłówek sklepu ma dwa pasy i zostaje przyklejony — podsumowanie musi
     zaczynać się pod nim, nie za nim. */
  top: calc(var(--ds-header-total) + 16px);
  width: auto;
  float: none;
}

/* Woo ustawia `.cart-collaterals .cart_totals` na float i 48% szerokości. */
.ds-cart-page .cart-collaterals .cart_totals,
.ds-cart-page .cart-collaterals .cross-sells { width: 100%; float: none; }

/* ---------------------------------------------------- LISTA POZYCJI --- */

.ds-cart-list {
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
  overflow: hidden;
}

.ds-cart-cols,
.ds-cart-item {
  display: grid;
  grid-template-columns: 80px minmax(0, 1fr) 116px 92px 32px;
  gap: 14px;
  align-items: center;
}

.ds-cart-cols {
  padding: 14px 22px;
  border-bottom: 1px solid var(--ds-line);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ds-muted);
}

.ds-cart-cols__product { grid-column: 1 / 3; }
.ds-cart-cols__qty { text-align: center; }
.ds-cart-cols__sum { text-align: right; }

.ds-cart-item {
  padding: 18px 22px;
  border-bottom: 1px solid var(--ds-line);
}

.ds-cart-item:last-of-type { border-bottom: 0; }

.ds-ci-thumb a, .ds-ci-thumb { display: block; }

/* Arkusz Woo dla motywów blokowych daje miniaturze 117 px selektorem
   `.woocommerce-page .woocommerce-cart-form .product-thumbnail a img`
   (3 klasy + 2 elementy) — zdjęcie wychodziło z kolumny na nazwę produktu.
   Stąd cztery klasy w łańcuchu i rozmiar w zmiennej, którą zmieniają media. */
.ds-cart-page .woocommerce-cart-form .ds-cart-item .ds-ci-thumb img {
  display: block;
  width: var(--ds-thumb, 80px);
  height: var(--ds-thumb, 80px);
  max-width: none;
  object-fit: contain;
  border-radius: 12px;
  background: #fff;
}

.ds-ci-info { display: flex; flex-direction: column; gap: 6px; min-width: 0; }

.ds-ci-name,
.ds-ci-name a {
  font-family: var(--ds-body);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--ds-ink);
  text-decoration: none;
}

.ds-ci-name a:hover { color: var(--ds-forest); }

.ds-ci-info dl.variation {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 10px;
  margin: 0;
  font-size: 13px;
  color: var(--ds-muted);
}

.ds-ci-info dl.variation dd,
.ds-ci-info dl.variation p { margin: 0; }

.ds-ci-unit { font-size: 13.5px; color: var(--ds-muted); }
.ds-ci-unit-suffix { opacity: .8; }

/* Stepper ilości */
.ds-ci-qty { display: flex; justify-content: center; }

.ds-cart-page .ds-ci-qty .quantity {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  border: 1.5px solid var(--ds-line);
  border-radius: 999px;
  background: var(--ds-paper);
}

.ds-cart-page .ds-ci-qty .quantity .qty {
  width: 40px;
  padding: 6px 0;
  border: 0;
  background: transparent;
  font-family: var(--ds-body);
  font-size: 15px;
  font-weight: 700;
  text-align: center;
  color: var(--ds-ink);
  -moz-appearance: textfield;
  appearance: textfield;
}

.ds-cart-page .ds-ci-qty .quantity .qty::-webkit-outer-spin-button,
.ds-cart-page .ds-ci-qty .quantity .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ds-cart-page .ds-ci-qty .quantity .qty:focus { outline: none; box-shadow: none; }

.ds-qty-btn {
  display: inline-grid;
  place-items: center;
  width: 32px;
  height: 32px;
  flex: none;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  font-size: 18px;
  line-height: 1;
  color: var(--ds-ink);
  cursor: pointer;
  transition: background .16s ease;
}

.ds-qty-btn:hover { background: var(--ds-moss); color: var(--ds-forest); }
.ds-qty-btn:disabled { opacity: .3; cursor: not-allowed; background: transparent; }

.ds-ci-sum {
  font-size: 17px;
  font-weight: 700;
  text-align: right;
  white-space: nowrap;
  color: var(--ds-ink);
}

.ds-ci-remove { display: flex; justify-content: flex-end; }

.ds-cart-page .ds-cart-item a.remove {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  font-size: 21px;
  line-height: 1;
  color: var(--ds-muted) !important; /* Woo maluje „×" na czerwono z !important. */
  text-decoration: none;
  transition: background .16s ease, color .16s ease;
}

.ds-cart-page .ds-cart-item a.remove:hover {
  background: var(--ds-moss);
  color: var(--ds-terracotta) !important;
}

/* Wiersz akcji: kupon zostaje; przycisk aktualizacji chowa się, gdy działa JS
   (skrypt sam wysyła formularz po zmianie ilości). */
.ds-cart-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  padding: 16px 22px;
  border-top: 1px solid var(--ds-line);
}

.ds-js .ds-cart-update { display: none; }
.ds-js .ds-cart-actions:not(:has(.ds-cart-coupon)) { display: none; }

.ds-cart-coupon { display: flex; gap: 8px; flex: 1; min-width: 220px; }

.ds-cart-page .ds-cart-coupon .input-text {
  flex: 1;
  min-height: 44px;
  padding: 10px 16px;
  border: 1.5px solid var(--ds-line);
  border-radius: 999px;
  background: var(--ds-paper);
  font-family: var(--ds-body);
  font-size: 14px;
}

.ds-cart-page .ds-cart-coupon .input-text:focus {
  border-color: var(--ds-forest);
  box-shadow: 0 0 0 3px var(--ds-moss);
  outline: none;
}

.ds-cart-page .ds-btn-ghost,
.ds-cart-page .ds-cart-update {
  min-height: 44px;
  padding: 10px 20px;
  border: 1.5px solid var(--ds-forest);
  border-radius: 999px;
  background: transparent;
  font-family: var(--ds-body);
  font-size: 14px;
  font-weight: 700;
  color: var(--ds-forest);
  cursor: pointer;
}

.ds-cart-page .ds-btn-ghost:hover { background: var(--ds-forest); color: #fff; }

/* Stan przeliczania koszyka po zmianie ilości */
.woocommerce-cart-form.is-updating { position: relative; pointer-events: none; }
.woocommerce-cart-form.is-updating .ds-cart-list { opacity: .55; transition: opacity .2s ease; }

.woocommerce-cart-form.is-updating::after {
  content: "";
  position: absolute;
  top: 22px;
  left: 50%;
  width: 26px;
  height: 26px;
  margin-left: -13px;
  border: 2px solid var(--ds-line);
  border-top-color: var(--ds-forest);
  border-radius: 50%;
  animation: ds-spin .7s linear infinite;
  z-index: 3;
}

@keyframes ds-spin { to { transform: rotate(360deg); } }

/* ------------------------------------- DOBIERZ DO ZAMÓWIENIA (GAPLI) --- */

/* Półka `gapli-smart-cart` pod listą. Karta z plakietką „Pomoże osiągnąć
   darmową dostawę" to najmocniejsza dźwignia średniej wartości koszyka, jaką
   ma topsexshop — wtyczka przychodzi ze stylami pod inny motyw. */
.ds-cart-page .gapli-sc-cart-upsell { margin-top: 28px; }

.ds-cart-page .gapli-sc-cart-upsell > h3 {
  margin: 0 0 14px;
  font-family: var(--ds-display);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -.02em;
  color: var(--ds-ink);
}

.ds-cart-page .gapli-sc-upsell-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 14px;
}

.ds-cart-page .gapli-sc-upsell-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  height: 100%;
  padding: 14px;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
  box-shadow: none;
}

/* Zdjęcia z hurtowni są na białym tle i w różnych proporcjach — `contain`
   zamiast `cover`, inaczej produkt bywał ucięty do połowy. */
.ds-cart-page .gapli-sc-upsell-card img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  border-radius: 12px;
  background: #fff;
}

.ds-cart-page .gapli-sc-upsell-info { display: flex; flex-direction: column; gap: 6px; flex: 1; }

.ds-cart-page .gapli-sc-upsell-info h4 {
  margin: 0;
  font-family: var(--ds-body);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--ds-ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ds-cart-page .gapli-sc-upsell-price,
.ds-cart-page .gapli-sc-upsell-price .amount { font-size: 16px; font-weight: 700; color: var(--ds-forest); }

.ds-cart-page .gapli-sc-badge-fs {
  align-self: flex-start;
  padding: 4px 9px;
  border: 1px solid #BFD8C4;
  border-radius: 999px;
  background: #F1F8F2;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.3;
  color: #1F6B33;
}

.ds-cart-page .gapli-sc-add-upsell {
  width: 100%;
  margin-top: auto;
  min-height: 44px;
  padding: 10px 16px;
  border: 0;
  border-radius: 999px;
  background: var(--ds-forest);
  font-family: var(--ds-body);
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  cursor: pointer;
}

.ds-cart-page .gapli-sc-add-upsell:hover { background: var(--ds-forest-deep); }

/* ========================================== PODSUMOWANIE I ZAMÓWIENIE === */

.ds-summary,
.ds-co-side__inner {
  padding: clamp(20px, 2.4vw, 26px);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
  box-shadow: var(--ds-shadow);
}

.ds-summary__title,
.ds-co-side__title {
  margin: 0 0 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--ds-line);
  font-family: var(--ds-body);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ds-forest);
}

.ds-summary__rows { display: flex; flex-direction: column; gap: 10px; }
.ds-summary__rows:empty { display: none; }
.ds-summary__tax:not(:empty) { margin-top: 10px; }

.ds-sum-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  font-size: 15px;
}

.ds-sum-label { display: flex; flex-direction: column; gap: 2px; color: var(--ds-muted); }
.ds-sum-note { font-size: 12.5px; color: var(--ds-muted); opacity: .85; }
.ds-sum-value { font-weight: 700; text-align: right; white-space: nowrap; color: var(--ds-ink); }
.ds-sum-discount, .ds-sum-discount .amount { color: #1F6B33; }

.ds-summary__shipping {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--ds-line);
}

.ds-summary__subtitle {
  margin: 0 0 12px;
  font-family: var(--ds-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ds-muted);
}

.ds-summary__hint { margin: 10px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--ds-muted); }

.ds-sum-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--ds-line);
}

.ds-sum-total__label { font-size: 16px; font-weight: 700; color: var(--ds-ink); }

.ds-sum-total__value {
  font-family: var(--ds-display);
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -.02em;
  text-align: right;
  color: var(--ds-ink);
}

.ds-sum-total__value small,
.ds-sum-total__value .includes_tax {
  display: block;
  margin-top: 2px;
  font-family: var(--ds-body);
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--ds-muted);
}

.ds-cart-page .wc-proceed-to-checkout { padding: 0; margin-top: 18px; }

.ds-cart-page .wc-proceed-to-checkout a.checkout-button,
.ds-checkout-page .ds-co-payment-card #place_order {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 58px;
  margin: 0;
  padding: 17px 26px;
  border: 0;
  border-radius: 999px;
  background: var(--ds-forest);
  color: #fff;
  font-family: var(--ds-body);
  font-size: 17px;
  font-weight: 700;
  letter-spacing: .01em;
  text-align: center;
  text-decoration: none;
  float: none;
  cursor: pointer;
  transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
}

.ds-cart-page .wc-proceed-to-checkout a.checkout-button:hover,
.ds-checkout-page .ds-co-payment-card #place_order:hover {
  background: var(--ds-forest-deep);
  transform: translateY(-1px);
  box-shadow: 0 12px 30px rgba(46, 74, 59, .28);
}

.ds-cart-page .wc-proceed-to-checkout a.checkout-button:focus-visible,
.ds-checkout-page .ds-co-payment-card #place_order:focus-visible {
  outline: 3px solid var(--ds-sand-deep);
  outline-offset: 3px;
}

/* Gwarancje pod przyciskiem */
.ds-summary-assurances {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 18px 0 0;
  padding: 16px 0 0;
  border-top: 1px solid var(--ds-line);
  list-style: none;
}

.ds-summary-assurances li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  line-height: 1.4;
  color: var(--ds-muted);
}

.ds-summary-assurances svg { width: 17px; height: 17px; flex: none; color: var(--ds-forest); }

/* ------------------------------------------------- METODY DOSTAWY ----- */

/* WooCommerce celuje w te elementy selektorem z identyfikatorem
   (`.woocommerce ul#shipping_method li label { display: inline }`), więc
   reguły na samych klasach przegrywają — stąd `ul#shipping_method` w łańcuchu. */
ul#shipping_method.ds-ship__list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

ul#shipping_method.ds-ship__list li.ds-ship__opt {
  position: relative;
  display: block;
  margin: 0;
  padding: 0;
  line-height: inherit;
  list-style: none;
}

ul#shipping_method.ds-ship__list li.ds-ship__opt > input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  opacity: 0;
  pointer-events: none;
}

ul#shipping_method.ds-ship__list li.ds-ship__opt > label.ds-ship__label {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
  padding: 13px 15px;
  border: 1.5px solid var(--ds-line);
  border-radius: 14px;
  background: var(--ds-paper);
  cursor: pointer;
  float: none;
  transition: border-color .16s ease, background .16s ease;
}

ul#shipping_method.ds-ship__list li.ds-ship__opt > label.ds-ship__label:hover { border-color: #B9C9BD; }

ul#shipping_method.ds-ship__list li.ds-ship__opt > input:checked + label.ds-ship__label {
  border-color: var(--ds-forest);
  background: var(--ds-moss);
}

ul#shipping_method.ds-ship__list li.ds-ship__opt > input:focus-visible + label.ds-ship__label {
  box-shadow: 0 0 0 3px var(--ds-moss);
  border-color: var(--ds-forest);
}

.ds-ship__radio {
  position: relative;
  width: 19px;
  height: 19px;
  flex: none;
  border: 2px solid #C8D3CA;
  border-radius: 50%;
  background: var(--ds-paper);
}

.ds-ship__opt > input:checked + .ds-ship__label .ds-ship__radio { border-color: var(--ds-forest); }

.ds-ship__opt > input:checked + .ds-ship__label .ds-ship__radio::after {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--ds-forest);
}

.ds-ship__text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.ds-ship__name { font-size: 15px; font-weight: 700; line-height: 1.3; color: var(--ds-ink); }
.ds-ship__note { font-size: 12.5px; color: var(--ds-muted); }
.ds-ship__price { font-size: 15px; font-weight: 700; white-space: nowrap; color: var(--ds-ink); }
.ds-ship__price.is-free { color: #1F6B33; }
.ds-ship__empty { margin: 0; font-size: 14px; line-height: 1.6; color: var(--ds-muted); }

/* Wybór paczkomatu (gapli-shipping) wskakuje do wybranego <li>. */
.ds-ship__opt .gapli-point-picker { margin-top: 10px; padding: 0 2px; }

.ds-ship__opt .gapli-point-selected {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-bottom: 8px;
  padding: 10px 12px;
  border: 1px solid #BFD8C4;
  border-radius: 12px;
  background: #F1F8F2;
  font-size: 13.5px;
}

.ds-ship__opt .gapli-point-code,
.ds-ship__opt .gapli-point-hint { font-size: 12.5px; color: var(--ds-muted); line-height: 1.5; }
.ds-ship__opt .gapli-point-hint a { color: var(--ds-forest); }

.ds-ship__opt .gapli-point-picker button,
.ds-ship__opt .gapli-point-picker .button {
  min-height: 40px;
  margin-top: 4px;
  padding: 9px 18px;
  border: 1.5px solid var(--ds-forest);
  border-radius: 999px;
  background: var(--ds-paper);
  font-family: var(--ds-body);
  font-size: 14px;
  font-weight: 700;
  color: var(--ds-forest);
  cursor: pointer;
}

.ds-ship__opt .gapli-point-picker button:hover,
.ds-ship__opt .gapli-point-picker .button:hover { background: var(--ds-forest); color: #fff; }

/* ========================================================== KASA ======= */

.ds-checkout-page {
  --ds-side-w: 384px;
  --wc-form-border-color: var(--ds-line);
  --wc-form-border-radius: 12px;
}

.ds-checkout-page .woocommerce,
.ds-checkout-page form.woocommerce-checkout { display: block; width: 100%; }

.ds-co-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--ds-side-w);
  gap: clamp(20px, 2.6vw, 32px);
  align-items: start;
}

.ds-co-main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ds-co-side { position: sticky; top: 24px; min-width: 0; }

.ds-co-card {
  padding: clamp(20px, 2.4vw, 28px);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
}

.ds-co-card__title {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 18px;
  font-family: var(--ds-display);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -.02em;
  color: var(--ds-ink);
}

.ds-co-step {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  flex: none;
  border-radius: 50%;
  background: var(--ds-forest);
  font-family: var(--ds-body);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0;
  color: #fff;
}

/* Paski „Powracający klient? / Masz kupon?" nad formularzem */
.ds-checkout-page .woocommerce-form-login-toggle,
.ds-checkout-page .woocommerce-form-coupon-toggle { margin-bottom: 14px; }

.ds-checkout-page .woocommerce-form-login-toggle .woocommerce-info,
.ds-checkout-page .woocommerce-form-coupon-toggle .woocommerce-info {
  margin: 0;
  padding: 14px 18px;
  border: 1px solid var(--ds-line);
  border-left: 3px solid var(--ds-forest);
  border-radius: var(--ds-radius);
  background: var(--ds-paper);
  font-size: 14.5px;
  color: var(--ds-muted);
}

.ds-checkout-page .woocommerce-info a { font-weight: 700; color: var(--ds-forest); }

.ds-checkout-page form.woocommerce-form-login,
.ds-checkout-page form.checkout_coupon {
  margin: 0 0 16px;
  padding: 20px;
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background: var(--ds-paper);
}

/* W motywie blokowym Woo rysuje klasyczne komunikaty jako „notice banner"
   (niebieski dla informacji). Paski nad kasą i komunikaty koszyka mają mówić
   kolorami sklepu — błąd zostaje czerwony, bo ma przyciągać wzrok. */
.ds-cart-page .wc-block-components-notice-banner.is-info,
.ds-cart-page .wc-block-components-notice-banner.is-success,
.ds-checkout-page .wc-block-components-notice-banner.is-info,
.ds-checkout-page .wc-block-components-notice-banner.is-success {
  border: 1px solid var(--ds-line);
  border-left: 3px solid var(--ds-forest);
  border-radius: var(--ds-radius);
  background: var(--ds-paper);
  color: var(--ds-ink);
}

.ds-cart-page .wc-block-components-notice-banner.is-info > svg,
.ds-cart-page .wc-block-components-notice-banner.is-success > svg,
.ds-checkout-page .wc-block-components-notice-banner.is-info > svg,
.ds-checkout-page .wc-block-components-notice-banner.is-success > svg { background-color: var(--ds-forest); }

.ds-checkout-page .wc-block-components-notice-banner a { font-weight: 700; color: var(--ds-forest); }
.ds-checkout-page .woocommerce-form-coupon-toggle { margin-bottom: 14px; }
.ds-checkout-page .woocommerce-form-coupon-toggle .wc-block-components-notice-banner { margin: 0; }

/* Komunikaty Woo poprzedza ikona z fontu, którego motyw nie ładuje. */
.ds-cart-page .woocommerce-info::before,
.ds-cart-page .woocommerce-message::before,
.ds-cart-page .woocommerce-error::before,
.ds-checkout-page .woocommerce-info::before,
.ds-checkout-page .woocommerce-message::before,
.ds-checkout-page .woocommerce-error::before { content: none; display: none; }

.ds-cart-page .woocommerce-info,
.ds-cart-page .woocommerce-message,
.ds-checkout-page .woocommerce-info,
.ds-checkout-page .woocommerce-message { padding-left: 18px; }

/* ------------------------------------------------------------ POLA ---- */

.ds-checkout-page .col2-set { display: block; width: 100%; }

.ds-checkout-page .col2-set .col-1,
.ds-checkout-page .col2-set .col-2 { width: 100%; max-width: none; float: none; padding: 0; }

/* „Dane rozliczeniowe" dublowało tytuł karty kroku 1. */
.ds-checkout-page .woocommerce-billing-fields > h3 { display: none; }

.ds-checkout-page .woocommerce-billing-fields__field-wrapper,
.ds-checkout-page .woocommerce-shipping-fields__field-wrapper {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 16px;
}

.ds-checkout-page .woocommerce form .form-row,
.ds-checkout-page form.checkout .form-row {
  width: auto;
  margin: 0;
  padding: 0;
  float: none;
}

.ds-checkout-page .form-row-wide,
.ds-checkout-page #billing_address_1_field,
.ds-checkout-page #billing_address_2_field,
.ds-checkout-page #billing_country_field,
.ds-checkout-page #shipping_address_1_field,
.ds-checkout-page #shipping_address_2_field,
.ds-checkout-page #shipping_country_field { grid-column: 1 / -1; }

/* Woo oznacza kod, miasto, telefon i e-mail jako `form-row-wide` — każde
   w osobnym wierszu, formularz ciągnął się w nieskończoność. Pary. */
.ds-checkout-page #billing_email_field,
.ds-checkout-page #billing_phone_field,
.ds-checkout-page #billing_postcode_field,
.ds-checkout-page #billing_city_field,
.ds-checkout-page #shipping_postcode_field,
.ds-checkout-page #shipping_city_field { grid-column: auto; }

/* Kontakt na górze: e-mail i telefon w pierwszym wierszu (patrz
   `woocommerce_checkout_fields` w inc/checkout.php). Kolejność ustawia też
   `order` w siatce, bo skrypt Woo `address-i18n` po zmianie kraju przestawia
   wiersze adresu i zostawiał telefon na samym końcu mimo priorytetu 6. */
.ds-checkout-page #billing_email_field { order: -2; }
.ds-checkout-page #billing_phone_field { order: -1; }

/* Pola ukryte przez gapli-smart-cart nie mogą zajmować komórki siatki. */
.ds-checkout-page .gapli-sc-hidden-field { display: none; }

.ds-checkout-page form.checkout .form-row label {
  display: block;
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--ds-ink);
}

.ds-checkout-page form.checkout .form-row label .required { color: var(--ds-terracotta); text-decoration: none; }
.ds-checkout-page form.checkout .form-row label .optional { font-weight: 500; color: var(--ds-muted); }

.ds-checkout-page form.checkout .form-row .input-text,
.ds-checkout-page form.checkout .form-row select,
.ds-checkout-page form.checkout .form-row textarea,
.ds-checkout-page form.checkout .select2-container .select2-selection--single {
  width: 100%;
  min-height: 50px;
  padding: 12px 15px;
  border: 1.5px solid var(--ds-line);
  border-radius: 12px;
  background: var(--ds-paper);
  font-family: var(--ds-body);
  font-size: 16px; /* 16 px: iOS nie przybliża strony przy wejściu w pole. */
  color: var(--ds-ink);
  transition: border-color .16s ease, box-shadow .16s ease;
}

.ds-checkout-page form.checkout .select2-container .select2-selection--single .select2-selection__rendered {
  padding: 0;
  line-height: 24px;
  color: var(--ds-ink);
}

.ds-checkout-page form.checkout .select2-container .select2-selection--single .select2-selection__arrow { top: 12px; right: 10px; }

.ds-checkout-page form.checkout .form-row .input-text:focus,
.ds-checkout-page form.checkout .form-row select:focus,
.ds-checkout-page form.checkout .form-row textarea:focus {
  border-color: var(--ds-forest);
  box-shadow: 0 0 0 3px var(--ds-moss);
  outline: none;
}

.ds-checkout-page form.checkout .form-row textarea { min-height: 92px; resize: vertical; }
.ds-checkout-page form.checkout .form-row .description { margin-top: 5px; font-size: 12.5px; color: var(--ds-muted); }

/* Pole z błędem musi być widać na polu, nie tylko w zdaniu pod nim. */
.ds-checkout-page form.checkout .form-row.woocommerce-invalid .input-text,
.ds-checkout-page form.checkout .form-row.woocommerce-invalid select { border-color: #B3261E; }

/* Uwagi do zamówienia */
.ds-checkout-page .woocommerce-additional-fields {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--ds-line);
}

.ds-checkout-page .woocommerce-additional-fields h3 {
  margin: 0 0 12px;
  font-family: var(--ds-body);
  font-size: 14px;
  font-weight: 700;
  color: var(--ds-ink);
}

/* „Utworzyć konto?", „Wysłać na inny adres?" */
.ds-checkout-page .woocommerce-account-fields,
.ds-checkout-page .woocommerce-shipping-fields { margin-top: 16px; }

.ds-checkout-page .woocommerce-shipping-fields > h3 {
  margin: 0;
  padding-top: 16px;
  border-top: 1px solid var(--ds-line);
  font-family: var(--ds-body);
  font-size: 15px;
  font-weight: 600;
}

.ds-checkout-page .woocommerce-shipping-fields__field-wrapper { margin-top: 14px; }

.ds-checkout-page form.checkout label.checkbox,
.ds-checkout-page form.checkout .woocommerce-form__label-for-checkbox {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  font-size: 14.5px;
  font-weight: 500;
  line-height: 1.5;
  color: var(--ds-ink);
  cursor: pointer;
}

.ds-checkout-page form.checkout input[type="checkbox"] {
  width: 18px;
  height: 18px;
  flex: none;
  margin: 2px 0 0;
  accent-color: var(--ds-forest);
  cursor: pointer;
}

/* --------------------------------------------------------- PŁATNOŚĆ --- */

.ds-co-payment-card #payment {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.ds-co-payment-card #payment ul.payment_methods {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 0 0 4px;
  padding: 0;
  border: 0;
  list-style: none;
}

.ds-co-payment-card #payment ul.payment_methods li { margin: 0; }

.ds-co-payment-card #payment ul.payment_methods li > label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 15.5px;
  font-weight: 700;
  color: var(--ds-ink);
  cursor: pointer;
}

.ds-co-payment-card #payment ul.payment_methods li > input[type="radio"] {
  width: 18px;
  height: 18px;
  margin: 0 8px 0 0;
  vertical-align: middle;
  accent-color: var(--ds-forest);
}

.ds-co-payment-card #payment div.payment_box {
  margin: 12px 0 0;
  padding: 16px;
  border: 1px solid var(--ds-line);
  border-radius: 14px;
  background: var(--ds-linen);
  font-size: 14px;
  line-height: 1.6;
  color: var(--ds-muted);
}

.ds-co-payment-card #payment div.payment_box::before { display: none; }

/* Blok finalizacji: dodatek do zamówienia → zgody → przycisk → gwarancje.
   WooCommerce wstawia order bump tuż nad przyciskiem — rozdzielałby wtedy zgodę
   na regulamin od „Kupuję i płacę" dokładnie w chwili decyzji. */
.ds-co-payment-card #payment .place-order {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 18px 0 0;
  padding: 0;
}

.ds-co-payment-card .gapli-sc-order-bump { order: -1; }
.ds-co-payment-card .gapli-cr-consent-row { order: 0; }
.ds-co-payment-card .woocommerce-terms-and-conditions-wrapper { order: 1; }
.ds-co-payment-card #place_order { order: 2; }
.ds-co-payment-card .ds-co-assurances { order: 3; }

.ds-checkout-page .woocommerce-privacy-policy-text p,
.ds-checkout-page .woocommerce-terms-and-conditions-wrapper p {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--ds-muted);
}

.ds-checkout-page .woocommerce-privacy-policy-text a,
.ds-checkout-page .woocommerce-terms-and-conditions-wrapper a { color: var(--ds-forest); text-decoration: underline; }

.ds-checkout-page .woocommerce-terms-and-conditions-wrapper .form-row { margin-top: 10px; }

/* Zgoda na przypomnienia (gapli-cart-recovery) — wtyczka daje szare tło. */
.ds-checkout-page .gapli-cr-consent-row {
  margin: 0;
  padding: 12px 14px;
  border: 1px solid var(--ds-line);
  border-radius: 12px;
  background: var(--ds-linen);
}

.ds-checkout-page .gapli-cr-consent-row label,
.ds-checkout-page .gapli-cr-consent-row span { font-size: 13.5px; color: var(--ds-muted); }

/* Order bump (gapli-smart-cart) — spójna karta, emoji w nagłówku zastąpione kropką marki. */
.ds-checkout-page .gapli-sc-order-bump {
  padding: 16px;
  border: 1.5px dashed #B9C9BD;
  border-radius: 14px;
  background: var(--ds-moss);
}

.ds-checkout-page .gapli-sc-ob-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  padding: 0;
  background: transparent;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ds-forest);
}

.ds-checkout-page .gapli-sc-ob-header > span:first-child {
  width: 8px;
  height: 8px;
  flex: none;
  border-radius: 50%;
  background: var(--ds-forest);
  font-size: 0;
}

.ds-checkout-page .gapli-sc-ob-content {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
}

.ds-checkout-page .gapli-sc-ob-image { width: 64px; height: 64px; object-fit: cover; border-radius: 12px; background: var(--ds-paper); }
.ds-checkout-page .gapli-sc-ob-info h4 { margin: 0 0 4px; font-family: var(--ds-body); font-size: 14.5px; font-weight: 600; line-height: 1.35; color: var(--ds-ink); }
.ds-checkout-page .gapli-sc-ob-price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin: 0; font-size: 14px; }
.ds-checkout-page .gapli-sc-ob-price del { color: var(--ds-muted); }
.ds-checkout-page .gapli-sc-ob-price ins { font-weight: 700; color: var(--ds-forest); text-decoration: none; }

.ds-checkout-page .gapli-sc-ob-discount {
  padding: 1px 7px;
  border-radius: 999px;
  background: var(--ds-terracotta);
  font-size: 11.5px;
  font-weight: 700;
  color: #fff;
}

.ds-checkout-page .gapli-sc-ob-checkbox {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 14.5px;
  font-weight: 700;
  color: var(--ds-ink);
  cursor: pointer;
}

.ds-checkout-page .gapli-sc-ob-checkbox input { width: 18px; height: 18px; accent-color: var(--ds-forest); }

.ds-co-assurances {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 10px 20px;
  margin: 0;
  padding-top: 14px;
}

/* ----------------------------------------- PODSUMOWANIE KASY (PRAWA) --- */

.ds-order__items {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 0 0 18px;
  padding: 0;
  list-style: none;
}

.ds-order__item {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
}

.ds-order__thumb { position: relative; width: 56px; height: 56px; }

.ds-order__thumb img {
  display: block;
  width: 56px;
  height: 56px;
  object-fit: contain;
  border-radius: 10px;
  background: #fff;
}

.ds-order__qty {
  position: absolute;
  top: -7px;
  right: -7px;
  display: grid;
  place-items: center;
  min-width: 21px;
  height: 21px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--ds-forest);
  font-size: 11.5px;
  font-weight: 700;
  color: #fff;
}

.ds-order__info { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ds-order__name { font-size: 14px; font-weight: 600; line-height: 1.35; color: var(--ds-ink); }
.ds-order__info dl.variation { display: flex; flex-wrap: wrap; gap: 2px 8px; margin: 0; font-size: 12px; color: var(--ds-muted); }
.ds-order__info dl.variation dd, .ds-order__info dl.variation p { margin: 0; }
.ds-order__price { font-size: 14.5px; font-weight: 700; white-space: nowrap; color: var(--ds-ink); }

.ds-order__totals {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 16px;
  border-top: 1px solid var(--ds-line);
}

.ds-order__totals .ds-sum-total { margin-top: 8px; }

/* Na wąskim ekranie przycisk „Pokaż N pozycji" — patrz assets/js/checkout.js. */
.ds-order-toggle { display: none; }

/* ------------------------------------------------------ DYSKRECJA ------ */

.ds-discretion {
  margin: 0 0 18px;
  padding: clamp(18px, 2.4vw, 24px);
  border: 1px solid var(--ds-line);
  border-radius: var(--ds-radius-lg);
  background:
    radial-gradient(120% 140% at 0% 0%, rgba(46, 74, 59, .07), transparent 58%),
    var(--ds-paper);
}

.ds-discretion__head { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 16px; }

.ds-discretion__shield {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  flex: none;
  border-radius: 12px;
  background: var(--ds-moss);
  color: var(--ds-forest);
}

.ds-discretion__shield svg { width: 22px; height: 22px; }

.ds-discretion__title {
  margin: 0 0 3px;
  font-family: var(--ds-display);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -.02em;
  color: var(--ds-ink);
}

.ds-discretion__lead { margin: 0; font-size: 14.5px; line-height: 1.5; color: var(--ds-muted); }

.ds-discretion__list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ds-discretion__list li {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 13px 15px;
  border: 1px solid var(--ds-line);
  border-radius: 14px;
  background: var(--ds-linen);
}

.ds-discretion__list strong {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 700;
  color: var(--ds-ink);
}

.ds-discretion__list strong svg { width: 17px; height: 17px; flex: none; color: var(--ds-forest); }
.ds-discretion__list span { font-size: 13px; line-height: 1.5; color: var(--ds-muted); }

/* ========================================================= RWD ========= */

@media (max-width: 1100px) {
  .ds-cart-page, .ds-checkout-page { --ds-side-w: 330px; }
  .ds-cart-cols, .ds-cart-item { grid-template-columns: 72px minmax(0, 1fr) 112px 88px 32px; gap: 12px; }
  .ds-cart-item { --ds-thumb: 72px; }
}

@media (max-width: 860px) {
  .ds-cart-page .ds-shell .woocommerce:has(> .woocommerce-cart-form),
  .ds-co-grid { grid-template-columns: minmax(0, 1fr); }

  .ds-cart-page .cart-collaterals { grid-column: 1; position: static; }
  .ds-co-side { position: static; }

  /* Na telefonie podsumowanie idzie NAD formularz kasy, a lista pozycji jest
     zwinięta: kwota do zapłaty ma być widoczna bez przewijania całej kasy.
     W koszyku odwrotnie — tam sumę trzyma pasek przy krawędzi. */
  .ds-co-side { order: -1; }
  .ds-co-side__inner .ds-co-side__title { margin-bottom: 10px; padding-bottom: 12px; }

  .ds-order-toggle {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 0 0 14px;
    border: 0;
    background: none;
    font-family: var(--ds-body);
    font-size: 14px;
    font-weight: 700;
    color: var(--ds-forest);
    cursor: pointer;
  }

  .ds-order-toggle::after {
    content: "";
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translate(-2px, -2px);
    transition: transform .2s ease;
  }

  .ds-co-side__inner.is-open .ds-order-toggle::after { transform: rotate(-135deg) translate(-2px, -2px); }
  .ds-co-side__inner .ds-order__items { display: none; }
  .ds-co-side__inner.is-open .ds-order__items { display: flex; }

  .ds-discretion__list { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .ds-assurance { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* Pasek przy krawędzi zasłania ostatni wiersz — oddajemy mu miejsce. */
  .ds-cart-page .ds-shell { padding-bottom: 104px; }
}

@media (max-width: 600px) {
  .ds-cart-head__top { flex-direction: column; align-items: flex-start; gap: 14px; }

  .ds-steps { font-size: 13px; gap: 6px; }
  .ds-steps__item + .ds-steps__item::before { width: 12px; margin-right: 2px; }
  .ds-steps__dot { width: 21px; height: 21px; }

  /* Trzy pełne etykiety nie mieszczą się w 375 px — zostaje podpis kroku,
     na którym klient stoi; pozostałe czyta z kropek. */
  .ds-steps__item:not(.is-current) .ds-steps__label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  .ds-cart-cols { display: none; }

  /* Pozycja: miniatura po lewej, nazwa i „×" w pierwszym rzędzie, ilość i kwota
     w drugim. Trzecia kolumna dopasowuje się do szerszego z dwojga — przy
     sztywnej szerokości kwota wychodziła poza kartę i traciła „zł". */
  .ds-cart-item {
    grid-template-columns: 72px minmax(0, 1fr) auto;
    grid-template-areas:
      "thumb info remove"
      "thumb qty  sum";
    gap: 10px 12px;
    padding: 16px;
  }

  .ds-ci-thumb { grid-area: thumb; align-self: start; }
  .ds-cart-item { --ds-thumb: 72px; }
  .ds-ci-info { grid-area: info; }
  .ds-ci-qty { grid-area: qty; justify-content: flex-start; }
  .ds-ci-sum { grid-area: sum; align-self: center; }
  .ds-ci-remove { grid-area: remove; align-self: start; }
  .ds-ci-name, .ds-ci-name a { font-size: 15px; }

  .ds-cart-actions { padding: 14px 16px; }

  .ds-checkout-page .woocommerce-billing-fields__field-wrapper,
  .ds-checkout-page .woocommerce-shipping-fields__field-wrapper { grid-template-columns: minmax(0, 1fr); }

  .ds-co-card { padding: 18px 16px; }
  .ds-co-card__title { font-size: 20px; }
  .ds-summary, .ds-co-side__inner { padding: 18px 16px; }
  .ds-sum-total__value { font-size: 26px; }

  .ds-assurance { grid-template-columns: minmax(0, 1fr); }
  .ds-assurance__item { padding: 13px 15px; }

  /* Baner dyskrecji na telefonie: same tytuły punktów. Pełne zdania
     spychały formularz i kwotę o cały ekran w dół. */
  .ds-discretion__lead { font-size: 13.5px; }
  .ds-discretion__list { gap: 6px; }
  .ds-discretion__list li { padding: 10px 12px; }
  .ds-discretion__list span { display: none; }
}

/* Baner „Kupujesz bezpiecznie": na telefonie zostawiamy treść punktów — sam
   tytuł „Sprzedawca" bez nazwy firmy i NIP-u niczego nie mówi. Krótszy lead. */
@media (max-width: 900px) {
  .ds-discretion__lead { display: none; }
  .ds-discretion__list span { display: block; font-size: 12.5px; line-height: 1.4; }
}
