.category-card,
.product-card {
  transition: transform .15s ease, box-shadow .15s ease;
}
.category-card:hover,
.product-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 6px 18px rgba(0,0,0,.12) !important;
}

.blog-content img {
  max-width: 100%;
  border-radius: 6px;
  margin: 1rem 0;
}

body {
  background-color: #fafafa;
}

.navbar-brand small {
  font-family: var(--site-font);
  text-transform: none;
  font-weight: 300;
}

/* Hero section */
.hero-section {
  min-height: 420px;
}
.hero-overlay {
  min-height: 420px;
  background: rgba(0, 0, 0, 0.45);
}
/* No overlay tint when there's no image (solid colour is enough) */
.hero-section:not([style*="background-image"]) .hero-overlay {
  background: transparent;
}

/* Product gallery thumbnail strip — overrides Bootstrap's default dot indicators,
   but keeps the .carousel-indicators class so its JS still auto-tracks the active slide. */
.product-gallery-thumbs {
  position: static !important;
  margin: .75rem 0 0 !important;
  display: flex !important;
  flex-wrap: wrap;
  gap: .5rem;
  justify-content: flex-start;
}
/* Bootstrap's `.carousel-indicators [data-bs-target]` rule outweighs a plain
   class+element selector, so these need !important to reliably win. */
.product-gallery-thumbs button {
  box-sizing: border-box !important;
  width: 64px !important;
  height: 64px !important;
  padding: 0 !important;
  margin: 0 !important;
  flex: none !important;
  border: 2px solid transparent !important;
  border-radius: 6px;
  overflow: hidden;
  opacity: .6 !important;
  background-color: transparent !important;
  text-indent: 0 !important;
  transition: opacity .15s ease, border-color .15s ease;
}
.product-gallery-thumbs button:hover {
  opacity: .9 !important;
}
.product-gallery-thumbs button.active {
  opacity: 1 !important;
  border-color: var(--site-primary) !important;
}
.product-gallery-thumbs button img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
