.golp-ai-frame,
.golp-ai-preview--section section:first-of-type,
.golp-ai-preview--hero.hero,
.golp-ai-preview--hero .hero,
.golp-ai-preview--carousel .visualization-carousel__slide {
  position: relative;
}

.golp-ai-label,
.golp-ai-preview--image::after,
.golp-ai-preview--section section:first-of-type::after,
.golp-ai-preview--hero.hero::after,
.golp-ai-preview--hero .hero::after,
.golp-ai-preview--carousel .visualization-carousel__slide::after {
  position: absolute;
  left: var(--golp-ai-label-left);
  right: var(--golp-ai-label-right);
  bottom: 8px;
  z-index: 3;
  pointer-events: none;
}

.golp-ai-label {
  width: max-content;
  max-width: calc(100% - 16px);
}

.golp-ai-label__text,
.golp-ai-preview--image::after,
.golp-ai-preview--section section:first-of-type::after,
.golp-ai-preview--hero.hero::after,
.golp-ai-preview--hero .hero::after,
.golp-ai-preview--carousel .visualization-carousel__slide::after {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
  padding: 0.45em 1em;
  border-radius: 999px;
  background: rgb(36 28 22 / 68%);
  color: #fff;
  font-family: Arial, sans-serif;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-transform: uppercase;
}

.golp-ai-label strong {
  color: inherit;
  font-size: 1.4em;
  font-weight: inherit;
  line-height: 1;
}

/* Keep captions below the image and leave lightbox buttons in their original figure. */
figure.wp-block-image.golp-ai-frame--image {
  display: inline-grid;
  grid-template-columns: minmax(0, 1fr);
  vertical-align: top;
}

figure.golp-ai-frame--image > :is(img, a, picture) {
  grid-area: 1 / 1;
  min-width: 0;
}

figure.golp-ai-frame--image > figcaption {
  grid-area: 2 / 1;
  min-width: 0;
  contain: inline-size;
}

figure.golp-ai-frame--image > .golp-ai-label {
  grid-area: 1 / 1 / 2 / 2;
}

.golp-ai-preview--image::after,
.golp-ai-preview--section section:first-of-type::after,
.golp-ai-preview--hero.hero::after,
.golp-ai-preview--hero .hero::after,
.golp-ai-preview--carousel .visualization-carousel__slide::after {
  width: max-content;
  max-width: calc(100% - 16px);
  content: var(--golp-ai-preview-text);
}

/* A rendered server preview can already contain the frontend label. */
.golp-ai-preview .golp-ai-frame::after {
  content: none;
}
.golp-ai-frame,
.golp-ai-preview {
  --golp-ai-label-left: auto;
  --golp-ai-label-right: 8px;
}

.golp-ai-frame--left,
.golp-ai-preview--left {
  --golp-ai-label-left: 8px;
  --golp-ai-label-right: auto;
}
