/**
 * Inner Circle CMP.
 *
 * Eigene Variablen statt --ic-*: das Banner muss auch dann richtig aussehen,
 * wenn es vor dem Theme-Stylesheet ankommt oder auf einer Seite laeuft, die
 * die Theme-Tokens nicht setzt (Drop-Gate rendert ein eigenes Dokument).
 *
 * "Alles akzeptieren" und "Nur Notwendiges" sind bewusst gleich gross, gleich
 * gewichtet und gleich weit oben. Ein weggeschobener Ablehnen-Knopf ist der
 * haeufigste Grund, warum Einwilligungen vor Gericht nicht halten.
 */

.ic-cmp {
	--cmp-void:    #050505;
	--cmp-panel:   #0d0d0e;
	--cmp-line:    #1a1a1b;
	--cmp-line-2:  #2a2a2c;
	--cmp-ink:     #f4f4f4;
	--cmp-muted:   #8a8a8e;
	--cmp-accent:  #7a0a0a;
	--cmp-hot:     #a31515;
	--cmp-mono:    "JetBrains Mono", ui-monospace, "SF Mono", monospace;
	--cmp-head:    "Antry Sans", "Alte Haas Grotesk", "Helvetica Neue", Arial, sans-serif;
	--cmp-body:    "Alte Haas Grotesk", system-ui, -apple-system, sans-serif;

	position: fixed;
	inset: 0;
	z-index: 2147483000;   /* ueber Sticky-ATC, Cart-Drawer und Offcanvas */
	display: flex;
	align-items: flex-end;
	justify-content: center;
	font-family: var(--cmp-body);
	color: var(--cmp-ink);
}

.ic-cmp[hidden] { display: none; }

html.ic-cmp-open { overflow: hidden; }

.ic-cmp__scrim {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .78);
	backdrop-filter: blur(2px);
}

.ic-cmp__panel {
	position: relative;
	width: min(680px, 100%);
	max-height: 92svh;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--cmp-panel);
	border: 1px solid var(--cmp-line-2);
	border-bottom: 0;
	padding: clamp(1.25rem, 4vw, 2rem);
	animation: ic-cmp-rise .28s cubic-bezier(.2, .7, .3, 1) both;
}

@keyframes ic-cmp-rise {
	from { transform: translateY(14px); opacity: 0; }
	to   { transform: none; opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
	.ic-cmp__panel { animation: none; }
}

/* ------------------------------------------------------------------ Kopf */

.ic-cmp__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1.15rem;
}

.ic-cmp__logo {
	height: 18px;
	width: auto;
	display: block;
}

.ic-cmp__eyebrow {
	margin: 0;
	font-family: var(--cmp-mono);
	font-size: .6875rem;
	letter-spacing: .14em;
	color: var(--cmp-muted);
}

.ic-cmp__title {
	margin: 0 0 .6rem;
	font-family: var(--cmp-head);
	font-size: clamp(1.35rem, 3.4vw, 1.75rem);
	line-height: 1.15;
	letter-spacing: -.01em;
}

.ic-cmp__lede {
	margin: 0 0 1.35rem;
	font-size: .9375rem;
	line-height: 1.6;
	color: #c9c9cc;
}

/* -------------------------------------------------------------- Kategorien */

.ic-cmp__details {
	margin-bottom: 1.35rem;
	border-top: 1px solid var(--cmp-line);
}

.ic-cmp__cat {
	padding: 1rem 0;
	border-bottom: 1px solid var(--cmp-line);
}

.ic-cmp__cat-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
}

.ic-cmp__switch {
	display: inline-flex;
	align-items: center;
	gap: .7rem;
	cursor: pointer;
}

/* Die native Checkbox verschwindet, sichtbar ist nur der Schalter daneben.
   Sie bleibt im Dokument (1px, nicht display:none), damit Tastaturbedienung
   und Screenreader weiter funktionieren.

   Zwei Klassen und !important sind hier nicht Bequemlichkeit, sondern
   Notwendigkeit: style.css des Themes formatiert `input[type="checkbox"]`
   mit durchgehend !important (opacity, width, height, border, background).
   Diese Regel hat dieselbe Spezifitaet wie `.ic-cmp__switch input` - und
   style.css laedt NACH ic-cmp.css, gewinnt also bei Gleichstand. Ohne die
   zusaetzliche Klasse standen hier zwei Kaestchen nebeneinander. */
.ic-cmp .ic-cmp__switch input {
	position: absolute !important;
	opacity: 0 !important;
	width: 1px !important;
	height: 1px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
}

.ic-cmp__switch-track {
	position: relative;
	flex: 0 0 auto;
	width: 40px;
	height: 22px;
	border: 1px solid var(--cmp-line-2);
	background: #141416;
	transition: background .18s ease, border-color .18s ease;
}

.ic-cmp__switch-track::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 14px;
	height: 14px;
	background: var(--cmp-muted);
	transition: transform .18s ease, background .18s ease;
}

.ic-cmp__switch input:checked + .ic-cmp__switch-track {
	background: var(--cmp-accent);
	border-color: var(--cmp-hot);
}

.ic-cmp__switch input:checked + .ic-cmp__switch-track::after {
	transform: translateX(18px);
	background: #fff;
}

.ic-cmp__switch input:disabled + .ic-cmp__switch-track { opacity: .55; cursor: default; }

.ic-cmp__switch input:focus-visible + .ic-cmp__switch-track {
	outline: 2px solid var(--cmp-hot);
	outline-offset: 2px;
}

.ic-cmp__cat-label {
	font-family: var(--cmp-head);
	font-size: 1rem;
	letter-spacing: .01em;
}

.ic-cmp__pill {
	font-family: var(--cmp-mono);
	font-size: .625rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--cmp-muted);
	border: 1px solid var(--cmp-line-2);
	padding: .2rem .45rem;
	white-space: nowrap;
}

.ic-cmp__cat-desc {
	margin: .55rem 0 0;
	padding-left: 50px;
	font-size: .8125rem;
	line-height: 1.55;
	color: var(--cmp-muted);
}

/* --------------------------------------------------------------- Dienste */

.ic-cmp__svc-wrap {
	margin: .6rem 0 0;
	padding-left: 50px;
}

.ic-cmp__svc-wrap summary {
	font-family: var(--cmp-mono);
	font-size: .6875rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--cmp-muted);
	cursor: pointer;
	padding: .25rem 0;
}

.ic-cmp__svc-wrap summary:hover { color: var(--cmp-ink); }

.ic-cmp__svc-list {
	list-style: none;
	margin: .5rem 0 0;
	padding: 0;
}

.ic-cmp__svc {
	padding: .7rem 0;
	border-top: 1px solid var(--cmp-line);
}

.ic-cmp__svc-name {
	margin: 0 0 .2rem;
	font-family: var(--cmp-head);
	font-size: .875rem;
}

.ic-cmp__svc-purpose {
	margin: 0 0 .45rem;
	font-size: .8125rem;
	line-height: 1.5;
	color: var(--cmp-muted);
}

.ic-cmp__svc-meta {
	display: grid;
	grid-template-columns: 6.5rem 1fr;
	gap: .15rem .75rem;
	margin: 0;
	font-size: .75rem;
	color: var(--cmp-muted);
}

.ic-cmp__svc-meta dt {
	font-family: var(--cmp-mono);
	font-size: .625rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #6a6a6e;
}

.ic-cmp__svc-meta dd { margin: 0; overflow-wrap: anywhere; }

/* ---------------------------------------------------------------- Knoepfe */

.ic-cmp__actions {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
}

.ic-cmp__btn {
	flex: 1 1 auto;
	min-width: 10rem;
	min-height: 46px;
	padding: .8rem 1.2rem;
	font-family: var(--cmp-mono);
	font-size: .75rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--cmp-ink);
	background: transparent;
	border: 1px solid var(--cmp-ink);
	cursor: pointer;
	transition: background .16s ease, color .16s ease, border-color .16s ease;
}

.ic-cmp__btn:hover  { background: var(--cmp-ink); color: var(--cmp-void); }
.ic-cmp__btn:focus-visible { outline: 2px solid var(--cmp-hot); outline-offset: 2px; }

.ic-cmp__btn--primary {
	background: var(--cmp-accent);
	border-color: var(--cmp-accent);
}

.ic-cmp__btn--primary:hover {
	background: var(--cmp-hot);
	border-color: var(--cmp-hot);
	color: var(--cmp-ink);
}

/* Nur die Nebenaktion darf leiser sein - "Nur Notwendiges" gehoert nicht dazu. */
.ic-cmp__btn--ghost {
	flex: 0 1 auto;
	min-width: 0;
	border-color: var(--cmp-line-2);
	color: var(--cmp-muted);
}

.ic-cmp__btn--ghost:hover { background: transparent; color: var(--cmp-ink); border-color: var(--cmp-ink); }

.ic-cmp__btn[hidden] { display: none; }

.ic-cmp__legal {
	margin: 1rem 0 0;
	font-size: .75rem;
	line-height: 1.55;
	color: #6a6a6e;
}

.ic-cmp__legal a { color: var(--cmp-muted); text-decoration: underline; }
.ic-cmp__legal a:hover { color: var(--cmp-ink); }

/* ------------------------------------------------------- Content-Blocker */

.ic-cmp-guard {
	position: relative;
	display: block;
	background: #0d0d0e;
	border: 1px solid #1a1a1b;
}

.ic-cmp-guard__note {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .6rem;
	padding: clamp(1.1rem, 4vw, 1.75rem);
	text-align: left;
}

.ic-cmp-guard__eyebrow {
	margin: 0;
	font-family: "JetBrains Mono", ui-monospace, monospace;
	font-size: .625rem;
	letter-spacing: .14em;
	color: #8a8a8e;
}

.ic-cmp-guard__text {
	margin: 0;
	max-width: 46ch;
	font-size: .8125rem;
	line-height: 1.55;
	color: #c9c9cc;
}

.ic-cmp-guard__warn {
	display: block;
	margin-top: .3rem;
	color: #8a8a8e;
}

.ic-cmp-guard__btn {
	min-height: 44px;
	margin-top: .25rem;
	padding: .7rem 1.15rem;
	font-family: "JetBrains Mono", ui-monospace, monospace;
	font-size: .6875rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: #f4f4f4;
	background: #7a0a0a;
	border: 1px solid #7a0a0a;
	cursor: pointer;
}

.ic-cmp-guard__btn:hover { background: #a31515; border-color: #a31515; }

.ic-cmp-guard__link {
	padding: 0;
	font-family: "JetBrains Mono", ui-monospace, monospace;
	font-size: .625rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: #8a8a8e;
	background: none;
	border: 0;
	text-decoration: underline;
	cursor: pointer;
}

.ic-cmp-guard__link:hover { color: #f4f4f4; }

/* Die Einbettung liegt von Anfang an im Markup, aber unsichtbar - erst
   ic-cmp.js setzt `is-released` und traegt den src nach. Ohne JavaScript
   bleibt der Platzhalter stehen, was richtig ist: ohne JS gibt es keine
   Einwilligung, die wir speichern koennten. */
.ic-cmp-guard__slot { display: none; }

.ic-cmp-guard.is-released .ic-cmp-guard__slot { display: block; }
.ic-cmp-guard.is-released .ic-cmp-guard__note { display: none; }
.ic-cmp-guard.is-released { border-color: transparent; background: transparent; }

/* Wiederkehrender Besucher mit Einwilligung: `is-released` setzt erst das
   Skript im Footer, bis dahin stuende hier sichtbar der Platzhalter und
   spraenge dann weg. Die Klasse auf <html> steht dagegen schon vor dem ersten
   Rendern - das Snippet im head setzt sie. Eine Regel je einwilligungs-
   pflichtiger Kategorie; `necessary` wird nie geblockt. */
html.ic-consent-functional .ic-cmp-guard[data-ic-cmp-cat="functional"] .ic-cmp-guard__note,
html.ic-consent-statistics .ic-cmp-guard[data-ic-cmp-cat="statistics"] .ic-cmp-guard__note,
html.ic-consent-marketing  .ic-cmp-guard[data-ic-cmp-cat="marketing"]  .ic-cmp-guard__note {
	display: none;
}

html.ic-consent-functional .ic-cmp-guard[data-ic-cmp-cat="functional"] .ic-cmp-guard__slot,
html.ic-consent-statistics .ic-cmp-guard[data-ic-cmp-cat="statistics"] .ic-cmp-guard__slot,
html.ic-consent-marketing  .ic-cmp-guard[data-ic-cmp-cat="marketing"]  .ic-cmp-guard__slot {
	display: block;
}

/* Ein Button, der wie die Links daneben aussehen muss - im Footer und
   ueberall sonst, wo die Einstellungen erreichbar sein sollen. */
.ic-cmp-link {
	padding: 0;
	font: inherit;
	color: inherit;
	background: none;
	border: 0;
	text-decoration: underline;
	cursor: pointer;
}

.ic-cmp-link:hover { color: #fff; }

/* -------------------------------------------------- Shortcode/Datenschutz */

.ic-cmp-inline__state {
	font-family: "JetBrains Mono", ui-monospace, monospace;
	font-size: .75rem;
	line-height: 1.6;
	color: #8a8a8e;
	overflow-wrap: anywhere;
}

.ic-cmp-inline__table {
	width: 100%;
	border-collapse: collapse;
	margin: .75rem 0 1.75rem;
	font-size: .8125rem;
}

.ic-cmp-inline__table th,
.ic-cmp-inline__table td {
	padding: .55rem .7rem;
	border: 1px solid var(--ic-asphalt-2, #2a2a2c);
	text-align: left;
	vertical-align: top;
}

.ic-cmp-inline__table th {
	font-family: "JetBrains Mono", ui-monospace, monospace;
	font-size: .625rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #8a8a8e;
}

/* Breite Tabellen scrollen in sich, statt die Seite querzuziehen. */
.ic-cmp-inline { overflow-x: auto; }

/* ------------------------------------------------------------------ Mobil */

@media (max-width: 560px) {
	.ic-cmp__panel { max-height: 94svh; }

	.ic-cmp__cat-desc,
	.ic-cmp__svc-wrap { padding-left: 0; }

	.ic-cmp__btn { flex: 1 1 100%; min-width: 0; }

	.ic-cmp__svc-meta { grid-template-columns: 1fr; gap: 0 0; }
	.ic-cmp__svc-meta dd { margin-bottom: .3rem; }
}
