.bonus-banner {
  position: relative;
  display: grid;
  margin-block: var(--space-section-gap);
  overflow: hidden;
  /* Mobile: pure decorative background, fixed/clamp height, cropped via cover. */
  height: clamp(240px, 55vw, 320px);
}

/* Explicit width + height (never "auto") on both axes so the <img>
   width/height HTML attributes can never override these rules and
   squish/stretch the image. */
.bonus-banner__image {
  grid-area: 1 / 1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

.bonus-banner__scrim {
  grid-area: 1 / 1;
  background: radial-gradient(ellipse at center, rgba(7, 11, 29, 0.82) 0%, rgba(7, 11, 29, 0.55) 55%, rgba(7, 11, 29, 0.28) 100%);
}

.bonus-banner__content {
  grid-area: 1 / 1;
  align-self: center;
  justify-self: center;
  display: grid;
  gap: 0.6rem;
  justify-items: center;
  text-align: center;
  padding-block: 2rem;
  max-width: 32rem;
}

.bonus-banner__eyebrow {
  color: var(--color-accent-bg);
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: var(--font-size-small);
}

.bonus-banner__amount {
  color: var(--color-heading-gold);
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-extrabold);
  line-height: 1.2;
}

@media (min-width: 768px) {
  /* Desktop/tablet: restored original behaviour — the whole banner image
     shown uncropped at its natural aspect ratio, text left-aligned.
     Mobile (<768px) keeps the fixed-height decorative-cover treatment
     and centered text above. */
  .bonus-banner {
    height: auto;
    overflow: visible;
  }

  .bonus-banner__image {
    height: auto;
    object-fit: initial;
    object-position: initial;
  }

  .bonus-banner__scrim {
    background: linear-gradient(90deg, rgba(7, 11, 29, 0.88) 0%, rgba(7, 11, 29, 0.55) 60%, rgba(7, 11, 29, 0.2) 100%);
  }

  .bonus-banner__content {
    justify-self: start;
    justify-items: start;
    text-align: left;
  }
}
