/* ==================================================
   PRODUCT ROW BASE
================================================== */

.product-row-z {
  width: 100%;
}

.product-row-z * {
  box-sizing: border-box;
}

.product-row-z .product-card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* ==================================================
   RESPONSIVE COLUMN SYSTEM
================================================== */

.product-row-z .product-card {
  flex: 1 1 calc(25% - 1rem);
  min-width: 0;
  display: flex;
  transition:
    flex-basis 420ms cubic-bezier(.22,1,.36,1),
    transform 320ms cubic-bezier(.22,1,.36,1);
}

/* 3 cards */
.product-row-z .product-card-grid:has(.product-card:nth-child(3):last-child)
.product-card {
  flex-basis: calc(33.333% - 1rem);
}

/* 2 cards */
.product-row-z .product-card-grid:has(.product-card:nth-child(2):last-child)
.product-card {
  flex-basis: calc(50% - 1rem);
}

/* 1 card */
.product-row-z .product-card-grid:has(.product-card:only-child)
.product-card {
  flex-basis: 100%;
}

/* ==================================================
   MAIN CARD
================================================== */

.product-row-z .product-card-inner {
  position: relative;
  width: 100%;
  min-height: 220px;
  display: flex;
  overflow: hidden;
  text-decoration: none;
  border-radius: 0;
  isolation: isolate;
  transition:
    transform 320ms cubic-bezier(.22,1,.36,1),
    box-shadow 320ms ease;
}

/* subtle lift */
.product-row-z .product-card:hover .product-card-inner {
  transform: translateY(-6px);
}

/* ==================================================
   IMAGE
================================================== */

.product-row-z .product-image-wrap {
  position: relative;
  flex: 0 0 42%;
  overflow: hidden;
  z-index: 2;
}

.product-row-z .product-image {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition:
    transform 700ms cubic-bezier(.22,1,.36,1);
}



/* ==================================================
   CONTENT AREA
================================================== */

.product-row-z .product-content-wrap {
  position: relative;
  flex: 1;
  display: flex;
  align-items: center;
  overflow: hidden;
  padding:
    1rem
    1rem
    1rem
    2rem;
}

/* ==================================================
   STATIC CONTENT
================================================== */

.product-row-z .product-static {
  position: relative;
  z-index: 3;
  transition:
    transform 420ms cubic-bezier(.22,1,.36,1),
    opacity 260ms ease;
}

.product-row-z .product-number {
  display: block;
  margin-bottom: .35rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(255,255,255,.7);
  font-family: sans-serif;
}

.product-row-z .product-title {
  margin: 0;
  color: #fff;
  line-height: 1.05;
  font-weight: 700;
  font-size: clamp(1rem, 0.9vw + 0.65rem, 1.5rem);
  font-family: "Obviously", sans-serif;
}

/* ==================================================
   HOVER PANEL
================================================== */

.product-row-z .product-hover {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  padding:
    1rem
    1rem
    1rem
    2rem;
  opacity: 0;
  transform: translateX(30px);
  transition:
    opacity 280ms ease,
    transform 420ms cubic-bezier(.22,1,.36,1);
  z-index: 4;
}

.product-row-z .hover-inner {
  max-width: 320px;
}

.product-row-z .product-description,
.product-row-z .product-description p,
.product-row-z .product-description span,
.product-row-z .product-description li {
  color: #fff;
  font-size: 1rem !important;
  font-weight: 300 !important;
  line-height: 1.4;
  margin: 0;
}

.product-row-z .product-hover p {
  margin: 0 0 1rem 0;
  color: #fff;
  line-height: 1.45;
  font-size: .9rem !important;
  font-weight: 400 !important;
}

.product-row-z .order-cta {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-top: 15px;
  color: #fff;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}

/* ==================================================
   EXPANSION INTERACTION
================================================== */

/* hovered card grows */
.product-row-z .product-card-grid:hover .product-card {
  flex-basis: 18%;
}

.product-row-z .product-card-grid .product-card:hover {
  flex-basis: 46%;
}

/* reveal hover panel */
.product-row-z .product-card:hover .product-hover {
  opacity: 1;
  transform: translateX(0);
}

/* move static content away */
.product-row-z .product-card:hover .product-static {
  opacity: 0;
  transform: translateX(-24px);
}

/* ==================================================
   TABLET
================================================== */

@media (max-width: 991px) {

  .product-row-z .product-card-grid {
    flex-direction: column;
  }

  .product-row-z .product-card,
  .product-row-z .product-card:hover,
  .product-row-z .product-card-grid:hover .product-card {
    flex-basis: 100% !important;
  }

  .product-row-z .product-card-inner {
    min-height: 220px;
  }

  .product-row-z .product-hover {
    opacity: 1;
    transform: none;
    position: relative;
    padding-top: 0;
    margin-top: .75rem;
  }

  .product-row-z .product-static {
    opacity: 1 !important;
    transform: none !important;
  }

}

/* ==================================================
   MOBILE
================================================== */

@media (max-width: 767px) {

  .product-row-z .product-card-inner {
    flex-direction: column;
    min-height: auto;
  }

  .product-row-z .product-image-wrap {
    flex: 0 0 auto;
    min-height: 240px;
  }

  .product-row-z .product-content-wrap {
    padding:
      2rem
      1.25rem
      1.5rem
      1.25rem;
  }

  .product-row-z .product-angle {
    top: -60px;
    left: 0;
    width: 100%;
    height: 60px;
  }

  .product-row-z .product-angle svg {
    transform: rotate(180deg);
  }

  .product-row-z .product-hover {
    position: relative;
    inset: auto;
    padding:
      1rem
      0
      0
      0;
  }

}
```
