/*
 * Theme „DI.DAY × luise“ für reveal.js – GETEILTE DATEI, nur zentral ändern.
 * Farbwelt nach di.day und luise Oranienburg: Lila + Orange, Pixelmuster,
 * Skizzen-Grafiken. Folienraster: 1920 × 1080 (siehe js/deck.js).
 *
 * Aufbau
 *   1. Schriften   2. Tokens   3. reveal-Grundlagen   4. Pixelband, Seitenzahl
 *   5. Bausteine (bestehend)  6. Grundgerüst .inhalt + Töne
 *   7. Komponenten  8. Layouts (l-…)  9. Stufenleiter  10. Fragmente  11. Druck/PDF
 * Anleitung mit HTML-Schnipseln: entwuerfe/GESTALTUNG.md
 */

/* ========== 1. Schriften (lokal, offline) ========== */
@font-face {
	font-family: 'Atkinson Hyperlegible Next';
	src: url('../assets/fonts/atkinson-hyperlegible-next-latin-400-normal.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: block;
}
@font-face {
	font-family: 'Atkinson Hyperlegible Next';
	src: url('../assets/fonts/atkinson-hyperlegible-next-latin-400-italic.woff2') format('woff2');
	font-weight: 400;
	font-style: italic;
	font-display: block;
}
@font-face {
	font-family: 'Atkinson Hyperlegible Next';
	src: url('../assets/fonts/atkinson-hyperlegible-next-latin-700-normal.woff2') format('woff2');
	font-weight: 700;
	font-style: normal;
	font-display: block;
}
@font-face {
	font-family: 'Atkinson Hyperlegible Next';
	src: url('../assets/fonts/atkinson-hyperlegible-next-latin-800-normal.woff2') format('woff2');
	font-weight: 800;
	font-style: normal;
	font-display: block;
}
@font-face {
	font-family: 'Atkinson Hyperlegible Mono';
	src: url('../assets/fonts/atkinson-hyperlegible-mono-latin-400-normal.woff2') format('woff2');
	font-weight: 400;
	font-display: block;
}
@font-face {
	font-family: 'Atkinson Hyperlegible Mono';
	src: url('../assets/fonts/atkinson-hyperlegible-mono-latin-700-normal.woff2') format('woff2');
	font-weight: 700;
	font-display: block;
}
@font-face {
	font-family: 'Silkscreen';
	src: url('../assets/fonts/silkscreen-latin-400-normal.woff2') format('woff2');
	font-weight: 400;
	font-display: block;
}
@font-face {
	font-family: 'Silkscreen';
	src: url('../assets/fonts/silkscreen-latin-700-normal.woff2') format('woff2');
	font-weight: 700;
	font-display: block;
}
@font-face {
	font-family: 'Caveat';
	src: url('../assets/fonts/caveat-latin-700-normal.woff2') format('woff2');
	font-weight: 700;
	font-display: block;
}
@font-face {
	font-family: 'Caveat';
	src: url('../assets/fonts/caveat-latin-400-normal.woff2') format('woff2');
	font-weight: 400;
	font-display: block;
}

/* ========== 2. Tokens ========== */
:root {
	--lila: #74157d;
	--lila-dunkel: #4a0d50;
	--lila-hell: #f3e6f5;
	--lila-mittel: #dcb8e2;
	--orange: #fea300;
	--orange-dunkel: #c77c00;
	--orange-hell: #ffe6b3;
	--papier: #fffaf3;
	--tinte: #23122a;
	--grau: #6b5f70;
	--linie: #e4d9e6;
	--postit: #ffe14d;
	--warnung: #d6402b;
	--sicher: #2f8f46;

	/* Skizzen-Palette (wie in den Grafiken) */
	--gelb: #ffd84d;
	--gelb-dunkel: #f2b705;
	--rot: #e5533d;
	--rot-hell: #f7b9ad;
	--gruen-hell: #bfe3c6;
	--neutral: #d9d4c7;
	--neutral-hell: #ece7da;
	--blau: #cfe3f7;
	--kuli: #1d2a6b;

	/* auf dunklem Grund (ton-lila / ton-nacht) */
	--hell-text: #ffffff;
	--hell-leise: #ecd9f0;

	--schrift: 'Atkinson Hyperlegible Next', 'Segoe UI', system-ui, sans-serif;
	--schrift-mono: 'Atkinson Hyperlegible Mono', ui-monospace, monospace;
	--schrift-pixel: 'Silkscreen', var(--schrift-mono);
	--schrift-hand: 'Caveat', 'Segoe Print', cursive;

	--rand: 96px;                                  /* Seitenrand links/rechts */
	--band-hoehe: 36px;                            /* Pixelband */
	--oben: calc(var(--band-hoehe) + 60px);        /* Abstand oben bis Inhalt */
	--unten: 76px;                                 /* Abstand unten (Platz für Quelle) */
	--luecke: 64px;                                /* Standard-Spaltenabstand */
	--kontur: 5px;                                 /* Skizzen-Kontur */
	--skizzen-radius: 18px 28px 20px 26px / 26px 18px 28px 20px;
	--schatten: var(--lila-mittel);                /* versetzter Marker-Schatten */
}

/* ========== 3. reveal.js Grundlagen ========== */
.reveal-viewport {
	background: var(--papier);
}
.reveal {
	font-family: var(--schrift);
	font-size: 44px;
	font-weight: 400;
	line-height: 1.35;
	color: var(--tinte);
}
.reveal .slides {
	text-align: left;
}
.reveal .slides section {
	box-sizing: border-box;
	width: 100%;
	height: 100%;
	padding: calc(var(--band-hoehe) + 64px) var(--rand) 72px;
}
.reveal h1,
.reveal h2,
.reveal h3 {
	margin: 0 0 0.4em;
	font-family: var(--schrift);
	font-weight: 800;
	line-height: 1.08;
	letter-spacing: -0.01em;
	color: var(--lila);
	text-transform: none;
	text-wrap: balance;
}
.reveal h1 { font-size: 120px; }
.reveal h2 { font-size: 84px; }
.reveal h3 { font-size: 56px; }
.reveal p { margin: 0 0 0.6em; }
.reveal strong { font-weight: 800; }
.reveal em { font-style: italic; }
.reveal a { color: var(--lila); text-decoration: underline; text-decoration-thickness: 3px; }
.reveal ul,
.reveal ol {
	margin: 0;
	padding-left: 1.1em;
}
.reveal li { margin: 0.25em 0; }
.reveal li::marker { color: var(--orange-dunkel); }
.reveal .controls { color: var(--lila); }
.reveal .progress { color: var(--orange); height: 6px; }
.reveal.has-dark-background .controls { color: var(--orange); }
.reveal img,
.reveal object,
.reveal svg { max-width: 100%; }
/* reveal-Helfer .r-stack (Elemente übereinander): Spalte darf schrumpfen */
.reveal .r-stack { grid-template-columns: minmax(0, 1fr); }

/* ========== 4. Pixelband und Seitenzahl ========== */
.pixelband {
	position: absolute;
	left: 0;
	right: 0;
	z-index: 1;
	height: var(--band-hoehe);
	background: var(--orange) url('../assets/deko/pixelband.svg') center / cover no-repeat;
	pointer-events: none;
}
.pixelband.oben { top: 0; }
.pixelband.unten {
	bottom: 0;
	background-image: url('../assets/deko/pixelband-unten.svg');
}

.reveal .slide-number,
.reveal .slide-number-pdf {
	left: 30px;
	right: auto;
	bottom: 18px;
	padding: 0;
	background: none;
	font-family: var(--schrift-pixel);
	font-size: 22px;
	line-height: 1;
	color: var(--grau);
}
.reveal.has-dark-background .slide-number { color: var(--hell-leise); }
.reveal .slide-number a { color: inherit; text-decoration: none; }
.reveal-viewport.ohne-nummer .slide-number { display: none; }
.reveal-viewport:has(section.present[data-band='beide']) .slide-number,
.reveal-viewport:has(section.present[data-band='unten']) .slide-number { bottom: calc(var(--band-hoehe) + 12px); }

/* ========== 5. Bausteine (bestehend) ========== */
.stufe-badge,
.etikett {
	display: inline-block;
	padding: 10px 22px 8px;
	font-family: var(--schrift-pixel);
	font-size: 36px;
	line-height: 1;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #fff;
	background: var(--lila);
}
.stufe-badge.orange,
.etikett.orange {
	color: var(--tinte);
	background: var(--orange);
}
.pixel { font-family: var(--schrift-pixel); }
.hand { font-family: var(--schrift-hand); font-weight: 700; }
.leise { color: var(--grau); }
.quelle {
	position: absolute;
	right: 150px;               /* frei für die reveal-Pfeile */
	bottom: 22px;
	z-index: 2;
	max-width: 58%;
	font-size: 22px;
	line-height: 1.3;
	color: var(--grau);
	text-align: right;
}
.bildnachweis {
	position: absolute;
	left: var(--rand);
	bottom: 18px;
	z-index: 3;
	max-width: 70%;
	padding: 4px 10px;
	font-size: 22px;
	line-height: 1.3;
	color: #fff;
	background: rgba(35, 18, 42, 0.62);
}

/* Layout: Vollbild-Foto (bleibt für Fotos erhalten) */
.reveal .slides section.vollbild-foto {
	padding: 0;
}
.vollbild-foto .foto {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.vollbild-foto .titelkasten,
.l-buehne .titelkasten {
	position: absolute;
	left: var(--rand);
	bottom: 110px;
	z-index: 2;
	max-width: 860px;
	padding: 36px 44px 30px;
	background: var(--papier);
	box-shadow: 14px 14px 0 var(--lila);
}
.vollbild-foto .titelkasten h2,
.l-buehne .titelkasten h2 {
	margin: 18px 0 0;
	font-size: 76px;
}
.vollbild-foto .titelkasten p,
.l-buehne .titelkasten p {
	margin: 16px 0 0;
	font-size: 40px;
}

/* Handschrift als Überlagerung (Post-it, Passwortbuch) */
.handnotiz {
	position: absolute;
	z-index: 2;
	font-family: var(--schrift-hand);
	font-weight: 700;
	color: var(--kuli);
	line-height: 1.05;
	white-space: nowrap;
	transform-origin: left top;
}

/* Layout: Illustration + Text (alte Form, siehe auch .l-illu) */
.illu-folie {
	display: grid;
	grid-template-columns: 0.8fr 1.2fr;
	gap: 48px;
	align-items: center;
	height: 100%;
}
.illu-folie .illu {
	width: 100%;
	height: auto;
	max-height: 820px;
}

/* ========== 6. Grundgerüst und Töne ========== */
/*
 * Jede Folie: <section class="l-…"> <div class="inhalt"> … </div> </section>
 * .inhalt füllt die Folie (absolut), hat die Seitenränder und ist eine
 * Flex-Spalte. Absolut platzierte Helfer (.quelle, .bildnachweis,
 * .stufenleiter.ecke, aside.notes) stehen AUSSERHALB von .inhalt.
 */
/* :where() hält die Spezifität niedrig, damit .l-… > .inhalt gewinnt */
:where(.reveal .slides section) > .inhalt {
	position: absolute;
	inset: 0;
	box-sizing: border-box;
	padding: var(--oben) var(--rand) var(--unten);
	display: flex;
	flex-direction: column;
	text-align: left;
}
.inhalt > * { flex: none; }
.inhalt > .fuellen,
.inhalt > .raster { flex: 1 1 auto; min-height: 0; }
.inhalt > h2 { margin: 0 0 40px; }
.inhalt > :last-child { margin-bottom: 0; }

/* Dachzeile über der Überschrift („STUFE 4“, „ZUTATEN“) */
.dachzeile {
	display: block;
	margin: 0 0 18px;
	font-family: var(--schrift-pixel);
	font-size: 36px;
	line-height: 1;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--orange-dunkel);
}
.akzent { color: var(--orange-dunkel); }
.lila { color: var(--lila); }
.gross { font-size: 56px; line-height: 1.25; }
.klein { font-size: 40px; }
.zentriert { text-align: center; }
.unten-raus { margin-top: auto !important; }

/* Töne: deck.js setzt passend data-background-color */
.reveal .ton-lila,
.reveal .ton-nacht { color: var(--hell-text); --schatten: var(--lila-dunkel); }
.reveal .ton-lila :is(h1, h2, h3),
.reveal .ton-nacht :is(h1, h2, h3) { color: var(--hell-text); }
.reveal .ton-lila :is(.akzent, .dachzeile),
.reveal .ton-nacht :is(.akzent, .dachzeile) { color: var(--orange); }
.reveal .ton-lila :is(.leise, .quelle),
.reveal .ton-nacht :is(.leise, .quelle) { color: var(--hell-leise); }
.reveal .ton-lila a,
.reveal .ton-nacht a { color: var(--orange-hell); }
.reveal .ton-lila li::marker,
.reveal .ton-nacht li::marker { color: var(--orange); }
.reveal .ton-lila .lila,
.reveal .ton-nacht .lila { color: var(--lila-mittel); }
.reveal .ton-nacht { --schatten: #2a0630; }
.reveal .ton-orange :is(h1, h2, h3) { color: var(--tinte); }
.reveal .ton-orange :is(.akzent, .dachzeile) { color: var(--lila); }
.reveal .ton-orange { --schatten: var(--orange-dunkel); }
.reveal .ton-hell { --schatten: var(--lila-mittel); }

/* ========== 7. Komponenten ========== */

/* --- Skizzen-Ikonen aus dem Sprite (deck.js) --- */
.skizzen-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.ikon {
	--ikon: 1.6em;
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	vertical-align: middle;
	line-height: 1.15;
}
.ikon .ikon-svg { width: var(--ikon); height: var(--ikon); flex: none; overflow: visible; }
.ikon.mittel { --ikon: 2.6em; }
.ikon.gross { --ikon: 4.4em; }
.ikon.riesig { --ikon: 8em; }
.ikon.senkrecht { flex-direction: column; text-align: center; }

/* --- Textmarker, Stempel, Sprechblase --- */
.marker {
	padding: 0 0.12em;
	background: linear-gradient(176deg, transparent 52%, var(--orange-hell) 52%, var(--orange-hell) 90%, transparent 90%);
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}
.ton-lila .marker,
.ton-nacht .marker {
	background: linear-gradient(176deg, transparent 54%, rgba(254, 163, 0, 0.55) 54%, rgba(254, 163, 0, 0.55) 92%, transparent 92%);
}
.stempel {
	--dreh: -7deg;
	display: inline-block;
	padding: 0.18em 0.5em 0.12em;
	border: 7px solid currentColor;
	border-radius: 14px 10px 16px 12px;
	font-family: var(--schrift-pixel);
	font-size: 48px;
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	color: var(--warnung);
	background: rgba(255, 250, 243, 0.86);
	box-shadow: inset 0 0 0 4px rgba(255, 250, 243, 0.86), inset 0 0 0 7px currentColor;
	transform: rotate(var(--dreh));
	text-align: center;
	max-width: 90%;
}
.stempel.gruen { color: var(--sicher); }
.stempel.lila { color: var(--lila); }
.stempel.klein { font-size: 40px; border-width: 5px; }

.sprechblase {
	position: relative;
	display: inline-block;
	padding: 0.32em 0.75em 0.36em;
	border: var(--kontur) solid var(--tinte);
	border-radius: 34px 40px 36px 30px / 30px 36px 40px 34px;
	font-weight: 700;
	line-height: 1.15;
	color: var(--tinte);
	background: #fff;
	box-shadow: 8px 7px 0 var(--schatten);
}
/* Zipfel: ::before = Kontur-Dreieck in Tinte mit Schatten wie die Blase,
   ::after = Füllung in Blasenfarbe (5px eingerückt = --kontur), öffnet die Unterkante */
.sprechblase::before,
.sprechblase::after {
	content: '';
	position: absolute;
	left: 26px;
	top: calc(100% - 2px);
	width: 48px;
	height: 38px;
}
.sprechblase::before {
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 38'%3E%3Cpath d='M8 2L46 2L2 36Z' fill='%2323122a' stroke='%2323122a' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	filter: drop-shadow(8px 7px 0 var(--schatten));
}
.sprechblase::after {
	background: inherit;
	clip-path: polygon(13.4px 0, 40.4px 0, 9.2px 24.1px);
}
.sprechblase.rechts::before,
.sprechblase.rechts::after { left: auto; right: 26px; }
.sprechblase.rechts::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 38'%3E%3Cpath d='M40 2L2 2L46 36Z' fill='%2323122a' stroke='%2323122a' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.sprechblase.rechts::after { clip-path: polygon(34.6px 0, 7.6px 0, 38.8px 24.1px); }
.sprechblase.pixel {
	font-family: var(--schrift-pixel);
	font-weight: 700;
	background: var(--orange);
	border-radius: 0;
	box-shadow: 8px 8px 0 var(--tinte);
}
/* Zipfel als Pixeltreppe: Füllung öffnet die Unterkante, Kontur 5px und Schatten 8px wie die Blase */
.sprechblase.pixel::before { content: none; }
.sprechblase.pixel::after {
	left: 30px;
	width: 60px;
	height: 62px;
	clip-path: none;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -2 60 62' shape-rendering='crispEdges'%3E%3Cpath fill='%2323122a' d='M8 8H60V32H46V46H32V60H8Z'/%3E%3Cpath fill='%2323122a' d='M0 0H52V24H38V38H24V52H0Z'/%3E%3Cpath fill='%23fea300' d='M5 -2H47V19H33V33H19V47H5Z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
}

/* --- Handzeichen-Frage ans Publikum --- */
.handzeichen {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	margin: 0 0 24px;
	padding: 0.3em 0.9em 0.3em 0.4em;
	border: var(--kontur) solid var(--tinte);
	border-radius: var(--skizzen-radius);
	font-weight: 700;
	line-height: 1.2;
	color: var(--tinte);
	background: var(--orange-hell);
	box-shadow: 10px 8px 0 var(--orange);
}
.handzeichen .ikon { --ikon: 1.9em; }
.ton-lila .handzeichen,
.ton-nacht .handzeichen { box-shadow: 10px 8px 0 var(--lila-dunkel); }

/* --- Kasten / Hinweis --- */
.kasten {
	padding: 30px 40px;
	border-left: 12px solid var(--lila);
	border-radius: 0 20px 20px 0;
	background: var(--lila-hell);
}
.kasten.orange { border-color: var(--orange); background: var(--orange-hell); }
.ton-lila .kasten,
.ton-nacht .kasten { border-color: var(--orange); background: rgba(255, 255, 255, 0.12); }

/* --- Aufkleber: weißer Grund für Bilder auf Lila (Biege-Illustration, luise) --- */
.aufkleber {
	--dreh: 2deg;
	margin: 0;
	padding: 22px 22px 16px;
	border-radius: 22px;
	background: #fff;
	box-shadow: 14px 14px 0 var(--schatten);
	transform: rotate(var(--dreh));
}
.aufkleber img,
.aufkleber object { display: block; width: 100%; height: auto; }
.aufkleber .bildnachweis,
.aufkleber figcaption {
	position: static;
	max-width: none;
	padding: 10px 4px 0;
	background: none;
	font-size: 22px;
	color: var(--grau);
}

/* --- Logos --- */
.logo-diday { display: block; height: 116px; width: auto; }
.logo-luise {
	display: grid;
	place-items: center;
	width: 168px;
	height: 168px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 8px 8px 0 var(--schatten);
}
.logo-luise img { width: 92%; height: auto; }
.logos {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 40px;
}

/* --- QR-Codes --- */
.qr-reihe { display: flex; gap: 48px; align-items: flex-start; }
.qr {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	margin: 0;
	max-width: 360px;
	text-align: center;
}
.qr img {
	display: block;
	width: 300px;
	height: 300px;
	padding: 12px;
	border-radius: 18px;
	background: #fff;
	box-shadow: 10px 10px 0 var(--schatten);
}
.qr figcaption { font-size: 32px; font-weight: 700; line-height: 1.2; }
.qr.klein img { width: 200px; height: 200px; padding: 8px; }
.qr.klein figcaption { font-size: 24px; }

/* --- Illustration (Skizzen-SVG per <object>) --- */
.illu {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 10;
}
.illu.quer43 { aspect-ratio: 4 / 3; }
.illu.quadrat { aspect-ratio: 1 / 1; }

/* --- Große Zahl (überall nutzbar) --- */
.zahl {
	display: block;
	margin: 0;
	font-size: 300px;
	font-weight: 800;
	line-height: 0.92;
	letter-spacing: -0.03em;
	color: var(--lila);
	font-variant-numeric: lining-nums;
}
.zahl .einheit { font-size: 0.55em; letter-spacing: 0; }
.zahl.mittel { font-size: 200px; }
.zahl.pixel { font-family: var(--schrift-pixel); letter-spacing: 0; }
.ton-lila .zahl,
.ton-nacht .zahl { color: var(--orange); }
.zahl-text { margin: 18px 0 0; font-size: 56px; font-weight: 700; line-height: 1.2; max-width: 1400px; }
.zahlen { display: flex; align-items: center; gap: 56px; }
.zahlen .pfeil { flex: none; }

/* --- Listen --- */
.liste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 30px;
	font-size: 48px;
	line-height: 1.25;
}
.liste > li {
	display: grid;
	grid-template-columns: 1.4em minmax(0, 1fr);
	column-gap: 0.55em;
	align-items: center;
	margin: 0;
}
.liste > li::before {
	content: '';
	justify-self: center;
	width: 0.42em;
	height: 0.42em;
	background: var(--orange);
	box-shadow: 0.12em 0.12em 0 var(--lila);
}
.liste > li:has(> .ikon:first-child)::before { display: none; }
.liste > li > .ikon:first-child { --ikon: 1.4em; grid-column: 1; }
.liste > li > .ikon:first-child:empty { justify-content: center; }
ol.liste { counter-reset: punkt; }
ol.liste > li { counter-increment: punkt; }
ol.liste > li::before {
	content: counter(punkt);
	display: grid;
	place-items: center;
	width: 1.2em;
	height: 1.2em;
	font-family: var(--schrift-pixel);
	font-size: 0.9em;
	color: var(--tinte);
	background: var(--orange);
	box-shadow: 0.1em 0.1em 0 var(--lila);
}
.liste.eng { gap: 16px; font-size: 44px; }

/* Plus/Minus-Zeilen */
.plusminus { list-style: none; margin: 0; padding: 0; font-size: 40px; line-height: 1.25; }
.plusminus li { position: relative; margin: 0 0 8px; padding-left: 1.15em; }
.plusminus li::before { position: absolute; left: 0; top: -0.04em; font-weight: 800; }
.plusminus li.plus::before { content: '+'; color: var(--sicher); }
.plusminus li.minus::before { content: '–'; color: var(--warnung); }

/* Checkliste */
.checkliste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 30px;
	font-size: 48px;
	line-height: 1.25;
}
.checkliste > li {
	position: relative;
	margin: 0;
	padding-left: 1.75em;
	min-height: 1.2em;
}
.checkliste > li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.02em;
	box-sizing: border-box;
	width: 1.15em;
	height: 1.15em;
	border: var(--kontur) solid var(--tinte);
	border-radius: 10px 14px 9px 13px / 13px 9px 14px 10px;
	background: #fff;
	transform: rotate(-3deg);
}
.checkliste > li::after {
	content: '';
	position: absolute;
	left: 0.05em;
	top: -0.28em;
	width: 1.35em;
	height: 1.35em;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M14 50 C 24 58 32 70 40 84 C 52 58 68 30 94 8' fill='none' stroke='%232f8f46' stroke-width='15' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
	opacity: 0;
	transform: scale(0.4) rotate(-12deg);
	transition: opacity 0.3s ease, transform 0.35s cubic-bezier(0.3, 1.6, 0.5, 1);
}
.checkliste > li.nein::after {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M22 24 C 40 44 58 62 80 84 M80 20 C 60 42 42 62 20 82' fill='none' stroke='%23d6402b' stroke-width='14' stroke-linecap='round'/%3E%3C/svg%3E");
}
.checkliste > li.erledigt::after,
.checkliste > li.nein::after,
.checkliste > li.abhaken.visible::after { opacity: 1; transform: none; }
.checkliste > li.abhaken.nein:not(.visible)::after { opacity: 0; }
.checkliste.kompakt { gap: 18px; font-size: 44px; }

/* Durchstreichen (statisch) */
.durch,
.streichen { position: relative; display: inline-block; }
.durch::after,
.streichen::after {
	content: '';
	position: absolute;
	left: -0.15em;
	right: -0.15em;
	top: 50%;
	height: 0.14em;
	border-radius: 0.07em;
	background: var(--warnung);
	transform: rotate(-2.5deg) scaleX(1);
	transform-origin: left center;
}
.ton-lila :is(.durch, .streichen)::after,
.ton-nacht :is(.durch, .streichen)::after { background: var(--orange); }

/* Ikonen-Raster (z. B. viele Konten) */
.ikon-raster {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 36px 28px;
}
.ikon-raster > li { margin: 0; display: flex; justify-content: center; }
.ikon-raster .ikon { --ikon: 150px; flex-direction: column; font-size: 40px; font-weight: 700; text-align: center; }

/* Mini-Treppe (SMS < App < Passkey) */
.treppchen {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: flex-end;
	gap: 14px;
}
.treppchen > li {
	box-sizing: border-box;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	width: 210px;
	margin: 0;
	padding: 0 8px 18px;
	border: var(--kontur) solid var(--tinte);
	border-radius: 10px 12px 4px 4px;
	font-size: 40px;
	font-weight: 800;
	color: var(--tinte);
	box-shadow: 8px 0 0 rgba(35, 18, 42, 0.12);
}
.treppchen > li:nth-child(1) { height: 120px; background: var(--t1, var(--orange-hell)); }
.treppchen > li:nth-child(2) { height: 190px; background: var(--t2, #ffc65c); }
.treppchen > li:nth-child(3) { height: 260px; background: var(--t3, var(--orange)); }

/* Längen-Balken (Länge schlägt Sonderzeichen) */
.balken {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	width: 100%;
	height: 84px;
	padding: 0 28px;
	border: var(--kontur) solid var(--tinte);
	font-family: var(--schrift-pixel);
	font-size: 40px;
	color: var(--tinte);
	background: repeating-linear-gradient(90deg, var(--orange) 0 44px, var(--gelb) 44px 48px);
	white-space: nowrap;
}

/* Buchstabenkästchen (Quiz) */
.kaestchen { display: inline-flex; gap: 10px; vertical-align: middle; }
.kaestchen .buchstabe {
	display: grid;
	place-items: center;
	width: 1.05em;
	height: 1.3em;
	border: 4px solid currentColor;
	perspective: 400px;
}
.kaestchen .buchstabe > span {
	display: block;
	opacity: 0;
	transform: rotateX(90deg);
	transition: opacity 0.25s ease, transform 0.35s ease;
	transition-delay: calc(var(--i) * 90ms);
	color: var(--orange);
}
.kaestchen:not(.fragment) .buchstabe > span,
.kaestchen.visible .buchstabe > span { opacity: 1; transform: none; }

/* ========== 8. Layouts ========== */

/* --- l-titel: Titelfolie (meist mit ton-lila) --- */
.l-titel > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1.32fr) minmax(0, 0.68fr);
	grid-template-rows: auto minmax(0, 1fr);
	column-gap: 56px;
	padding-top: calc(var(--band-hoehe) + 44px);
	padding-bottom: 64px;
}
.l-titel .logos { grid-column: 1 / -1; }
.l-titel .titel-text { align-self: center; }
.l-titel h1 { margin: 0 0 44px; font-size: 104px; line-height: 1.04; }
.l-titel h1 .akzent { display: block; margin-top: 10px; }
.l-titel .untertitel { margin: 0 0 12px; font-size: 48px; font-weight: 700; }
.l-titel .ort { margin: 0; font-size: 40px; }
.ton-lila.l-titel .ort,
.ton-nacht.l-titel .ort { color: var(--hell-leise); }
.l-titel .titel-bild { align-self: center; justify-self: end; width: 100%; max-width: 560px; }

/* --- l-abschnitt: Kapiteltrenner --- */
.l-abschnitt > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	column-gap: 72px;
}
.l-abschnitt .dachzeile { font-size: 56px; margin-bottom: 28px; }
.l-abschnitt h2 { margin: 0 0 28px; font-size: 120px; }
.l-abschnitt p { font-size: 52px; max-width: 1100px; }
.l-abschnitt .bild { width: 620px; max-height: 760px; }
.l-abschnitt .bild.ikon { --ikon: 420px; width: auto; }
.l-abschnitt .bild.stufenleiter { width: 660px; }

/* --- l-illu: Illustration + Text --- */
.l-illu > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	grid-template-rows: minmax(0, 1fr);
	column-gap: var(--luecke);
	align-items: center;
}
.l-illu .text { min-width: 0; }
.l-illu .text h2 { margin-bottom: 36px; }
.l-illu .bild { width: 100%; max-height: 100%; }
.l-illu.bild-links .bild { order: -1; }
.l-illu.bild-gross > .inhalt { grid-template-columns: minmax(0, 0.68fr) minmax(0, 1.32fr); }
.l-illu.bild-links.bild-gross > .inhalt { grid-template-columns: minmax(0, 1.32fr) minmax(0, 0.68fr); }

/* --- l-buehne: Illustration über die ganze Folie, Text im Kasten --- */
.l-buehne > .inhalt { padding: 0; }
.l-buehne .buehne-bild {
	position: absolute;
	left: 0;
	top: var(--band-hoehe);
	width: 100%;
	height: calc(100% - var(--band-hoehe));
}
.l-buehne .titelkasten.oben-links { top: calc(var(--band-hoehe) + 56px); bottom: auto; }
.l-buehne .titelkasten.oben-rechts { top: calc(var(--band-hoehe) + 56px); bottom: auto; left: auto; right: var(--rand); }
.l-buehne .titelkasten.unten-rechts { left: auto; right: var(--rand); }
.l-buehne .titelkasten { max-width: 760px; bottom: 90px; }

/* --- l-zahl: große Zahl --- */
.l-zahl > .inhalt { justify-content: center; }
.l-zahl.mit-bild > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	grid-template-rows: minmax(0, 1fr);
	align-items: center;
	column-gap: var(--luecke);
}
.l-zahl .zahl { margin-bottom: 6px; }

/* --- l-zweispalter --- */
.spalten {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	column-gap: 128px;
	align-content: start;
}
.spalten.mitte { align-content: center; align-items: center; }
.spalte { position: relative; min-width: 0; }
.spalte + .spalte::before {
	content: '';
	position: absolute;
	left: -66px;
	top: 6px;
	bottom: 6px;
	border-left: 5px dashed var(--linie);
}
.ton-lila .spalte + .spalte::before,
.ton-nacht .spalte + .spalte::before { border-color: rgba(255, 255, 255, 0.28); }
.spalte h3 { margin: 0 0 24px; }
.spalte > :last-child { margin-bottom: 0; }
.spalten.plus-minus .spalte > h3 { display: flex; align-items: center; gap: 0.35em; }
.spalten.plus-minus .spalte > h3::before {
	display: grid;
	place-items: center;
	flex: none;
	width: 1.15em;
	height: 1.15em;
	border: var(--kontur) solid var(--tinte);
	border-radius: 50%;
	font-family: var(--schrift-pixel);
	font-size: 0.9em;
	line-height: 1;
	color: #fff;
}
.spalten.plus-minus .spalte.plus > h3::before { content: '+'; background: var(--sicher); }
.spalten.plus-minus .spalte.minus > h3::before { content: '–'; background: var(--warnung); }

/* --- l-stufenleiter: große Stufenleiter --- */
.l-stufenleiter > .inhalt { align-items: stretch; }
.l-stufenleiter .inhalt > .stufenleiter {
	flex: 1 1 auto;
	min-height: 0;
	width: 100%;
}
.l-stufenleiter .inhalt > .stufenleiter .leiter-svg { width: 100%; height: 100%; }
.l-stufenleiter .leiter-text {
	position: absolute;
	top: var(--oben);
	left: var(--rand);
	z-index: 2;
	max-width: 50%;
}
.l-stufenleiter .leiter-text h2 { margin-bottom: 28px; }

/* --- l-vergleich: Tabelle --- */
.vergleich {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	font-size: 40px;
	line-height: 1.2;
}
.vergleich th,
.vergleich td {
	padding: 20px 26px;
	text-align: left;
	vertical-align: middle;
	border-bottom: 4px dashed var(--linie);
}
.vergleich thead th {
	padding-top: 0;
	font-size: 46px;
	font-weight: 800;
	color: var(--lila);
	border-bottom: var(--kontur) solid var(--tinte);
}
.vergleich tbody th { font-weight: 700; color: var(--grau); width: 26%; }
.vergleich tbody tr:last-child > * { border-bottom: 0; }
.vergleich .hervor { background: var(--orange-hell); }
.vergleich thead .hervor { background: var(--orange); color: var(--tinte); }
.vergleich .ikon { --ikon: 1.3em; }
.ja,
.nein,
.teils { display: inline-flex; align-items: center; gap: 0.35em; }
.ja::before,
.nein::before,
.teils::before {
	display: grid;
	place-items: center;
	flex: none;
	width: 1.05em;
	height: 1.05em;
	border-radius: 50%;
	font-size: 0.85em;
	font-weight: 800;
	color: #fff;
}
.ja::before { content: '✓'; background: var(--sicher); }
.nein::before { content: '✗'; background: var(--warnung); }
.teils::before { content: '~'; background: var(--orange-dunkel); }
.ton-lila .vergleich thead th,
.ton-nacht .vergleich thead th { color: var(--orange); border-color: #fff; }
.ton-lila .vergleich tbody th,
.ton-nacht .vergleich tbody th { color: var(--hell-leise); }
.ton-lila .vergleich :is(th, td),
.ton-nacht .vergleich :is(th, td) { border-bottom-color: rgba(255, 255, 255, 0.25); }

.l-vergleich .vergleich { margin-block: auto; }

/* --- l-karten: Tool-Karten --- */
.karten {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 48px;
	align-items: stretch;
}
.karten.zwei { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.karte {
	position: relative;
	display: flex;
	flex-direction: column;
	min-width: 0;
	min-height: 0;
	padding: 22px 30px 26px;
	border: var(--kontur) solid var(--tinte);
	border-radius: var(--skizzen-radius);
	color: var(--tinte);
	background: #fff;
	box-shadow: 12px 10px 0 var(--schatten);
}
.karte .karte-bild { display: block; width: 100%; height: 270px; margin: 0 auto 6px; }
.karte .karte-bild.ikon { --ikon: 200px; justify-content: center; }
.karte .weg { margin: 0; font-family: var(--schrift-hand); font-size: 54px; font-weight: 700; line-height: 1; color: var(--lila); }
.karte h3 { margin: 8px 0 12px; font-size: 52px; color: var(--tinte); }
.karte p { margin: 0 0 12px; font-size: 40px; line-height: 1.25; }
.karte .plusminus { margin-top: auto; }
.karte .stempel { position: absolute; top: -30px; right: -22px; font-size: 40px; }
.karte.hervor { box-shadow: 12px 10px 0 var(--orange); }

/* --- l-liste: Aufzählung, l-checkliste: Abhakliste --- */
.l-liste .liste,
.l-checkliste .checkliste { max-width: 1500px; }
.l-liste.mit-bild > .inhalt,
.l-checkliste.mit-bild > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
	grid-template-rows: auto minmax(0, 1fr);
	column-gap: var(--luecke);
}
.l-liste.mit-bild > .inhalt > h2,
.l-checkliste.mit-bild > .inhalt > h2,
.l-liste.mit-bild > .inhalt > .dachzeile,
.l-checkliste.mit-bild > .inhalt > .dachzeile { grid-column: 1 / -1; }
.l-liste.mit-bild .bild,
.l-checkliste.mit-bild .bild { align-self: center; width: 100%; }

/* --- l-zitat --- */
.l-zitat > .inhalt { justify-content: center; }
.zitat { position: relative; margin: 0; max-width: 1520px; padding-left: 150px; }
.zitat::before {
	content: '„';
	position: absolute;
	left: -6px;
	top: -150px;
	font-family: var(--schrift-hand);
	font-size: 380px;
	font-weight: 700;
	line-height: 1;
	color: var(--orange);
}
.zitat p { margin: 0 0 32px; font-size: 68px; font-weight: 700; line-height: 1.2; text-wrap: balance; }
.zitat cite,
.zitat footer { display: block; font-size: 40px; font-style: normal; color: var(--grau); }
.ton-lila .zitat cite,
.ton-nacht .zitat cite { color: var(--hell-leise); }

/* --- l-frage: Titelfrage / Urteil --- */
.l-frage > .inhalt { justify-content: center; }
.l-frage h2 { font-size: 112px; margin: 0 0 24px; }
.l-frage .antwort {
	display: block;
	margin: 12px 0 0;
	font-family: var(--schrift-pixel);
	font-size: 230px;
	font-weight: 700;
	line-height: 1;
	color: var(--orange-dunkel);
}
.ton-lila.l-frage .antwort,
.ton-nacht.l-frage .antwort { color: var(--orange); }
.l-frage.mit-bild > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
	align-items: center;
	align-content: center;
	column-gap: var(--luecke);
}

/* --- l-zeitleiste --- */
.zeitleiste {
	position: relative;
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	column-gap: 40px;
}
.zeitleiste::before {
	content: '';
	position: absolute;
	left: 4%;
	right: 4%;
	top: 162px;
	border-top: 6px dashed var(--grau);
}
.zeitleiste > li {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin: 0;
	text-align: center;
}
.zeitleiste .wann { font-family: var(--schrift-pixel); font-size: 40px; line-height: 1.1; color: var(--orange-dunkel); }
.zeitleiste .ikon { --ikon: 180px; position: relative; border-radius: 50%; background: var(--papier); }
.zeitleiste .was { font-size: 44px; font-weight: 700; line-height: 1.2; }
.zeitleiste li.weg .ikon::after {
	content: '';
	position: absolute;
	inset: 6%;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M18 20 C 40 42 60 62 84 84 M84 18 C 62 40 42 62 16 82' fill='none' stroke='%23d6402b' stroke-width='9' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ton-lila .zeitleiste::before,
.ton-nacht .zeitleiste::before { border-color: var(--hell-leise); }
.ton-lila .zeitleiste .ikon,
.ton-nacht .zeitleiste .ikon { background: transparent; }
.ton-lila .zeitleiste .wann,
.ton-nacht .zeitleiste .wann { color: var(--orange); }

/* --- l-quiz: Rangliste im Retro-Look (gut mit ton-nacht) --- */
.l-quiz > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
	grid-template-rows: auto minmax(0, 1fr);
	column-gap: var(--luecke);
}
.l-quiz > .inhalt > :is(h2, .dachzeile) { grid-column: 1 / -1; }
.rangliste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-family: var(--schrift-pixel);
	font-size: 54px;
	line-height: 1.15;
}
.rangliste > li { display: grid; grid-template-columns: 2.1em minmax(0, 1fr); align-items: center; margin: 0; }
.rangliste .platz { color: var(--orange-dunkel); }
.ton-lila .rangliste .platz,
.ton-nacht .rangliste .platz { color: var(--orange); }
.rangliste > li.gesucht { margin: 8px 0; padding: 10px 0; border-top: 4px dashed currentColor; border-bottom: 4px dashed currentColor; }
.l-quiz .seite { align-self: center; display: flex; flex-direction: column; align-items: flex-start; gap: 28px; }

/* --- l-rezept: Rezeptkarte --- */
.l-rezept > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	grid-template-rows: minmax(0, 1fr);
	column-gap: var(--luecke);
	align-items: center;
}
.rezeptkarte {
	--dreh: -1.2deg;
	position: relative;
	padding: 48px 56px 44px;
	border: 6px solid var(--lila);
	border-radius: 12px;
	outline: 3px solid var(--lila);
	outline-offset: -20px;
	color: var(--tinte);
	background: #fffdf6;
	box-shadow: 16px 16px 0 var(--schatten);
	transform: rotate(var(--dreh));
}
.rezeptkarte .rezept-kopf {
	margin: 0 0 8px;
	font-family: var(--schrift-pixel);
	font-size: 36px;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--orange-dunkel);
}
.rezeptkarte h2 { margin: 0 0 18px; font-size: 72px; color: var(--lila); }
.rezept-meta { display: flex; flex-wrap: wrap; gap: 12px 44px; margin: 0 0 26px; font-size: 40px; color: var(--grau); }
.rezept-meta > span { display: inline-flex; align-items: center; gap: 0.3em; }
.rezept-schritte { list-style: none; margin: 0; padding: 0; font-size: 42px; line-height: 1.2; }
.rezept-schritte > li {
	display: grid;
	grid-template-columns: 1.6em minmax(0, 1fr);
	column-gap: 0.5em;
	align-items: center;
	margin: 0;
	padding: 12px 0;
	border-top: 3px dotted var(--lila-mittel);
}
.rezept-schritte .ikon { --ikon: 1.6em; }
.rezept-schritte b { font-family: var(--schrift-pixel); font-weight: 700; font-size: 0.86em; text-transform: uppercase; color: var(--lila); }

/* --- l-wegweiser: Entscheidungshilfe --- */
.wegweiser {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 36px;
}
.wegweiser > li {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 120px minmax(0, 0.6fr);
	align-items: center;
	column-gap: 18px;
	margin: 0;
}
.wegweiser .wenn {
	order: 1;
	display: flex;
	align-items: center;
	gap: 24px;
	padding: 16px 30px;
	border: var(--kontur) solid var(--tinte);
	border-radius: var(--skizzen-radius);
	font-size: 42px;
	line-height: 1.2;
	color: var(--tinte);
	background: #fff;
	box-shadow: 10px 8px 0 var(--schatten);
}
.wegweiser .wenn .ikon { --ikon: 2em; }
.wegweiser > li::after {
	content: '';
	order: 2;
	height: 70px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 70'%3E%3Cpath d='M6 37 C 34 31 66 41 104 34 M82 12 C 92 22 102 30 110 35 C 100 42 92 50 80 60' fill='none' stroke='%2323122a' stroke-width='8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ton-lila .wegweiser > li::after,
.ton-nacht .wegweiser > li::after { filter: invert(1); }
.wegweiser .dann {
	order: 3;
	justify-self: start;
	padding: 20px 76px 20px 34px;
	font-size: 48px;
	font-weight: 800;
	line-height: 1.1;
	color: var(--tinte);
	background: var(--orange);
	clip-path: polygon(0 0, calc(100% - 48px) 0, 100% 50%, calc(100% - 48px) 100%, 0 100%);
}
.l-wegweiser.mit-qr > .inhalt { padding-right: calc(var(--rand) + 280px); }
.l-wegweiser .qr.ecke { position: absolute; right: var(--rand); bottom: var(--unten); }

/* --- l-schluss: Los geht's + QR-Codes --- */
.l-schluss > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
	grid-template-rows: minmax(0, 1fr) auto;
	column-gap: var(--luecke);
	row-gap: 40px;
}
.l-schluss .schluss-text { align-self: center; }
.l-schluss .schluss-text h2 { font-size: 104px; margin-bottom: 36px; }
.l-schluss .qr-reihe { grid-column: 1; grid-row: 2; }
.l-schluss .schluss-seite {
	grid-column: 2;
	grid-row: 1 / -1;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	gap: 32px;
}
.l-schluss .schluss-seite .aufkleber { width: 100%; max-width: 500px; }
.l-schluss .schluss-seite .logos { gap: 32px; }

/* --- l-nachweise: Bildnachweise / Danke --- */
.l-nachweise > .inhalt {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-rows: auto minmax(0, 1fr);
	column-gap: var(--luecke);
}
.l-nachweise > .inhalt > h2 { grid-column: 1 / -1; }
.nachweise { list-style: none; margin: 0; padding: 0; font-size: 32px; line-height: 1.4; }
.nachweise > li { margin: 0 0 18px; padding-left: 28px; border-left: 6px solid var(--orange); }
.l-nachweise .qr-reihe { align-self: end; gap: 32px; }

/* ========== 9. Stufenleiter (inline-SVG aus js/skizzen-daten.js) ========== */
.stufenleiter { position: relative; line-height: 0; }
.stufenleiter .leiter-svg { display: block; width: 100%; height: auto; overflow: visible; }
.leiter-stufe .sl-grund { fill: #fff; }
.leiter-stufe .sl-nr {
	font-family: var(--schrift-pixel);
	font-size: 92px;
	font-weight: 700;
	fill: var(--tinte);
}
.leiter-stufe .sl-label {
	font-family: var(--schrift-hand);
	font-size: 50px;
	font-weight: 700;
	fill: var(--tinte);
}
.leiter-stufe .sl-ikon { overflow: visible; }

/* kommend: neutral, Ikone entsättigt */
.leiter-stufe.kommend .sl-front { fill: var(--neutral-hell); }
.leiter-stufe.kommend .sl-top { fill: var(--neutral); }
.leiter-stufe.kommend .sl-nr,
.leiter-stufe.kommend .sl-label { fill: var(--grau); }
.leiter-stufe.kommend .sl-ikon { --ik-a: #d9d4c7; --ik-b: #ece7da; --ik-c: #d9d4c7; opacity: 0.75; }

/* erledigt: gedämpftes Lila */
.leiter-stufe.erledigt .sl-front { fill: var(--lila-mittel); }
.leiter-stufe.erledigt .sl-top { fill: #efe0f2; }
.leiter-stufe.erledigt .sl-nr,
.leiter-stufe.erledigt .sl-label { fill: var(--lila-dunkel); }
.leiter-stufe.erledigt .sl-ikon { opacity: 0.6; }

/* aktuell: Orange */
.leiter-stufe.aktuell .sl-front { fill: var(--orange); }
.leiter-stufe.aktuell .sl-top { fill: #ffd58a; }

/* alle farbig: Lila von hell nach dunkel, Stufe 6 orange */
.leiter-stufe.farbig[data-nr='1'] .sl-front { fill: #efe0f2; }
.leiter-stufe.farbig[data-nr='2'] .sl-front { fill: #dcb8e2; }
.leiter-stufe.farbig[data-nr='3'] .sl-front { fill: #c48fce; }
.leiter-stufe.farbig[data-nr='4'] .sl-front { fill: #9c4ea8; }
.leiter-stufe.farbig[data-nr='5'] .sl-front { fill: #74157d; }
.leiter-stufe.farbig[data-nr='6'] .sl-front { fill: var(--orange); }
.leiter-stufe.farbig .sl-top { fill: #f6ecf8; }
.leiter-stufe.farbig[data-nr='6'] .sl-top { fill: #ffd58a; }
.leiter-stufe.farbig:is([data-nr='4'], [data-nr='5']) :is(.sl-nr, .sl-label) { fill: #fff; }

/* ohne Beschriftung / ohne Nummern */
.stufenleiter[data-beschriftung='aus'] .sl-label,
.stufenleiter.ecke .sl-label { display: none; }
.stufenleiter[data-nummern='aus'] .sl-nr { display: none; }

/* Mini-Leiter oben rechts als Fortschrittsanzeige */
.stufenleiter.ecke {
	position: absolute;
	top: calc(var(--band-hoehe) + 18px);
	right: 44px;
	z-index: 4;
	width: 300px;
}
.reveal section:has(> .stufenleiter.ecke) > .inhalt > :is(h2, .dachzeile, .stufe-badge, .etikett) { margin-right: 300px; }

/* Marken: Figur, Sprechblase … auf einer Stufe (deck.js setzt left/top) */
.leiter-marke {
	position: absolute;
	z-index: 3;
	line-height: normal;
	transform: translate(-50%, -100%);
	white-space: nowrap;
}
.leiter-marke.sprechblase { transform: translate(-12%, calc(-100% - 150px)); }
.stufenleiter.ecke .leiter-marke.sprechblase { transform: translate(-115%, -10%); font-size: 30px; }
.stufenleiter.ecke .leiter-marke.sprechblase::before,
.stufenleiter.ecke .leiter-marke.sprechblase::after { display: none; }

/* ========== 10. Fragmente (dezent) ========== */
.reveal .fragment {
	transition: opacity 0.45s ease, transform 0.45s ease, visibility 0.45s;
}
.reveal .fragment.fade-up { transform: translateY(28px); }
.reveal .fragment.fade-up.visible { transform: none; }
.reveal .fragment.fade-left { transform: translateX(36px); }
.reveal .fragment.fade-left.visible { transform: none; }

/* aufblitzen: erscheint und blinkt einmal pixelig */
.reveal .fragment.aufblitzen.visible { animation: aufblitzen 0.36s steps(1, end) 3; }
@keyframes aufblitzen { 0% { opacity: 0; } 50% { opacity: 1; } }

/* streichen: Text bleibt stehen, eine Linie zieht durch */
.reveal .fragment.streichen { opacity: 1; visibility: inherit; }
.reveal .fragment.streichen::after { transform: rotate(-2.5deg) scaleX(0); transition: transform 0.5s ease; }
.reveal .fragment.streichen.visible::after { transform: rotate(-2.5deg) scaleX(1); }
.reveal .fragment.streichen.visible { color: var(--grau); transition: color 0.5s ease 0.2s; }
.reveal .ton-lila .fragment.streichen.visible,
.reveal .ton-nacht .fragment.streichen.visible { color: var(--hell-leise); }

/* stempeln: fällt mit Schwung auf die Folie */
.reveal .fragment.stempeln { opacity: 0; transform: rotate(var(--dreh, -7deg)) scale(1.9); }
.reveal .fragment.stempeln.visible {
	opacity: 1;
	transform: rotate(var(--dreh, -7deg)) scale(1);
	transition: opacity 0.15s ease, transform 0.32s cubic-bezier(0.3, 1.5, 0.55, 1);
}

/* hervorheben: Element ist schon da und bekommt Textmarker */
.reveal .fragment.hervorheben { opacity: 1; visibility: inherit; transition: background-size 0.5s ease; }
.reveal .fragment.hervorheben.visible {
	background: linear-gradient(176deg, transparent 52%, var(--orange-hell) 52%, var(--orange-hell) 90%, transparent 90%);
}
.reveal .ton-lila .fragment.hervorheben.visible,
.reveal .ton-nacht .fragment.hervorheben.visible { color: var(--orange); background: none; }

/* abhaken: Checklisten-Punkt ist da, der Haken kommt per Klick */
.reveal .fragment.abhaken { opacity: 1; visibility: inherit; }

/* wachsen: Balken wächst pixelweise */
.reveal .fragment.wachsen { opacity: 1; visibility: inherit; transform: scaleX(0.04); transform-origin: left center; }
.reveal .fragment.wachsen.visible { transform: none; transition: transform 1.1s steps(14, end); }

/* ========== 11. Druck / PDF (?print-pdf) ========== */
/* reveal setzt im Druck section{padding:0!important} – für Folien ohne .inhalt wiederherstellen */
html.reveal-print .reveal .slides .pdf-page > section {
	padding: calc(var(--band-hoehe) + 64px) var(--rand) 72px !important;
}
html.reveal-print .reveal .slides .pdf-page > section.vollbild-foto { padding: 0 !important; }
html.reveal-print .reveal .slide-number-pdf { left: 30px; bottom: 18px; font-size: 22px; }
html.reveal-print .pdf-page:has(> section:is(.ton-lila, .ton-nacht)) .slide-number-pdf { color: var(--hell-leise); }
html.reveal-print .pdf-page:has(> section:is(.l-titel, [data-ohne-nummer])) .slide-number-pdf { display: none; }
