/*
 * Structural rules the theme's stylesheet assumes Swiper has already provided.
 *
 * The live site loads Swiper's CSS alongside the theme's. We don't use Swiper — the
 * carousels are native scroll-snap — but the theme styles `.swiper-wrapper` and
 * `.swiper-slide` on the assumption that Swiper's base rules exist underneath. Without
 * them the wrapper is a flex item that shrinks to its content, so `.stats .swiper-slide
 * { flex: 0 1 calc(25% - 12px) }` computes 25% of the wrong width and four cards wrap
 * to three-plus-one.
 *
 * This is only the layout skeleton: no transitions, no transforms, nothing that would
 * fight the theme's own rules, which load after this and win.
 */
.swiper {
  position: relative;
  margin-left: auto;
  margin-right: auto;
  z-index: 1;
  display: block;
}

.swiper-wrapper {
  position: relative;
  width: 100%;
  height: 100%;
  z-index: 1;
  display: flex;
  box-sizing: content-box;
}

.swiper-slide {
  flex-shrink: 0;
  position: relative;
}

/* Horizontal scrolling carousels. The theme's own rules re-wrap the ones that should
   be static grids, so this only affects the genuinely scrollable ones. */
.swiper-wrapper[data-scroll-track] {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.swiper-wrapper[data-scroll-track]::-webkit-scrollbar {
  display: none;
}
.swiper-wrapper[data-scroll-track] > .swiper-slide {
  scroll-snap-align: start;
}
