/* ========================================================================== */
/*                                  LAYOUT                                    */
/* ========================================================================== */

main {
  margin-top: var(--header-height);
  min-height: 100vh;

  font-family: onest, sans-serif;
  color: var(--main-font-color);
}


/* Hover ефекти тільки для пристроїв з мишкою */
@media (hover: hover) and (pointer: fine) {
  .product-card:hover .product-card-title { /* твої hover стилі */ }
  .product-card:hover .slider-arrow { /* якщо є */ }
  /* і все інше hover */
}

/* Для мобілок (touch) — щоб не було "перший тап = hover" */
@media (hover: none) and (pointer: coarse) {
  .product-card:hover { /* на всякий випадок */
    /* можна лишити пустим */
  }
}

/* ========================================================================== */
/*                               PRODUCTS GRID                                */
/* ========================================================================== */


.product-card .slider-track { touch-action: pan-y; }     /* свайп по слайдеру */
.favorite-btn, .save-btn { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }

.products {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(16vw, 1fr));
  gap: 1vw;
  padding: 0 2vw;
}

.product-card {
  position: relative;
  overflow: hidden;

  display: flex;
  flex-direction: column;

  padding-bottom: 2vw;
  background: #fff;
  box-shadow: 0 0.2vw 1.4vw rgba(0, 0, 0, 0.08);
  cursor: pointer;
}



.product-card:hover {
  transition: all 0.3s ease;
}

/* ========================================================================== */
/*                                  SLIDER                                    */
/* ========================================================================== */

.slider,
.slider * {
  user-select: none;
  -webkit-user-drag: none;
}

.slider {
  position: relative;
  overflow: hidden;
  width: 100%;
  aspect-ratio: 2 / 3;
  transition: all 0.3s ease;
}

.product-card:hover .slider {
  scale: 0.99;
}

.slider-track {
  display: flex;
  transition: transform 0.3s ease;
}

.slide {
  min-width: 100%;
  height: max-content;
}

.slide img {
  width: 100%;
  aspect-ratio: 2 / 3;
  object-fit: contain;
  display: block;
}

/* ------------------------------ Slider arrows ----------------------------- */

.slider-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);

  display: flex;
  align-items: center;
  justify-content: center;

  background: rgba(0, 0, 0, 0.30);
  color: var(--main-white-font-color-active);

  border-radius: 50%;
  cursor: pointer;
  user-select: none;

  opacity: 0;
  transition: opacity 0.3s;
}

/* показувати стрілки ТІЛЬКИ на пристроях з мишкою */
@media (hover: hover) and (pointer: fine) {
  .product-card:hover .slider-arrow {
    opacity: 1;
  }
}

/* на touch — ніколи не показувати */
@media (hover: none) and (pointer: coarse) {
  .slider-arrow {
    display: none !important;
  }
}


.slider-arrow.left  { left: 0.5vw; }
.slider-arrow.right { right: 0.5vw; }

.slider-arrow svg {
  width: 2.5vw;
  height: 2.5vw;
  color: var(--main-white-font-color-active);
  opacity: 1;
  padding: 0.5vw;
}

/* ========================================================================== */
/*                               FAVORITE BUTTON                              */
/* ========================================================================== */

.favorite-btn {
  position: absolute;
  top: 0.8vw;
  right: 0.8vw;
  z-index: 5;

  width: 2.4vw;
  height: 2.4vw;

  display: flex;
  align-items: center;
  justify-content: center;

  border-radius: 50%;
  background: transparent;
  border: none;
  cursor: pointer;

  background-color: #ccc;
}

/* всі іконки — одна над одною */
.favorite-btn .icon-heart {
  position: absolute;
  width: 1.5vw;
  height: 1.5vw;
  transition: 0.25s ease;
}

/* outline видно за замовчуванням */
.heart-outline {
  opacity: 1;
  transform: scale(1);
  color: #000;
}

/* filled прихована */
.heart-filled {
  opacity: 0;
  transform: scale(0.7);
}

/* hover */
.favorite-btn:hover .heart-filled {
  opacity: 1;
  transform: scale(1);
  color: rgb(70, 69, 69);
}

.favorite-btn:hover .heart-outline {
  opacity: 0;
}

/* active (обрано) */
.favorite-btn.active .heart-filled {
  opacity: 1;
  transform: scale(1);
}

.favorite-btn.active .heart-outline {
  opacity: 0;
}

/* active + hover (твоє правило лишив як є) */
.favorite-btn.active:hover .heart-filled {
  color: #000;
}

/* ========================================================================== */
/*                               CARD TEXT / PRICE                            */
/* ========================================================================== */

.product-price-or-title {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 0 0.5vw;
}

.product-card-title {
  font-family: var(--main-font-family);
  text-transform: uppercase;
  color: var(--main-font-color);

  position: relative;
  display: -webkit-box;
  -webkit-box-orient: vertical;

  font-size: 0.8vw;
  font-weight: 400;
  line-height: normal;
  letter-spacing: normal;

  margin: 0.5vw 0 0;
  text-decoration: none;

  overflow: hidden;
  text-overflow: ellipsis;
  -webkit-line-clamp: 1;

  transition: all 0.3s ease;
}

.product-card:hover .product-card-title {
  text-shadow: 0.03em 0 0 currentColor, -0.03em 0 0 currentColor;
}

.price {
  margin-top: 0.5vw;
  font-size: 0.8vw;
  font-weight: 650;
  color: var(--main-font-color);
}

.price--discount {
  color: #e53935; /* червона ціна при знижці */
}

.old-price {
  margin-left: 0.8vw;
  font-size: 0.8vw;
  font-weight: 500;
  color: #888;
  text-decoration: line-through;
}

/* ========================================================================== */
/*                                STOCK LABELS                                */
/* ========================================================================== */

.stock-label {
  display: flex;
  margin-top: 0.5vw;

  font-size: 0.8vw;
  font-weight: 600;
}

.stock-label--low,
.stock-label--out {
  color: #ff5858;
  transition: all 0.3s ease;
}

.product-card:hover .stock-label--low,
.product-card:hover .stock-label--out {
  color: #fd4343;
  text-shadow: 0.01em 0 0 currentColor, -0.01em 0 0 currentColor;
}

/* ========================================================================== */
/*                                NO PRODUCTS                                 */
/* ========================================================================== */

.no-products {
  width: 100%;
  margin: 3vw auto;
  padding: 5vw 2vw;

  text-align: center;
  border: 0.2vw dashed #ccc;
  border-radius: 1.2vw;

  background-color: #f9f9f9;
}

.no-products h2 {
  margin-bottom: 1vw;

  font-size: 2vw;
  font-family: var(--main-font-family);
  color: var(--main-font-color);
}

.no-products p {
  margin-bottom: 2vw;
  color: var(--main-font-color);
}

.no-products .buttons {
  display: flex;
  justify-content: center;
  gap: 1.5vw;
}

.no-products .btn {
  padding: 1vw 2vw;

  background-color: var(--main-font-color);
  color: var(--main-white-font-color-active);

  text-decoration: none;
  border-radius: 0.6vw;

  transition: 0.3s;
}

.no-products .btn:hover {
  background-color: var(--main-font-color-active);
}

/* ========================================================================== */
/*                                   FILTERS                                  */
/* ========================================================================== */

/* ------------------------------- Open button ------------------------------ */

.filter-open-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.6vw;

  padding: 0.7vw 2vw;

  background: var(--main-font-color);
  color: var(--main-white-font-color-active);

  border: none;
  cursor: pointer;

  text-transform: uppercase;
  letter-spacing: 0.1vw;
  font-size: 0.8vw;

  transition: 0.3s ease;
  z-index: 10;
}

.filter-open-btn:hover {
  opacity: 0.8;
}

/* --------------------------------- Overlay -------------------------------- */

.filter-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;

  background: rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(0.4vw);

  opacity: 0;
  visibility: hidden;
  transition: 0.35s ease;
}

.filter-overlay.active {
  opacity: 1;
  visibility: visible;
}

/* --------------------------------- Panel ---------------------------------- */

.filter-panel {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 2100;

  width: 28vw;
  height: 100vh;

  padding: 1.8vw;

  background: #fff;
  box-shadow: -0.2vw 0 2vw rgba(0, 0, 0, 0.1);

  transform: translateX(100%);
  transition: 0.35s ease;

  overflow-y: auto;
}

.filter-panel.active {
  transform: translateX(0);
}

/* --------------------------------- Header --------------------------------- */

.filter-header {
  display: flex;
  justify-content: space-between;
  align-items: center;

  padding-bottom: 1vw;
  margin-bottom: 1vw;

  border-bottom: 0.1vw solid #eee;
}

.filter-header span {
  font-size: 1.2vw;
  font-weight: 700;
}

.filter-close {
  background: none;
  border: none;
  font-size: 1.8vw;
  cursor: pointer;
}

/* --------------------------------- Blocks --------------------------------- */

.filter-block {
  margin-bottom: 2vw;
}

.filter-title {
  margin-bottom: 1vw;

  text-transform: uppercase;
  font-size: 0.9vw;
  font-weight: 700;
  letter-spacing: 0.1vw;
}

/* ------------------------- Premium select (radio list) --------------------- */

.select-list {
  display: flex;
  flex-direction: column;
  gap: 0.6vw;
}

.select-item {
  display: flex;
  align-items: center;
  gap: 0.8vw;

  padding: 0.8vw 1vw;
  border-radius: 0.5vw;

  cursor: pointer;
  transition: 0.25s ease;
}

.select-item:hover {
  background: #f6f6f6;
}

.select-item input {
  display: none;
}

.select-item .indicator {
  width: 1vw;
  height: 1vw;

  border-radius: 50%;
  border: 0.15vw solid #888;

  transition: 0.25s ease;
  position: relative;
}

.select-item .indicator::after {
  content: "";
  position: absolute;
  inset: 20%;
  border-radius: 50%;

  background: transparent;
  transition: 0.25s ease;
}

.select-item input:checked + .indicator {
  border-color: #000;
}

.select-item input:checked + .indicator::after {
  background: #000;
}

.select-item .text {
  font-size: 0.8vw;
  color: #333;
  transition: 0.25s ease;
}

.select-item input:checked ~ .text {
  font-weight: 600;
  color: #000;
}

.select-item:hover .text {
  color: #000;
}

/* --------------------------------- Sizes ---------------------------------- */

.sizes-container {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7vw;
}

.size-option {
  padding: 0.6vw 1vw;

  border: 0.1vw solid #ccc;
  cursor: pointer;

  text-transform: uppercase;
  font-size: 0.7vw;

  transition: 0.25s ease;
}

.size-option input {
  display: none;
}

/* hover тільки для desktop */
@media (hover: hover) and (pointer: fine) {
  .size-option:hover {
    background: #000;
    color: #fff;
    border-color: #000;
  }
}

.size-option.active {
  background: #000;
  color: #fff;
  border-color: #000;
}


/* ---------------------------------- Price --------------------------------- */

.price-inputs {
  display: flex;
  gap: 1vw;
}

.price-inputs input {
  width: 100%;
  padding: 0.7vw;

  border: 0.1vw solid #ccc;
  font-size: 0.8vw;

  -webkit-appearance: none;
}

/* прибирає стрілки */
.price-inputs input[type="number"]::-webkit-outer-spin-button,
.price-inputs input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.price-inputs input[type="number"] {
  -moz-appearance: textfield;
}

/* -------------------------------- Buttons --------------------------------- */

.filter-submit {
  width: 100%;
  padding: 1vw;

  background: #000;
  color: #fff;

  font-size: 0.8vw;
  cursor: pointer;

  transition: 0.3s ease;
  text-transform: uppercase;
}

.filter-submit:hover {
  opacity: 0.8;
}

.reset-sizes {
  margin-top: 1vw;
  width: 100%;
  padding: 0.8vw;

  background: #f4f4f4;

  cursor: pointer;
  font-size: 0.8vw;

  transition: 0.3s ease;
}

.reset-sizes:hover {
  background: #000;
  color: #fff;
}

.filter-reset-all {
  margin-top: 1.5vw;

  display: flex;
  justify-content: center;

  text-align: center;
  font-size: 0.7vw;
  color: #555;

  cursor: pointer;
}

.filter-reset-all:hover {
  color: #000;
}

/* ========================================================================== */
/*                               BREADCRUMBS                                  */
/* ========================================================================== */

.breadcrumbs-or-filter-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;

  padding: 1vw 2vw;
}

.breadcrumbs {
  display: flex;
  align-items: center;
  gap: 0.6vw;

  padding: 1vw 2vw;

  font-size: 0.8vw;
  text-transform: uppercase;
  letter-spacing: 0.05vw;

  color: var(--main-font-color);
  opacity: 0.85;

  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;

  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.3) transparent;
  -webkit-overflow-scrolling: touch;
}

/* Chrome / Edge / Safari scrollbar */
.breadcrumbs::-webkit-scrollbar {
  height: 0.35vw;
}

.breadcrumbs::-webkit-scrollbar-track {
  background: transparent;
}

.breadcrumbs::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.35);
  border-radius: 10px;
  transition: background 0.3s ease;
}

.breadcrumbs::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 0, 0, 0.55);
}

.breadcrumbs a {
  text-decoration: none;
  color: var(--main-font-color);
  opacity: 0.7;
  transition: opacity 0.3s ease, color 0.3s ease;
}

.breadcrumbs a:hover {
  opacity: 1;
  color: #000;
}

.breadcrumbs .separator {
  opacity: 0.4;
}

.breadcrumbs .current {
  font-weight: 600;
  opacity: 1;
}
.breadcrumbs span{
  cursor: pointer;
}

/* ========================================================================== */
/*                                 RESPONSIVE                                 */
/* ========================================================================== */

/* ------------------------------ max-width: 1280px ------------------------- */

@media (max-width: 1280px) {
  /* products */
  .products {
    grid-template-columns: repeat(auto-fill, minmax(19vw, 1fr));
  }

  .product-card-title {
    font-size: 1vw;
    margin: 0.7vw 0 0;
  }

  .price,
  .old-price,
  .stock-label {
    font-size: 1vw;
  }

  .old-price {
    margin-left: 0.5vw;
  }

  .slider-arrow svg {
    width: 3vw;
    height: 3vw;
  }

  /* favorite */
  .favorite-btn {
    width: 3.5vw;
    height: 3.5vw;
  }

  .favorite-btn .icon-heart {
    width: 2.5vw;
    height: 2.5vw;
  }

  /* filters */
  .filter-open-btn { padding: 0.9vw 2.2vw; font-size: 1vw; }
  .filter-panel { width: 32vw; padding: 2.2vw; }
  .filter-header span { font-size: 1.8vw; }
  .filter-title { font-size: 1.1vw; }
  .select-item { padding: 1vw 1.4vw; }
  .select-item .indicator { width: 1.4vw; height: 1.1vw; }
  .select-item .text { font-size: 1.2vw; }
  .size-option { padding: 0.8vw 1.2vw; font-size: 0.8vw; }
  .price-inputs input { padding: 1vw; font-size: 1vw; }
  .filter-submit { padding: 1.2vw; font-size: 1vw; }
  .reset-sizes, .filter-reset-all { font-size: 1vw; }
  .filter-close { font-size: 2.8vw; }

  /* breadcrumbs */
  .breadcrumbs {
    font-size: 1vw;
    padding: 1.4vw 2.4vw;
    gap: 0.8vw;
  }

  .breadcrumbs .separator {
    font-size: 1vw;
  }
}

/* ------------------------------ max-width: 1024px ------------------------- */

@media (max-width: 1024px) {
  .products {
    grid-template-columns: repeat(auto-fill, minmax(25vw, 1fr));
    padding: 0 1.5vw;
    gap: 1.5vw;
  }

  .product-card-title {
    font-size: 1.4vw;
  }

  .price,
  .old-price,
  .stock-label {
    font-size: 1.4vw;
  }

  .slider-arrow svg {
    width: 4vw;
    height: 4vw;
  }

  /* filters */
  .filter-open-btn { font-size: 1.5vw; padding: 1.4vw 3vw; }
  .filter-panel { width: 40vw; padding: 3vw; }
  .filter-header span { font-size: 2.1vw; }
  .filter-title { font-size: 1.2vw; }
  .select-item { padding: 1.4vw 2vw; gap: 1.4vw; }
  .select-item .indicator { width: 2vw; height: 2vw; border-width: 0.25vw; }
  .select-item .text { font-size: 1.5vw; }
  .size-option { padding: 1.2vw 1.8vw; font-size: 1.4vw; }
  .price-inputs input { padding: 1.4vw; font-size: 1.4vw; }
  .filter-submit { padding: 1.8vw; font-size: 1.6vw; }
  .reset-sizes, .filter-reset-all { font-size: 1.4vw; }
  .filter-close { font-size: 4.8vw; }

  /* breadcrumbs */
  .breadcrumbs {
    font-size: 1.6vw;
    padding: 2vw 3vw;
    gap: 1.2vw;
  }

  .breadcrumbs .separator {
    font-size: 1.6vw;
  }
}

/* ------------------------------ max-width: 768px -------------------------- */

@media (max-width: 768px) {
  .products {
    grid-template-columns: repeat(auto-fill, minmax(35vw, 1fr));
    padding: 0 2vw;
    gap: 2vw;
  }

  .product-card-title,
  .price,
  .old-price,
  .stock-label {
    font-size: 2.5vw;
  }

  .product-card-title {
    margin: 1.4vw 0 0;
  }

  .price,
  .stock-label {
    margin-top: 1.4vw;
  }

  .old-price {
    margin-left: 1.4vw;
  }

  .slider-arrow {
    display: none;
  }
  .slider-arrow svg {
    width: 5vw;
    height: 5vw;
  }

  /* favorite */
  .favorite-btn {
    width: 4.5vw;
    height: 4.5vw;
  }

  .favorite-btn .icon-heart {
    width: 3.5vw;
    height: 3.5vw;
  }

  /* filters */
  .filter-panel { width: 75vw; padding: 5vw; }
  .filter-open-btn { padding: 2vw 6vw; font-size: 2.5vw; }
  .filter-header span { font-size: 3.5vw; }
  .filter-title { font-size: 2.5vw; margin-bottom: 2vw; }
  .select-item { padding: 2.4vw 3vw; gap: 2vw; border-radius: 1vw; }
  .select-item .indicator { width: 3vw; height: 3vw; border-width: 0.35vw; }
  .select-item .text { font-size: 3vw; }
  .size-option { padding: 1.8vw 3vw; font-size: 2.8vw; }
  .price-inputs { gap: 2vw; }
  .price-inputs input { padding: 2.4vw; font-size: 2.5vw; }
  .filter-submit { padding: 3vw; font-size: 2.5vw; }
  .reset-sizes, .filter-reset-all { font-size: 2.6vw; }
  .filter-close { font-size: 6vw; }

  /* breadcrumbs */
  .breadcrumbs {
    font-size: 2.5vw;
    padding: 3vw 4vw;
    gap: 2vw;
    letter-spacing: 0.1vw;
  }

  .breadcrumbs .separator {
    font-size: 2.5vw;
  }
}

/* ------------------------------ max-width: 480px -------------------------- */

@media (max-width: 480px) {
  .products {
    padding: 0 2.5vw;
    gap: 2.5vw;
  }

  /* favorite */
  .favorite-btn {
    width: 5.5vw;
    height: 5.5vw;
  }

  .favorite-btn .icon-heart {
    width: 4.5vw;
    height: 4.5vw;
  }

  /* filters */
  .filter-panel { width: 90vw; padding: 6vw; }
  .filter-open-btn { padding: 2.5vw 7vw; font-size: 4vw; }
  .filter-header span { font-size: 5vw; }
  .filter-title { font-size: 3.5vw; }
  .select-item { padding: 3vw 4vw; gap: 3vw; border-radius: 1.4vw; }
  .select-item .indicator { width: 4vw; height: 4vw; border-width: 0.45vw; }
  .select-item .text { font-size: 4vw; }
  .size-option { padding: 2.5vw 4vw; font-size: 3.5vw; }
  .price-inputs input { padding: 3vw; font-size: 4vw; }
  .filter-submit { padding: 3.5vw; font-size: 4vw; }
  .reset-sizes, .filter-reset-all { font-size: 3.4vw; }
  .filter-reset-all{margin-top: 4vw;}

  /* breadcrumbs */
  .breadcrumbs {
    font-size: 4vw;
    padding: 4vw 5vw;
    gap: 3vw;
  }

  .breadcrumbs .separator {
    font-size: 4vw;
  }
}




