/* =========================================================
   PÁGINA DE PRODUCTOS
========================================================= */

.products-heading,
.products-filter-panel,
.products-grid,
.products-empty {
  width: 100%;
}


/* =========================================================
   BREADCRUMB
========================================================= */

.products-breadcrumb {
  display: flex;
  min-height: 39px;
  align-items: center;
  gap: 7px;

  padding: 0 18px;

  border-bottom: 1px solid var(--line);
  background: var(--background);

  font-family: var(--body-font);
  font-size: var(--font-smallest);
  font-weight: 400;
  line-height: 1;
  text-transform: uppercase;
}

.products-breadcrumb a {
  transition: opacity var(--transition-fast);
}

.products-breadcrumb a:hover {
  opacity: 0.5;
}


/* =========================================================
   TÍTULO Y BOTÓN DE FILTROS
========================================================= */

.products-heading__row {
  display: grid;
  width: 100%;
  min-height: 69px;

  grid-template-columns: minmax(0, 1fr) 66px;

  border-bottom: 1px solid var(--line);
  background: var(--background);
}

.products-heading__title {
  display: flex;
  min-width: 0;
  align-items: center;

  padding: 0 18px;

  font-family: var(--heading-font);
  font-size: var(--h2);
  font-weight: var(--title-font-weight);
  line-height: 1;
  text-transform: uppercase;
}

.products-filter-button {
  display: grid;
  width: 66px;
  height: 100%;
  place-items: center;

  border-left: 1px solid var(--line);
  background: transparent;

  transition: background-color var(--transition-fast);
}

.products-filter-button:hover,
.products-filter-button.is-active {
  background: rgba(17, 17, 17, 0.04);
}

.products-filter-button svg {
  width: 24px;
  height: 24px;

  fill: var(--background);
  stroke: currentColor;
  stroke-width: 1.3;
  stroke-linecap: round;
  stroke-linejoin: round;
}


/* =========================================================
   PANEL DE FILTROS
========================================================= */

.products-filter-panel {
  display: grid;
  grid-template-rows: 0fr;

  visibility: hidden;
  opacity: 0;

  border-bottom: 0 solid var(--line);
  background: var(--background);

  transition:
    grid-template-rows 420ms cubic-bezier(0.76, 0, 0.24, 1),
    opacity 300ms ease,
    visibility 420ms ease,
    border-width 420ms ease;
}

.products-filter-panel.is-open {
  grid-template-rows: 1fr;

  visibility: visible;
  opacity: 1;

  border-bottom-width: 1px;
}

.products-filter-panel__group {
  display: grid;
  min-height: 0;
  overflow: hidden;

  grid-template-columns: 180px minmax(0, 1fr);
}

.products-filter-panel__label {
  display: flex;
  min-height: 64px;
  align-items: center;

  padding: 0 18px;

  border-right: 1px solid var(--line);

  font-family: var(--body-font);
  font-size: var(--font-small);
  font-weight: 400;
  line-height: 1;
  text-transform: uppercase;
}

.products-filter-panel__options {
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  align-items: stretch;
}

.products-filter-option {
  display: flex;
  min-height: 64px;
  align-items: center;

  padding: 0 20px;

  border-right: 1px solid var(--line);
  background: transparent;

  font-family: var(--body-font);
  font-size: var(--font-small);
  font-weight: 400;
  line-height: 1;
  text-transform: uppercase;

  transition:
    background-color var(--transition-fast),
    color var(--transition-fast);
}

.products-filter-option:hover,
.products-filter-option.is-active {
  background: #111111;
  color: var(--background);
}


/* =========================================================
   GRILLA DE PRODUCTOS
========================================================= */

.products-grid {
  display: grid;

  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: stretch;

  background: var(--background);
}

.product-card {
  min-width: 0;

  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--background);
}

.product-card:nth-child(4n) {
  border-right: 0;
}

.product-card[hidden],
.product-card.is-hidden {
  display: none;
}

.product-card__link {
  display: grid;
  width: 100%;
  height: 100%;

  grid-template-rows:
    var(--product-media-height, clamp(340px, 30vw, 570px))
    var(--product-heading-height, 64px)
    var(--product-pricing-height, 116px);

  background: var(--background);
}


/* =========================================================
   ÁREA DE IMAGEN
========================================================= */

.product-card__media {
  position: relative;

  width: 100%;
  height: var(--product-media-height, clamp(340px, 30vw, 570px));
  overflow: hidden;

  background: #dedbd5;
}

.product-card__image {
  position: absolute;
  inset: 0;

  display: block;
  width: 100%;
  height: 100%;

  object-fit: cover;
  object-position: center;

  transition:
    opacity 520ms ease,
    transform 850ms cubic-bezier(0.2, 0.65, 0.3, 1);
}

.product-card__image--primary {
  z-index: 1;
  opacity: 1;
}

.product-card__image--secondary {
  z-index: 2;
  opacity: 0;
}

.product-card:hover .product-card__image--primary {
  opacity: 0;
  transform: scale(1.025);
}

.product-card:hover .product-card__image--secondary {
  opacity: 1;
  transform: scale(1.025);
}


/* Variante para fotos de producto con fondo */
.product-card__media--contain .product-card__image {
  object-fit: contain;
  padding: 24px;
}


/* =========================================================
   NOMBRE DEL PRODUCTO
========================================================= */

.product-card__heading {
  display: grid;
  width: 100%;
  height: var(--product-heading-height, 64px);

  grid-template-columns: minmax(0, 1fr) 49px;

  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.product-card__title {
  display: -webkit-box;
  min-width: 0;
  overflow: hidden;
  align-self: center;

  padding: 10px 16px;

  font-family: var(--body-font);
  font-size: var(--font-base);
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
  text-transform: uppercase;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.product-card__bag {
  display: grid;
  width: 49px;
  height: 100%;
  place-items: center;

  border-left: 1px solid var(--line);
}

.product-card__bag svg {
  width: 22px;
  height: 22px;

  fill: none;
  stroke: currentColor;
  stroke-width: 1.2;
  stroke-linecap: round;
  stroke-linejoin: round;

  transition: transform var(--transition-fast);
}

.product-card:hover .product-card__bag svg {
  transform: translateY(-1px);
}


/* =========================================================
   PRECIO
========================================================= */

.product-card__pricing {
  display: flex;
  width: 100%;
  height: var(--product-pricing-height, 62px);
  align-items: center;

  padding: 12px 16px;

  background: var(--background);
}

.product-card__pricing p {
  margin: 0;
}

.product-card__price {
  font-family: var(--body-font);
  font-size: var(--font-base);
  font-weight: 400;
  line-height: 1;
}


/* =========================================================
   ESTADOS DE FOCO
========================================================= */

.product-card__link:focus-visible,
.products-filter-button:focus-visible,
.products-filter-option:focus-visible {
  outline: 1px solid var(--text);
  outline-offset: -4px;
}


/* =========================================================
   SIN RESULTADOS
========================================================= */

.products-empty {
  display: flex;
  min-height: 260px;
  align-items: center;
  justify-content: center;

  padding: 40px 20px;

  border-bottom: 1px solid var(--line);
  background: var(--background);

  text-align: center;
}

.products-empty[hidden] {
  display: none;
}

.products-empty p {
  margin: 0;

  font-family: var(--body-font);
  font-size: var(--font-base);
  font-weight: 400;
  text-transform: uppercase;
}


/* =========================================================
   TABLET GRANDE
========================================================= */

@media (max-width: 1200px) {
  .products-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .product-card,
  .product-card:nth-child(4n) {
    border-right: 1px solid var(--line);
  }

  .product-card:nth-child(3n) {
    border-right: 0;
  }

  .product-card__link {
    grid-template-rows:
      clamp(330px, 39vw, 500px)
      64px
      116px;
  }

  .product-card__media {
    height: clamp(330px, 39vw, 500px);
  }
}


/* =========================================================
   TABLET
========================================================= */

@media (max-width: 900px) {
  .products-heading__row {
    min-height: 64px;
    grid-template-columns: minmax(0, 1fr) 62px;
  }

  .products-heading__title {
    font-size: var(--h3);
  }

  .products-filter-button {
    width: 62px;
  }

  .products-filter-panel__group {
    grid-template-columns: 145px minmax(0, 1fr);
  }

  .products-filter-panel__label,
  .products-filter-option {
    min-height: 58px;
  }

  .products-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .product-card,
  .product-card:nth-child(3n),
  .product-card:nth-child(4n) {
    border-right: 1px solid var(--line);
  }

  .product-card:nth-child(2n) {
    border-right: 0;
  }

  .product-card__link {
    grid-template-rows:
      clamp(360px, 59vw, 560px)
      62px
      112px;
  }

  .product-card__media {
    height: clamp(360px, 59vw, 560px);
  }

  .product-card__heading {
    height: 62px;
  }

  .product-card__pricing {
    height: 70px;
  }
}


/* =========================================================
   CELULAR
========================================================= */

@media (max-width: 640px) {
  .products-breadcrumb {
    min-height: 34px;

    padding-right: 14px;
    padding-left: 14px;

    font-size: var(--font-smallest);
  }

  .products-heading__row {
    min-height: 58px;
    grid-template-columns: minmax(0, 1fr) 56px;
  }

  .products-heading__title {
    padding: 0 14px;

    font-size: var(--h4);
  }

  .products-filter-button {
    width: 56px;
  }

  .products-filter-button svg {
    width: 21px;
    height: 21px;
  }

  .products-filter-panel__group {
    display: block;
  }

  .products-filter-panel__label {
    min-height: 48px;

    padding: 0 14px;

    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .products-filter-panel__options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .products-filter-option {
    min-height: 48px;

    padding: 0 14px;

    border-bottom: 1px solid var(--line);
  }

  .products-filter-option:nth-child(2n) {
    border-right: 0;
  }

  .products-grid {
    grid-template-columns: 1fr;
  }

  .product-card,
  .product-card:nth-child(2n),
  .product-card:nth-child(3n),
  .product-card:nth-child(4n) {
    border-right: 0;
  }

  .product-card__link {
    grid-template-rows:
      min(115vw, 590px)
      60px
      108px;
  }

  .product-card__media {
    height: min(115vw, 590px);
  }

  .product-card__heading {
    height: 60px;
    grid-template-columns: minmax(0, 1fr) 48px;
  }

  .product-card__title {
    padding: 9px 14px;

    font-size: var(--font-base);
  }

  .product-card__bag {
    width: 48px;
  }

  .product-card__pricing {
    height: 108px;
    gap: 7px;

    padding: 14px;
  }

  /*
    En pantallas táctiles se conserva la imagen principal.
    La secundaria aparecerá cuando definamos la interacción.
  */
  .product-card:hover .product-card__image--primary {
    opacity: 1;
    transform: none;
  }

  .product-card:hover .product-card__image--secondary {
    opacity: 0;
    transform: none;
  }
}


/* =========================================================
   CELULAR HORIZONTAL
========================================================= */

@media (max-width: 900px) and (orientation: landscape) {
  .products-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .product-card,
  .product-card:nth-child(3n),
  .product-card:nth-child(4n) {
    border-right: 1px solid var(--line);
  }

  .product-card:nth-child(2n) {
    border-right: 0;
  }

  .product-card__link {
    grid-template-rows:
      min(62vw, 470px)
      60px
      108px;
  }

  .product-card__media {
    height: min(62vw, 470px);
  }
}


/* =========================================================
   SIN HOVER
========================================================= */

@media (hover: none) {
  .product-card:hover .product-card__image--primary {
    opacity: 1;
    transform: none;
  }

  .product-card:hover .product-card__image--secondary {
    opacity: 0;
    transform: none;
  }
}


/* =========================================================
   MOVIMIENTO REDUCIDO
========================================================= */

@media (prefers-reduced-motion: reduce) {
  .product-card__image,
  .products-filter-panel,
  .products-filter-option {
    transition-duration: 1ms;
  }
}