.banner {
  --banner-dots-width: 6rem;
  --banner-dots-height: 3rem;
  container-name: banner / inline-size;
  background-color: var(--color-dk-raspberry);
  color: var(--color-white);
  display: grid;
  position: relative;
  min-height: 14rem;

  img {
    width: 100%;
  }
}

.banner-heading {
  display: flex;
  align-items: center;
  height: 100%;
  margin: 0;
  padding: calc(1.3 * var(--vertical-padding)) var(--responsive-padding);

  h1 {
    font-family: var(--font-family-serif);
    font-weight: 700;
    margin: 0;
  }

  &::before {
    content: '';
    display: block;
    background-image: url('/themes/custom/ai_toolkit_theme/components/block/banner/assets/banner-dots.svg');
    background-position: right top;
    height: var(--banner-dots-height);
    width: var(--banner-dots-width);
    margin-right: .75rem;
    margin-left: calc(-1 * var(--responsive-padding));
  }
}

/* With image variation */

.banner--with-image {
  position: relative;

  .media-view--banner {
    position: absolute;
    z-index: 1;
    height: 100%;
    width: 100%;

    div,
    figure {
      width: 100%;
      height: 100%;
    }
  }

  img {
    object-fit: cover;
    width: 100%;
    height: 100%;
    margin: 0;
  }

  .banner-heading {
    position: relative;
    text-shadow: 0 0 1rem var(--color-black);
    z-index: 5;
  }

  &::after {
    background: #3E0E2C99;
    content: '';
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
  }
}

@container main-canvas (min-width: 1150px) {
  .banner {
    --banner-dots-width: calc(((100% - var(--max-width-narrow)) / 2) + var(--responsive-padding));
    --banner-dots-height: 6rem;
    min-height: 15rem;
  }

  .banner-heading {
    &::before {
      width: 100%;
    }

    display: grid;
    grid-template-columns: var(--banner-dots-width) 1fr var(--banner-dots-width);
    grid-gap: 1rem;
  }
}

/* Smaller screen, dots are smaller */

@container main-canvas (max-width: 1150px) {
  .banner-heading {
    &::before {
      background-size: 7.5rem;
    }
  }
}

/* Smaller screen, dots go above the header */

@container main-canvas (max-width: 767px) {
  .banner {
    min-height: 10rem;
  }

  .banner-heading {
    --banner-dots-width: 7rem;
    flex-direction: column;
    align-items: start;
    gap: .75rem;
    padding: var(--vertical-padding) var(--responsive-padding);
  }
}
