.cards__heading {
  text-align: center;
  margin: 0 0 var(--ks-spacing-800, 40px) 0;
}
.cards__subheading {
  margin: 0 auto var(--ks-spacing-800, 40px);
  max-width: var(--ks-content-max-width-sm, 1000px);
  text-align: center;
}
.cards__subheading > :first-child { margin-top: 0; }
.cards__subheading > :last-child { margin-bottom: 0; }

.cards--grid {
  --cards-gap: var(--ks-spacing-800, 40px);
  display: flex;
  flex-wrap: wrap;
  gap: var(--cards-gap);
  align-items: stretch;
}
.cards--grid .card {
  flex-grow: 1; flex-shrink: 0;
}
.cards--two .card   {
  flex-basis: calc(50% - var(--cards-gap) / 2);
}
.cards--three .card {
  flex-basis: calc((100% - 2 * var(--cards-gap)) / 3);
}
.cards--four .card {
  flex-basis: calc((100% - 3 * var(--cards-gap)) / 4);
}

@media (max-width: 767px) {
  .cards--two .card,
  .cards--three .card,
  .cards--four .card {
    flex-basis: 100%;
  }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .cards--three .card,
  .cards--four .card {
    flex-basis: calc(50% - var(--cards-gap) / 2);
  }
}

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: var(--ks-color-surface, #fff);
  overflow: hidden;
  text-align: left;
}
.card__media--cover {
  width: 100%;
  position: relative;
  overflow: hidden;
}
.card__img--cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.card__img--natural {
  display: block;
  max-width: 100%;
  height: auto;
}
.card__media--align-center .card__img--natural {
  margin-left: auto;
  margin-right: auto;
}
.card__media--align-right .card__img--natural {
  margin-left: auto;
}
.card__body {
  display: flex;
  flex-direction: column;
  gap: var(--ks-spacing-300, 12px);
  padding: var(--ks-spacing-600, 24px);
  flex: 1 1 auto;
}
.card__eyebrow {
  width: fit-content;
}
.card__eyebrow a { color: inherit; }
.card__title {
  margin: 0;
  color: var(--ks-color-heading, #3d3936);
  font-size: var(--ks-subtitle-size, 20px);
  line-height: var(--ks-subtitle-line, 1.5);
}
.card__description { margin: 0; }
.card__description.card__description--above-link { margin-bottom: var(--ks-spacing-300, 12px); }
.card__description :last-child { margin-bottom: 0; }
.card__link {
  margin-top: auto;
  width: fit-content;
}
.card__link--tertiary {
  display: inline-flex;
  background: none;
  color: var(--ks-color-brand-primary, #008632);
  text-decoration: underline;
  font-weight: 600;
  padding: 0;
}
.card__link--inline {
  display: inline;
  width: auto;
  color: inherit;
  font-weight: inherit;
  text-decoration: underline;
}

.card--clickable { cursor: pointer; }

.cards-carousel {
  position: relative;
  padding: 0 52px;
}
.cards-carousel .splide__slide {
  height: auto;
}
.cards-carousel .splide__slide .card {
  height: 100%;
}
.cards-carousel .splide__arrow { background: var(--ks-color-brand-primary, #008632); opacity: 1; }
.cards-carousel .splide__arrow svg { fill: #fff; }
.cards-carousel .splide__arrow:disabled { opacity: 0.4; }
.cards-carousel .splide__arrow--prev { left: 0; }
.cards-carousel .splide__arrow--next { right: 0; }
.cards-carousel .splide__pagination__page.is-active { background: var(--ks-color-brand-primary, #008632); }
@media (max-width: 767px) {
  {# On mobile the side-overlay arrows would sit on top of the full-width slide. Lay the carousel
     out as a column and order the controls into a centered row below the track. Splide renders
     .splide__arrows before the track, so `order` (needs the flex parent) is what moves it down. #}
  .cards-carousel {
    padding: 0;
    display: flex;
    flex-direction: column;
  }
  .cards-carousel .splide__track { order: 1; }
  .cards-carousel .splide__arrows {
    order: 2;
    display: flex;
    justify-content: center;
    gap: var(--ks-spacing-400, 16px);
    margin-top: var(--ks-spacing-400, 16px);
  }
  .cards-carousel .splide__pagination {
    order: 3;
    position: static;
    margin-top: var(--ks-spacing-300, 12px);
  }
  .cards-carousel .splide__arrow {
    position: static;
    transform: none;
  }
}

.cards--landscape .card {
  flex-direction: row;
  align-items: flex-start;
  gap: var(--ks-spacing-400, 16px);
}
.cards--landscape .card__media {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  max-width: var(--ks-card-icon-size, 64px);
}
.cards--landscape .card__img--natural {
  max-width: 100%;
  height: auto;
  margin: 0;
}
.cards--landscape .card__body {
  padding: 0;
  gap: var(--ks-spacing-200, 8px);
}
.cards--landscape .card__title {
  font-size: var(--ks-body-large-size, 18px);
  line-height: 1.3;
}
@media (max-width: 767px) {
  .cards--landscape .card {
    flex-direction: column;
    align-items: center;
  }
}

.cards--icon-stacked .card { align-items: center; text-align: center; }
.cards--icon-stacked .card__media { flex: 0 0 auto; width: auto; min-width: 0; }
.cards--icon-stacked .card__img--natural { max-width: 100%; height: auto; margin: 0 auto; }

.card--divided .card__body { border-top: 1px solid var(--ks-color-border, #e5e3e0); }

@media (max-width: 767px) {
  .cards--landscape.cards--icon-mobile-beside .card {
    flex-direction: row;
    align-items: flex-start;
  }
}

@media (max-width: 767px) {
  .cards--icon-mobile-stack .card { text-align: center; }
}

{# Compact card padding — explicit author choice (Card padding: Compact), manual & text styles only. #}
.cards--compact .card__body { padding: var(--ks-spacing-250, 10px); }
