.dsa-features {
  --dsa-features--gap-vertical: var(--ks-spacing-stack-l);
  --dsa-features--gap-horizontal: var(--ks-spacing-inline-m);
  --dsa-feature__title--color: var(--dsa-topic--color);
  --dsa-feature__title--font: var(--ks-font-copy-m);
  --dsa-feature__title--font-family: var(--dsa-topic--font-family);
  --dsa-feature__copy--color: var(--ks-text-color-copy);
  --dsa-feature__copy--font: var(--ks-font-copy-s);
  --dsa-feature__link--font: var(--ks-font-copy-s);
  --dsa-feature__link--font-weight: var(--dsa-link--font-weight);
  --dsa-feature__link--color: var(--dsa-link--color);
  --dsa-feature__link--gap: 0.35em;
  --dsa-feature__link--text-decoration: none;
  --dsa-feature__link--text-decoration_hover: none;
  --dsa-feature__icon--color: var(--ks-text-color-primary);
  --dsa-feature_small__icon--size: calc(var(--ks-line-height-interface-m) * var(--ks-font-size-interface-m));
  --dsa-feature_medium__icon--size-multiplier: 2;
  --dsa-feature_large__icon--size-multiplier: 2.5;
  --dsa-feature_small--gap: var(--ks-spacing-xs);
  --dsa-feature_medium--gap: var(--ks-spacing-xs);
  --dsa-feature_large--gap: var(--ks-spacing-xs);
  --dsa-feature_small__icon--gap: var(--ks-spacing-xxs);
  --dsa-feature_medium__icon--gap: var(--ks-spacing-s);
  --dsa-feature_large__icon--gap: var(--ks-spacing-s);
}

.dsa-features {
  gap: var(--dsa-features--gap-vertical, var(--ks-spacing-stack-l)) var(--dsa-features--gap-horizontal, var(--ks-spacing-inline-m));
}
.dsa-features--list {
  display: flex;
  flex-direction: column;
  gap: var(--dsa-features--gap-vertical);
}
.dsa-features--large-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
}
.dsa-features--large-tiles .dsa-feature {
  flex-basis: 300px;
  flex-grow: 1;
  flex-shrink: 0;
}
.dsa-features--small-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
.l-section--align-center .dsa-features--small-tiles {
  justify-content: center;
}
.dsa-features .dsa-feature {
  --dsa-feature_large__icon--size: calc(
    var(--dsa-feature_small__icon--size) * var(--dsa-feature_large__icon--size-multiplier, 2.5)
  );
  --dsa-feature_medium__icon--size: calc(
    var(--dsa-feature_small__icon--size) * var(--dsa-feature_medium__icon--size-multiplier, 2)
  );
  display: flex;
  position: relative;
  flex-direction: column;
  gap: var(--dsa-feature--gap);
}
.dsa-features .dsa-feature--large {
  --dsa-feature__icon--size: var(--dsa-feature_large__icon--size, calc(var(--ks-font-size-copy-m) * 2.5));
  --dsa-feature__icon--gap: var(--dsa-feature_large__icon--gap, var(--ks-spacing-xs));
  --dsa-feature--gap: var(--dsa-feature_large--gap, var(--ks-spacing-stack-s));
}
.dsa-features .dsa-feature--medium {
  --dsa-feature__icon--size: var(--dsa-feature_medium__icon--size, calc(var(--ks-font-size-copy-m) * 2));
  --dsa-feature__icon--gap: var(--dsa-feature_medium__icon--gap, var(--ks-spacing-xs));
  --dsa-feature--gap: var(--dsa-feature_medium--gap, var(--ks-spacing-stack-s));
}
.dsa-features .dsa-feature--small {
  --dsa-feature__icon--size: var(
    --dsa-feature_small__icon--size,
    calc(var(--ks-line-height-interface-m) * var(--ks-font-size-interface-m))
  );
  --dsa-feature__icon--gap: var(--dsa-feature_small__icon--gap, var(--ks-spacing-xs));
  --dsa-feature--gap: var(--dsa-feature_small--gap, var(--ks-spacing-stack-xs));
}
.dsa-features .dsa-feature--beside {
  padding-left: calc(var(--dsa-feature__icon--size) + var(--dsa-feature__icon--gap));
}
.dsa-features .dsa-feature--beside .dsa-feature__icon {
  position: absolute;
  top: 0;
  left: 0;
}
.dsa-features .dsa-feature--beside.dsa-feature--medium {
  padding-top: calc(var(--dsa-feature__icon--size) / 2 - var(--dsa-feature_small__icon--size) / 2);
}
.dsa-features .dsa-feature--stack .dsa-feature__header {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.dsa-features .dsa-feature--centered .dsa-feature__header {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.dsa-features .dsa-feature--centered .dsa-feature__title,
.dsa-features .dsa-feature--centered .dsa-feature__text {
  text-align: center;
}
.dsa-features .dsa-feature--centered .dsa-feature__cta {
  display: flex;
  justify-content: center;
}
.dsa-features .dsa-feature--centered .dsa-feature__icon {
  align-self: center;
}
.dsa-features .dsa-feature__header {
  display: flex;
  align-items: center;
  gap: var(--dsa-feature__icon--gap);
}
.dsa-features .dsa-feature__title {
  font: var(--dsa-feature__title--font, var(--ks-font-interface-m));
  color: var(--dsa-feature__title--color, var(--dsa-topic--color));
  font-family: var(--dsa-feature__title--font-family, var(--ks-font-family-display));
  font-weight: var(--dsa-feature__title--font-weight, var(--ks-font-weight-semi-bold));
}
.dsa-features .dsa-feature__text {
  color: var(--dsa-feature__copy--color, var(--ks-text-color-copy));
  font: var(--dsa-feature__copy--font, var(--ks-font-copy-s));
  margin: 0;
}
.dsa-features .dsa-feature__icon {
  color: var(--dsa-feature__icon--color, var(--ks-text-color-primary));
  width: var(--dsa-feature__icon--size);
  height: var(--dsa-feature__icon--size);
  min-width: var(--dsa-feature__icon--size);
  min-height: var(--dsa-feature__icon--size);
  flex-basis: var(--dsa-feature__icon--size);
  align-self: flex-start;
}
.dsa-features .dsa-feature__cta {
  margin-top: auto;
}
.dsa-features .dsa-feature__link {
  font: var(--dsa-feature__link--font, var(--ks-font-copy-s));
  color: var(--dsa-feature__link--color, var(--dsa-link--color));
  font-weight: var(--dsa-feature__link--font-weight, var(--dsa-link--font-weight));
  text-decoration: var(--dsa-feature__link--text-decoration, var(--dsa-link--text-decoration));
  display: flex;
  align-items: center;
  gap: var(--dsa-feature__link--gap, 0.35em);
  width: fit-content;
}
.dsa-features .dsa-feature__link:hover {
  color: var(--dsa-feature__link--color_hover, var(--dsa-link--color_hover));
  text-decoration: var(--dsa-feature__link--text-decoration_hover, var(--dsa-link--text-decoration_hover));
}
.dsa-features .dsa-feature__link .icon {
  width: 1.125em;
  height: 1.125em;
}
.dsa-features .dsa-feature__button {
  margin-top: calc(var(--dsa-feature--gap) * 0.5);
}