.swiper { overflow: hidden; position: relative; }
.swiper-wrapper { display: flex; transition-property: transform; box-sizing: content-box; }
.swiper-slide { flex-shrink: 0; position: relative; transition-property: transform; }

/* Swiper fade effect — slides must be stacked (absolutely positioned) */
.swiper-fade .swiper-slide {
  pointer-events: none;
  transition-property: opacity;
  position: absolute !important;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.swiper-fade .swiper-slide-active {
  pointer-events: auto;
  position: relative !important;
}
.swiper-fade .swiper-wrapper {
  /* Wrapper must not transform when using fade */
  transform: none !important;
}

/* Hide Webflow CMS "No items found" placeholders */
.w-dyn-empty {
  display: none !important;
}

/* Hide Webflow lightbox JSON script content leaking as visible text.
   The .w-json script blocks inside lightbox anchors can render as text;
   hide them directly rather than zeroing font-size on the parent. */
.w-lightbox .w-json,
.w-lightbox script.w-json {
  display: none !important;
  font-size: 0 !important;
}

/* Fix: Non-English pages wrap all CMS content in <a class="w-lightbox
   w-dyn-bind-empty"> anchors. These two Webflow base rules hide them:
   - .w-dyn-bind-empty { display: none !important }
   - .w-lightbox used to have font-size:0 (removed above)
   Override both so text content (testimonials, headings, badges) is visible. */
.w-dyn-bind-empty:not(.test-block-bottom .w-dyn-bind-empty):not(.icon-ellipse .w-dyn-bind-empty) {
  display: block !important;
  pointer-events: none;
}
.icon-ellipse .w-dyn-bind-empty {
  display: contents !important;
  pointer-events: none;
}
.w-dyn-bind-empty .block-play {
  display: none !important;
}

/* Show author avatars on non-English testimonial cards.
   Webflow CSS hides .author-avatar:lang(uk/fr/ru) but we want
   consistent avatar display across all languages. */
.test-block-top .author-avatar {
  display: block !important;
}

/* Webflow CSS sets justify-content/align-items on .icon-ellipse
   and .icon-16-size but omits display:flex, so SVGs/images inside
   are not centered. Children need display:block to avoid inline
   baseline quirks. The .w-embed clearfix pseudo-elements are
   suppressed so they don't become phantom flex children. */
.icon-ellipse {
  display: flex;
  flex-flow: row;
  place-items: center;
  place-content: center;
}
.icon-ellipse > img,
.icon-ellipse > svg {
  flex: none;
}
.icon-ellipse > .w-lightbox {
  display: contents;
}
.icon-16-size {
  display: inline-flex;
  line-height: 0;
}
.icon-16-size > svg {
  display: block;
}
.icon-ellipse.w-embed::before,
.icon-ellipse.w-embed::after,
.icon-16-size.w-embed::before,
.icon-16-size.w-embed::after {
  display: none;
}

/* CTA "Binaryx on Your Phone" — force bold title word onto its own
   left-aligned line so it doesn't inherit inline whitespace offset. */
.cta-mob-app-cta .content-block-cta {
  text-align: left;
}
.cta-mob-app-cta .heading-style-h2-s .span-bold-42 {
  display: block;
}
