.fm-promo-banner {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(16rem, .88fr);
    align-items: stretch;
    min-height: var(--fm-promo-height, 230px);
    margin-top: clamp(1.2rem, 5vw, 6.35rem);
    overflow: visible;
    border-radius: var(--fm-promo-radius, 28px);
    background:
        radial-gradient(ellipse at 83% -18%, color-mix(in srgb, rgb(241 17 126) 54%, transparent) 0 8rem, transparent 8.1rem),
        radial-gradient(ellipse at 18% 120%, color-mix(in srgb, var(--fm-promo-accent, #1168ff) 38%, transparent) 0 10rem, transparent 10.1rem),
        linear-gradient(118deg,
            color-mix(in srgb, rgb(241 17 126) 18%, var(--fm-promo-bg, #eef5ff)) 0%,
            color-mix(in srgb, #ffffff 18%, var(--fm-promo-bg, #eef5ff)) 38%,
            color-mix(in srgb, var(--fm-promo-accent, #1168ff) 24%, var(--fm-promo-bg, #eef5ff)) 100%);
    isolation: isolate;
}

.fm-promo-banner::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    overflow: hidden;
    border-radius: inherit;
    background:
        linear-gradient(112deg, transparent 0 47%, color-mix(in srgb, #fff 28%, transparent) 47.2% 55%, transparent 55.2%),
        linear-gradient(126deg, transparent 0 63%, color-mix(in srgb, rgb(241 17 126) 24%, transparent) 63.2% 72%, transparent 72.2%);
}

.fm-promo-banner::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    overflow: hidden;
    border-radius: inherit;
    background-image:
        radial-gradient(circle at 7% 24%, color-mix(in srgb, #fff 58%, transparent) 0 .25rem, transparent .28rem),
        radial-gradient(circle at 30% 78%, color-mix(in srgb, rgb(241 17 126) 42%, transparent) 0 .32rem, transparent .35rem),
        radial-gradient(circle at 70% 24%, color-mix(in srgb, #fff 34%, transparent) 0 .22rem, transparent .25rem);
}

.fm-promo-banner__content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    min-width: 0;
    min-height: var(--fm-promo-height, 118px);
    padding: clamp(.82rem, 1.9vw, 1.28rem) clamp(1rem, 2.6vw, 2rem);
}

.fm-promo-banner__eyebrow {
    display: inline-flex;
    align-items: center;
    min-height: 1.45rem;
    margin-bottom: .35rem;
    padding: .24rem .58rem;
    border: 1px solid color-mix(in srgb, var(--fm-promo-accent, #1168ff) 22%, transparent);
    border-radius: 999px;
    background: color-mix(in srgb, #fff 76%, rgb(241 17 126));
    color: rgb(171 8 86);
    font-size: .68rem;
    font-weight: 700;
    line-height: 1;
}

.fm-promo-banner__title {
    max-width: 12.5em;
    margin: 0;
    color: var(--fm-promo-title, #071329);
    font-size: clamp(1.35rem, 2.2vw, 2.05rem);
    font-weight: 780;
    line-height: 1.2;
    letter-spacing: 0;
}

.fm-promo-banner__text {
    max-width: 36rem;
    margin-top: .34rem;
    color: var(--fm-promo-text, #5d6a7f);
    font-size: clamp(.86rem, 1vw, .96rem);
    font-weight: 500;
    line-height: 1.45;
}

.fm-promo-banner__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .62rem;
    min-height: 2.36rem;
    margin-top: .62rem;
    padding: .55rem .62rem .55rem .9rem;
    border: 1px solid color-mix(in srgb, var(--fm-promo-button-bg, #1168ff) 70%, #fff);
    border-radius: 999px;
    background: var(--fm-promo-button-bg, #1168ff);
    color: var(--fm-promo-button-color, #fff) !important;
    font-size: .86rem;
    font-weight: 720;
    line-height: 1;
    text-decoration: none !important;
    transition: transform .18s ease, background-color .18s ease, border-color .18s ease;
}

.fm-promo-banner__button:hover,
.fm-promo-banner__button:focus-visible {
    transform: translateY(-1px);
    background: color-mix(in srgb, var(--fm-promo-button-bg, #1168ff) 88%, #071329);
    border-color: color-mix(in srgb, var(--fm-promo-button-bg, #1168ff) 82%, #071329);
}

.fm-promo-banner__button-icon {
    display: inline-grid;
    place-items: center;
    width: 1.9rem;
    height: 1.9rem;
    border-radius: 50%;
    background: color-mix(in srgb, #fff 18%, transparent);
}

.fm-promo-banner__button-icon svg {
    width: .95rem;
    height: .95rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.fm-promo-banner__media {
    position: relative;
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    min-width: 0;
    min-height: var(--fm-promo-height, 118px);
    padding: 0 clamp(1rem, 2.4vw, 2rem) 0 0;
}

.fm-promo-banner__media::before {
    content: "";
    position: absolute;
    right: 20%;
    bottom: -10%;
    width: min(19rem, 72%);
    aspect-ratio: 1;
    border-radius: 50%;
    background: color-mix(in srgb, #fff 58%, transparent);
}

.fm-promo-banner__image {
    position: relative;
    z-index: 1;
    display: block;
    width: auto;
    max-width: min(31rem, 108%);
    max-height: calc(var(--fm-promo-height, 118px) + 10.3rem);
    margin-top: clamp(-7.1rem, -7.4vw, -1.25rem);
    object-fit: contain;
    object-position: right bottom;
}

@media (max-width: 991.98px) {
    .fm-promo-banner {
        grid-template-columns: minmax(0, 1fr) minmax(13rem, .72fr);
        min-height: max(7.6rem, calc(var(--fm-promo-height, 118px) * .92));
    }

    .fm-promo-banner__title {
        font-size: clamp(1.25rem, 3.6vw, 1.75rem);
    }

    .fm-promo-banner__text {
        font-size: .84rem;
    }
}

@media (max-width: 767.98px) {
    .fm-promo-banner {
        grid-template-columns: 1fr;
        min-height: 0;
        border-radius: min(var(--fm-promo-radius, 28px), 22px);
    }

    .fm-promo-banner__content {
        min-height: 0;
        padding: 1rem 1rem 1rem;
    }

    .fm-promo-banner__eyebrow {
        margin-bottom: .46rem;
        font-size: .72rem;
    }

    .fm-promo-banner__title {
        max-width: 100%;
        font-size: clamp(1.48rem, 7.2vw, 2rem);
        line-height: 1.02;
    }

    .fm-promo-banner__text {
        margin-top: .45rem;
        font-size: .9rem;
        line-height: 1.38;
    }

    .fm-promo-banner__button {
        width: calc(100% - .5rem);
        min-height: 2.75rem;
        margin-top: .8rem;
        margin-inline: .25rem;
    }

    .fm-promo-banner__media {
        display: none;
    }
}
