/**
 * iiQ Check Bewertungs-Widget
 * Progressive Disclosure (Hero → Portale → Kategorien → Gästestimmen)
 * CSS Custom Properties, Dark Mode, Reduced Motion, Mobile First
 */

/* === Custom Properties (Mobile-Basis) === */
.kw-iiq {
	--kwl-iiq-card-bg: var(--kwl-bg, #ffffff);
	--kwl-iiq-card-border: var(--kwl-border, #e2e8f0);
	--kwl-iiq-heading-color: var(--kwl-text, #1a202c);
	--kwl-iiq-score-color: var(--kwl-primary, #00315d);
	--kwl-iiq-star-color: var(--kwl-accent, #BD9B5C);
	--kwl-iiq-star-empty: var(--kwl-border, #e2e8f0);
	--kwl-iiq-bar-color: var(--kwl-primary, #00315d);
	--kwl-iiq-cat-bar-color: var(--kwl-primary-hover, #1e3a5f);
	--kwl-iiq-portal-text: var(--kwl-text-muted, #4a5568);
	--kwl-iiq-feedback-bg: var(--kwl-bg-alt, #f7fafc);
	--kwl-iiq-feedback-text: var(--kwl-text-muted, #4a5568);
	--kwl-iiq-footer-color: var(--kwl-text-muted, #64748b);
	--kwl-iiq-ring-size: 100px;

	padding: var(--kwl-space-md, 1rem);
	font-family: var(--kwl-font-body);
}

/* Card bridge (base via [data-kwl-card]) */
.kw-iiq[data-kwl-card] {
	--kwl-card-bg: var(--kwl-iiq-card-bg, var(--kwl-bg, #ffffff));
	--kwl-card-border: var(--kwl-iiq-card-border, var(--kwl-border, #e2e8f0));
}

/* === HERO Section === */
.kw-iiq__hero {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--kwl-space-md, 1rem);
	padding-bottom: var(--kwl-space-lg, 1.5rem);
}

.kw-iiq__title {
	font-family: var(--kwl-font-heading);
	font-size: var(--kwl-fsize-h3, 1.5rem);
	color: var(--kwl-iiq-heading-color);
	margin: 0 0 var(--kwl-space-sm, 0.5rem);
	line-height: var(--kwl-lh-heading, 1.2);
}

/* Score Ring */
.kw-iiq__score-ring {
	position: relative;
	width: var(--kwl-iiq-ring-size);
	height: var(--kwl-iiq-ring-size);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
}

.kw-iiq__ring-svg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	transform: rotate(-90deg);
}

.kw-iiq__ring-bg {
	fill: none;
	stroke: var(--kwl-iiq-star-empty);
	stroke-width: 6;
}

.kw-iiq__ring-fill {
	fill: none;
	stroke: var(--kwl-iiq-score-color);
	stroke-width: 6;
	stroke-linecap: round;
	transition: stroke-dashoffset 1s var(--kwl-ease-default);
}

.kw-iiq__score-value {
	font-family: var(--kwl-font-heading);
	font-size: clamp(1.5rem, 1.27rem + 0.57vw, 2rem);
	font-weight: var(--kwl-fw-bold);
	font-variant-numeric: tabular-nums;
	color: var(--kwl-iiq-score-color);
	line-height: var(--kwl-lh-none, 1);
	position: relative;
	z-index: 1;
}

.kw-iiq__score-label {
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-portal-text);
	position: relative;
	z-index: 1;
}

/* Stars */
.kw-iiq__stars {
	display: flex;
	gap: 2px;
	justify-content: center;
}

.kw-iiq__star {
	width: 20px;
	height: 20px;
}

.kw-iiq__star--full {
	fill: var(--kwl-iiq-star-color);
}

.kw-iiq__star--empty {
	fill: var(--kwl-iiq-star-empty);
}

.kw-iiq__star--half .kw-iiq__star-empty-path {
	fill: var(--kwl-iiq-star-empty);
}

.kw-iiq__star--half path:not(.kw-iiq__star-empty-path) {
	fill: var(--kwl-iiq-star-color);
}

/* Meta (Mobile: vertikal, ab Tablet: horizontal) */
.kw-iiq__meta {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--kwl-space-sm, 0.5rem);
}

.kw-iiq__count,
.kw-iiq__recommend {
	font-size: var(--kwl-fsize-body, 0.9375rem);
	color: var(--kwl-iiq-portal-text);
}

/* CTA-Positionierung (Styling via [data-kwl-btn="gradient"] in kwl-shared-components.css) */
.kw-iiq--testimonials .kw-iiq__cta {
	margin-top: var(--kwl-space-lg, 1.5rem);
}

.kw-iiq--compact .kw-iiq__cta {
	flex-shrink: 0;
}

/* === Details / Summary (Progressive Disclosure) === */
.kw-iiq__section {
	border-top: 1px solid var(--kwl-iiq-card-border);
}

.kw-iiq__section-toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--kwl-space-md, 1rem) 0;
	font-family: var(--kwl-font-heading);
	font-size: var(--kwl-fsize-body, 1.1rem);
	font-weight: var(--kwl-fw-semibold);
	color: var(--kwl-iiq-heading-color);
	cursor: pointer;
	list-style: none;
	min-height: 44px;
	user-select: none;
}

.kw-iiq__section-toggle::-webkit-details-marker {
	display: none;
}

.kw-iiq__section-toggle::after {
	content: '';
	width: 10px;
	height: 10px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform var(--kwl-transition);
	flex-shrink: 0;
	margin-left: var(--kwl-space-sm, 0.5rem);
}

.kw-iiq__section[open] > .kw-iiq__section-toggle::after {
	transform: rotate(-135deg);
	border-color: var(--kwl-accent, #BD9B5C);
}

.kw-iiq__section-toggle:focus-visible {
	outline: 3px solid var(--kwl-focus, #7B6835);
	outline-offset: 2px;
}

/* Smooth expand via grid */
.kw-iiq__section-content {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows 300ms var(--kwl-ease-default);
}

.kw-iiq__section[open] > .kw-iiq__section-content {
	grid-template-rows: 1fr;
}

.kw-iiq__section-content > * {
	overflow: hidden;
}

/* === Portale (Mobile: 1-spaltig, ab Tablet: 3-spaltig Grid) === */
.kw-iiq__portals {
	display: flex;
	flex-direction: column;
	gap: var(--kwl-space-sm, 0.5rem);
	padding-bottom: var(--kwl-space-md, 1rem);
}

.kw-iiq__portal {
	display: grid;
	grid-template-columns: 1fr;
	align-items: center;
	gap: 4px;
}

.kw-iiq__portal-name {
	font-size: var(--kwl-fsize-body, 0.9375rem);
	color: var(--kwl-iiq-portal-text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.kw-iiq__portal-bar {
	height: 8px;
	background-color: var(--kwl-iiq-star-empty);
	border-radius: var(--kwl-radius-full, 9999px);
	overflow: hidden;
	grid-column: 1 / -1;
}

.kw-iiq__portal-fill {
	height: 100%;
	width: var(--kwl-iiq-bar-pct, 0%);
	background-color: var(--kwl-iiq-bar-color);
	border-radius: var(--kwl-radius-full, 9999px);
	transition: width 800ms var(--kwl-ease-default);
}

.kw-iiq__portal-score {
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-portal-text);
	font-weight: var(--kwl-fw-semibold);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	min-width: 60px;
}

/* === Kategorien (gleiche Grid-Struktur wie Portale) === */
.kw-iiq__categories {
	display: flex;
	flex-direction: column;
	gap: var(--kwl-space-sm, 0.5rem);
	padding-bottom: var(--kwl-space-md, 1rem);
}

.kw-iiq__cat {
	display: grid;
	grid-template-columns: 1fr;
	align-items: center;
	gap: 4px;
}

.kw-iiq__cat-name {
	font-size: var(--kwl-fsize-body, 0.9375rem);
	color: var(--kwl-iiq-portal-text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.kw-iiq__cat-bar {
	height: 8px;
	background-color: var(--kwl-iiq-star-empty);
	border-radius: var(--kwl-radius-full, 9999px);
	overflow: hidden;
	grid-column: 1 / -1;
}

.kw-iiq__cat-fill {
	height: 100%;
	width: var(--kwl-iiq-cat-pct, 0%);
	background-color: var(--kwl-iiq-cat-bar-color);
	border-radius: var(--kwl-radius-full, 9999px);
	transition: width 800ms var(--kwl-ease-default);
}

.kw-iiq__cat-score {
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-portal-text);
	font-weight: var(--kwl-fw-semibold);
	font-variant-numeric: tabular-nums;
	min-width: 30px;
}

/* === Gästestimmen === */
.kw-iiq__feedbacks {
	display: flex;
	flex-direction: column;
	gap: var(--kwl-space-md, 1rem);
	padding-bottom: var(--kwl-space-md, 1rem);
}

.kw-iiq__feedback {
	background-color: var(--kwl-iiq-feedback-bg);
	border-radius: var(--kwl-radius-md, 8px);
	padding: var(--kwl-space-md, 1rem);
	margin: 0;
	border-left: 3px solid var(--kwl-accent, #BD9B5C);
	transition: transform var(--kwl-transition), box-shadow var(--kwl-transition);
}

@media (hover: hover) {
	.kw-iiq__feedback:hover {
		transform: translateY(-1px);
		box-shadow: var(--kwl-shadow-md);
	}
}

.kw-iiq__feedback p {
	font-size: var(--kwl-fsize-body, 0.9375rem);
	color: var(--kwl-iiq-feedback-text);
	line-height: var(--kwl-lh-body, 1.5);
	margin: 0 0 var(--kwl-space-sm, 0.5rem);
	font-style: italic;
}

.kw-iiq__feedback-footer {
	display: flex;
	align-items: center;
	gap: var(--kwl-space-md, 1rem);
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-portal-text);
}

.kw-iiq__feedback-score {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-weight: var(--kwl-fw-semibold);
}

.kw-iiq__feedback-score .kw-iiq__star {
	width: 14px;
	height: 14px;
}

/* === Footer (Mobile: vertikal, ab Desktop: horizontal) === */
.kw-iiq__footer {
	display: flex;
	flex-direction: column;
	text-align: center;
	gap: var(--kwl-space-sm, 0.5rem);
	padding-top: var(--kwl-space-md, 1rem);
	border-top: 1px solid var(--kwl-iiq-card-border);
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-footer-color);
}

.kw-iiq__source {
	opacity: 0.7;
}

/* ===================================================================
   TESTIMONIALS SKIN
   =================================================================== */

.kw-iiq--testimonials {
	--kwl-iiq-testi-bg: var(--kwl-bg-alt, #f7fafc);
	--kwl-iiq-testi-border: var(--kwl-border, #e2e8f0);
	--kwl-iiq-testi-text: var(--kwl-text-muted, #4a5568);
	--kwl-iiq-testi-quote-color: var(--kwl-border, #e2e8f0);

	text-align: center;
	overflow: hidden;
}

/* Mini-Score-Badge */
.kw-iiq__testi-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: var(--kwl-space-sm, 0.5rem);
	margin-bottom: var(--kwl-space-lg, 1.5rem);
}

.kw-iiq__testi-score {
	font-family: var(--kwl-font-heading);
	font-size: var(--kwl-fsize-display-sm);
	font-weight: var(--kwl-fw-bold);
	font-variant-numeric: tabular-nums;
	color: var(--kwl-iiq-score-color);
}

.kw-iiq__testi-count {
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-portal-text);
}

.kw-iiq__testi-badge .kw-iiq__stars {
	gap: 1px;
}

.kw-iiq__testi-badge .kw-iiq__star {
	width: 16px;
	height: 16px;
}

/* Scroll-Wrapper: Container + Navigations-Buttons */
.kw-iiq__scroll-wrapper {
	position: relative;
	display: flex;
	align-items: center;
	gap: var(--kwl-space-sm, 0.5rem);
}

/* Scroll-Container */
.kw-iiq__scroll-container {
	overflow-x: auto;
	flex: 1;
	min-width: 0;
}

/* Fade-Gradient Swipe-Indikator (Mobile: Scrollbar-Hinweis) */
.kw-iiq__scroll-wrapper::before,
.kw-iiq__scroll-wrapper::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	width: 24px;
	pointer-events: none;
	z-index: 2;
}

.kw-iiq__scroll-wrapper::before {
	left: 0;
	background: linear-gradient(to right, var(--kwl-iiq-card-bg, var(--kwl-bg, #ffffff)), transparent);
}

.kw-iiq__scroll-wrapper::after {
	right: 0;
	background: linear-gradient(to left, var(--kwl-iiq-card-bg, var(--kwl-bg, #ffffff)), transparent);
}

/* Scroll-Track: JS steuert transform */
.kw-iiq__scroll-track {
	display: flex;
	gap: var(--kwl-space-lg, 1.5rem);
	width: max-content;
}

/* Navigations-Buttons (Prev/Next) — auf Mobile versteckt, ab Tablet sichtbar */
.kw-iiq__scroll-btn {
	display: none;
}

/* Pause/Play-Button (WCAG 2.2.2) — Overlay rechts unten im Scroll-Wrapper */
/* Spezifität (0,2,0) gegen Elementor V4 Button-Overrides */
.kw-iiq .kw-iiq__pause-btn {
	position: absolute;
	right: var(--kwl-space-sm, 0.5rem);
	bottom: var(--kwl-space-sm, 0.5rem);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border: 1px solid color-mix(in srgb, var(--kwl-iiq-card-border) 50%, transparent);
	border-radius: var(--kwl-radius-full, 9999px);
	background-color: color-mix(in srgb, var(--kwl-iiq-card-bg) 90%, transparent);
	color: var(--kwl-iiq-portal-text);
	cursor: pointer;
	padding: 0;
	z-index: 3;
	opacity: 0.7;
	transition: opacity var(--kwl-transition), color var(--kwl-transition), border-color var(--kwl-transition);
}

@supports (backdrop-filter: blur(8px)) {
	.kw-iiq .kw-iiq__pause-btn {
		backdrop-filter: blur(8px);
		-webkit-backdrop-filter: blur(8px);
	}
}

@media (hover: hover) {
	.kw-iiq .kw-iiq__pause-btn:hover {
		opacity: 1;
		color: var(--kwl-accent, #BD9B5C);
		border-color: var(--kwl-accent, #BD9B5C);
		background-color: color-mix(in srgb, var(--kwl-iiq-card-bg) 90%, transparent);
	}
}

.kw-iiq .kw-iiq__pause-btn:focus-visible {
	opacity: 1;
	outline: 3px solid var(--kwl-focus, #7B6835);
	outline-offset: 2px;
}

.kw-iiq .kw-iiq__pause-btn:not([aria-pressed="true"]):focus:not(:hover) {
	background-color: color-mix(in srgb, var(--kwl-iiq-card-bg) 90%, transparent);
	border-color: color-mix(in srgb, var(--kwl-iiq-card-border) 50%, transparent);
	color: var(--kwl-iiq-portal-text);
}

.kw-iiq .kw-iiq__pause-btn[aria-pressed="true"]:focus:not(:hover) {
	background-color: color-mix(in srgb, var(--kwl-iiq-card-bg) 90%, transparent);
	border-color: var(--kwl-accent, #BD9B5C);
	color: var(--kwl-accent, #BD9B5C);
}

.kw-iiq .kw-iiq__pause-btn svg {
	width: 14px;
	height: 14px;
	min-width: 14px;
	min-height: 14px;
	fill: currentColor;
	display: block;
	pointer-events: none;
}

/* Play-Icon initial verborgen — JS steuert Umschaltung via style.display */
.kw-iiq__play-icon {
	display: none;
}

.kw-iiq .kw-iiq__pause-btn[aria-pressed="true"] {
	opacity: 1;
	color: var(--kwl-accent, #BD9B5C);
	border-color: var(--kwl-accent, #BD9B5C);
}

/* Testimonial-Card — Tiefe + Hover-Lift */
.kw-iiq__testi-card {
	min-width: 260px;
	max-width: 340px;
	background: var(--kwl-iiq-testi-bg);
	border-radius: var(--kwl-radius-lg, 12px);
	padding: var(--kwl-space-lg, 1.5rem);
	border: 1px solid var(--kwl-iiq-testi-border);
	margin: 0;
	text-align: left;
	flex-shrink: 0;
	box-shadow: var(--kwl-shadow-sm);
	transition: transform var(--kwl-transition), box-shadow var(--kwl-transition), border-color var(--kwl-transition);
}

@media (hover: hover) {
	.kw-iiq__testi-card:hover {
		transform: translateY(-2px);
		box-shadow: var(--kwl-shadow-lg);
		border-color: color-mix(in srgb, var(--kwl-accent, #BD9B5C) 30%, var(--kwl-iiq-testi-border));
	}
}

.kw-iiq__testi-card p {
	font-size: var(--kwl-fsize-body, 0.9375rem);
	color: var(--kwl-iiq-testi-text);
	line-height: var(--kwl-lh-body, 1.5);
	margin: var(--kwl-space-sm, 0.5rem) 0;
	font-style: italic;
}

/* Dekoratives Anführungszeichen — Gold-Akzent */
.kw-iiq__testi-quote {
	font-size: var(--kwl-fsize-display);
	color: var(--kwl-accent, #BD9B5C);
	opacity: 0.6;
	line-height: var(--kwl-lh-none, 1);
	display: block;
}

/* Feedback-Sterne innerhalb der Testimonial-Card */
.kw-iiq__testi-stars {
	display: flex;
	gap: 1px;
}

.kw-iiq__testi-stars .kw-iiq__star {
	width: 14px;
	height: 14px;
}

/* Testimonial-Card Footer (Datum) */
.kw-iiq__testi-card footer {
	margin-top: var(--kwl-space-sm, 0.5rem);
	font-size: var(--kwl-fsize-caption, 0.75rem);
	color: var(--kwl-iiq-portal-text);
}

/* ===================================================================
   COMPACT SKIN (Footer)
   =================================================================== */

.kw-iiq--compact {
	--kwl-iiq-ring-size: 80px;
	--kwl-iiq-compact-bg: var(--kwl-iiq-card-bg);
	--kwl-iiq-compact-border: var(--kwl-iiq-card-border);

	background-color: var(--kwl-iiq-compact-bg);
	border-color: var(--kwl-iiq-compact-border);
	padding: var(--kwl-space-md, 1rem);
}

.kw-iiq__compact-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: var(--kwl-space-lg, 1.5rem);
}

.kw-iiq--compact .kw-iiq__score-ring {
	flex-shrink: 0;
}

.kw-iiq--compact .kw-iiq__score-value {
	font-size: var(--kwl-fsize-display-sm);
}

.kw-iiq__compact-info {
	flex: 1;
	min-width: 0;
}

.kw-iiq--compact .kw-iiq__title {
	font-size: var(--kwl-fsize-h4, 1.25rem);
	margin: 0 0 var(--kwl-space-xs, 0.25rem);
}

.kw-iiq--compact .kw-iiq__stars {
	justify-content: center;
	margin-bottom: var(--kwl-space-xs, 0.25rem);
}

.kw-iiq--compact .kw-iiq__star {
	width: 18px;
	height: 18px;
}

.kw-iiq--compact .kw-iiq__meta {
	justify-content: center;
	gap: var(--kwl-space-sm, 0.5rem);
}

.kw-iiq--compact .kw-iiq__count,
.kw-iiq--compact .kw-iiq__recommend {
	font-size: var(--kwl-fsize-body, 0.9375rem);
}

/* === Dark Mode === */
@media (prefers-color-scheme: dark) {
	.kw-iiq {
		--kwl-iiq-score-color: var(--kwl-primary, #63b3ed);
		--kwl-iiq-bar-color: var(--kwl-primary, #63b3ed);
		--kwl-iiq-cat-bar-color: var(--kwl-primary-hover, #4299e1);
		--kwl-iiq-portal-text: var(--kwl-text-muted, #cbd5e0);
		--kwl-iiq-feedback-text: var(--kwl-text, #e2e8f0);
	}

	.kw-iiq__section-toggle:focus-visible {
		outline-color: var(--kwl-focus, #c9a84c);
	}

	/* Testimonials Dark Mode */
	.kw-iiq--testimonials {
		--kwl-iiq-testi-text: var(--kwl-text, #e2e8f0);
	}

	.kw-iiq__scroll-btn {
		background: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-border, #4a5568);
		color: var(--kwl-text, #e2e8f0);
	}

	.kw-iiq__scroll-btn:focus:not(:focus-visible) {
		background: var(--kwl-bg-alt, #2d3748);
	}

	@media (hover: hover) {
		.kw-iiq__scroll-btn:hover {
			background-color: var(--kwl-border, #4a5568);
		}
	}

	.kw-iiq__scroll-btn:focus-visible {
		outline-color: var(--kwl-focus, #c9a84c);
	}

	.kw-iiq .kw-iiq__scroll-icon path {
		fill: var(--kwl-text, #e2e8f0);
	}

	.kw-iiq .kw-iiq__pause-btn {
		background-color: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-border, #4a5568);
		color: var(--kwl-text-muted, #cbd5e0);
	}

	@media (hover: hover) {
		.kw-iiq .kw-iiq__pause-btn:hover {
			background-color: var(--kwl-bg-alt, #2d3748);
		}
	}

	.kw-iiq .kw-iiq__pause-btn:focus-visible {
		outline-color: var(--kwl-focus, #c9a84c);
	}

	.kw-iiq .kw-iiq__pause-btn:not([aria-pressed="true"]):focus:not(:hover) {
		background-color: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-border, #4a5568);
		color: var(--kwl-text-muted, #cbd5e0);
	}

	.kw-iiq .kw-iiq__pause-btn[aria-pressed="true"]:focus:not(:hover) {
		background-color: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-accent, #BD9B5C);
		color: var(--kwl-accent, #BD9B5C);
	}

	/* Fade-Indikatoren im Dark Mode */
	.kw-iiq__scroll-wrapper::before {
		background: linear-gradient(to right, var(--kwl-iiq-card-bg, var(--kwl-bg, #1a202c)), transparent);
	}

	.kw-iiq__scroll-wrapper::after {
		background: linear-gradient(to left, var(--kwl-iiq-card-bg, var(--kwl-bg, #1a202c)), transparent);
	}

	/* Score-Ring-Glow — rgba() im Dark Mode */
	.kw-iiq__ring-fill {
		filter: drop-shadow(0 0 6px rgba(99, 179, 237, 0.4));
	}
}

/* === Responsive: Tablet (min-width: 481px) === */
@media (min-width: 481px) {
	.kw-iiq {
		padding: var(--kwl-space-lg, 1.5rem);
	}

	.kw-iiq__portal,
	.kw-iiq__cat {
		grid-template-columns: 100px 1fr auto;
		gap: var(--kwl-space-sm, 0.5rem);
	}

	.kw-iiq__portal-bar,
	.kw-iiq__cat-bar {
		grid-column: auto;
	}

	.kw-iiq__portal-score,
	.kw-iiq__cat-score {
		text-align: right;
	}

	.kw-iiq__meta {
		flex-direction: row;
		flex-wrap: wrap;
		gap: var(--kwl-space-sm, 0.5rem) var(--kwl-space-md, 1rem);
		justify-content: center;
	}

	.kw-iiq__testi-card {
		min-width: 280px;
	}

	/* Scroll-Buttons ab Tablet sichtbar */
	.kw-iiq__scroll-btn {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		border: 1px solid color-mix(in srgb, var(--kwl-iiq-card-border) 60%, transparent);
		border-radius: var(--kwl-radius-full, 9999px);
		background: color-mix(in srgb, var(--kwl-iiq-card-bg) 85%, transparent);
		color: var(--kwl-iiq-heading-color);
		cursor: pointer;
		flex-shrink: 0;
		transition: background-color var(--kwl-transition), transform var(--kwl-transition), box-shadow var(--kwl-transition);
		z-index: 1;
	}

	@supports (backdrop-filter: blur(12px)) {
		.kw-iiq__scroll-btn {
			backdrop-filter: blur(12px);
			-webkit-backdrop-filter: blur(12px);
		}
	}

	@media (hover: hover) {
		.kw-iiq__scroll-btn:hover {
			background-color: color-mix(in srgb, var(--kwl-iiq-card-bg) 95%, transparent);
			transform: scale(1.08);
			box-shadow: var(--kwl-shadow-md);
		}
	}

	.kw-iiq__scroll-btn:active {
		transform: scale(0.95);
	}

	.kw-iiq__scroll-btn:focus:not(:focus-visible) {
		background: var(--kwl-iiq-card-bg);
		transform: none;
	}

	.kw-iiq__scroll-btn:focus-visible {
		outline: 3px solid var(--kwl-focus, #7B6835);
		outline-offset: 2px;
	}

	/* Scroll-Container: overflow hidden, JS steuert Transform */
	.kw-iiq__scroll-container {
		overflow: hidden;
	}

	/* Fade-Indikatoren ab Tablet ausblenden (Buttons übernehmen) */
	.kw-iiq__scroll-wrapper::before,
	.kw-iiq__scroll-wrapper::after {
		display: none;
	}

	/* Pfeil-Icons */
	.kw-iiq .kw-iiq__scroll-icon {
		width: 24px;
		height: 24px;
		min-width: 24px;
		min-height: 24px;
		pointer-events: none;
		flex-shrink: 0;
	}

	.kw-iiq .kw-iiq__scroll-icon path {
		fill: currentColor;
	}

	/* Compact: Mehr Padding ab Tablet */
	.kw-iiq--compact {
		padding: var(--kwl-space-lg, 1.5rem) var(--kwl-space-xl, 2rem);
	}
}

/* === Responsive: Desktop (min-width: 769px) === */
@media (min-width: 769px) {
	.kw-iiq {
		padding: var(--kwl-space-xl, 2rem);
		--kwl-iiq-ring-size: 120px;
	}

	.kw-iiq__portal,
	.kw-iiq__cat {
		grid-template-columns: 140px 1fr auto;
	}

	.kw-iiq__footer {
		flex-direction: row;
		justify-content: space-between;
		text-align: left;
	}

	/* Compact: Horizontal ab Desktop */
	.kw-iiq__compact-inner {
		flex-direction: row;
		text-align: left;
	}

	.kw-iiq--compact .kw-iiq__stars {
		justify-content: flex-start;
	}

	.kw-iiq--compact .kw-iiq__meta {
		justify-content: flex-start;
	}
}

/* ===================================================================
   FOCUS SKIN — Continuous Marquee mit Proximity-Effekt (§341)
   =================================================================== */

/* @property außerhalb von @layer — CSS kann Proximity als Number
   typen und interpolieren, Browser optimiert Compositing besser.
   initial-value: 1 = scharf. JS reduziert fuer Karten ausserhalb der
   Mitte. Default "scharf" verhindert, dass bei JS-Race-Conditions
   (Messung vor validem Layout) alle Karten geblurrt sichtbar bleiben. */
@property --kwl-card-proximity {
	syntax: '<number>';
	inherits: false;
	initial-value: 1;
}

@layer kwl-iiq-focus {
	.kw-iiq--focus {
		--kwl-iiq-focus-accent: var(--kwl-accent, #BD9B5C);
		--kwl-iiq-focus-card-bg: var(--kwl-bg-alt, #f7fafc);
		--kwl-iiq-focus-card-border: var(--kwl-border, #e2e8f0);
		--kwl-iiq-focus-card-text: var(--kwl-text, #1a202c);
		--kwl-iiq-focus-card-meta: var(--kwl-text-muted, #4a5568);
		--kwl-iiq-focus-quote-color: color-mix(in srgb, var(--kwl-accent, #BD9B5C) 35%, transparent);
		--kwl-iiq-focus-gap: clamp(1rem, 2vw, 1.75rem);

		container-type: inline-size;
		container-name: kw-iiq-focus;
		padding: clamp(1rem, 3vw, 2rem);
		display: flex;
		flex-direction: column;
		gap: clamp(1rem, 2.5vw, 1.75rem);
	}

	/* V4-Pink-Reset wird vom shared data-kwl-link-scope übernommen
	   (siehe kwl-shared-components.css, §322). Spezifität (0,3,1).
	   Eigene Button-Styles brauchen ≥(0,4,0) um zu gewinnen. */

	/* Header: Titel zentriert, Sub-Zeile dezent darunter ------------- */
	.kw-iiq__focus-header {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: var(--kwl-space-xs, 0.375rem);
		text-align: center;
	}

	.kw-iiq--focus .kw-iiq__focus-title {
		margin: 0;
		font-size: clamp(1.5rem, 1.1vw + 1.25rem, 2rem);
		letter-spacing: var(--kwl-ls-subtle, -0.005em);
	}

	.kw-iiq__focus-subtitle {
		display: inline-flex;
		align-items: center;
		gap: var(--kwl-space-xs, 0.375rem);
		flex-wrap: wrap;
		justify-content: center;
		font-size: var(--kwl-fsize-caption, 0.8125rem);
		color: var(--kwl-iiq-portal-text);
		opacity: 0.85;
	}

	.kw-iiq__focus-score {
		font-family: var(--kwl-font-heading);
		font-size: var(--kwl-fsize-body, 1rem);
		font-weight: var(--kwl-fw-semibold);
		font-variant-numeric: tabular-nums;
		color: var(--kwl-iiq-score-color);
		line-height: var(--kwl-lh-none, 1);
	}

	.kw-iiq__focus-subtitle .kw-iiq__focus-stars {
		gap: 2px;
	}

	.kw-iiq__focus-subtitle .kw-iiq__star {
		width: 14px;
		height: 14px;
	}

	.kw-iiq__focus-subtitle-sep {
		opacity: 0.5;
		padding-inline: 2px;
	}

	.kw-iiq__focus-count {
		font-variant-numeric: tabular-nums;
	}

	.kw-iiq__focus-subtitle:focus-visible {
		outline: 3px solid var(--kwl-focus, #7B6835);
		outline-offset: 3px;
		border-radius: var(--kwl-radius-sm, 4px);
	}


	/* Viewport + Scroll-Snap Track ------------------------------------ */
	.kw-iiq__focus-viewport {
		position: relative;
		overflow: hidden;
		margin-inline: calc(var(--kwl-iiq-focus-gap) * -0.5);
	}

	/* Fade-Masken an den Rändern (andeuten dass weitere Karten kommen) */
	@supports (mask-image: linear-gradient(black, black)) {
		.kw-iiq__focus-viewport {
			mask-image: linear-gradient(to right,
				transparent 0,
				black var(--kwl-iiq-focus-gap),
				black calc(100% - var(--kwl-iiq-focus-gap)),
				transparent 100%);
			-webkit-mask-image: linear-gradient(to right,
				transparent 0,
				black var(--kwl-iiq-focus-gap),
				black calc(100% - var(--kwl-iiq-focus-gap)),
				transparent 100%);
		}
	}

	.kw-iiq__focus-track {
		display: flex;
		gap: var(--kwl-iiq-focus-gap);
		/* width: max-content — Track wird so breit wie Content (nicht
		   Container-breit), sonst stauchen/überragen die Cards. Viewport
		   oben hat overflow: hidden, das reicht. */
		inline-size: max-content;
		padding-inline: calc(var(--kwl-iiq-focus-gap) * 0.5);
		padding-block: var(--kwl-space-sm, 0.5rem);
		/* JS steuert translateX — will-change hint für GPU-Compositing */
		will-change: transform;
	}

	/* Card: Basis-Layout --------------------------------------------- */
	/* Proximity-Variable 0..1 wird vom JS pro Frame gesetzt:
	   1 = Card geometrisch in Viewport-Mitte, 0 = am Rand / draußen.
	   opacity/scale/blur werden daraus kontinuierlich berechnet —
	   kein Sprung zwischen States, echter fließender Übergang.

	   WICHTIG — Breite via cqi (Container-Query-Units): bezieht sich
	   auf den Widget-Container, nicht den Flex-Parent. Verhindert das
	   zirkuläre Referenz-Problem bei Track mit max-content. */
	.kw-iiq__focus-card {
		--kwl-card-proximity: 1;

		position: relative;
		flex: 0 0 min(440px, 85cqi);
		min-inline-size: 0;

		background: var(--kwl-iiq-focus-card-bg);
		border: 1px solid var(--kwl-iiq-focus-card-border);
		border-radius: var(--kwl-radius-lg, 12px);
		padding: clamp(1rem, 2.5vw, 2rem);
		margin: 0;

		display: flex;
		flex-direction: column;
		gap: var(--kwl-space-sm, 0.75rem);

		/* Kontinuierliche Optik basierend auf Proximity zum Center */
		opacity: calc(0.22 + var(--kwl-card-proximity) * 0.78);
		transform: scale(calc(0.86 + var(--kwl-card-proximity) * 0.14));
		filter:
			blur(calc((1 - var(--kwl-card-proximity)) * 4px))
			saturate(calc(0.55 + var(--kwl-card-proximity) * 0.45));

		box-shadow: var(--kwl-shadow-sm);
		transition: box-shadow 500ms var(--kwl-ease-default);
		/* will-change wird vom JS nur während der Animation gesetzt,
		   nicht statisch — spart GPU-Memory für 10 Compositing-Layer. */
	}

	/* Card in geometrischer Mitte — JS setzt aria-current="true" für
	   Screenreader + Akzent-Border. Optik kommt aus Proximity-Variable. */
	.kw-iiq__focus-card[aria-current="true"] {
		box-shadow: var(--kwl-shadow-lg);
		border-color: color-mix(in srgb, var(--kwl-iiq-focus-accent) 45%, var(--kwl-iiq-focus-card-border));
	}

	.kw-iiq__focus-card[aria-current="true"]::before {
		content: '';
		position: absolute;
		inset-block-start: 0;
		inset-inline-start: clamp(1.25rem, 2.5vw, 2rem);
		inset-inline-end: clamp(1.25rem, 2.5vw, 2rem);
		block-size: 3px;
		background: linear-gradient(90deg,
			transparent,
			var(--kwl-iiq-focus-accent),
			transparent);
		border-radius: 0 0 var(--kwl-radius-sm, 4px) var(--kwl-radius-sm, 4px);
	}

	/* Anführungszeichen als dekorativer Hintergrund */
	.kw-iiq__focus-quote-mark {
		position: absolute;
		inset-block-start: clamp(0.5rem, 1.5vw, 1rem);
		inset-inline-end: clamp(1rem, 2vw, 1.5rem);
		font-family: var(--kwl-font-heading);
		font-size: clamp(3.5rem, 6vw, 5rem);
		line-height: 1;
		color: var(--kwl-iiq-focus-quote-color);
		pointer-events: none;
		user-select: none;
	}

	.kw-iiq__focus-card-stars {
		gap: 3px;
	}

	.kw-iiq__focus-card-stars .kw-iiq__star {
		width: 18px;
		height: 18px;
	}

	.kw-iiq__focus-quote {
		margin: 0;
		border: 0;
		padding: 0;
	}

	.kw-iiq__focus-quote p {
		margin: 0;
		font-family: var(--kwl-font-heading);
		font-size: clamp(1rem, 1.2vw + 0.75rem, 1.25rem);
		line-height: var(--kwl-lh-relaxed, 1.5);
		color: var(--kwl-iiq-focus-card-text);
		font-style: italic;

		/* Umbruch auch bei langen deutschen Komposita */
		overflow-wrap: break-word;
		hyphens: auto;
		-webkit-hyphens: auto;
		min-inline-size: 0;

		display: -webkit-box;
		-webkit-line-clamp: 7;
		line-clamp: 7;
		-webkit-box-orient: vertical;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.kw-iiq__focus-card-footer {
		margin-block-start: auto;
		padding-block-start: var(--kwl-space-sm, 0.5rem);
		font-size: var(--kwl-fsize-caption, 0.8125rem);
		color: var(--kwl-iiq-focus-card-meta);
		font-variant-numeric: tabular-nums;
		border-block-start: 1px solid color-mix(in srgb, var(--kwl-iiq-focus-card-border) 70%, transparent);
	}

	/* Kontroll-Leiste: Prev · Pause · Next · CTA — alle 44px hoch.
	   Alle Selektoren mit 4 Klassen für Spezifität (0,4,x),
	   schlägt shared data-kwl-link-scope Reset (0,3,1+). */
	.kw-iiq__focus-controls {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: var(--kwl-space-sm, 0.5rem);
		flex-wrap: wrap;
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav,
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause {
		display: grid;
		place-items: center;
		inline-size: 44px;
		block-size: 44px;
		padding: 0;
		margin: 0;
		box-sizing: border-box;
		border: 1px solid color-mix(in srgb, var(--kwl-iiq-card-border) 60%, transparent);
		border-radius: var(--kwl-radius-md, 8px);
		background: color-mix(in srgb, var(--kwl-iiq-card-bg) 85%, transparent);
		color: var(--kwl-iiq-heading-color);
		cursor: pointer;
		flex-shrink: 0;
		line-height: 0;
		transition: background-color var(--kwl-transition),
			border-color var(--kwl-transition),
			color var(--kwl-transition),
			transform var(--kwl-transition);
	}

	@media (hover: hover) {
		.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav:hover,
		.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause:hover {
			background: color-mix(in srgb, var(--kwl-iiq-focus-accent) 15%, var(--kwl-iiq-card-bg));
			border-color: var(--kwl-iiq-focus-accent);
			color: var(--kwl-iiq-focus-accent);
			transform: translateY(-1px);
		}
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav:active,
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause:active {
		transform: translateY(0);
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav:focus-visible,
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause:focus-visible {
		outline: 3px solid var(--kwl-focus, #7B6835);
		outline-offset: 2px;
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav:focus:not(:hover),
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause:not([aria-pressed="true"]):focus:not(:hover) {
		background: color-mix(in srgb, var(--kwl-iiq-card-bg) 85%, transparent);
		border-color: color-mix(in srgb, var(--kwl-iiq-card-border) 60%, transparent);
		color: var(--kwl-iiq-heading-color);
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause[aria-pressed="true"]:focus:not(:hover) {
		background: color-mix(in srgb, var(--kwl-iiq-card-bg) 85%, transparent);
		border-color: var(--kwl-iiq-focus-accent);
		color: var(--kwl-iiq-focus-accent);
	}

	/* SVG mittig, feste Box (0,4,1 — schlägt shared Reset) */
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav svg,
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause svg {
		display: block;
		inline-size: 18px;
		block-size: 18px;
		fill: currentColor;
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-nav-icon path {
		fill: currentColor;
	}

	/* Play/Pause Icon-Toggle — (0,4,0) schlägt die svg-Regel (0,4,1) nicht,
	   deshalb wird der Parent-Button-State zusätzlich qualifiziert. */
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause .kw-iiq__focus-icon-play {
		display: none;
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause[aria-pressed="true"] .kw-iiq__focus-icon-pause {
		display: none;
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause[aria-pressed="true"] .kw-iiq__focus-icon-play {
		display: block;
	}

	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-pause[aria-pressed="true"] {
		border-color: var(--kwl-iiq-focus-accent);
		color: var(--kwl-iiq-focus-accent);
	}

	/* CTA in der Controls-Leiste: gleiche Höhe (44px), kleiner Abstand links */
	.kw-iiq.kw-iiq--focus .kw-iiq__focus-controls .kw-iiq__focus-cta {
		block-size: 44px;
		padding-block: 0;
		padding-inline: var(--kwl-space-md, 1rem);
		display: inline-flex;
		align-items: center;
		justify-content: center;
		line-height: 1;
		flex: 0 0 auto;
		margin-inline-start: var(--kwl-space-sm, 0.5rem);
	}
}

/* Container-Queries (cqi = Container-Inline-Size, bezieht sich auf
   das .kw-iiq--focus Widget — NICHT den Flex-Parent-Track). */
@container kw-iiq-focus (max-width: 520px) {
	.kw-iiq__focus-card {
		flex: 0 0 92cqi;
		padding: 1.25rem;
		gap: var(--kwl-space-xs, 0.5rem);
	}

	.kw-iiq__focus-quote p {
		font-size: clamp(0.95rem, 3vw, 1.0625rem);
		-webkit-line-clamp: 6;
		line-clamp: 6;
	}

	.kw-iiq__focus-quote-mark {
		font-size: clamp(2.5rem, 8vw, 3.5rem);
	}

	/* Scroll-Snap-Gap knapper halten auf Mobile */
	.kw-iiq--focus {
		--kwl-iiq-focus-gap: 0.75rem;
	}
}

@container kw-iiq-focus (min-width: 521px) and (max-width: 899px) {
	.kw-iiq__focus-card {
		flex: 0 0 min(420px, 72cqi);
	}
}

@container kw-iiq-focus (min-width: 900px) {
	.kw-iiq__focus-card {
		flex: 0 0 440px;
	}
}

/* Dark Mode — Focus Skin */
@media (prefers-color-scheme: dark) {
	.kw-iiq--focus {
		--kwl-iiq-focus-card-bg: var(--kwl-bg-alt, #2d3748);
		--kwl-iiq-focus-card-border: var(--kwl-border, #4a5568);
		--kwl-iiq-focus-card-text: var(--kwl-text, #f7fafc);
		--kwl-iiq-focus-card-meta: var(--kwl-text-muted, #cbd5e0);
		--kwl-iiq-focus-quote-color: color-mix(in srgb, var(--kwl-accent, #BD9B5C) 28%, transparent);
	}

	.kw-iiq__focus-card[aria-current="true"] {
		box-shadow: 0 8px 28px rgba(0, 0, 0, 0.45);
	}

	.kw-iiq__focus-nav,
	.kw-iiq__focus-pause {
		background: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-border, #4a5568);
		color: var(--kwl-text, #e2e8f0);
	}

	.kw-iiq__focus-nav:focus-visible,
	.kw-iiq__focus-pause:focus-visible {
		outline-color: var(--kwl-focus, #c9a84c);
	}

	.kw-iiq__focus-nav:focus:not(:hover),
	.kw-iiq__focus-pause:not([aria-pressed="true"]):focus:not(:hover) {
		background: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-border, #4a5568);
		color: var(--kwl-text, #e2e8f0);
	}

	.kw-iiq__focus-pause[aria-pressed="true"]:focus:not(:hover) {
		background: var(--kwl-bg-alt, #2d3748);
		border-color: var(--kwl-iiq-focus-accent);
		color: var(--kwl-iiq-focus-accent);
	}
}

/* Forced-Colors (Windows High-Contrast) — Proximity-Effekt deaktivieren:
   alle Cards sollen voll sichtbar sein, JS skippt das Setzen.
   initial-value aus @property greift. */
@media (forced-colors: active) {
	.kw-iiq__focus-card {
		--kwl-card-proximity: 1;
		border: 1px solid CanvasText;
		opacity: 1;
		transform: none;
		filter: none;
	}

	.kw-iiq__focus-card[aria-current="true"] {
		border: 2px solid Highlight;
	}

	.kw-iiq__focus-nav,
	.kw-iiq__focus-pause {
		border: 1px solid ButtonText;
		color: ButtonText;
	}
}

/* Animation wird jetzt vollständig via --kwl-card-proximity gesteuert
   (JS setzt sie pro Frame basierend auf Distanz zur Viewport-Mitte).
   Scroll-Timeline entfällt, weil der JS-Transform-Scroll sie nicht triggert. */

/* === Reduced Motion (nach Responsive, gewinnt bei gleicher Spezifität) === */
@media (prefers-reduced-motion: reduce) {
	.kw-iiq__ring-fill,
	.kw-iiq__portal-fill,
	.kw-iiq__cat-fill,
	.kw-iiq__section-content,
	.kw-iiq__section-toggle::after {
		transition: none;
	}

	/* Statische Zeile mit Scrollbar (kein Auto-Scroll) */
	.kw-iiq__scroll-container {
		overflow-x: auto;
	}

	.kw-iiq__scroll-btn,
	.kw-iiq__feedback,
	.kw-iiq__testi-card,
	.kw-iiq__pause-btn {
		transition: none;
	}

	@media (hover: hover) {
		.kw-iiq__testi-card:hover,
		.kw-iiq__feedback:hover {
			transform: none;
		}
	}

	.kw-iiq__scroll-btn:active {
		transform: none;
	}

	/* Fade-Indikatoren bei Reduced Motion ausblenden (Scrollbar reicht) */
	.kw-iiq__scroll-wrapper::before,
	.kw-iiq__scroll-wrapper::after {
		display: none;
	}

	/* Focus-Skin: kein Auto-Scroll, alle Cards gleich scharf */
	.kw-iiq__focus-card {
		--kwl-card-proximity: 1;
		transition: none;
		animation: none;
	}

	.kw-iiq__focus-nav,
	.kw-iiq__focus-pause {
		transition: none;
	}

	@media (hover: hover) {
		.kw-iiq__focus-nav:hover,
		.kw-iiq__focus-pause:hover {
			transform: none;
		}
	}
}
