/* ------------------------------------------------------------------
   TDS Vancouver - enhancement layer
   Loaded after every captured stylesheet, on every page.
   Only the behaviour the client asked to change lives in here; the rest
   of the site keeps rendering the original markup + original CSS.
   ------------------------------------------------------------------ */

:root {
  --tds-green: #3fb922;
  --tds-green-dark: #06752e;
  --tds-ink: #14261c;
  --tds-body: #4e5652;
  --tds-surface: #f4f6f4;
  --tds-line: #e3e8e3;
  --tds-card-shadow: 0 6px 22px rgba(20, 38, 28, 0.08);
  --tds-card-shadow-hover: 0 16px 36px rgba(20, 38, 28, 0.16);
}

/* ==================================================================
   1. Home hero - phone number rendered as a call button
   ================================================================== */

.elementor .tds-hero-ctas {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 14px;
  width: 100%;
  padding: 0;
  --display: flex;
  --flex-direction: row;
  --flex-wrap: wrap;
  --align-items: center;
  --justify-content: flex-start;
  --gap: 14px;
  --width: 100%;
  --padding-top: 0px;
  --padding-bottom: 0px;
  --padding-left: 0px;
  --padding-right: 0px;
}

.elementor .tds-hero-ctas > .elementor-element {
  width: auto;
  max-width: 100%;
  --width: auto;
}

.elementor .tds-hero-ctas > .elementor-element > .elementor-widget-container {
  margin: 0 !important;
}

.elementor .tds-hero-ctas .elementor-button-wrapper {
  text-align: left;
}

.elementor .tds-phone-cta .elementor-button.tds-phone-cta__link {
  display: inline-flex;
  align-items: center;
  background-color: #ffffff;
  border: 2px solid #ffffff;
  color: var(--tds-green-dark);
  fill: var(--tds-green-dark);
  font-weight: 700;
  letter-spacing: 0.2px;
  border-radius: 8px;
  box-sizing: border-box;
  min-height: 48px;
  line-height: 1;
  padding: 0 24px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
  transition: background-color 0.25s ease, color 0.25s ease,
    border-color 0.25s ease, transform 0.25s ease;
}

.elementor .tds-phone-cta .elementor-button.tds-phone-cta__link:hover,
.elementor .tds-phone-cta .elementor-button.tds-phone-cta__link:focus {
  background-color: var(--tds-green);
  border-color: var(--tds-green);
  color: #ffffff;
  fill: #ffffff;
  transform: translateY(-2px);
}

.elementor .tds-phone-cta .elementor-button-content-wrapper {
  display: flex;
  align-items: center;
  gap: 10px;
}

.elementor .tds-phone-cta .tds-phone-cta__icon {
  display: inline-flex;
  align-items: center;
}

.elementor .tds-phone-cta .tds-phone-cta__icon svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
}

.elementor .tds-phone-cta .elementor-button-text {
  font-size: 17px;
  line-height: 1.2;
  white-space: nowrap;
}

@media (max-width: 480px) {
  .elementor .tds-hero-ctas {
    gap: 10px;
  }
  .elementor .tds-phone-cta .elementor-button.tds-phone-cta__link {
    min-height: 52px;
  }
  .elementor .tds-hero-ctas > .elementor-element {
    width: 100%;
    --width: 100%;
  }
  .elementor .tds-phone-cta .elementor-button.tds-phone-cta__link,
  .elementor .tds-hero-ctas .elementor-element-b2871a9 .elementor-button {
    width: 100%;
    justify-content: center;
  }
}

/* ==================================================================
   2. Sticky mobile call / quote bar
   ================================================================== */

.tds-mobile-cta {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9998;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 8px 8px calc(8px + env(safe-area-inset-bottom));
  background: rgba(255, 255, 255, 0.95);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-top: 1px solid var(--tds-line);
  box-shadow: 0 -4px 18px rgba(20, 38, 28, 0.1);
}

.tds-mobile-cta__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 12px 10px;
  border-radius: 3px;
  font-family: inherit;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.1;
  text-decoration: none;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.tds-mobile-cta__btn svg {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  fill: currentColor;
}

.tds-mobile-cta__btn--call {
  background: #ffffff;
  border: 2px solid var(--tds-green);
  color: var(--tds-green-dark);
}

.tds-mobile-cta__btn--call:active,
.tds-mobile-cta__btn--call:hover,
.tds-mobile-cta__btn--call:focus {
  background: var(--tds-surface);
  color: var(--tds-green-dark);
}

.tds-mobile-cta__btn--quote {
  background: var(--tds-green);
  border: 2px solid var(--tds-green);
  color: #ffffff;
}

.tds-mobile-cta__btn--quote:active,
.tds-mobile-cta__btn--quote:hover,
.tds-mobile-cta__btn--quote:focus {
  background: var(--tds-green-dark);
  border-color: var(--tds-green-dark);
  color: #ffffff;
}

@media (min-width: 1025px) {
  .tds-mobile-cta {
    display: none;
  }
}

@media (max-width: 1024px) {
  body {
    padding-bottom: calc(76px + env(safe-area-inset-bottom));
  }
}

/* ==================================================================
   3. Contact page - the form is the first thing you see
   ================================================================== */

.elementor-662 .elementor-element.elementor-element-16b4c9a9 {
  padding: 140px 0 28px 0;
}

.elementor-662 .elementor-element.elementor-element-78552f7f {
  padding-top: 44px;
}

.elementor-662 .elementor-element.elementor-element-78552f7f
  > .elementor-container {
  align-items: flex-start;
}

/* form column first, contact details second */
.elementor-662 .elementor-element.elementor-element-6245f719 {
  order: -1;
}

.elementor-662 .elementor-element.elementor-element-6a7c0cb3 {
  order: 0;
}

.elementor-662
  .elementor-element.elementor-element-6245f719
  > .elementor-element-populated {
  margin-left: 0;
  --e-column-margin-left: 0px;
}

@media (max-width: 1024px) {
  .elementor-662 .elementor-element.elementor-element-16b4c9a9 {
    padding: 112px 0 22px 0;
  }
  .elementor-662 .elementor-element.elementor-element-78552f7f {
    padding-top: 36px;
  }
}

@media (max-width: 767px) {
  .elementor-662 .elementor-element.elementor-element-16b4c9a9 {
    padding: 96px 0 18px 0;
  }
  .elementor-662 .elementor-element.elementor-element-78552f7f {
    padding-top: 28px;
  }
  .elementor-662
    .elementor-element.elementor-element-6245f719
    > .elementor-element-populated {
    margin-bottom: 40px;
  }
}

/* ==================================================================
   4. Services page - subtle link through to each service page
   ================================================================== */

.elementor .tds-service-link .elementor-button-wrapper {
  text-align: left;
}

.elementor .tds-service-link .elementor-button.tds-service-link__a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  background: none;
  background-color: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  color: var(--tds-green-dark);
  fill: var(--tds-green-dark);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.2px;
  text-transform: none;
  transition: color 0.2s ease;
}

.elementor .tds-service-link .elementor-button.tds-service-link__a:hover,
.elementor .tds-service-link .elementor-button.tds-service-link__a:focus {
  background: none;
  background-color: transparent;
  color: var(--tds-green);
  fill: var(--tds-green);
}

.elementor .tds-service-link .elementor-button-content-wrapper {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.elementor .tds-service-link .elementor-button-text {
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
}

.elementor .tds-service-link .tds-service-link__arrow {
  display: inline-flex;
  align-items: center;
  transition: transform 0.2s ease;
}

.elementor .tds-service-link .tds-service-link__arrow svg {
  width: 14px;
  height: 14px;
  stroke: currentColor;
}

.elementor .tds-service-link .tds-service-link__a:hover .tds-service-link__arrow,
.elementor
  .tds-service-link
  .tds-service-link__a:focus
  .tds-service-link__arrow {
  transform: translateX(4px);
}

/* ==================================================================
   5. FAQ block transplanted from the home page onto /about
   These eleven declarations are the ones the FAQ used to inherit from
   the home page stylesheet, re-scoped to the transplanted block.
   ================================================================== */

.tds-faq-transplant .elementor-element.elementor-element-3099fe7,
.tds-faq-transplant .elementor-element.elementor-element-3d4a47e,
.tds-faq-transplant .elementor-element.elementor-element-40e9584,
.tds-faq-transplant .elementor-element.elementor-element-bc57419,
.tds-faq-transplant .elementor-element.elementor-element-c83a789,
.tds-faq-transplant .elementor-element.elementor-element-4f83863,
.tds-faq-transplant .elementor-element.elementor-element-14de840,
.tds-faq-transplant .elementor-element.elementor-element-c84c90c {
  --display: flex;
}

.tds-faq-transplant .elementor-element.elementor-element-e9fa39a {
  text-align: center;
}

.tds-faq-transplant .elementor-element.elementor-element-6002ff0 {
  --n-accordion-title-font-size: 1rem;
  --n-accordion-item-title-space-between: 0px;
  --n-accordion-item-title-distance-from-content: 0px;
  --n-accordion-icon-size: 15px;
}

@media (min-width: 768px) {
  .tds-faq-transplant .elementor-element.elementor-element-3099fe7 {
    --content-width: 800px;
  }
}

.tds-faq-transplant {
  background: var(--tds-surface);
  padding: 8px 0 12px;
}

.tds-faq-transplant .e-n-accordion-item {
  background: #ffffff;
  border: 1px solid var(--tds-line);
  border-radius: 4px;
  margin-bottom: 10px;
  overflow: hidden;
}

.tds-faq-transplant .e-n-accordion-item-title {
  padding: 16px 18px;
  cursor: pointer;
}

.tds-faq-transplant .e-n-accordion-item[open] > .e-n-accordion-item-title {
  color: var(--tds-green-dark);
}

.tds-faq-transplant .e-n-accordion-item-title-text {
  font-weight: 600;
}

/* ==================================================================
   6. Blog hub - card grid, readable pagination
   ================================================================== */

.elementor-element-328b814 .elementor-swiper-button,
.elementor-element-328b814 .swiper-pagination {
  display: none !important;
}

.elementor-element-328b814 .elementor-widget-container,
.elementor-element-328b814 .swiper,
.elementor-element-328b814 .swiper-wrapper,
.elementor-element-328b814 .swiper-slide {
  height: auto !important;
  overflow: visible;
}

.elementor-element-328b814 .swiper-slide {
  width: 100% !important;
  margin-right: 0 !important;
}

.elementor-element-328b814 .elementor-posts-container {
  --grid-row-gap: 32px;
  --grid-column-gap: 30px;
  align-items: stretch;
}

.elementor-element-328b814 article.elementor-post {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: #ffffff;
  border: 1px solid var(--tds-line);
  border-radius: 8px;
  overflow: hidden;
  box-shadow: var(--tds-card-shadow);
  transition: transform 0.25s ease, box-shadow 0.25s ease,
    border-color 0.25s ease;
}

.elementor-element-328b814 article.elementor-post:hover {
  transform: translateY(-4px);
  box-shadow: var(--tds-card-shadow-hover);
  border-color: rgba(63, 185, 34, 0.45);
}

.elementor-element-328b814 .elementor-post__thumbnail__link {
  margin-bottom: 0 !important;
  display: block;
}

.elementor-element-328b814 .elementor-post__thumbnail {
  border-radius: 0;
  overflow: hidden;
}

.elementor-element-328b814 .elementor-post__thumbnail img {
  transition: transform 0.4s ease;
}

.elementor-element-328b814 article.elementor-post:hover
  .elementor-post__thumbnail img {
  transform: scale(1.04);
}

.elementor-element-328b814 .elementor-post__text {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  padding: 20px 22px 22px;
  margin: 0;
}

.elementor-element-328b814 .elementor-post__title {
  margin: 0 0 10px;
  font-size: 19px;
  line-height: 1.38;
  text-transform: none;
}

.elementor-element-328b814 .elementor-post__title a {
  color: var(--tds-ink);
  text-transform: none;
  transition: color 0.2s ease;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.elementor-element-328b814 .elementor-post__title a:hover,
.elementor-element-328b814 .elementor-post__title a:focus {
  color: var(--tds-green-dark);
}

.elementor-element-328b814 .elementor-post__meta-data {
  margin: 0 0 16px;
  padding: 0;
  border: 0;
  font-size: 13px;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  color: #7a8480;
}

.elementor-element-328b814 .elementor-post__read-more-wrapper {
  margin-top: auto;
}

.elementor-element-328b814 .elementor-post__read-more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.3px;
  color: var(--tds-green-dark);
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: color 0.2s ease, gap 0.2s ease;
}

.elementor-element-328b814 .elementor-post__read-more:hover,
.elementor-element-328b814 .elementor-post__read-more:focus {
  color: var(--tds-green);
  gap: 10px;
}

.elementor-element-328b814 .elementor-pagination {
  margin-top: 44px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.elementor-element-328b814 .elementor-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 14px;
  margin: 0 !important;
  border: 1px solid var(--tds-line);
  border-radius: 3px;
  background: #ffffff;
  color: var(--tds-ink);
  font-size: 15px;
  font-weight: 600;
  line-height: 1;
  transition: background-color 0.2s ease, color 0.2s ease,
    border-color 0.2s ease;
}

.elementor-element-328b814 .elementor-pagination a.page-numbers:hover,
.elementor-element-328b814 .elementor-pagination a.page-numbers:focus {
  background: var(--tds-green);
  border-color: var(--tds-green);
  color: #ffffff;
}

.elementor-element-328b814 .elementor-pagination .page-numbers.current {
  background: var(--tds-green-dark);
  border-color: var(--tds-green-dark);
  color: #ffffff;
}

.elementor-element-328b814 .elementor-pagination span.page-numbers.prev,
.elementor-element-328b814 .elementor-pagination span.page-numbers.next {
  opacity: 0.45;
}

@media (max-width: 767px) {
  .elementor-element-328b814 .elementor-post__text {
    padding: 18px 18px 20px;
  }
  .elementor-element-328b814 .elementor-pagination {
    margin-top: 32px;
  }
}

/* ==================================================================
   7. Blog article page - readable single-post layout
   ================================================================== */

/* The theme registers both the block widgets and the legacy widgets, so
   the sidebar shipped every panel twice. Keep one copy of each. */
body.single-post #secondary #search-1,
body.single-post #secondary #recent-posts-1,
body.single-post #secondary #recent-comments-1,
body.single-post #secondary #archives-1,
body.single-post #secondary #categories-1,
body.single-post #secondary #meta-1,
body.single-post #secondary #block-4 {
  display: none;
}

body.single-post #secondary .widget {
  background: #ffffff;
  border: 1px solid var(--tds-line);
  border-radius: 8px;
  padding: 22px 22px 24px;
  margin-bottom: 24px;
  box-shadow: var(--tds-card-shadow);
}

body.single-post #secondary .widget .wp-block-heading,
body.single-post #secondary .widget .widget-title,
body.single-post #secondary .widget h2 {
  margin: 0 0 14px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--tds-green);
  font-size: 18px;
  line-height: 1.3;
  color: var(--tds-ink);
}

body.single-post #secondary .widget ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

body.single-post #secondary .widget ul li {
  padding: 9px 0;
  border-bottom: 1px solid var(--tds-line);
  line-height: 1.5;
}

body.single-post #secondary .widget ul li:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

body.single-post #secondary .widget ul li a {
  color: var(--tds-body);
  font-size: 15px;
  transition: color 0.2s ease;
}

body.single-post #secondary .widget ul li a:hover,
body.single-post #secondary .widget ul li a:focus {
  color: var(--tds-green-dark);
}

body.single-post #secondary .wp-block-search__inside-wrapper {
  gap: 8px;
}

body.single-post #secondary input[type='search'] {
  border: 1px solid var(--tds-line);
  border-radius: 3px;
  padding: 10px 12px;
}

body.single-post #secondary .wp-block-search__button {
  background: var(--tds-green);
  border: 0;
  border-radius: 3px;
  color: #ffffff;
  font-weight: 700;
  padding: 10px 16px;
}

body.single-post #secondary .wp-block-search__button:hover {
  background: var(--tds-green-dark);
}

@media (min-width: 993px) {
  body.single-post #secondary .sidebar-main {
    position: sticky;
    top: 110px;
  }
}

/* article header + meta */
body.single-post .ast-single-post-order .entry-title,
body.single-post .entry-title {
  color: var(--tds-ink);
  line-height: 1.22;
}

body.single-post .entry-meta,
body.single-post .entry-meta * {
  font-size: 14px;
  color: #7a8480;
  font-weight: 500;
}

body.single-post .entry-meta a {
  color: var(--tds-green-dark);
}

body.single-post .entry-meta a:hover {
  color: var(--tds-green);
}

body.single-post .post-thumb img,
body.single-post .ast-single-post-featured-section img {
  border-radius: 8px;
}

body.single-post .entry-content {
  color: var(--tds-body);
}

body.single-post .entry-content h2 {
  margin-top: 40px;
  padding-left: 14px;
  border-left: 4px solid var(--tds-green);
  color: var(--tds-ink);
  line-height: 1.3;
}

body.single-post .entry-content h3 {
  margin-top: 30px;
  color: var(--tds-green-dark);
}

body.single-post .entry-content p,
body.single-post .entry-content li {
  line-height: 1.75;
}

body.single-post .entry-content ul li,
body.single-post .entry-content ol li {
  margin-bottom: 8px;
}

body.single-post .entry-content a {
  color: var(--tds-green-dark);
  text-decoration: underline;
  text-underline-offset: 3px;
}

body.single-post .entry-content a:hover {
  color: var(--tds-green);
}

body.single-post .entry-content blockquote {
  background: var(--tds-surface);
  border-left: 4px solid var(--tds-green);
  border-radius: 0 6px 6px 0;
  padding: 18px 22px;
  margin: 28px 0;
}

body.single-post .entry-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 26px 0;
  border: 1px solid var(--tds-line);
  border-radius: 8px;
  overflow: hidden;
}

body.single-post .entry-content table th {
  background: var(--tds-surface);
  color: var(--tds-ink);
  text-align: left;
}

body.single-post .entry-content table th,
body.single-post .entry-content table td {
  border: 1px solid var(--tds-line);
  padding: 12px 14px;
  line-height: 1.6;
}

/* previous / next */
body.single-post nav.post-navigation {
  margin: 40px 0 8px;
  padding: 0;
  border: 0;
}

body.single-post nav.post-navigation .nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

body.single-post nav.post-navigation .nav-previous,
body.single-post nav.post-navigation .nav-next {
  flex: 1 1 240px;
  background: #ffffff;
  border: 1px solid var(--tds-line);
  border-radius: 8px;
  box-shadow: var(--tds-card-shadow);
  transition: transform 0.2s ease, box-shadow 0.2s ease,
    border-color 0.2s ease;
}

body.single-post nav.post-navigation .nav-next {
  text-align: right;
}

body.single-post nav.post-navigation .nav-previous:hover,
body.single-post nav.post-navigation .nav-next:hover {
  transform: translateY(-2px);
  box-shadow: var(--tds-card-shadow-hover);
  border-color: rgba(63, 185, 34, 0.45);
}

body.single-post nav.post-navigation a {
  display: block;
  padding: 18px 20px;
  font-size: 15px;
  font-weight: 700;
  color: var(--tds-green-dark);
}

body.single-post nav.post-navigation a:hover {
  color: var(--tds-green);
}

/* comments */
body.single-post #comments {
  margin-top: 40px;
}

body.single-post #comments .comment-reply-title,
body.single-post #comments .comments-title {
  color: var(--tds-ink);
}

body.single-post #comments input[type='text'],
body.single-post #comments input[type='email'],
body.single-post #comments input[type='url'],
body.single-post #comments textarea {
  border: 1px solid var(--tds-line);
  border-radius: 4px;
  background: #ffffff;
}

body.single-post #comments input[type='text']:focus,
body.single-post #comments input[type='email']:focus,
body.single-post #comments input[type='url']:focus,
body.single-post #comments textarea:focus {
  border-color: var(--tds-green);
  outline: none;
  box-shadow: 0 0 0 3px rgba(63, 185, 34, 0.15);
}

body.single-post #comments .submit {
  background: var(--tds-green);
  border: 0;
  border-radius: 3px;
  color: #ffffff;
  font-weight: 700;
  padding: 14px 26px;
  transition: background-color 0.2s ease;
}

body.single-post #comments .submit:hover {
  background: var(--tds-green-dark);
}

/* ==================================================================
   8. Client logo carousels - continuous scroll
   (motion is driven by the carousel itself; this only removes the
   easing stutter and keeps the strip tidy)
   ================================================================== */

.tds-marquee-swiper .swiper-wrapper {
  transition-timing-function: linear !important;
}

.tds-marquee-swiper .elementor-swiper-button {
  display: none !important;
}

/* ==================================================================
   9. Client testimonials - scrolling review cards
   ================================================================== */

/* The mirrored Trust index widget renders the same three reviews as a static
   grid with no autoplay. Once the scrolling rebuild below is in the DOM the
   original grid is hidden so the reviews are never shown twice. The class is
   added by script, so if the script never runs the original stays visible. */
.tds-reviews-host .ti-widget {
  display: none !important;
}

.tds-reviews {
  width: 100%;
}

.tds-reviews__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px 18px;
  margin-bottom: 26px;
  text-align: center;
}

.tds-reviews__rating {
  display: flex;
  align-items: center;
  gap: 10px;
}

.tds-reviews__score {
  font-family: inherit;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 0.5px;
  color: var(--tds-ink);
  text-transform: uppercase;
}

.tds-reviews__stars {
  display: inline-flex;
  gap: 3px;
}

.tds-reviews__stars img,
.tds-review__stars img {
  width: 18px;
  height: 18px;
  display: block;
}

.tds-reviews__count {
  font-size: 15px;
  color: var(--tds-body);
}

.tds-reviews__count strong {
  color: var(--tds-ink);
}

.tds-reviews__brand {
  display: inline-flex;
  align-items: center;
}

.tds-reviews__brand img {
  height: 24px;
  width: auto;
  display: block;
}

.tds-reviews__viewport {
  position: relative;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0,
    #000 72px,
    #000 calc(100% - 72px),
    transparent 100%
  );
  mask-image: linear-gradient(
    to right,
    transparent 0,
    #000 72px,
    #000 calc(100% - 72px),
    transparent 100%
  );
}

.tds-reviews__track {
  display: flex;
  width: max-content;
  animation-name: tds-marquee;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
}

.tds-reviews__viewport:hover .tds-reviews__track {
  animation-play-state: paused;
}

@keyframes tds-marquee {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(-50%, 0, 0);
  }
}

.tds-review {
  flex: 0 0 auto;
  box-sizing: border-box;
  width: 360px;
  margin: 6px 12px;
  padding: 24px 24px 26px;
  background: #ffffff;
  border: 1px solid var(--tds-line);
  border-radius: 10px;
  box-shadow: var(--tds-card-shadow);
  text-align: left;
}

.tds-review__head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}

.tds-review__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  flex: 0 0 auto;
  background: var(--tds-surface);
}

.tds-review__avatar--initials {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--tds-green-dark);
  color: #ffffff;
  font-weight: 700;
  font-size: 16px;
}

.tds-review__who {
  min-width: 0;
}

.tds-review__name {
  display: block;
  font-size: 16px;
  font-weight: 700;
  color: var(--tds-ink);
  line-height: 1.3;
}

.tds-review__when {
  display: block;
  font-size: 13px;
  color: #7a8480;
}

.tds-review__source {
  margin-left: auto;
  flex: 0 0 auto;
}

.tds-review__source img {
  width: 22px;
  height: 22px;
  display: block;
}

.tds-review__stars {
  display: flex;
  gap: 2px;
  margin-bottom: 10px;
}

.tds-review__text {
  margin: 0;
  font-size: 15px;
  line-height: 1.7;
  color: var(--tds-body);
}

@media (max-width: 480px) {
  .tds-review {
    width: 290px;
    padding: 20px;
  }
  .tds-reviews__viewport {
    -webkit-mask-image: none;
    mask-image: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tds-reviews__track {
    animation: none !important;
  }
  .tds-reviews__viewport {
    overflow-x: auto;
  }
  .tds-marquee-swiper .swiper-wrapper {
    transition-timing-function: ease !important;
  }
  .elementor-element-328b814 article.elementor-post,
  body.single-post nav.post-navigation .nav-previous,
  body.single-post nav.post-navigation .nav-next {
    transition: none;
  }
}

/* ------------------------------------------------------------------ *
 * 10. STICKY SITE HEADER
 *     The header stays pinned to the top of the viewport while the
 *     visitor scrolls. Pages that use the transparent (overlay) header
 *     keep the header out of the document flow with `fixed` so the hero
 *     still shows through exactly as before; every other page uses
 *     `sticky`, so nothing shifts and no spacer is needed.
 * ------------------------------------------------------------------ */
#masthead.site-header {
  position: sticky !important;
  top: 0;
  z-index: 9990;
  transition: box-shadow 0.25s ease, background-color 0.25s ease;
}

body.ast-theme-transparent-header #masthead.site-header {
  position: fixed !important;
  left: 0;
  right: 0;
  width: 100%;
}

body.tds-header-stuck #masthead.site-header {
  box-shadow: 0 4px 18px rgba(20, 38, 28, 0.12);
}

body.ast-theme-transparent-header.tds-header-stuck #masthead.site-header,
body.ast-theme-transparent-header.tds-header-stuck #masthead .ast-primary-header-bar,
body.ast-theme-transparent-header.tds-header-stuck #masthead .ast-mobile-header-wrap {
  background-color: #ffffff !important;
}

/* a long mobile dropdown menu must stay reachable inside the pinned header */
body.ast-header-break-point #masthead.site-header {
  max-height: 100vh;
  overflow-y: auto;
  overflow-x: hidden;
}
