/* ============================================================
   COMPONENTE — cautare, hero, categorii, card de produs, incredere
   ============================================================ */

/* ---------- CAUTARE ----------
   Mare, intentionat. Masurat pe piata: Dedeman 903x56px, eMAG 766px latime.
   La un catalog de mii de produse, cautarea e functia principala, nu o iconita. */

.site-search {
  position: relative;
  display: flex;
  width: 100%;
}

.site-search__field {
  width: 100%;
  height: 44px;
  padding: 0 48px 0 var(--s-4);
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  background: var(--c-white);
  color: var(--c-ink);
  font: inherit;
}

.site-search__field::placeholder {
  color: var(--c-muted);
}

.site-search__submit {
  position: absolute;
  inset-block: 4px;
  right: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--c-action);
  color: var(--c-white);
  transition: background var(--t);
}

.site-search__submit:hover {
  background: var(--c-action-dark);
}

/* ---------- HERO ----------
   Slide-urile stau UNUL LANGA ALTUL intr-un rand care se deruleaza cu
   scroll-snap. Varianta cu slide-uri suprapuse absolut, aprinse pe rand din
   `opacity`, produce trei defecte structurale: gol alb cat timp niciunul nu e
   aprins, suprapunere in tranzitie, si decupare cand inaltimea nu corespunde
   raportului sursei. Aici niciunul nu e posibil. */

.hero-wrap {
  position: relative;
}

.hero {
  /* `width: 100%` explicit: cu `aspect-ratio` si `max-height` pe acelasi
     element, browserul poate deriva latimea din inaltime si banda iese ingusta
     in loc sa umple ecranul. */
  width: 100%;
  display: flex;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  /* Raportul 3:1, si sursele se genereaza tot la 3:1 (2400x800). Cand cele doua
     coincid, nu ramane banda alba si nu se taie nimic.
     De ce 3:1 si nu mai inalt: bannerul e full-bleed, deci latimea lui e cat
     ecranul. La 2,24:1 pe un ecran de 1900px ar avea 850px inaltime — mai mult
     decat tot ecranul vizibil. Magazinele din Romania stau intre 2,8:1
     (Dedeman) si 4,9:1 (lascule.ro); 3:1 e la mijloc si e si raportul lui
     Brico Depot. */
  aspect-ratio: 3 / 1;
}

.hero::-webkit-scrollbar {
  display: none;
}

.hero__slide {
  display: block;
  flex: 0 0 100%;
  scroll-snap-align: center;
  scroll-snap-stop: always;
}

.hero__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}


@media (max-width: 860px) {
  .hero {
    /* Pe telefon 3:1 ar da o dunga de ~130px, ilizibila, deci se decupeaza.
       2:1 in loc de 4:3 taie mai putin din lateral. */
    aspect-ratio: 2 / 1;
  }

  /* Fara imagine dedicata de telefon, se decupeaza din bannerul lat si se
     pastreaza PARTEA DREAPTA, unde stau mesajul si butonul. Produsul din stanga
     e decor; textul e informatia. E o solutie de avarie — corect e sa existe
     imagine de telefon, care se pune pe fiecare banner in admin. */
  .hero__img {
    object-position: 92% center;
  }

  /* Cu imagine dedicata, nu se mai decupeaza nimic: raportul containerului il
     urmeaza pe al ei (4:3), iar imaginea se vede intreaga. */
  .hero:has( .hero__slide--has-mobile ) {
    aspect-ratio: 4 / 3;
  }

  .hero__slide--has-mobile .hero__img {
    object-position: center;
  }

}

/* ---------- CATEGORII ----------
   Carduri ORIZONTALE: imagine mica la stanga, nume si numar la dreapta. Asa
   face Dedeman. La catalog mare incap mai multe categorii deasupra pliului
   decat cu carduri verticale cu poza mare. */

.cat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s-3);
}

.cat-card {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3);
  border: 1px solid var(--c-line);
  border-radius: var(--radius);
  background: var(--c-surface);
  transition: border-color var(--t), box-shadow var(--t);
}

.cat-card:hover {
  border-color: var(--c-line-strong);
  box-shadow: var(--shadow-md);
  color: inherit;
}

.cat-card__media {
  flex: 0 0 56px;
  height: 56px;
  display: grid;
  place-items: center;
  border-radius: var(--radius-sm);
  background: var(--c-page);
  overflow: hidden;
}

.cat-card__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 6px;
}

.cat-card__text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.cat-card__name {
  font-weight: 600;
  line-height: 1.3;
}

.cat-card__count {
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

@media (max-width: 860px) {
  .cat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* Pe doua coloane la 390px raman ~170px de card. Cu iconita de 56px, numele
     lung se rupea pe trei randuri si cardurile ieseau inegale. */
  .cat-card {
    gap: var(--s-2);
    padding: var(--s-2);
  }

  .cat-card__media {
    flex-basis: 40px;
    height: 40px;
  }

  .cat-card__name {
    font-size: var(--wp--preset--font-size--sm, 0.8125rem);
  }
}

/* ---------- CARD DE PRODUS ---------- */

.product-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s-3);
}

.product-card {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--c-line);
  border-radius: var(--radius);
  background: var(--c-surface);
  overflow: hidden;
  transition: border-color var(--t), box-shadow var(--t);
}

.product-card:hover {
  border-color: var(--c-line-strong);
  box-shadow: var(--shadow-md);
}

.product-card__link {
  display: block;
}

.product-card__media {
  position: relative;
  display: block;
  background: var(--c-page);
}

/* `contain`, nu `cover`. Catalogul are si fotografii cu spatiu alb, si
   fotografii incadrate strans; `cover` le-ar reteza produsul si marca.
   Padding proportional, ca ambele feluri sa aiba acelasi aer optic. */
.product-card__media img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  padding: clamp(10px, 6%, 20px);
}

/* Bulina de reducere. `.badge` e a noastra, din cardul de catalog; `.onsale` o
   randeaza WooCommerce pe pagina produsului. Acelasi tratament pentru amandoua,
   ca reducerea sa arate la fel peste tot si ca sa nu se scrie de doua ori.
   `z-index`: pe pagina produsului galeria e `position: relative` si vine dupa
   bulina in DOM, deci fara el ar acoperi-o. */
.badge,
.single-product .onsale {
  position: absolute;
  top: var(--s-2);
  left: var(--s-2);
  z-index: 2;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.badge--sale,
.single-product .onsale {
  background: var(--c-action);
  color: var(--c-white);
}

.product-card__title {
  margin: var(--s-3) var(--s-3) 0;
  font-size: var(--wp--preset--font-size--base, 0.9375rem);
  font-weight: 600;
  line-height: 1.35;
}

/* Linia de specificatii — specific romanesc. La scule decizia se ia pe
   specificatii, iar linia asta scuteste un click. */
.product-card__specs {
  margin: var(--s-1) var(--s-3) 0;
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

/* `margin-top: auto` tine butoanele aliniate pe tot randul, indiferent de cate
   randuri ocupa titlul. */
.product-card__foot {
  margin-top: auto;
  padding: var(--s-3);
}

.product-card__price {
  margin: 0;
  font-size: var(--wp--preset--font-size--md, 1.0625rem);
  font-weight: 700;
}

.product-card__price del {
  margin-right: var(--s-2);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
  font-weight: 400;
}

.product-card__price ins {
  text-decoration: none;
}

/* Mentiunea TVA: in Romania multi cumparatori sunt firme, iar ambiguitatea la
   TVA e problema reala. Apare pe magazinele romanesti, nu pe cele straine. */
.product-card__vat {
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--xs, 0.75rem);
  font-weight: 400;
}

.product-card__stock {
  margin: var(--s-1) 0 var(--s-3);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

.product-card__stock--ok {
  color: var(--c-ok);
}

.product-card__button,
.product-card .button {
  width: 100%;
}

/* Linkul "Vezi cosul" pe care WooCommerce il adauga sub buton dupa adaugare
   creste randul cu ~39px, deci TOT randul de carduri sare la fiecare click.
   Confirmarea ramane in textul butonului si in bulina din antet, care e mereu
   in campul vizual pentru ca antetul e lipit. */
.product-card .added_to_cart {
  display: none;
}

@media (max-width: 860px) {
  .product-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* ---------- BANDA DE INCREDERE ----------
   Cu iconuri. Varianta fara iconuri arata a dunga de subsol si e unul dintre
   lucrurile care fac un magazin sa para vechi. */

.trust {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s-3);
  margin-top: var(--s-7);
  padding: var(--s-4);
  border: 1px solid var(--c-line);
  border-radius: var(--radius);
  background: var(--c-surface);
}

.trust__item {
  display: flex;
  align-items: center;
  gap: var(--s-3);
}

.trust__icon {
  flex: 0 0 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: var(--c-page);
  color: var(--c-action);
}

.trust__text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.trust__title {
  font-size: var(--wp--preset--font-size--base, 0.9375rem);
  font-weight: 600;
}

.trust__sub {
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

@media (max-width: 860px) {
  .trust {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.empty {
  padding: var(--s-6);
  border: 1px dashed var(--c-line-strong);
  border-radius: var(--radius);
  color: var(--c-muted);
  text-align: center;
}

/* ---------- CATALOG SI PAGINA DE PRODUS ----------
   Fara override-uri de template: se stilizeaza markup-ul pe care il scoate
   WooCommerce. Singurul template suprascris e cardul de produs, pentru ca
   structura lui difera (specificatii, TVA, stoc) si aia nu se poate din CSS. */

.shop {
  padding-block: var(--s-6);
}

.woocommerce-breadcrumb {
  margin-bottom: var(--s-4);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

/* Linkurile din firul Ariadnei vin de la WooCommerce cu un gri de 4,16:1 — sub
   pragul AA de 4,5:1. Selectorul include `.woocommerce` pentru ca regula lor e
   `.woocommerce .woocommerce-breadcrumb a`; cu un selector mai scurt, a lor
   castiga si culoarea ramane neschimbata. */
.woocommerce .woocommerce-breadcrumb a,
.woocommerce-breadcrumb a {
  color: var(--c-muted);
}

.woocommerce .woocommerce-breadcrumb a:hover,
.woocommerce-breadcrumb a:hover {
  color: var(--c-action);
}

.woocommerce-products-header__title,
.shop .page-title,
.product_title {
  margin-bottom: var(--s-4);
  font-size: var(--wp--preset--font-size--xl, 1.5rem);
  font-weight: 500;
}

/* Bara de sortare si numarul de rezultate, pe acelasi rand. */
.woocommerce-result-count,
.woocommerce-ordering {
  display: inline-block;
  margin-bottom: var(--s-4);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

.woocommerce-ordering {
  float: right;
}

.woocommerce-ordering select {
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm);
  background: var(--c-surface);
  font: inherit;
}

/* Grila din catalog e aceeasi cu cea de pe prima pagina. WooCommerce randeaza
   `ul.products`; ii dam acelasi tratament ca `.product-grid`. */
.woocommerce ul.products {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s-3);
  margin: 0;
  clear: both;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
  content: none;
}

.woocommerce ul.products li.product {
  width: auto;
  margin: 0;
  float: none;
}

.woocommerce-pagination {
  margin-top: var(--s-6);
}

.woocommerce-pagination ul {
  display: flex;
  justify-content: center;
  gap: var(--s-2);
  border: 0;
}

.woocommerce-pagination li {
  border: 0;
}

.woocommerce-pagination a,
.woocommerce-pagination span {
  display: grid;
  place-items: center;
  min-width: 38px;
  height: 38px;
  padding-inline: var(--s-2);
  border: 1px solid var(--c-line);
  border-radius: var(--radius-sm);
  background: var(--c-surface);
}

.woocommerce-pagination .current {
  border-color: var(--c-action);
  background: var(--c-action);
  color: var(--c-white);
}

/* ---------- PAGINA DE PRODUS ---------- */

/* Galeria ia 55%, rezumatul 45%: fotografia produsului e argumentul principal
   la scule, iar o coloana de 50% o lasa prea mica pe ecrane late.

   ZONE NUMITE, nu plasare automata: lista de copii ai lui `div.product` o
   controleaza WooCommerce, nu noi, si creste. La produsele reduse isi baga
   `span.onsale` ca PRIM copil, iar plasarea automata ii dadea prima celula —
   galeria sarea in coloana 2 si rezumatul cadea pe randul urmator. Cu zone
   numite, cele doua coloane sunt fixate: orice copil nou aterizeaza pe un rand
   implicit dedesubt, in loc sa mute layout-ul. */
.single-product div.product {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  grid-template-areas: "gallery summary";
  gap: var(--s-6);
  align-items: start;
  margin-bottom: 0;
}

.single-product .woocommerce-product-gallery,
.single-product .summary {
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--radius);
  background: var(--c-surface);
  margin: 0;
  width: auto;
  float: none;
}

.single-product .woocommerce-product-gallery {
  grid-area: gallery;
}

.single-product .summary {
  grid-area: summary;
}

/* WooCommerce fixeaza latimea galeriei din inline style; fara asta ramane
   ingusta si sub ea apare un gol mare. */
.single-product .woocommerce-product-gallery__wrapper {
  width: 100%;
  margin: 0;
}

.single-product .woocommerce-product-gallery img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
}

.single-product .product_title {
  margin-bottom: var(--s-3);
  font-size: var(--wp--preset--font-size--xxl, 1.875rem);
  font-weight: 600;
}

.single-product .summary .price,
.single-product .summary .price ins {
  color: var(--c-ink);
  font-size: var(--wp--preset--font-size--xxl, 1.875rem);
  font-weight: 700;
  text-decoration: none;
}

.single-product .summary .price del {
  margin-right: var(--s-2);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--md, 1.0625rem);
  font-weight: 400;
}

.single-vat {
  margin: calc(var(--s-1) * -1) 0 var(--s-4);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

.single-product .woocommerce-product-details__short-description {
  margin-bottom: var(--s-4);
  color: var(--c-muted);
}

/* Cantitatea si butonul pe acelasi rand, butonul lat. Butonul implicit
   WooCommerce e mov si nu tine de paleta temei. */
.single-product form.cart {
  display: flex;
  gap: var(--s-3);
  align-items: stretch;
  margin-bottom: var(--s-4);
}

.single-product form.cart .quantity input.qty {
  width: 72px;
  height: 100%;
  min-height: 46px;
  padding: 0 var(--s-2);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--radius-sm);
  background: var(--c-surface);
  font: inherit;
  text-align: center;
}

.single-product form.cart .single_add_to_cart_button {
  flex: 1;
  min-height: 46px;
  border-radius: var(--radius-sm);
  background: var(--c-action);
  color: var(--c-white);
  font-weight: 600;
}

.single-product form.cart .single_add_to_cart_button:hover {
  background: var(--c-action-dark);
}

.single-product .product_meta {
  padding-top: var(--s-4);
  border-top: 1px solid var(--c-line);
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
}

.single-product .stock.in-stock {
  color: var(--c-ok);
  font-weight: 600;
}

/* ---------- FILE (tab-uri) ---------- */

.single-product .woocommerce-tabs,
.single-product .related,
.single-product .upsells {
  grid-column: 1 / -1;
  margin-top: var(--s-7);
}

.single-product .woocommerce-tabs ul.tabs {
  display: flex;
  gap: var(--s-1);
  margin: 0 0 -1px;
  padding: 0;
  border: 0;
}

.single-product .woocommerce-tabs ul.tabs::before {
  content: none;
}

.single-product .woocommerce-tabs ul.tabs li {
  margin: 0;
  padding: 0;
  border: 1px solid var(--c-line);
  border-bottom-color: transparent;
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  background: transparent;
}

.single-product .woocommerce-tabs ul.tabs li::before,
.single-product .woocommerce-tabs ul.tabs li::after {
  content: none;
}

.single-product .woocommerce-tabs ul.tabs li a {
  display: block;
  padding: var(--s-3) var(--s-4);
  color: var(--c-muted);
  font-weight: 600;
}

.single-product .woocommerce-tabs ul.tabs li.active {
  background: var(--c-surface);
}

.single-product .woocommerce-tabs ul.tabs li.active a {
  color: var(--c-ink);
}

.single-product .woocommerce-tabs .panel {
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: 0 var(--radius) var(--radius) var(--radius);
  background: var(--c-surface);
}

.single-product .woocommerce-tabs .panel > h2:first-child {
  /* Titlul repeta numele filei active. */
  display: none;
}

.single-product .shop_attributes th {
  width: 30%;
  color: var(--c-muted);
  font-weight: 500;
  text-align: left;
}

.single-product .related > h2,
.single-product .upsells > h2 {
  margin-bottom: var(--s-4);
  font-size: var(--wp--preset--font-size--xl, 1.5rem);
  font-weight: 500;
}

@media (max-width: 860px) {
  .woocommerce ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .single-product div.product {
    grid-template-columns: 1fr;
    grid-template-areas:
      "gallery"
      "summary";
  }

  .single-product .woocommerce-tabs ul.tabs {
    flex-wrap: wrap;
  }
}

/* Sagetile si bulinele caruselului. Injectate din JS: fara ele caruselul tot
   functioneaza (scroll, swipe, taste), deci n-are rost sa existe in HTML. */
.hero__dots {
  position: absolute;
  bottom: var(--s-3);
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  gap: var(--s-2);
  z-index: 3;
}

.hero__dot {
  width: 10px;
  height: 10px;
  padding: 0;
  border: 2px solid var(--c-white);
  border-radius: 50%;
  background: transparent;
}

.hero__dot.is-current {
  background: var(--c-white);
}

.hero__arrow {
  position: absolute;
  top: 50%;
  translate: 0 -50%;
  z-index: 3;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: rgb(0 0 0 / 42%);
  color: var(--c-white);
  font-size: 1.5rem;
  line-height: 1;
  opacity: 0;
  transition: opacity var(--t), background var(--t);
}

.hero-wrap:hover .hero__arrow,
.hero__arrow:focus-visible {
  opacity: 1;
}

.hero__arrow:hover {
  background: rgb(0 0 0 / 62%);
}

.hero__arrow--prev { left: var(--s-4); }
.hero__arrow--next { right: var(--s-4); }

@media (max-width: 860px) {
  /* Pe telefon se deruleaza cu degetul; sagetile ar acoperi bannerul. */
  .hero__arrow {
    display: none;
  }
}

/* Meniul de categorii pe mobil. */
@media (max-width: 860px) {
  .navbar__menu.is-open {
    display: flex;
    flex-direction: column;
    gap: 0;
    width: 100%;
    padding-bottom: var(--s-3);
  }
}

@media (max-width: 600px) {
  /* Titlul si linkul "vezi tot" nu incap pe acelasi rand la 390px: titlul se
     rupea pe doua randuri si linkul se lipea de el. */
  .section__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-1);
  }
}

/* ---------- BARA LATERALA DE FILTRE ----------
   Apare doar pe listele de produse. Filtrele raman blocurile native WooCommerce,
   puse ca widget-uri: sunt intretinute de ei, functioneaza cu orice atribut de
   produs si nu trebuie rescrise la fiecare update. */

.shop--sided {
  display: grid;
  grid-template-columns: 250px minmax(0, 1fr);
  gap: var(--s-6);
  align-items: start;
}

.shop__side {
  position: sticky;
  top: calc(var(--s-4) + 90px);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

.shop-widget {
  padding: var(--s-4);
  border: 1px solid var(--c-line);
  border-radius: var(--radius);
  background: var(--c-surface);
}

.shop-widget__title {
  margin: 0 0 var(--s-3);
  font-size: var(--wp--preset--font-size--base, 0.9375rem);
  font-weight: 600;
}

/* Grila coboara la 3 coloane cand exista bara laterala: 4 ar da carduri prea
   inguste in restul de latime. */
.shop--sided .woocommerce ul.products,
.shop--sided ul.products {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 1024px) {
  /* Sub 1024px bara laterala ar lasa sub 500px pentru produse. Filtrele trec
     deasupra listei, unde raman utilizabile. */
  .shop--sided {
    grid-template-columns: 1fr;
  }

  .shop__side {
    position: static;
    flex-direction: row;
    flex-wrap: wrap;
  }

  .shop--sided .woocommerce ul.products,
  .shop--sided ul.products {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 860px) {
  .shop--sided .woocommerce ul.products,
  .shop--sided ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* ---------- WIDGET-URILE DE FILTRARE ----------
   Filtrele sunt widget-urile WooCommerce pentru bucla clasica. Cele moderne,
   pe blocuri, se ascund singure daca pe pagina nu exista un bloc Product
   Collection — iar intr-o tema clasica bucla e PHP, deci nu exista. */

.shop__side ul {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}

.shop__side ul li a {
  color: var(--c-ink);
}

.shop__side ul li a:hover {
  color: var(--c-action);
}

.shop__side .count {
  color: var(--c-muted);
}

.shop__side .current-cat > a {
  font-weight: 600;
  color: var(--c-action);
}

/* Sliderul de pret vine cu mov implicit de la WooCommerce. */
.shop__side .price_slider_wrapper .ui-slider {
  height: 4px;
  margin: var(--s-4) 0 var(--s-5);
  border-radius: 999px;
  background: var(--c-line);
}

.shop__side .ui-slider .ui-slider-range {
  background: var(--c-action);
}

.shop__side .ui-slider .ui-slider-handle {
  width: 16px;
  height: 16px;
  top: -6px;
  margin-left: -8px;
  border: 2px solid var(--c-white);
  border-radius: 50%;
  background: var(--c-action);
  box-shadow: var(--shadow-sm);
}

/* Butonul si suma stau unul sub altul: pe 250px latime se inghesuiau. */
.shop__side .price_slider_amount {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}

.shop__side .price_slider_amount .price_label {
  order: -1;
  color: var(--c-muted);
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
  text-align: left;
}

.shop__side .price_slider_amount .button {
  align-self: flex-start;
}

/* ============================================================
   BAZA WOOCOMMERCE
   ============================================================
   Foile lor de prezentare sunt dezactivate (vezi ectheme_drop_woocommerce_styles
   in functions.php), pentru ca isi scriu regulile cu selectoare care includ
   ID-uri si nicio tema nu le poate suprascrie curat. Documentatia WooCommerce
   recomanda explicit varianta asta pentru teme construite de la zero.
   Costul: tot ce stilizau ei trebuie acoperit aici. Sectiunea de mai jos e
   exact acel cost, si e platit o singura data. */

/* Lupa de pe galerie. Fara CSS-ul lor ramanea in coltul din stanga sus. */
.woocommerce-product-gallery {
  position: relative;
}

.woocommerce-product-gallery__trigger {
  position: absolute;
  top: var(--s-3);
  right: var(--s-3);
  z-index: 2;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--c-surface);
  box-shadow: var(--shadow-sm);
  font-size: 0;
  text-indent: 0;
}

.woocommerce-product-gallery__trigger::after {
  content: "⌕";
  font-size: 1.5rem;
  line-height: 1;
  color: var(--c-ink);
}

.woocommerce-product-gallery__trigger img,
.woocommerce-product-gallery__trigger svg {
  display: none;
}

/* Tabelul de specificatii din fila „Informatii suplimentare". */
.woocommerce table.shop_attributes {
  width: 100%;
  border-collapse: collapse;
}

.woocommerce table.shop_attributes tr:not(:last-child) th,
.woocommerce table.shop_attributes tr:not(:last-child) td {
  border-bottom: 1px solid var(--c-line);
}

.woocommerce table.shop_attributes th,
.woocommerce table.shop_attributes td {
  padding: var(--s-3) 0;
  vertical-align: top;
}

.woocommerce table.shop_attributes td p {
  margin: 0;
}

/* Notificarile: adaugat in cos, cupon aplicat, erori de formular. */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.wc-block-components-notice-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  flex-wrap: wrap;
  margin: 0 0 var(--s-4);
  padding: var(--s-3) var(--s-4);
  border: 1px solid var(--c-line);
  border-left: 4px solid var(--c-muted);
  border-radius: var(--radius-sm);
  background: var(--c-surface);
  list-style: none;
}

.woocommerce-message {
  border-left-color: var(--c-ok);
}

.woocommerce-error {
  border-left-color: var(--c-action);
}

.woocommerce-error li {
  list-style: none;
}

/* Formulare: cont, comanda clasica, cupoane. */
.woocommerce form .form-row {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  margin-bottom: var(--s-4);
}

.woocommerce form .form-row label {
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
  font-weight: 600;
}

.woocommerce form .form-row .required {
  color: var(--c-action);
  text-decoration: none;
}

.woocommerce input[type="text"],
.woocommerce input[type="email"],
.woocommerce input[type="tel"],
.woocommerce input[type="password"],
.woocommerce input[type="number"],
.woocommerce input[type="search"],
.woocommerce select,
.woocommerce textarea {
  width: 100%;
  min-height: 42px;
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--radius-sm);
  background: var(--c-surface);
  color: var(--c-ink);
  font: inherit;
}

.woocommerce textarea {
  min-height: 120px;
  padding-top: var(--s-3);
}

/* Contul meu: navigatia laterala. */
.woocommerce-account .woocommerce-MyAccount-navigation ul {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}

.woocommerce-account .woocommerce-MyAccount-navigation a {
  display: block;
  padding: var(--s-2) var(--s-3);
  border-radius: var(--radius-sm);
}

.woocommerce-account .woocommerce-MyAccount-navigation .is-active a {
  background: var(--c-surface);
  font-weight: 600;
}

/* Tabelele WooCommerce (comenzi, adrese). */
.woocommerce table.shop_table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--c-line);
  border-radius: var(--radius);
  background: var(--c-surface);
  overflow: hidden;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
  padding: var(--s-3);
  border-bottom: 1px solid var(--c-line);
  text-align: left;
}

.woocommerce table.shop_table th {
  font-size: var(--wp--preset--font-size--sm, 0.8125rem);
  font-weight: 600;
}

/* Stelele de recenzie: fara CSS-ul lor raman niste cifre. */
.woocommerce .star-rating {
  position: relative;
  display: inline-block;
  width: 5.4em;
  height: 1.2em;
  overflow: hidden;
  font-size: 0.9em;
  line-height: 1.2;
  color: var(--c-action);
}

.woocommerce .star-rating::before {
  content: "★★★★★";
  position: absolute;
  left: 0;
  color: var(--c-line-strong);
}

.woocommerce .star-rating span {
  position: absolute;
  left: 0;
  top: 0;
  overflow: hidden;
  padding-top: 1.5em;
}

.woocommerce .star-rating span::before {
  content: "★★★★★";
  position: absolute;
  left: 0;
  top: 0;
}

.woocommerce .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}

/* Filtrele ca <details>: pe desktop butonul dispare si continutul e mereu
   vizibil; pe telefon ramane un buton care le strange. */
.shop__side {
  border: 0;
}

.shop__side-toggle {
  display: none;
}

.shop__side-body {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

@media (max-width: 1024px) {
  .shop__side-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--s-3) var(--s-4);
    border: 1px solid var(--c-line);
    border-radius: var(--radius);
    background: var(--c-surface);
    font-weight: 600;
    cursor: pointer;
    list-style: none;
  }

  .shop__side-toggle::-webkit-details-marker {
    display: none;
  }

  .shop__side-toggle::after {
    content: "+";
    font-size: 1.25rem;
    line-height: 1;
  }

  .shop__side[open] .shop__side-toggle::after {
    content: "−";
  }

  .shop__side-body {
    margin-top: var(--s-3);
  }

  .shop__side {
    flex-direction: column;
  }
}

/* Mentiunea TVA nu se mai rupe de pret pe randul urmator. */
.product-card__price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0 var(--s-1);
}

.product-card__vat {
  white-space: nowrap;
}

/* Sliderul de pret ramanea turtit intr-o bara laterala ingusta. */
.shop__side .price_slider_wrapper,
.shop__side .price_slider {
  width: 100%;
}
