.immomakler-data-list { list-style:none; margin:0; padding:0; }
/* Reset browser defaults via the label/value classes (not via `dt`/`dd` tag
   selectors) so per-instance margin/padding controls — which target the same
   classes — match this rule's specificity and win via cascade order. */
.immomakler-data-label,
.immomakler-data-value { margin:0; padding:0; font-weight:inherit; }
.immomakler-data-list--style-grid {
	display: grid;
}
.immomakler-data-list--style-flex {
	display: flex;
	flex-wrap: wrap;
}
.immomakler-data-list--style-flex .immomakler-data-box {
	flex: 1 1 auto;
	max-width: 300px;
}

/* Base box — defaults to stacked column layout; layout-modifier classes override. */
.immomakler-data-box {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	min-width: 0; /* prevents grid items from refusing to shrink below content width */
}
.immomakler-data-box .immomakler-data-label,
.immomakler-data-box .immomakler-data-value {
	min-width: 0;
	overflow-wrap: break-word;
	word-break: break-word;
}

/* Icon */
.immomakler-data-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: currentColor;
	line-height: 1;
}
.immomakler-data-icon svg {
	display: block;
	width: 1em;
	height: 1em;
}

/* ----- Layout presets ----- */

/* Stacked (vertical column) — defaults; element order configurable via --stack-order-* classes. */
.immomakler-data-list--layout-stacked .immomakler-data-box {
	display: flex;
	flex-direction: column;
}
/* Six permutations of icon (I) / label (L) / value (V) using CSS `order`. */
.immomakler-data-list--stack-order-ilv .immomakler-data-icon  { order: 1; }
.immomakler-data-list--stack-order-ilv .immomakler-data-label { order: 2; }
.immomakler-data-list--stack-order-ilv .immomakler-data-value { order: 3; }
.immomakler-data-list--stack-order-ivl .immomakler-data-icon  { order: 1; }
.immomakler-data-list--stack-order-ivl .immomakler-data-value { order: 2; }
.immomakler-data-list--stack-order-ivl .immomakler-data-label { order: 3; }
.immomakler-data-list--stack-order-liv .immomakler-data-label { order: 1; }
.immomakler-data-list--stack-order-liv .immomakler-data-icon  { order: 2; }
.immomakler-data-list--stack-order-liv .immomakler-data-value { order: 3; }
.immomakler-data-list--stack-order-lvi .immomakler-data-label { order: 1; }
.immomakler-data-list--stack-order-lvi .immomakler-data-value { order: 2; }
.immomakler-data-list--stack-order-lvi .immomakler-data-icon  { order: 3; }
.immomakler-data-list--stack-order-vil .immomakler-data-value { order: 1; }
.immomakler-data-list--stack-order-vil .immomakler-data-icon  { order: 2; }
.immomakler-data-list--stack-order-vil .immomakler-data-label { order: 3; }
.immomakler-data-list--stack-order-vli .immomakler-data-value { order: 1; }
.immomakler-data-list--stack-order-vli .immomakler-data-label { order: 2; }
.immomakler-data-list--stack-order-vli .immomakler-data-icon  { order: 3; }

/* Inline (icon left, label top-right, value bottom-right) */
.immomakler-data-list--layout-inline .immomakler-data-box {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	grid-template-rows: auto auto;
	align-items: center;
}
.immomakler-data-list--layout-inline .immomakler-data-icon {
	grid-column: 1;
	grid-row: 1 / span 2;
	align-self: center;
	margin-bottom: 0;
}
.immomakler-data-list--layout-inline .immomakler-data-label {
	grid-column: 2;
	grid-row: 1;
}
.immomakler-data-list--layout-inline .immomakler-data-value {
	grid-column: 2;
	grid-row: 2;
}

/* Mixed (icon top-left, value top-right, label below spanning) */
.immomakler-data-list--layout-mixed .immomakler-data-box {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	grid-template-rows: auto auto;
	align-items: center;
}
.immomakler-data-list--layout-mixed .immomakler-data-icon {
	grid-column: 1;
	grid-row: 1;
	align-self: center;
	margin-bottom: 0;
}
.immomakler-data-list--layout-mixed .immomakler-data-value {
	grid-column: 2;
	grid-row: 1;
}
.immomakler-data-list--layout-mixed .immomakler-data-label {
	grid-column: 1 / -1;
	grid-row: 2;
}
