/* Post-migration CSS tweaks. Loaded after the exported Webflow CSS so these win.
   Keep this small and well-commented — it's the one place to nudge styling that
   the Webflow export got wrong once content moved to Sanity. */

/* Links inside body/rich text: match the surrounding text colour (so they stay
   readable on both light and dark sections) and underline them so they still
   read as links. Nav, buttons and card links keep their own styles. */
.w-richtext a,
.rich-text a,
.paragraph-dark a,
.blog-author-role a,
.hero-paragraph a,
.faq-paragraph a,
.card-paragraph a,
p.text-size-medium a,
.container-inner-560px a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Client logos: the original relied on the intrinsic size of tiny source PNGs.
   Re-uploaded to Sanity they serve larger, so cap them to a tidy logo-strip
   size and preserve aspect ratio. */
.logo-strip {
  max-height: 44px;
  max-width: 150px;
  width: auto;
  height: auto;
  object-fit: contain;
}

/* Services carousel — replaces the Webflow slider. Finite draggable scroll
   track (no loop, so no empty frame before reset). */
.services-carousel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 48px;
}
.services-carousel-nav {
  display: flex;
  gap: 16px;
  flex: none;
}
.services-carousel-nav .arrow-link-circle {
  cursor: pointer;
  border: none;
}
.services-carousel-nav .arrow-link-circle:disabled {
  opacity: 0.35;
  cursor: default;
}
.services-carousel-track {
  display: flex;
  gap: 24px;
  overflow-x: auto;
  /* proximity, not mandatory: mandatory refuses to rest at the true end and
     snaps back to a card boundary, leaving the last cards unreachable */
  scroll-snap-type: x proximity;
  scroll-behavior: smooth;
  -ms-overflow-style: none;
  scrollbar-width: none;
  padding-bottom: 8px;
}
.services-carousel-track::-webkit-scrollbar {
  display: none;
}
.services-carousel-track.is-dragging {
  scroll-behavior: auto;
  scroll-snap-type: none;
  cursor: grabbing;
  user-select: none;
}
.services-carousel-card {
  flex: 0 0 auto;
  width: 380px;
  max-width: 82vw;
  scroll-snap-align: start;
  margin: 0;
}
@media (max-width: 767px) {
  .services-carousel-card {
    width: 300px;
  }
}

/* Prices intro slider (dark section on service pages). */
.prices-slider-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 40px;
}
.prices-slider-nav {
  display: flex;
  gap: 16px;
  flex: none;
}
.prices-slider-nav .arrow-link-circle {
  cursor: pointer;
  border: none;
}
.prices-slider-nav .arrow-link-circle:disabled {
  opacity: 0.35;
  cursor: default;
}
.prices-slider-track {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.prices-slider-track::-webkit-scrollbar {
  display: none;
}
.prices-slide {
  flex: 0 0 100%;
  width: 100%;
  scroll-snap-align: start;
}
.prices-slider-dots {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin-top: 40px;
}
.prices-slider-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.3);
  cursor: pointer;
  padding: 0;
  transition: background 0.2s ease;
}
.prices-slider-dot.is-active {
  background: #fff;
}
.office-link-wrapper {
  margin-top: 24px;
}
.arrow-link-external-wrapper {
  gap: 12px;
  font-weight: 500;
}
.prices-book-arrow {
  width: 38px;
  height: 38px;
}

/* Areas accordion — single-open, JS-animated height (replaces Webflow ix2). */
.accordion-top {
  cursor: pointer;
}
.accordion-bottom.is-collapsed {
  height: 0;
  overflow: hidden;
  transition: height 0.3s ease;
}
.accordion-arrow {
  transition: transform 0.3s ease;
}
.accordion-item.is-open .accordion-arrow {
  transform: rotate(180deg);
}
