/* =========================================================================
   SEMBRI — ARCHIWA PRODUKTÓW (kategoria, sklep, wyniki wyszukiwania)
   ========================================================================= */

.shop-hero{padding-block:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--color-border)}
.shop-hero__title{font-size:var(--fs-h1);margin-bottom:var(--sp-3)}
.shop-hero__desc{color:var(--color-muted);max-width:70ch;font-size:.9375rem}
.shop-hero__desc p:last-child{margin-bottom:0}
/* Długi opis SEO zwijamy — treść jest w DOM od razu (Google ją widzi), ale nie zajmuje ekranu */
.shop-hero__desc.is-clamped{
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.shop-hero__more{
  margin-top:var(--sp-3);font-size:var(--fs-xs);letter-spacing:var(--ls-mid);text-transform:uppercase;
  border-bottom:1px solid currentColor;padding-bottom:2px;min-height:auto;
}
.shop-hero__count{margin-top:var(--sp-4);font-size:var(--fs-xs);letter-spacing:var(--ls-mid);text-transform:uppercase;color:var(--color-muted)}

/* Podkategorie jako pigułki */
.subcats{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-5)}
.subcats a{
  display:inline-flex;align-items:center;min-height:38px;padding:.35rem 1rem;
  border:1px solid var(--color-border);border-radius:999px;
  font-size:var(--fs-sm);text-decoration:none;white-space:nowrap;
  transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease);
}
.subcats a:hover,.subcats a[aria-current=page]{border-color:var(--color-text);background:var(--color-text);color:var(--color-text-inverse)}

/* ---------- UKŁAD: FILTRY + SIATKA ---------- */
.shop-layout{display:grid;gap:var(--sp-6);grid-template-columns:1fr;padding-block:var(--sp-6) var(--sp-9)}
@media (min-width:1024px){.shop-layout{grid-template-columns:250px 1fr;gap:var(--sp-8)}}

.shop-toolbar{
  display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
  padding-block:var(--sp-4);margin-bottom:var(--sp-5);
  border-bottom:1px solid var(--color-border);flex-wrap:wrap;
  position:sticky;top:var(--header-h);background:var(--color-bg);z-index:5;
}
.shop-toolbar__left{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.shop-toolbar__count{font-size:var(--fs-xs);color:var(--color-muted);letter-spacing:var(--ls-mid)}
.filter-trigger{
  display:inline-flex;align-items:center;gap:.5rem;min-height:var(--tap);padding:.5rem 1rem;
  border:1px solid var(--color-border);border-radius:var(--radius);
  font-size:var(--fs-sm);letter-spacing:var(--ls-mid);
}
.filter-trigger svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.5}
.filter-trigger__badge{background:var(--color-text);color:var(--color-text-inverse);border-radius:999px;min-width:18px;height:18px;display:grid;place-items:center;font-size:10px}
@media (min-width:1024px){.filter-trigger{display:none}}

.orderby-wrap{position:relative;display:inline-flex;align-items:center}
.orderby-wrap select{
  appearance:none;-webkit-appearance:none;padding:.5rem 2.25rem .5rem 1rem;min-height:var(--tap);
  border:1px solid var(--color-border);background:var(--color-surface);
  font-size:var(--fs-sm);border-radius:var(--radius);cursor:pointer;width:auto;
}
.orderby-wrap svg{position:absolute;right:.75rem;width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.6;pointer-events:none}

/* ---------- PANEL FILTRÓW ---------- */
.filters{align-self:start}
@media (max-width:1023px){
  .filters{
    position:fixed;top:0;bottom:0;left:0;z-index:var(--z-drawer);
    width:min(360px,88vw);background:var(--color-surface);box-shadow:var(--shadow-drawer);
    translate:-100% 0;visibility:hidden;display:flex;flex-direction:column;
    transition:translate var(--dur-slow) var(--ease),visibility var(--dur-slow);
  }
  .filters.is-open{translate:0 0;visibility:visible}
  .filters__scroll{overflow-y:auto;flex:1 1 auto;padding:var(--sp-5);overscroll-behavior:contain}
  .filters__head,.filters__foot{display:flex}
}
@media (min-width:1024px){
  .filters{position:sticky;top:calc(var(--header-h) + var(--sp-5))}
  .filters__head,.filters__foot{display:none}
  .filters__scroll{padding:0}
}
.filters__head{
  align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);
  border-bottom:1px solid var(--color-border);flex:0 0 auto;
}
.filters__foot{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--color-border);flex:0 0 auto}
.filters__foot .btn{flex:1 1 auto}

.filter-group{border-bottom:1px solid var(--color-border);padding-block:var(--sp-4)}
.filter-group:first-child{padding-top:0}
.filter-group__btn{
  display:flex;align-items:center;justify-content:space-between;width:100%;
  min-height:var(--tap);font-size:var(--fs-xs);font-weight:600;
  letter-spacing:var(--ls-wide);text-transform:uppercase;text-align:left;
}
.filter-group__btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;transition:rotate var(--dur) var(--ease);flex:0 0 auto}
.filter-group__btn[aria-expanded=true] svg{rotate:180deg}
.filter-group__panel{padding-top:var(--sp-3);display:grid;gap:.15rem}
.filter-group__panel[hidden]{display:none}

.filter-option{
  display:flex;align-items:center;gap:.65rem;min-height:var(--tap);
  font-size:var(--fs-sm);cursor:pointer;margin:0;
}
.filter-option input{
  width:17px;height:17px;flex:0 0 auto;min-height:0;margin:0;padding:0;
  accent-color:var(--color-text);cursor:pointer;
}
.filter-option__count{margin-left:auto;color:var(--color-muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
.filter-option.is-disabled{opacity:.4;pointer-events:none}

/* Drzewko kategorii — podkategorie wcięte pod rodzicem.
   Cienka pionowa linia zamiast samego wcięcia: przy kilkunastu pozycjach
   od razu widać, gdzie kończy się jedna gałąź, a zaczyna następna. */
.filter-option--child{
  padding-left:1.1rem;margin-left:.4rem;
  border-left:1px solid var(--color-border);
  color:var(--color-muted);font-size:var(--fs-sm);
}
.filter-option--lvl2{padding-left:1.6rem}
.filter-option--child input{width:15px;height:15px}

/* Świadomie BEZ ograniczenia wysokości.
   Pierwsza wersja miała max-height z przewijaniem, ale odcięta lista
   wyglądała jak zakończona — dokładnie ten sam błąd, przez który
   na telefonie znikała trzecia kategoria w karuzeli. Ukryta treść jest
   gorsza niż długa kolumna, a dojścia do pozostałych filtrów i tak nic
   nie blokuje: nagłówek „Kategoria” zwija całą grupę jednym kliknięciem. */

/* Rozmiary / wiek — kafelki zamiast checkboxów */
.filter-chips{display:flex;flex-wrap:wrap;gap:.4rem;padding-top:var(--sp-3)}
.filter-chips label{
  margin:0;display:inline-flex;align-items:center;justify-content:center;
  min-width:var(--tap);min-height:38px;padding:.25rem .7rem;
  border:1px solid var(--color-border);border-radius:var(--radius);
  font-size:var(--fs-sm);cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast);
}
.filter-chips input{position:absolute;opacity:0;width:1px;height:1px}
.filter-chips input:checked+span,.filter-chips label:has(input:checked){background:var(--color-text);color:var(--color-text-inverse);border-color:var(--color-text)}
.filter-chips label:has(input:focus-visible){outline:2px solid var(--color-focus);outline-offset:2px}

/* Kolory */
.filter-colors{display:flex;flex-wrap:wrap;gap:.55rem;padding-top:var(--sp-3)}
.filter-colors label{position:relative;margin:0;cursor:pointer;width:var(--tap);height:var(--tap);display:grid;place-items:center}
.filter-colors input{position:absolute;opacity:0;width:1px;height:1px}
.filter-colors .swatch{width:26px;height:26px;box-shadow:0 0 0 1px var(--color-border)}
.filter-colors label:has(input:checked) .swatch{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--color-text)}
.filter-colors label:has(input:focus-visible) .swatch{box-shadow:0 0 0 1px var(--color-surface),0 0 0 3px var(--color-focus)}

/* Zakres ceny */
.filter-price{padding-top:var(--sp-4);display:flex;align-items:center;gap:.5rem}
.filter-price input{min-height:40px;padding:.4rem .6rem;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.filter-price span{color:var(--color-muted)}

/* Aktywne filtry */
.active-filters{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:var(--sp-5)}
.active-filters:empty{display:none}
.active-filter{
  display:inline-flex;align-items:center;gap:.4rem;min-height:34px;padding:.25rem .5rem .25rem .8rem;
  background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;font-size:var(--fs-xs);
}
.active-filter svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}
.active-filter button{display:grid;place-items:center;width:22px;height:22px;border-radius:50%}
.active-filter button:hover{background:var(--color-surface-alt)}
.active-filters__clear{font-size:var(--fs-xs);text-decoration:underline;color:var(--color-muted);align-self:center;min-height:34px}

/* ---------- STANY SIATKI ---------- */
.shop-main{min-width:0}
.shop-main.is-loading{opacity:.4;pointer-events:none;transition:opacity var(--dur-fast)}
.shop-empty{padding-block:var(--sp-9);text-align:center;color:var(--color-muted)}
.shop-empty__title{font-size:var(--fs-h3);color:var(--color-text);margin-bottom:var(--sp-3)}

/* Skeleton — rezerwuje miejsce, zeruje CLS przy AJAX */
.skeleton-card__media{aspect-ratio:var(--ratio-product);background:var(--color-surface-alt);border-radius:var(--radius);animation:pulse 1.4s ease-in-out infinite}
.skeleton-card__line{height:11px;margin-top:.6rem;background:var(--color-surface-alt);border-radius:2px;animation:pulse 1.4s ease-in-out infinite}
.skeleton-card__line--short{width:45%}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}

/* Doładowywanie kolejnych stron */
.load-more{display:flex;justify-content:center;margin-top:var(--sp-8)}

/* Baner kategorii w siatce (breaker edytorski co N produktów) */
.grid-breaker{
  grid-column:1/-1;position:relative;min-height:220px;display:grid;align-items:center;
  border-radius:var(--radius-lg);overflow:hidden;background:var(--color-text);color:#fff;
}
.grid-breaker img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.6}
.grid-breaker__body{position:relative;padding:var(--sp-6);max-width:34ch}
.grid-breaker__title{font-size:var(--fs-h3);margin-bottom:var(--sp-3)}
