/**
 * NovaBP Custom Testimonials Slider Stylesheet
 * Matching Figma design nodes 57:1590 and 57:1600
 */

/* Main Container Wrapper */
.nova-testimonials-slider,
.nova-testimonials-container {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 24px;
  width: 100%;
  max-width: 1080px;
  margin: 0 auto;
  box-sizing: border-box;
}

/* Left Side: Thumbnail List */
.nova-testimonials__thumbs {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  gap: 12px;
  width: 160px;
  flex-shrink: 0;
  box-sizing: border-box;
}

.nova-testimonial-thumb,
.nova-testimonial-thumb img,
.nova-testimonials__thumbs img,
.nova-testimonials__thumbs .elementor-widget-image img {
  width: 100%;
  height: 100px;
  object-fit: cover;
  border-radius: 16px !important;
  filter: grayscale(100%);
  opacity: 0.6;
  cursor: pointer;
  transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  box-sizing: border-box;
  overflow: hidden !important;
  user-select: none;
  -webkit-user-drag: none;
}

.nova-testimonial-thumb:hover {
  filter: grayscale(30%);
  opacity: 0.9;
  transform: translateY(-2px);
}

.nova-testimonial-thumb.is-active,
.nova-testimonial-thumb[data-active="true"] {
  height: 180px;
  filter: grayscale(0%);
  opacity: 1;
  box-shadow: 0px 8px 24px rgba(2, 15, 50, 0.12);
}

/* Middle Side: Quote Card Container */
.nova-testimonials__card,
.nova-testimonial-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: stretch;
  flex: 1;
  min-height: 404px;
  background-color: #FFFFFF;
  border: 4px solid #DEE3EE;
  border-radius: 24px;
  padding: 32px;
  box-sizing: border-box;
  position: relative;
  transition: all 0.3s ease;
}

.nova-testimonials__card-content {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
  transition: opacity 0.35s ease, transform 0.35s ease;
}

.nova-testimonials__card-content.is-animating {
  opacity: 0;
  transform: translateY(8px);
}

/* Image Quote Icon (80px x 56px) */
.nova-testimonials__quote-icon {
  width: 80px;
  height: 56px;
  flex-shrink: 0;
  display: block;
}

.nova-testimonials__quote-icon img,
.nova-testimonials__quote-icon svg {
  width: 80px;
  height: 56px;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  display: block;
}

/* Quote Paragraph Text */
.nova-testimonials-slider .nova-testimonials__quote-text,
.nova-testimonials-container .nova-testimonials__quote-text,
body .elementor-kit-9 p.nova-testimonials__quote-text,
body p.nova-testimonials__quote-text,
.nova-testimonials__quote-text {
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  font-weight: 600 !important;
  font-size: 20px !important;
  line-height: 1.35 !important;
  color: #020F32 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/*
 * Optional headline above the quote. The Tax Planning "Why Clients Trust Us"
 * card (Figma 2284:12744) leads each slide with one; the home and Tax Advisor
 * sliders leave the field empty and print nothing. Figma draws it in the same
 * Body/xl/Semibold as the quote below it, so the two share this rule.
 */
.nova-testimonials-slider .nova-testimonials__quote-title,
body .elementor-kit-9 p.nova-testimonials__quote-title,
body p.nova-testimonials__quote-title,
.nova-testimonials__quote-title {
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  font-weight: 600 !important;
  font-size: 20px !important;
  line-height: 1.35 !important;
  color: #020F32 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Dashed Divider Meta Row (Figma Node 57:1600) */
.nova-testimonials__meta-row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: start;
  width: 100%;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1.5px dashed #DEE3EE;
  box-sizing: border-box;
  gap: 16px;
}

.nova-testimonials__author-box {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.nova-testimonials-slider .nova-testimonials__author-name,
.nova-testimonials-container .nova-testimonials__author-name,
body .elementor-kit-9 h4.nova-testimonials__author-name,
body h4.nova-testimonials__author-name,
.nova-testimonials__author-name {
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  font-weight: 700 !important;
  font-size: 16px !important;
  line-height: 1.5 !important;
  color: #020F32 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.nova-testimonials-slider .nova-testimonials__author-meta,
.nova-testimonials-container .nova-testimonials__author-meta,
body .elementor-kit-9 .nova-testimonials__author-meta,
.nova-testimonials__author-meta,
.nova-testimonials__author-role,
.nova-testimonials__author-company {
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
  font-weight: 500 !important;
  font-size: 14px !important;
  line-height: 1.3 !important;
  color: #35415F !important;
  margin: 0 !important;
  padding: 0 !important;
}

/*
 * The meta line is a row of values separated by dots (Figma 2165:8860 — row,
 * centred, 6px gap). The separators are emitted between values rather than after
 * each one, so a testimonial with only a role — or with neither field filled —
 * shows no stray dot. Flex, not inline text, because the dot has to centre
 * against the line rather than sit on the baseline.
 */
.nova-testimonials__author-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.nova-testimonials__meta-dot {
  display: inline-block;
  width: 4px;
  height: 4px;
  background-color: #6A7076;
  border-radius: 50%;
  flex-shrink: 0;
}

/* Rating Stars (Figma 57:1616: 20px x 20px, fill #09A500) */
.nova-testimonials__stars {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 4px;
  color: #09A500;
}

.nova-testimonials__stars svg,
.nova-testimonials__stars i,
.elementor-widget-star-rating .elementor-star-rating {
  width: 20px;
  height: 20px;
  fill: #09A500;
  color: #09A500;
}

.elementor-widget-star-rating i {
  font-size: 20px !important;
  color: #09A500 !important;
}

/*
 * A star past the slide's rating. Only the rows marked `data-dynamic="true"`
 * ever get this class — the older markup prints a fixed five and is untouched.
 * The `fill` on the path is a presentation attribute, which loses to any CSS
 * declaration, so no `!important` is needed to override it.
 */
.nova-testimonials__stars svg.is-empty path {
  fill: #DEE3EE;
}

/* Right Side: Scrollbar Progress Indicator Track */
.nova-testimonials__scrollbar {
  display: flex;
  flex-direction: column;
  width: 6px;
  height: 320px;
  background-color: #DEE3EE;
  border-radius: 100px;
  position: relative;
  overflow: hidden;
  flex-shrink: 0;
  cursor: pointer;
}

.nova-testimonials-slider[data-count="1"] .nova-testimonials__scrollbar,
.nova-testimonials__scrollbar[hidden],
.nova-testimonials__scrollbar.is-hidden {
  display: none !important;
}

.nova-testimonials__progress-pill {
  width: 100%;
  height: 100px;
  background-color: #021137;
  border-radius: 100px;
  position: absolute;
  top: 0;
  left: 0;
  transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  will-change: transform;
}

/* Responsive Media Queries */
@media (max-width: 1024px) {
  .nova-testimonials-slider,
  .nova-testimonials-container {
    gap: 16px;
  }

  .nova-testimonials__thumbs {
    width: 140px;
    gap: 10px;
  }

  .nova-testimonial-thumb {
    height: 90px;
  }

  .nova-testimonial-thumb.is-active,
  .nova-testimonial-thumb[data-active="true"] {
    height: 160px;
  }

  .nova-testimonials__card,
  .nova-testimonial-card {
    padding: 24px;
    min-height: 360px;
  }

  .nova-testimonials__quote-text {
    font-size: 18px;
  }
}

@media (max-width: 768px) {
  .nova-testimonials-slider,
  .nova-testimonials-container {
    flex-direction: column;
    align-items: stretch;
    gap: 20px;
  }

  /* Left thumbs become horizontal slider row on mobile */
  .nova-testimonials__thumbs {
    flex-direction: row;
    width: 100%;
    justify-content: center;
    gap: 12px;
  }

  .nova-testimonial-thumb {
    width: calc(33.33% - 8px);
    max-width: 120px;
    height: 80px;
  }

  .nova-testimonial-thumb.is-active,
  .nova-testimonial-thumb[data-active="true"] {
    height: 100px;
  }

  .nova-testimonials__card,
  .nova-testimonial-card {
    width: 100%;
    min-height: auto;
    padding: 20px;
  }

  .nova-testimonials__quote-text {
    font-size: 16px;
    line-height: 1.4;
  }

  .nova-testimonials__quote-icon,
  .nova-testimonials__quote-icon img,
  .nova-testimonials__quote-icon svg {
    width: 60px;
    height: 42px;
  }

  .nova-testimonials__meta-row {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }

  /* Right scrollbar converts to horizontal progress bar on mobile */
  .nova-testimonials__scrollbar {
    width: 100%;
    height: 6px;
    order: 3;
  }

  .nova-testimonials__progress-pill {
    height: 100%;
    width: 33.33%;
  }
}

/* ---------------------------------------------------------------------------
 * Optional section header
 *
 * Added for the Tax Advisor page, whose design (Figma 319:2748) puts an
 * eyebrow / heading / lede block over the slider. It renders only when the
 * widget's header fields are filled, so the homepage — which leaves them
 * empty — is unaffected.
 *
 * The type scale is restated here rather than pulled from novabp-tax-base.css:
 * that stylesheet is only enqueued on the Tax Advisor sections, and this widget
 * has to look right wherever it is used.
 * ------------------------------------------------------------------------ */

.nova-testimonials__header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  width: 100%;
  max-width: 800px;
  margin-inline: auto;
  margin-block-end: 80px;
  font-family: "Manrope", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  text-align: center;
}

.nova-testimonials__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
  text-transform: uppercase;
  color: #09a500;
}

/* The exported tick carries its own 2px round stroke; this only gives it room. */
.nova-testimonials__eyebrow-tick {
  display: inline-flex;
  flex: 0 0 auto;
  width: 4px;
  height: 11px;
}

.nova-testimonials__eyebrow-tick svg {
  display: block;
  width: 100%;
  height: 100%;
}

/*
 * Two-class scope and an explicit font-family / text-transform, for the same
 * reason the Tax Advisor sections do it: the Elementor Global Kit styles bare
 * `h2`, which outranks a single class and would impose Lato and Title Case.
 */
.nova-testimonials-slider__wrap .nova-testimonials__title,
.nova-testimonials__header .nova-testimonials__title {
  margin: 0;
  font-family: inherit;
  font-size: 52px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: normal;
  text-transform: none;
  color: #021137;
}

.nova-testimonials__lede {
  margin: 0;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.5;
  color: rgb(2 17 55 / 0.8);
}

@media (max-width: 1024px) {
  .nova-testimonials__header {
    gap: 16px;
    margin-block-end: 48px;
  }

  .nova-testimonials__header .nova-testimonials__title {
    font-size: 40px;
  }
}

@media (max-width: 767px) {
  .nova-testimonials__header {
    margin-block-end: 32px;
  }

  .nova-testimonials__header .nova-testimonials__title {
    font-size: 32px;
  }

  .nova-testimonials__lede {
    font-size: 16px;
  }
}
