/* Reviews Block - All Variations */

/* ============================================
   Cards Variation
   ============================================ */
.reviews-cards-section {
  padding: 60px 20px;
}

.reviews-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  max-width: 1200px;
  margin: 0 auto;
}

@media (max-width: 768px) {
  .reviews-cards-grid {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 769px) and (max-width: 1024px) {
  .reviews-cards-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.reviews-card {
  border-radius: 8px;
  padding: 24px;
}

.reviews-card-quote {
  margin: 12px 0;
  line-height: 1.6;
}

.reviews-card-author {
  margin: 0;
  font-weight: 600;
}

/* ============================================
   Slider Base Styles (shared by all sliders)
   ============================================ */
.reviews-slider-section,
.reviews-slider-ratings-section,
.reviews-slider-image-section {
  padding: 60px 20px;
}

.reviews-slider-wrapper {
  max-width: 800px;
  margin: 0 auto;
  position: relative;
}

.reviews-slider-track {
  position: relative;
  overflow: hidden;
}

.reviews-slide {
  display: none;
  /* border-radius: 8px; */
  padding: 40px;
  text-align: center;
}

.reviews-slide.active {
  display: block;
}

.reviews-slide-quote {
  margin: 16px 0 12px;
  line-height: 1.6;
  font-style: italic;
}

.reviews-slide-author {
  margin: 0;
  font-weight: 600;
}

/* Navigation */
.reviews-slider-nav {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
  margin-top: 24px;
}

.reviews-slider-prev,
.reviews-slider-next {
  background: none;
  border: 1px solid currentColor;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  cursor: pointer;
  font-size: 20px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.7;
  transition: opacity 0.2s;
}

.reviews-slider-prev:hover,
.reviews-slider-next:hover {
  opacity: 1;
}

.reviews-slider-dots {
  display: flex;
  gap: 8px;
}

.reviews-slider-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: currentColor;
  border: none;
  cursor: pointer;
  opacity: 0.3;
  padding: 0;
  transition: opacity 0.2s;
}

.reviews-slider-dot.active {
  opacity: 1;
}

/* ============================================
   Star Rating
   ============================================ */
.reviews-star-rating {
  justify-content: center;
}

.reviews-cards-section .reviews-star-rating {
  justify-content: flex-start;
}

/* ============================================
   Slider Ratings Variation
   ============================================ */
.reviews-rating-cards {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
  max-width: 900px;
  margin: 0 auto 40px;
}

.reviews-rating-card {
  border-radius: 8px;
  padding: 16px 24px;
  text-align: center;
  min-width: 120px;
}

/* Stretch: full width section, equal columns, no gaps */
.reviews-rating-cards.is-stretched {
  max-width: none;
  width: 100%;
  flex-wrap: nowrap;
  gap: 0;
}

.reviews-rating-cards.is-stretched .reviews-rating-card {
  flex: 1 1 0;
  min-width: 0;
  border-radius: 0;
}

/* Mobile: 2-column grid for rating cards */
@media (max-width: 768px) {
  .reviews-rating-cards,
  .reviews-rating-cards.is-stretched {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    flex-wrap: initial;
  }

  .reviews-rating-cards .reviews-rating-card,
  .reviews-rating-cards.is-stretched .reviews-rating-card {
    min-width: 0;
    flex: initial;
  }
}

.reviews-rating-logo {
  object-fit: contain;
  display: block;
  margin: 8px auto 0;
}

.reviews-rating-value {
  font-weight: 700;
  font-size: 20px;
  line-height: 1.2;
}

.reviews-rating-header {
  font-size: 12px;
  opacity: 0.7;
  margin-top: 4px;
}

.reviews-slider-ratings-section .reviews-slider-wrapper {
  max-width: 1000px;
}

/* Desktop: stack every slide in the same grid cell so the track height
   is driven by the tallest card, and cross-fade between slides. */
.reviews-slider-ratings-section .reviews-slider-track {
  display: grid;
  grid-template-columns: 1fr;
}

.reviews-slider-ratings-section .reviews-slide-ratings {
  grid-column: 1;
  grid-row: 1;
  display: flex;
  flex-direction: row;
  padding: 0;
  text-align: left;
  overflow: hidden;
  border-radius: 8px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.6s ease-in-out;
}

.reviews-slider-ratings-section .reviews-slide-ratings.active {
  display: flex;
  opacity: 1;
  pointer-events: auto;
  z-index: 2;
}

.reviews-slide-ratings-image-col {
  flex: 0 0 40%;
  min-height: 320px;
  background: #f0f0f0;
  position: relative;
}

.reviews-slide-ratings-image-col .reviews-slide-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  position: absolute;
  top: 0;
  left: 0;
}

.reviews-slide-ratings-image-col .reviews-slide-img-placeholder {
  width: 100%;
  height: 100%;
  background: #e0e0e0;
}

.reviews-slide-ratings-text-col {
  flex: 1;
  padding: 40px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.reviews-slider-ratings-section .reviews-slide-ratings .reviews-star-rating {
  justify-content: center;
}

@media (min-width: 769px) {
  .reviews-slider-ratings-section .reviews-slide-ratings .reviews-star-rating {
    justify-content: flex-start;
  }
}

.reviews-slider-ratings-section .reviews-slide-ratings .reviews-slide-quote,
.reviews-slider-ratings-section .reviews-slide-ratings .reviews-slide-author {
  text-align: center;
  font-size: 0.9rem;
  color: #0009;
}

@media (min-width: 769px) {
  .reviews-slider-ratings-section .reviews-slide-ratings .reviews-slide-quote,
  .reviews-slider-ratings-section .reviews-slide-ratings .reviews-slide-author {
    text-align: left;
    font-size: 1.25rem;
  }
}

@media (max-width: 768px) {
  /* Mobile: revert to a single-slide-at-a-time flow layout. */
  .reviews-slider-ratings-section .reviews-slider-track {
    display: block;
  }

  .reviews-slider-ratings-section .reviews-slide-ratings {
    grid-column: auto;
    grid-row: auto;
    display: none;
    flex-direction: column;
    opacity: 1;
    pointer-events: auto;
    transition: none;
  }

  .reviews-slider-ratings-section .reviews-slide-ratings.active {
    display: flex;
  }

  .reviews-slide-ratings-image-col {
    flex: 0 0 auto;
    width: 100%;
    height: 240px;
  }

  .reviews-slide-ratings-text-col {
    padding: 24px;
  }
}

/* ============================================
   Slider Image Variation
   ============================================ */
.reviews-slider-image-section .reviews-slider-wrapper {
  max-width: revert;
}

.reviews-slider-image .reviews-slider-nav {
  justify-content: flex-start;
}
.reviews-slider-image .reviews-slider-nav {
  padding: 0 40px;
}
.reviews-slider-image .reviews-slider-prev,
.reviews-slider-image .reviews-slider-next {
  background-color: var(--color--accent);
  height: 3.5rem;
  width: 3.5rem;
}
@media (min-width: 991px) {
  .reviews-slider-image .reviews-slider-dots {
    display: none;
  }
}

.reviews-slide-image {
  display: none;
  padding: 0;
  text-align: left;
  /* border-radius: 8px; */
  overflow: hidden;
}

.reviews-slide-image.active {
  display: flex;
}

.reviews-slide-image[data-image-position="right"] {
  flex-direction: row-reverse;
}

.reviews-slide-image-col {
  flex: 0 0 40%;
  min-height: 350px;
  background: #f0f0f0;
  position: relative;
}

.reviews-slide-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  position: absolute;
  top: 0;
  left: 0;
}

.reviews-slide-img-placeholder {
  width: 100%;
  height: 100%;
  background: #e0e0e0;
}

.reviews-slide-text-col {
  flex: 1;
  padding: 40px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-radius: 0;
}

.reviews-slide-image .reviews-star-rating {
  justify-content: flex-start;
}

/* Nav buttons overlaid on slider track, bottom-left corner */
.reviews-slider-image-section .reviews-slider-nav {
  position: absolute;
  bottom: 16px;
  left: 16px;
  margin-top: 0;
  gap: 12px;
  justify-content: flex-start;
  padding-left: 0;
  z-index: 10;
}

/* Add bottom padding to slides so nav buttons don't overlap content */
.reviews-slider-image-section .reviews-slide-image {
  padding-bottom: 0;
}

.reviews-slider-image-section .reviews-slide-text-col {
  padding-bottom: 72px;
}

.reviews-slider-image-section .reviews-slide-image-col {
  padding-bottom: 72px;
}

/* Button overlay on image */
.reviews-slider-image-section .reviews-button-overlay-wrapper {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 5;
  display: flex;
}

.reviews-slider-image-section .reviews-button-overlay {
  margin-top: 0;
}

@media (max-width: 768px) {
  .reviews-slide-image,
  .reviews-slide-image[data-image-position="right"] {
    flex-direction: column;
  }

  .reviews-slide-image[data-mobile-top="text"] {
    flex-direction: column-reverse;
  }

  .reviews-slide-image-col {
    flex: 0 0 auto;
    height: 240px;
  }

  .reviews-slide-text-col {
    padding: 24px;
  }

  .reviews-slider-image-section .reviews-slider-nav {
    position: absolute;
    bottom: 12px;
    left: 12px;
    justify-content: flex-start;
  }

  .reviews-slider-image-section .reviews-slide-text-col {
    padding-bottom: 72px;
  }

  .reviews-slider-image-section .reviews-slide-image-col {
    padding-bottom: 0;
  }
}
