.icon-layout {
	width: 100%;
}

.icon-layout__outer {
	box-sizing: border-box;
	margin-left: auto;
	margin-right: auto;
	max-width: min(var(--icon-outer-max-width, 1185px), 100%);
	width: var(--icon-outer-width, 100%);
}

.icon-layout__outer--left,
.icon-layout__outer--center,
.icon-layout__outer--right {
	margin-left: auto;
	margin-right: auto;
}

/* Typolink: Headline-Styles nicht durch article a { font-size: 1.5rem } überschreiben */
.icon-layout header a {
	color: inherit;
	font-size: inherit;
	line-height: inherit;
	text-decoration: none;
}

/*
 * Layout 1 in article (z. B. Inhalt Startseite): 1:1 wie Original div.opener
 * (headlines.css). In .opener greifen weiter nur die Original-Styles.
 */
article .icon-layout:has(> .row > header h1) {
	padding-top: 12px;
}

article .icon-layout header h1 {
	font-size: calc(2.4rem + 2vw);
	line-height: 1.2em;
}

article .icon-layout header h1 + h2 {
	color: rgb(112, 97, 6);
	font-size: calc(1.325rem + 0.9vw);
	font-weight: bold;
	line-height: 1.4em;
	margin-bottom: 0.5em;
}

@media screen and (min-width: 768px) {
	article .icon-layout header h1 + h2 {
		font-size: 2.1rem;
	}
}

@media screen and (min-width: 1024px) {
	article .icon-layout header h1 {
		font-size: calc(3.5rem + 2.4vw);
	}
}

.icon-layout__wrap {
	--icon-layout-gap: 1.5rem;
}

.icon-layout__wrap::after {
	clear: both;
	content: "";
	display: table;
}

.icon-layout--beside::after {
	display: none;
}

.icon-layout__image picture {
	display: block;
	max-width: 100%;
	width: fit-content;
}

.icon-layout__image img,
.icon-layout__image picture img {
	display: block;
	height: auto;
	max-width: 100%;
	width: var(--icon-size, auto);
}

/* ---------- Above / Below (stacked) ---------- */
.icon-layout--stacked {
	--bs-gutter-x: 1rem;
}

.icon-layout--stacked .icon-layout__image.col-auto {
	flex: 0 0 var(--icon-stacked-image-width, auto);
	max-width: var(--icon-stacked-image-width, 100%);
	width: var(--icon-stacked-image-width, auto);
}

/* Nur stacked: Bildbreite behalten, links/mittig/rechts */
.icon-layout--stacked .icon-layout__image--left,
.icon-layout--stacked .icon-layout__image--center,
.icon-layout--stacked .icon-layout__image--right {
	display: flex;
}

.icon-layout--stacked .icon-layout__image--left {
	justify-content: flex-start;
}

.icon-layout--stacked .icon-layout__image--center {
	justify-content: center;
}

.icon-layout--stacked .icon-layout__image--right {
	justify-content: flex-end;
}

.icon-layout--stacked.ce-above .icon-layout__image {
	margin-bottom: var(--icon-layout-gap);
}

.icon-layout--stacked.ce-below .icon-layout__image {
	margin-top: var(--icon-layout-gap);
}

/* ---------- Im Text = Float (17/18) – Bild IM Text ---------- */
.icon-layout--float .icon-layout__text {
	display: block;
	overflow: visible;
}

.icon-layout--float .icon-layout__text::after {
	clear: both;
	content: "";
	display: table;
}

.icon-layout--float .icon-layout__image {
	max-width: 50%;
	width: auto;
}

.icon-layout--float.ce-left .icon-layout__image {
	margin: 0 var(--icon-layout-gap, 1.5rem) 0.75rem 0;
}

.icon-layout--float.ce-right .icon-layout__image {
	margin: 0 0 0.75rem var(--icon-layout-gap, 1.5rem);
}

.icon-layout--float .icon-layout__image img,
.icon-layout--float .icon-layout__image picture img {
	width: var(--icon-size, auto);
}

/* ---------- Neben dem Text = Flex (25/26) – Bildspalte = Bildbreite (px) ---------- */
.icon-layout--beside {
	align-items: flex-start;
	display: flex;
	flex-wrap: nowrap;
	gap: 0;
	width: 100%;
}

.icon-layout--beside .icon-layout__image {
	box-sizing: border-box;
	flex: 0 0 auto;
	max-width: none;
	width: auto;
}

.icon-layout--beside .icon-layout__text {
	box-sizing: border-box;
	flex: 1 1 auto;
	max-width: none;
	min-width: 0;
	width: auto;
}

.icon-layout--beside .icon-layout__image picture,
.icon-layout--beside .icon-layout__image > img,
.icon-layout--beside .icon-layout__image img {
	display: block;
	height: auto;
	max-width: none;
	width: var(--icon-size, auto);
}

.icon-layout--beside.ce-left .icon-layout__image {
	display: flex;
	justify-content: flex-start;
	margin-right: var(--icon-layout-gap, 1.5rem);
}

.icon-layout--beside.ce-right .icon-layout__image {
	display: flex;
	justify-content: flex-end;
	margin-left: var(--icon-layout-gap, 1.5rem);
}

.icon-layout__text :is(h1, h2, h3, h4, h5, h6, p) {
	margin-top: 0;
}

.icon-layout__text :is(h1, h2, h3, h4, h5, h6) + * {
	margin-top: 0.35em;
}

.icon-layout__text p {
	margin-bottom: 0.5em;
}
