/* Left copy */
.brand-heading{
  margin:0;
  font-weight:900;
  line-height:.92;
  letter-spacing:-.02em;
  font-size: clamp(28px,5vw,56px);
}

.shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px}
.product-card{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:transform .18s ease, box-shadow .25s ease}
.product-card:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(0,0,0,.08)}
.product-card .product-media{background:var(--card);aspect-ratio:4/3}
.product-card img{width:100%;height:100%;object-fit:cover;display:block}
.p-body{padding:16px;display:flex;flex-direction:column;gap:10px}
.p-title{margin:0;font-weight:800;font-size:16px}
.price{font-weight:900;font-size:18px}
.product-card .actions{margin-top:6px}
.product-card .btn{width:100%}

/* Grid: 4 across on desktop, then 3 / 2 / 1 as screen narrows */
.shop-grid{
  display:grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 22px;
}

@media (max-width: 1200px){
  .shop-grid{ grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width: 900px){
  .shop-grid{ grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 560px){
  .shop-grid{ grid-template-columns: 1fr; }
}

/* Card */
.product-card{
  background:#fff;
  border:1px solid var(--border);
  border-radius:14px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  transition: transform .18s ease, box-shadow .25s ease, border-color .25s ease;
}
.product-card:hover{
  transform: translateY(-4px);
  box-shadow: 0 12px 28px rgba(0,0,0,.08);
  border-color:#dcdcdc;
}

/* Image area */
.product-media{
  width: 100%;
  aspect-ratio: 1 / 1;     /* always square */
  background: var(--card);
  overflow: hidden;
  border-bottom: 1px solid var(--border); /* optional divider */
}
.product-media img{
  width: 100%;
  height: 100%;
  object-fit: cover;        /* crop to fill square, no distortion */
  display: block;
}

/* Text area */
.product-body{
  padding: 14px 16px 16px;
  display:grid;
  gap:10px;
}
.product-title{
  margin:0;
  font-weight:800;
  font-size:15px;
  letter-spacing:.2px;
}
.price-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.price{ font-weight:800; }

/* Full-width button */
.btn.block{ width:100%; }

/* --- Card gallery --- */
.product-media{ position:relative; overflow:hidden; }

.carousel .slide{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; display:block;
  opacity:0; transition:opacity .35s ease;
}
.carousel .slide.is-active{ opacity:1; }

/* arrows */
.carousel .c-prev, .carousel .c-next{
  position:absolute; top:50%; transform:translateY(-50%);
  width:34px; height:34px; border-radius:999px;
  display:grid; place-items:center;
  border:1px solid var(--border); background:#fff; opacity:.9;
  cursor:pointer; font-weight:900; line-height:1;
}
.carousel .c-prev{ left:8px; }
.carousel .c-next{ right:8px; }
.carousel .c-prev:hover, .carousel .c-next:hover{ opacity:1; }


/* dots container */
.carousel .c-dots{
  position:absolute; left:50%; bottom:10px; transform:translateX(-50%);
  display:flex;
  align-items:center;          /* prevent vertical stretch */
  gap:6px; padding:6px 8px; border-radius:999px;
  background:rgba(255,255,255,.85); border:1px solid var(--border);
  backdrop-filter:saturate(140%) blur(6px);
}

/* single, square dot rule */
.carousel .c-dot{
  --size: 10px;
  width: var(--size);
  height: var(--size);
  /*aspect-ratio: 1 / 1;*/
  flex: 0 0 auto;
  box-sizing: border-box;
  border-radius: 50%;
  display: inline-block;
  padding: 0;
  margin: 0;
  background: #b9b9b9;
  border: 1px solid #b9b9b9;
  cursor: pointer;
  position: relative;
  -webkit-appearance: none;
  appearance: none;
}
.carousel .c-dot.is-active{ background:#111; border-color:#111; }

/* mobile size only */
@media (max-width:560px){
  .carousel .c-prev,.carousel .c-next{ width:40px; height:40px; }
  .carousel .c-dot{ --size: 8px; }
}


/* keep touch target comfy while dot looks small */
.carousel .c-dot{ position: relative; }
.carousel .c-dot::after{
  content:"";
  position:absolute;
  inset:-6px;               /* invisible hit area */
}

/* Fallback square using padding hack */
.product-media{ position: relative; }
.product-media::before{
  content:"";
  display:block;
  padding-bottom:100%;      /* makes the box square */
}
.product-media > img{
  position:absolute;
  inset:0;
}
