.gymful-step-cards-swiper {
  --gscs-gap: 24px;
  width: 100%;
  max-width: 100%;
  position: relative;
  overflow: visible;
}

.gymful-step-cards-swiper,
.gymful-step-cards-swiper * {
  box-sizing: border-box;
}

.gymful-step-cards-swiper .gscs-swiper {
  width: 100%;
  max-width: 100%;
  overflow: visible;
}

.gymful-step-cards-swiper .gscs-wrapper {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gscs-gap);
  align-items: stretch;
}

.gymful-step-cards-swiper:not(.is-mobile-swiper):not(.is-desktop-overflow-swiper):not(.is-desktop-fallback) .gscs-wrapper,
.gymful-step-cards-swiper.is-mobile-fallback .gscs-wrapper {
  transform: none !important;
}

.gymful-step-cards-swiper .gscs-slide {
  min-width: 0;
  width: auto;
  height: auto;
  display: flex;
}

.gymful-step-cards-swiper .gscs-card {
  width: 100%;
  min-width: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  background: #fff;
  border-radius: 8px;
  color: inherit;
  text-decoration: none;
  overflow: hidden;
  transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease, background-color .28s ease;
}

.gymful-step-cards-swiper .gscs-card:hover,
.gymful-step-cards-swiper .gscs-card:focus-visible {
  text-decoration: none;
}

.gymful-step-cards-swiper .gscs-card__media {
  width: auto;
  margin: 22px 22px 0;
  min-height: 1px;
  background: rgba(0,0,0,.04);
  border-radius: 8px;
  overflow: hidden;
}

.gymful-step-cards-swiper .gscs-card__image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
}

.gymful-step-cards-swiper .gscs-card__content {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  padding: 12px 22px 42px;
}

.gymful-step-cards-swiper .gscs-card__heading {
  display: flex;
  align-items: baseline;
  gap: .45em;
  margin: 0 0 22px;
  padding: 0;
  font-family: Cerebri Sans, Open Sans, Arial, sans-serif;
  font-size: 28px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0;
  color: #111;
}

.gymful-step-cards-swiper .gscs-card__number {
  flex: 0 0 auto;
  color: #c6b04e;
  font: inherit;
}

.gymful-step-cards-swiper .gscs-card__title {
  min-width: 0;
  font: inherit;
}

.gymful-step-cards-swiper .gscs-card__text {
  margin: 0;
  font-family: Cerebri Sans, Open Sans, Arial, sans-serif;
  font-size: 23px;
  font-weight: 400;
  line-height: 1.55;
  color: #111;
}

.gymful-step-cards-swiper .gscs-controls {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 18px;
  width: 100%;
  max-width: 100%;
  margin: 20px auto 0;
}

.gymful-step-cards-swiper .gscs-arrow {
  appearance: none;
  -webkit-appearance: none;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  color: #111;
  width: auto;
  height: auto;
  padding: 0;
  margin: 0;
  line-height: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.gymful-step-cards-swiper .gscs-arrow:hover,
.gymful-step-cards-swiper .gscs-arrow:focus,
.gymful-step-cards-swiper .gscs-arrow:active {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
}

.gymful-step-cards-swiper .gscs-arrow svg {
  width: 16px;
  height: 16px;
  display: block;
  overflow: visible;
}

.gymful-step-cards-swiper .gscs-pagination {
  position: static;
  width: auto !important;
  max-width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transform: none !important;
}

.gymful-step-cards-swiper .gscs-pagination .swiper-pagination-bullet {
  display: block;
  width: 34px;
  height: 2px;
  margin: 0 !important;
  border-radius: 999px;
  background: #a5a5a5;
  opacity: 1;
  transition: background-color .24s ease, opacity .24s ease;
}

.gymful-step-cards-swiper .gscs-pagination .swiper-pagination-bullet-active {
  background: #111;
}


/* Desktop right-overflow swiper mode.
   This is a technical layout mode only: card visuals stay controlled by the existing card styles. */
.gymful-step-cards-swiper.is-desktop-overflow-swiper,
.gymful-step-cards-swiper.is-desktop-fallback {
  overflow: visible;
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper .gscs-swiper,
.gymful-step-cards-swiper.is-desktop-fallback .gscs-swiper {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper.is-desktop-full-bleed .gscs-swiper,
.gymful-step-cards-swiper.is-desktop-fallback.is-desktop-full-bleed .gscs-swiper {
  width: var(--gscs-viewport-width, 100vw);
  max-width: var(--gscs-viewport-width, 100vw);
  margin-left: calc((100% - var(--gscs-viewport-width, 100vw)) / 2);
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper .gscs-wrapper,
.gymful-step-cards-swiper.is-desktop-fallback .gscs-wrapper {
  display: flex !important;
  grid-template-columns: none !important;
  gap: 0 !important;
  align-items: stretch;
  flex-wrap: nowrap;
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper .gscs-slide,
.gymful-step-cards-swiper.is-desktop-fallback .gscs-slide {
  width: var(--gscs-desktop-slide-width, auto);
  min-width: var(--gscs-desktop-slide-width, auto);
  max-width: var(--gscs-desktop-slide-width, none);
  flex: 0 0 var(--gscs-desktop-slide-width, auto);
  height: auto;
}

/* Desktop fallback and spacing guard.
   Real Swiper normally injects slide margins from spaceBetween; the guard class
   only activates when frontend CSS/Swiper fails to expose that spacing. */
.gymful-step-cards-swiper.is-desktop-fallback .gscs-wrapper {
  gap: var(--gscs-gap) !important;
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper.is-desktop-css-spacing .gscs-slide:not(:last-child) {
  margin-right: var(--gscs-gap) !important;
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper.is-desktop-css-spacing .gscs-slide:last-child {
  margin-right: 0 !important;
}

.gymful-step-cards-swiper.is-desktop-overflow-swiper .gscs-controls,
.gymful-step-cards-swiper.is-desktop-fallback .gscs-controls {
  display: flex;
}

.gymful-step-cards-swiper.is-desktop-fallback .gscs-wrapper {
  overflow-x: auto;
  overflow-y: visible;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-left: var(--gscs-desktop-offset-before, 0px);
  padding-right: var(--gscs-desktop-offset-after, 0px);
  scrollbar-width: none;
}

.gymful-step-cards-swiper.is-desktop-fallback .gscs-wrapper::-webkit-scrollbar {
  display: none;
}

.gymful-step-cards-swiper.is-desktop-fallback .gscs-slide {
  scroll-snap-align: start;
}

/* Mobile swiper mode is toggled by JS so desktop grid remains clean. */
.gymful-step-cards-swiper.is-mobile-swiper .gscs-swiper {
  overflow: hidden;
  max-width: 100vw;
}

.gymful-step-cards-swiper.is-mobile-swiper .gscs-swiper,
.gymful-step-cards-swiper.is-mobile-swiper .gscs-wrapper {
  touch-action: pan-y;
}

.gymful-step-cards-swiper.is-mobile-swiper .gscs-wrapper {
  display: flex;
  gap: 0;
  align-items: stretch;
}

.gymful-step-cards-swiper.is-mobile-swiper .gscs-slide {
  width: 86vw;
  height: auto;
  flex: 0 0 auto;
}

.gymful-step-cards-swiper.is-mobile-swiper .gscs-card {
  height: 100%;
}

.gymful-step-cards-swiper.is-mobile-swiper .gscs-controls,
.gymful-step-cards-swiper.is-mobile-fallback .gscs-controls {
  display: flex;
}

.gymful-step-cards-swiper.is-mobile-fallback .gscs-wrapper {
  display: flex;
  gap: var(--gscs-gap);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  transform: none !important;
}

.gymful-step-cards-swiper.is-mobile-fallback .gscs-slide {
  width: 86vw;
  flex: 0 0 86vw;
  scroll-snap-align: start;
}

@media (max-width: 1024px) {
  .gymful-step-cards-swiper .gscs-card__heading {
    font-size: 24px;
  }

  .gymful-step-cards-swiper .gscs-card__text {
    font-size: 18px;
  }
}

@media (max-width: 767px) {
  .gymful-step-cards-swiper {
    width: 100%;
    max-width: 100%;
    overflow: visible;
  }

  .gymful-step-cards-swiper .gscs-card__media {
    width: auto;
    margin: 18px 18px 0;
  }

  .gymful-step-cards-swiper .gscs-card__content {
    padding: 10px 18px 30px;
  }

  .gymful-step-cards-swiper .gscs-card__heading {
    font-size: 23px;
    margin-bottom: 16px;
  }

  .gymful-step-cards-swiper .gscs-card__text {
    font-size: 17px;
    line-height: 1.55;
  }
}

/* v1.0.2 mobile safety: mobile must never collapse to vertical cards.
   The JS-enhanced Swiper uses the same horizontal structure; if Swiper fails,
   this becomes a native horizontal touch-scroll fallback. */
@media (max-width: 767px) {
  .gymful-step-cards-swiper .gscs-swiper {
    width: 100% !important;
    max-width: 100vw !important;
    overflow: hidden !important;
  }

  .gymful-step-cards-swiper .gscs-wrapper {
    display: flex !important;
    grid-template-columns: none !important;
    align-items: stretch !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
  }

  .gymful-step-cards-swiper .gscs-slide {
    width: 86vw !important;
    max-width: 86vw !important;
    min-width: 86vw !important;
    flex: 0 0 86vw !important;
    height: auto !important;
    display: flex !important;
  }

  .gymful-step-cards-swiper .gscs-card {
    height: 100% !important;
  }

  .gymful-step-cards-swiper .gscs-controls {
    display: flex !important;
  }

  /* Native fallback when JS/Swiper is blocked or not available. */
  .gymful-step-cards-swiper:not(.swiper-initialized):not(.is-mobile-swiper):not(.is-desktop-overflow-swiper):not(.is-desktop-fallback) .gscs-swiper {
    overflow: visible !important;
  }

  .gymful-step-cards-swiper:not(.swiper-initialized):not(.is-mobile-swiper):not(.is-desktop-overflow-swiper):not(.is-desktop-fallback) .gscs-wrapper,
  .gymful-step-cards-swiper.is-mobile-fallback .gscs-wrapper {
    gap: var(--gscs-gap) !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    scroll-snap-type: x mandatory !important;
    -webkit-overflow-scrolling: touch !important;
    transform: none !important;
    scrollbar-width: none;
  }

  .gymful-step-cards-swiper:not(.swiper-initialized):not(.is-mobile-swiper):not(.is-desktop-overflow-swiper):not(.is-desktop-fallback) .gscs-wrapper::-webkit-scrollbar,
  .gymful-step-cards-swiper.is-mobile-fallback .gscs-wrapper::-webkit-scrollbar {
    display: none;
  }

  .gymful-step-cards-swiper:not(.swiper-initialized):not(.is-mobile-swiper):not(.is-desktop-overflow-swiper):not(.is-desktop-fallback) .gscs-slide,
  .gymful-step-cards-swiper.is-mobile-fallback .gscs-slide {
    scroll-snap-align: start !important;
  }

  /* Real Swiper mode: no grid/fallback scroll rules should fight Swiper transforms. */
  .gymful-step-cards-swiper.is-mobile-swiper .gscs-wrapper {
    overflow: visible !important;
    transform: translate3d(0,0,0);
  }

  .gymful-step-cards-swiper.is-mobile-swiper .gscs-slide {
    flex: 0 0 auto !important;
    min-width: 0 !important;
  }
}
