.Banners {
    --margin: var(--gap-big);

    display: flex;
    flex-wrap: wrap;
    overflow: hidden;

    margin: calc(var(--gap-big) * -1);

    > .Banner {
        flex-basis: calc(33.33% - var(--margin) * 2);
        flex-grow: 1;
        margin: var(--margin);

        &.span2 {
            flex-basis: calc(66.66% - var(--margin) * 2);
        }
    }
}

.Banners.isolated {
    margin-top: var(--gap-biggest);
    margin-bottom: var(--gap-biggest);
}

.Banner {
    --bgColor: var(--color-background);
    --fgColor: var(--color-base);
    --fgColorLink: var(--color-accent);
    --borderColor: var(--color-base-faintest-2);
    --iconColor: var(--fgColor);

    &.onDark {
        --bgColor: transparent;
        --fgColor: var(--color-base-light);
        --fgColorLink: var(--color-accent);
        --borderColor: transparent;
    }

    &.border {
        border: solid var(--borderColor) 1px;
        box-shadow: 0 1px 3px hsla(var(--color-primary-hue), var(--color-primary-saturation), var(--color-primary-brightness), 10%);
        border-radius: var(--banner-border-radius);
    }

    background: var(--bgColor);
    box-sizing: border-box;

    transition: box-shadow 100ms ease-in-out;

    &.padding {
        padding: calc(var(--gap-bigger) * .75) var(--gap-bigger);
    }

    &:has(.hover):hover {
        box-shadow: 0 5px 8px hsla(var(--color-primary-hue), var(--color-primary-saturation), var(--color-primary-brightness), 10%);
    }

    display: flex;
    flex-direction: column;
    gap: var(--base-gap);

    color: var(--fgColor);

    > .title {
        font-family: var(--font-family-title);
        font-size: 22pt;
        font-weight: 400;
        line-height: 1.1em;
        letter-spacing: -.5px;
        text-wrap: balance;
    }

    > .subTitle {
        > a {
            color: var(--fgColorLink);
            text-decoration: none;
            &:hover {
                text-decoration: underline;
            }
        }
    }

    > .Icon {
        --fgColor: var(--iconColor);;
    }
}
