/**
 * @file
 * EU AI Act badges for .ai-generated / .ai-modified.
 *
 * JS wraps img/video in span.ai-* (replaced elements cannot host ::after).
 * The span is the position latch for the badge ::after.
 *
 * Absolute-fill is ONLY for true absolute media stages (media-side card,
 * hero/cta backgrounds). Containers that use display:contents on .field/
 * .media (media-top, media-full, slider) must keep the badge span in-flow
 * or Blazy placeholders never resolve.
 */

.ai-badge-parent.tile span {
  position: static;
}

/* Default latch: in-flow relative wrapper. */
span.ai-generated,
span.ai-modified {
  position: relative;
  display: block;
  width: 100%;
}

/* Absolute stages: fill the media box so contextual/media wrappers do not
   collapse the latch. */
.paragraph-media-side--card .paragraph-media-side__media > .field,
.paragraph-media-side--card .paragraph-media-side__media .field__item,
.paragraph-media-side--card .paragraph-media-side__media .blazy,
.paragraph-media-side--card .paragraph-media-side__media .media,
.paragraph-media-side--card .paragraph-media-side__media .contextual-region,
.paragraph-media-side--card .paragraph-media-side__media [data-ai-class],
.paragraph-media-side--card .paragraph-media-side__media .field--name-field-media-image,
.paragraph-media-side--card .paragraph-media-side__media .field--name-field-media-video-file,
.brm-hero__bg > .field,
.brm-hero__bg .field__item,
.brm-hero__bg .blazy,
.brm-hero__bg .media,
.brm-hero__bg .contextual-region,
.brm-hero__bg [data-ai-class],
.brm-cta-image__bg > .field,
.brm-cta-image__bg .field__item,
.brm-cta-image__bg .blazy,
.brm-cta-image__bg .media,
.brm-cta-image__bg .contextual-region,
.brm-cta-image__bg [data-ai-class] {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
}

.paragraph-media-side--card .paragraph-media-side__media span.ai-generated,
.paragraph-media-side--card .paragraph-media-side__media span.ai-modified,
.brm-hero__bg span.ai-generated,
.brm-hero__bg span.ai-modified,
.brm-cta-image__bg span.ai-generated,
.brm-cta-image__bg span.ai-modified {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

#block-bsh2025-views-block-header-slideshow-video-block-1 span.ai-generated,
#block-bsh2025-views-block-header-slideshow-video-block-1 span.ai-modified,
#block-bsh2025-headerstartseite012026-v02 span.ai-generated,
#block-bsh2025-headerstartseite012026-v02 span.ai-modified {
  position: absolute;
}

/* media-top / media-full / slider: display:contents on .field/.media.
   Keep badge span in-flow so aspect-ratio / fixed-height boxes size imgs. */
.paragraph-media-top__media,
.paragraph-media-full__media,
.paragraph-type--slider .paragraph-slider__media {
  position: relative;
}

.paragraph-media-top__media span.ai-generated,
.paragraph-media-top__media span.ai-modified,
.paragraph-media-full__media span.ai-generated,
.paragraph-media-full__media span.ai-modified,
.paragraph-type--slider .paragraph-slider__media span.ai-generated,
.paragraph-type--slider .paragraph-slider__media span.ai-modified {
  position: relative;
  display: block;
  width: 100%;
  max-width: 100%;
  height: 100%;
}

.paragraph-media-top__media span.ai-generated > img,
.paragraph-media-top__media span.ai-modified > img,
.paragraph-media-top__media span.ai-generated > video,
.paragraph-media-top__media span.ai-modified > video,
.paragraph-media-full__media span.ai-generated > img,
.paragraph-media-full__media span.ai-modified > img,
.paragraph-media-full__media span.ai-generated > video,
.paragraph-media-full__media span.ai-modified > video,
.paragraph-type--slider .paragraph-slider__media span.ai-generated > img,
.paragraph-type--slider .paragraph-slider__media span.ai-modified > img,
.paragraph-type--slider .paragraph-slider__media span.ai-generated > video,
.paragraph-type--slider .paragraph-slider__media span.ai-modified > video {
  position: static;
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: cover;
}

/* Gallery thumbs: relative latch on the photoswipe anchor. */
.paragraph-gallery__grid a.photoswipe,
.paragraph-gallery__grid .ai-badge-photoswipe {
  position: relative;
  display: block;
}

.paragraph-gallery__grid a.photoswipe span.ai-generated,
.paragraph-gallery__grid a.photoswipe span.ai-modified {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.paragraph-gallery__grid a.photoswipe span.ai-generated > img,
.paragraph-gallery__grid a.photoswipe span.ai-modified > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
}

/* Photoswipe lightbox slide badge. */
.pswp__zoom-wrap span.ai-generated,
.pswp__zoom-wrap span.ai-modified,
.pswp__content span.ai-generated,
.pswp__content span.ai-modified,
.pswp__img-container span.ai-generated,
.pswp__img-container span.ai-modified {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.pswp span.ai-generated > img.pswp__img,
.pswp span.ai-modified > img.pswp__img {
  position: absolute;
  inset: 0;
  margin: auto;
  pointer-events: auto;
}

/* In-flow wraps: image defines height. */
span.ai-generated > img,
span.ai-modified > img,
span.ai-generated > video,
span.ai-modified > video {
  display: block;
  max-width: 100%;
  height: auto;
}

/* Absolute stages: override height:auto so cover fill still works. */
.paragraph-media-side--card .paragraph-media-side__media span.ai-generated > img,
.paragraph-media-side--card .paragraph-media-side__media span.ai-modified > img,
.paragraph-media-side--card .paragraph-media-side__media span.ai-generated > video,
.paragraph-media-side--card .paragraph-media-side__media span.ai-modified > video,
.brm-hero__bg span.ai-generated > img,
.brm-hero__bg span.ai-modified > img,
.brm-hero__bg span.ai-generated > video,
.brm-hero__bg span.ai-modified > video,
.brm-cta-image__bg span.ai-generated > img,
.brm-cta-image__bg span.ai-modified > img,
.brm-cta-image__bg span.ai-generated > video,
.brm-cta-image__bg span.ai-modified > video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
}

span.ai-generated::after,
span.ai-modified::after {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  z-index: 12;
  pointer-events: none;
  display: block;
  width: 105px;
  height: 30px;
  max-width: 40%;
  background-repeat: no-repeat;
  background-position: right bottom;
  background-size: contain;
}

span.ai-generated::after {
  background-image: url('../img/label-ai-generated-black-transparent.svg');
}

span.ai-modified::after {
  background-image: url('../img/label-ai-modified-black-transparent.svg');
}

div.field--type-image-ai,
div.field--type-file-ai {
  font-size: 0;
}
