.dobre-audio-deal-section {
  max-width: 340px;
  margin: 0 auto 2rem;
}

.dobre-audio-deal-section--in-grid {
  max-width: none;
  margin: 0;
}

.dobre-audio-deal-section--in-grid .dobre-audio-deal-card {
  height: 100%;
  display: flex;
  flex-direction: column;
}

.dobre-audio-deal-section--in-grid .dobre-audio-deal-card__image {
  aspect-ratio: 1 / 1;
}

/* --- Obok statycznego banera głównego (ps_banner) --- */
.dobre-audio-deal-banner-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: 1.5rem;
  margin-bottom: 2rem;
}

@media (min-width: 992px) {
  .dobre-audio-deal-banner-row .ps-specials {
    flex: 3 1 0%;
    min-width: 0;
  }
}

@media (max-width: 991px) {
  .dobre-audio-deal-banner-row .ps-specials {
    flex: 1 1 100%;
  }
}

.dobre-audio-deal-banner-row .ps-specials .module-products.container {
  max-width: none !important;
  padding: 0 !important;
}

/* Podejrzenie: rodzic (.module-products / .module-products__list) może
   mieć własne overflow:hidden z motywu, obcinające nasz scroll na
   .products niezależnie od tego co tam ustawiamy. Wymuszamy visible
   na całej ścieżce rodziców. */
.dobre-audio-deal-banner-row .ps-specials,
.dobre-audio-deal-banner-row .ps-specials .module-products,
.dobre-audio-deal-banner-row .ps-specials .module-products__list {
  overflow: visible !important;
}

/* Kompaktowa wersja kart w tej sekcji (dotyczy obu wariantów niżej —
   siatki na desktopie i przewijanego rzędu na mobile). Bez tego pełne
   karty (stepper ilości, długie tytuły, pełny przycisk) nie mieszczą
   się sensownie w wąskiej kolumnie. */
.dobre-audio-deal-banner-row .ps-specials .product-miniature__quickview-button,
.dobre-audio-deal-banner-row .ps-specials .product-miniature__quickview-touch,
.dobre-audio-deal-banner-row .ps-specials .product-list-review {
  display: none !important;
}

.dobre-audio-deal-banner-row .ps-specials .product-miniature__title {
  font-size: .78rem;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.dobre-audio-deal-banner-row .ps-specials .product-miniature__price {
  font-size: .85rem;
}

.dobre-audio-deal-banner-row .ps-specials .product-miniature__discount-price {
  font-size: .72rem;
}

.dobre-audio-deal-banner-row .ps-specials .product-miniature__add {
  padding: .5rem;
  font-size: .8rem;
}

/* Mobile: jeden przewijany rząd, dotykiem (sprawdzone, bez zmian) */
@media (max-width: 767px) {
  .dobre-audio-deal-banner-row .ps-specials .products {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    gap: .6rem;
    scrollbar-width: none;
  }

  .dobre-audio-deal-banner-row .ps-specials .products::-webkit-scrollbar {
    display: none;
  }

  .dobre-audio-deal-banner-row .ps-specials .products > * {
    flex: 0 0 130px !important;
    width: 130px !important;
    max-width: 130px !important;
  }

  .dobre-audio-deal-banner-row .ps-specials .product-miniature__add-text {
    display: none;
  }

  .dobre-audio-deal-banner-row .ps-specials .quantity-button {
    display: none !important;
  }
}

/* Desktop: dwa rzędy, ten sam sprawdzony mechanizm co pojedynczy rząd
   (flex + własna animacja scrollLeft), tylko powielony na dwa rzędy
   przez JS (Grid zawiódł kilkukrotnie w tym środowisku). */
@media (min-width: 768px) {
  .dobre-audio-deal-two-rows-wrap {
    position: relative;
    display: flex;
    align-items: center;
    gap: .5rem;
  }

  .dobre-audio-deal-rows-inner {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .9rem;
  }

  .dobre-audio-deal-row-track {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    gap: .9rem;
    scrollbar-width: none;
  }

  .dobre-audio-deal-row-track::-webkit-scrollbar {
    display: none;
  }

  .dobre-audio-deal-row-track > * {
    flex: 0 0 210px !important;
    width: 210px !important;
    max-width: 210px !important;
  }

  .dobre-audio-deal-slider-btn {
    position: static;
    flex: 0 0 auto;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid var(--bs-border-color, #dee2e6);
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .9rem;
    color: var(--bs-body-color, #212529);
  }

  .dobre-audio-deal-slider-btn:hover {
    background: var(--bs-tertiary-bg, #f5f5f5);
  }
}

/* Stepper ilości niepotrzebny w tej wąskiej sekcji — chowamy całkowicie,
   zamiast dalej walczyć o zmieszczenie go razem z przyciskiem w linii. */
.dobre-audio-deal-banner-row .ps-specials .quantity-button {
  display: none !important;
}

.dobre-audio-deal-banner-row .ps-specials .product-miniature__actions,
.dobre-audio-deal-banner-row .ps-specials .product-miniature__form {
  display: block !important;
  width: 100% !important;
}

.dobre-audio-deal-banner-row .ps-specials .product-miniature__add {
  width: 100% !important;
}

.dobre-audio-deal-banner-row .ps-banner .container {
  max-width: none !important;
  padding: 0 !important;
  height: 100%;
}

.dobre-audio-deal-banner-row .ps-banner .banner {
  display: block;
  height: 100%;
}

.dobre-audio-deal-banner-row .ps-banner img {
  width: 100%;
  height: auto;
  border-radius: .5rem;
}

.dobre-audio-deal-section--beside-banner {
  flex: 1 1 0% !important;
  max-width: none !important;
  min-width: 0;
  margin: 0 !important;
}

@media (max-width: 991px) {
  .dobre-audio-deal-banner-row {
    flex-wrap: wrap;
  }

  .dobre-audio-deal-section--beside-banner {
    flex: 0 0 320px !important;
    max-width: 320px !important;
  }
}

@media (max-width: 767px) {
  .dobre-audio-deal-section--beside-banner {
    flex: 1 1 100% !important;
    max-width: none !important;
  }
}

.dobre-audio-deal-card {
  position: relative;
  border: 2px solid var(--bs-danger, #dc3545);
  border-radius: .6rem;
  overflow: hidden;
  background: linear-gradient(180deg, #fff 0%, #fff8f8 100%);
  box-shadow: 0 6px 24px rgba(220, 53, 69, .18);
}

.dobre-audio-deal-card__badge {
  position: absolute;
  top: .75rem;
  left: .75rem;
  z-index: 2;
  background: var(--bs-danger, #dc3545);
  color: #fff;
  font-size: .8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: .4rem .8rem;
  border-radius: .3rem;
  box-shadow: 0 2px 8px rgba(220, 53, 69, .4);
}

.dobre-audio-deal-card__image {
  display: block;
  aspect-ratio: 1 / 1;
  overflow: hidden;
}

.dobre-audio-deal-card__image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 1.4rem;
}

.dobre-audio-deal-card__body {
  padding: 1.4rem 1.4rem 1.6rem;
}

.dobre-audio-deal-card__title {
  display: block;
  font-weight: 600;
  color: var(--bs-body-color, #212529);
  margin-bottom: .7rem;
  text-decoration: none;
  line-height: 1.3;
}

.dobre-audio-deal-card__prices {
  display: flex;
  align-items: baseline;
  gap: .6rem;
  margin-bottom: .6rem;
}

.dobre-audio-deal-card__price-after {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--bs-danger, #dc3545);
}

.dobre-audio-deal-card__price-before {
  font-size: .95rem;
  color: var(--bs-secondary-color, #6c757d);
  text-decoration: line-through;
}

.dobre-audio-deal-card__lowest {
  font-size: .75rem;
  color: var(--bs-secondary-color, #6c757d);
  margin-bottom: 1rem;
}

.dobre-audio-deal-card__countdown {
  display: flex;
  gap: .5rem;
  margin-bottom: 1rem;
}

.dobre-audio-deal-card__countdown-item {
  flex: 1;
  text-align: center;
  background: var(--bs-tertiary-bg, #f5f5f5);
  border-radius: .375rem;
  padding: .55rem .25rem;
}

.dobre-audio-deal-card__countdown-item span {
  display: block;
  font-size: 1.1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}

.dobre-audio-deal-card__countdown-item small {
  font-size: .65rem;
  color: var(--bs-secondary-color, #6c757d);
  text-transform: uppercase;
}

.dobre-audio-deal-card__progress {
  position: relative;
  height: 20px;
  border-radius: 10px;
  background: #e9ecef;
  overflow: hidden;
  margin-bottom: .5rem;
  border: 1px solid #dee2e6;
}

.dobre-audio-deal-card__progress-bar {
  height: 100%;
  background: linear-gradient(90deg, #dc3545, #ef4444);
  border-radius: 10px;
  transition: width .4s ease;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: .4rem;
}

.dobre-audio-deal-card__progress-bar span {
  font-size: .68rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
  white-space: nowrap;
}

.dobre-audio-deal-card__progress-bar--low {
  background: linear-gradient(90deg, #991b1b, #dc2626);
  animation: dobre-audio-deal-pulse 1.2s ease-in-out infinite;
}

@keyframes dobre-audio-deal-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .6; }
}

.dobre-audio-deal-card__stock-text {
  font-size: .8rem;
  color: var(--bs-secondary-color, #6c757d);
  margin-bottom: 1rem;
}

.dobre-audio-deal-card__cta {
  display: block;
  width: 100%;
  text-align: center;
}

/* --- Stan "zakończona" (czas minął lub pula wyprzedana) --- */
.dobre-audio-deal-card--ended {
  border-color: #adb5bd !important;
  background: #f4f4f4 !important;
  box-shadow: none !important;
}

.dobre-audio-deal-card--ended .dobre-audio-deal-card__badge {
  background: #6c757d !important;
  box-shadow: none !important;
}

.dobre-audio-deal-card--ended .dobre-audio-deal-card__image,
.dobre-audio-deal-card--ended .dobre-audio-deal-card__title,
.dobre-audio-deal-card--ended .dobre-audio-deal-card__prices,
.dobre-audio-deal-card--ended .dobre-audio-deal-card__lowest {
  filter: grayscale(1);
  opacity: .65;
}

.dobre-audio-deal-card--ended .dobre-audio-deal-card__progress-bar {
  background: #adb5bd !important;
  animation: none !important;
}

.dobre-audio-deal-card--ended .dobre-audio-deal-card__cta {
  cursor: not-allowed;
  opacity: .7;
}

/* Przycisk "Wszystkie promocje" przeniesiony tutaj z sekcji Oferty
   specjalne (żeby nie zajmował tam osobnej, pustej linii). */
.dobre-audio-deal-moved-promo-link {
  margin-top: .9rem;
}

.dobre-audio-deal-moved-promo-link .btn {
  display: block;
  width: 100%;
  text-align: center;
}
/* =====================================================================
   DOPISAĆ NA KOŃCU modules/dobre_audio_deal/views/css/deal.css
   (wrzesień 2026 — przejście z JS-owego budowania układu na serwerowy,
   patrz komentarz w dobre_audio_deal.php).
   ===================================================================== */

/* Domyślnie (mobile, <768px): pojedynczy rząd widoczny, dwurzędowa
   siatka desktopowa ukryta (nadal jest w DOM od razu przy pierwszym
   renderze — po prostu display:none, więc nic nie "doskakuje" po JS). */
.dobre-audio-deal-desktop-rows {
  display: none;
}

.dobre-audio-deal-single-row {
  display: block;
}

@media (min-width: 768px) {
  /* Od 768px w górę — odwrotnie: pokazujemy dwurzędową siatkę,
     chowamy pojedynczy rząd. .dobre-audio-deal-two-rows-wrap wewnątrz
     .dobre-audio-deal-desktop-rows dalej korzysta z reguł display:flex
     zdefiniowanych wyżej w tym pliku (bez zmian) — tu tylko przełącznik
     widoczności między dwoma wariantami. */
  .dobre-audio-deal-desktop-rows {
    display: flex;
  }

  .dobre-audio-deal-single-row {
    display: none;
  }
}

/* Płynne przewijanie przy kliknięciu strzałek — poprzednio robił to JS
   własną funkcją easing (smoothScrollBy), teraz wystarczy naga CSS
   scroll-behavior, bo jedyne czego JS teraz używa to track.scrollBy(). */
.dobre-audio-deal-row-track {
  scroll-behavior: smooth;
}

/* Gdy "Okazja dnia" jest wyłączona (Configuration::deleteByName w BO) —
   w wierszu zostaje sama sekcja "Oferty specjalne", bez karty obok.
   .ps-specials ma natywnie flex:3 (żeby zostawić miejsce na kartę) —
   tutaj to nadpisujemy, żeby zajęła cały wiersz zamiast zostać wąska. */
.dobre-audio-deal-banner-row--specials-only .ps-specials {
  flex: 1 1 100%;
}
.dobre-audio-deal-single-row .products {
  overscroll-behavior-x: contain;
}

.dobre-audio-deal-single-row {
  overflow-x: hidden;
}
.dobre-audio-deal-single-row .products,
.dobre-audio-deal-row-track {
  will-change: scroll-position;
}
.dobre-audio-deal-banner-row .ps-specials .module-products__list .products {
  flex-wrap: nowrap;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
}
.dobre-audio-deal-banner-row .ps-specials {
  min-width: 0;
}
@media (min-width: 768px) {
  .dobre-audio-deal-banner-row .ps-specials .module-products__list {
    display: none;
  }
}