.card-banner--logo {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  text-decoration: none;
}

.card-banner--logo img {
  display: block;
  width: min(var(--card-banner-logo-width, 160px), 32vw);
  height: auto;
  max-height: 56px;
  object-fit: contain;
}

.card-banner--banner {
  position: relative;
  display: block;
  width: 100%;
  overflow: hidden;
  color: inherit;
  text-decoration: none;
}

.card-banner__image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: var(--card-banner-aspect-ratio, auto);
  object-fit: var(--card-banner-object-fit, cover);
}

.card-banner__caption {
  position: absolute;
  inset: auto 0 0;
  display: grid;
  gap: .35rem;
  padding: clamp(14px, 3vw, 32px);
  color: #fff;
  background: linear-gradient(transparent, rgba(0, 0, 0, .78));
  text-shadow: 0 1px 3px rgba(0, 0, 0, .7);
}

.card-banner__caption strong {
  font-size: clamp(1.1rem, 2.4vw, 2rem);
}

.card-banner__caption > span {
  font-size: clamp(.9rem, 1.4vw, 1.1rem);
}
