# Gestaltungssystem „DI.DAY × luise“: Anleitung für die Foliensätze

Gilt für die drei Varianten A „Alltagsgeschichte“, B „Mitmachen“, C „Wechselrezept“.
Jedes Layout und jeden Baustein siehst du mit Beispielinhalt in **`entwuerfe/muster.html`** (30 Folien, mit Notizen). Wenn du unsicher bist: Schnipsel dort abschauen.

## Regeln

1. **Geteilte Dateien NICHT ändern:** `css/theme.css`, `js/deck.js`, `js/skizzen-daten.js`, `assets/illustrationen/skizze/*`, `assets/logos/*`, `assets/deko/*`, `assets/fonts/*`, `vendor/*`, `werkzeuge/*`. Fehlt dir etwas Gemeinsames, melde es, statt es selbst einzubauen.
2. **Variantenspezifisches CSS** nur in `css/variante-<x>.css` (x = a, b, c), eingebunden NACH `theme.css`.
3. **Variantenspezifische Grafiken** nur in `assets/illustrationen/variante-<x>/` (z. B. Erika als Pixelfigur, Schnickschnack-o-Meter, Highscore-Deko).
4. **Foliensatz-Datei:** `variante-<x>.html` im Projektwurzelordner (`/home/matthias/GIT/merlina-minds/di-day-passwort-manager/variante-<x>.html`).
5. **Offline:** keine externen Ressourcen (kein CDN, keine Webfonts aus dem Netz, keine Bilder von URLs). Alles muss per Doppelklick über `file://` laufen.
6. **SVGs mit eigener Schrift** (alle Skizzen) per `<object type="image/svg+xml">` einbinden, nie per `<img>`, sonst fehlt die Handschrift.
7. **Keine Fotos** (`assets/img/` wird nicht verwendet), keine Fremdlogos von Tools oder Browsern: Namen nur als Text.
8. **Bildnachweis Pflicht** überall, wo die Biege-Illustration steht: „Illustration: Florian Biege für di.day“.
9. **Lesbarkeit:** Text auf Folien mindestens 40 px (die Klassen halten das ein), Quellen und Bildnachweise mindestens 22 px. Schriftgrößen nicht kleiner überschreiben. Lieber Text kürzen oder auf zwei Folien verteilen.
10. Fakten nur aus `recherche/faktenblatt.md` und `recherche/stufenleiter.md`, Abschnitte „Nicht behaupten / Vorsicht“ beachten.

## Dateigerüst eines Foliensatzes

```html
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Passwortmanager – Schutz oder Schnickschnack? (Variante A)</title>
<link rel="stylesheet" href="vendor/reveal.js/reset.css">
<link rel="stylesheet" href="vendor/reveal.js/reveal.css">
<link rel="stylesheet" href="css/theme.css">
<link rel="stylesheet" href="css/variante-a.css">
</head>
<body>
<div class="reveal">
<div class="slides">

<section class="l-titel ton-lila">
	<div class="inhalt"> … </div>
	<aside class="notes">Sprechtext …</aside>
</section>

<!-- weitere Folien -->

</div>
</div>
<script src="vendor/reveal.js/reveal.js"></script>
<script src="vendor/reveal.js/plugin/notes.js"></script>
<script src="js/skizzen-daten.js"></script>
<!-- optional: <script>window.DECK_OPTIONEN = { autoAnimateDuration: 0.6 };</script> -->
<script src="js/deck.js"></script>
</body>
</html>
```

Die Pfade gelten für `variante-<x>.html` im Wurzelordner (die Musterseite liegt in `entwuerfe/` und nutzt deshalb `../`).

**`js/deck.js`** startet reveal (1920 × 1080, margin 0, center false, hash, transition fade, controls, progress, Seitenzahl, Notizen-Plugin, `pdfSeparateFragments: false`, `pdfMaxPagesPerSlide: 1`) und erledigt vorher:

- Pixelband oben auf jede Folie. Abschalten mit `data-band="aus"` (oder `data-ohne-band`), unten bzw. beidseitig mit `data-band="unten"` / `data-band="beide"`.
- Ton-Klassen setzen die Hintergrundfarbe (siehe unten).
- Baut Ikonen, Stufenleitern und Quiz-Kästchen aus `js/skizzen-daten.js`.
- Seitenzahl unten links, ausgeblendet auf `l-titel` und auf Folien mit `data-ohne-nummer`.
- Eigene reveal-Optionen: `window.DECK_OPTIONEN = {…}` VOR `deck.js` setzen.

## Grundgerüst jeder Folie

```html
<section class="l-LAYOUT ton-…">
	<div class="stufenleiter ecke" data-stufe="3"></div>   <!-- optional, außerhalb .inhalt -->
	<div class="inhalt">
		… sichtbarer Inhalt …
	</div>
	<p class="quelle">Quelle: …</p>                         <!-- optional, außerhalb .inhalt -->
	<aside class="notes">Sprechtext …</aside>
</section>
```

- **Alles Sichtbare kommt in `<div class="inhalt">`.** `.inhalt` füllt die Folie, hält die Ränder (oben 96 px unter dem Band, seitlich 96 px, unten 76 px) und ist eine Spalte von oben nach unten. Die Layout-Klasse am `<section>` macht daraus das jeweilige Raster.
- **Außerhalb von `.inhalt`** stehen nur absolut platzierte Helfer: `.quelle`, `.bildnachweis`, `.stufenleiter.ecke`, `.qr.ecke`, `aside.notes`.
- `.raster` oder `.fuellen` an einem Kind von `.inhalt` lässt es den Restplatz füllen.
- Ohne Layout-Klasse geht es auch: Dann stapelt `.inhalt` einfach Überschrift, Text, Raster.

### Töne (Hintergrund)

| Klasse | Hintergrund | Text |
|---|---|---|
| (keine) | Papier `#fffaf3` | Tinte, Überschriften Lila |
| `ton-lila` | Lila `#74157d` | Weiß, Akzente Orange |
| `ton-nacht` | Dunkellila `#4a0d50` | Weiß, Akzente Orange (gut für Quiz) |
| `ton-hell` | Hell-Lila `#f3e6f5` | wie Papier |
| `ton-orange` | Orange `#fea300` | Tinte, Akzente Lila |

Logos und Biege-Illustration haben dunkle Linien: Auf Lila immer in `.aufkleber` bzw. `.logo-luise` setzen (weißer Grund). Das DI.DAY-Logo `diday.svg` funktioniert auf beiden Gründen.

### Text-Helfer

| Klasse | Wirkung |
|---|---|
| `h1` 120 px, `h2` 84 px, `h3` 56 px | Überschriften (Lila; auf Lila weiß) |
| `.dachzeile` | Pixelschrift-Zeile über der Überschrift („STUFE 4“, „ZUTATEN“) |
| `.stufe-badge`, `.etikett` (+ `.orange`) | Pixel-Etikett auf Lila bzw. Orange |
| `.akzent` | Orange (auf Papier dunkles Orange) |
| `.marker` | Textmarker in Hell-Orange |
| `.gross` 56 px, `.klein` 40 px | Textgrößen |
| `.leise` | Grau (auf Lila hell) |
| `.pixel`, `.hand` | Silkscreen bzw. Caveat |
| `.durch` | dauerhaft durchgestrichen |
| `.zentriert`, `.unten-raus` | zentrieren; Element an den unteren Rand schieben |

## Layouts

### `l-titel`
```html
<section class="l-titel ton-lila">
	<div class="inhalt">
		<div class="logos">
			<img class="logo-diday" src="assets/logos/diday.svg" alt="DI.DAY">
			<span class="logo-luise"><img src="assets/logos/luise.png" alt="luise Oranienburg"></span>
		</div>
		<div class="titel-text">
			<p class="dachzeile">Impulsvortrag · DI.DAY</p>
			<h1>Passwortmanager –<span class="akzent">Schutz oder Schnickschnack?</span></h1>
			<p class="untertitel">Matthias Kerk · 1. November 2026</p>
			<p class="ort">luise Oranienburg · Oranienwerk, Kreativ Oase</p>
		</div>
		<figure class="titel-bild aufkleber">
			<img src="assets/logos/diday-illustration-florian-biege.png" alt="Ein lachendes Smartphone hat seine Kabel abgerissen">
			<figcaption>Illustration: Florian Biege für di.day</figcaption>
		</figure>
	</div>
</section>
```
Seitenzahl ist hier automatisch aus. Die Illustration darf auch fehlen (dann bleibt die rechte Spalte leer) oder durch eine eigene Grafik ersetzt werden.

### `l-abschnitt` (Kapiteltrenner)
```html
<section class="l-abschnitt ton-lila">
	<div class="inhalt">
		<div class="text">
			<p class="dachzeile">Zubereitung</p>
			<h2>Sechs Stufen bis zum eigenen Tresor</h2>
			<p>Jede Stufe hat was für sich. Und jede hat einen Haken.</p>
		</div>
		<div class="bild stufenleiter" data-stufe="alle" data-beschriftung="aus"></div>
		<!-- oder: <span class="bild ikon" data-ikon="tresor"></span> / <object class="bild illu" …> -->
	</div>
</section>
```

### `l-illu` (Illustration + Text)
```html
<section class="l-illu">               <!-- Varianten: bild-links, bild-gross -->
	<div class="stufenleiter ecke" data-stufe="1"></div>
	<div class="inhalt">
		<div class="text">
			<span class="stufe-badge">Stufe 1</span>
			<h2>Ein Schlüssel für alles</h2>
			<p>Bequem, kein Werkzeug, kostet nichts.</p>
			<p class="fragment fade-up">…</p>
		</div>
		<object class="illu bild" type="image/svg+xml"
			data="assets/illustrationen/skizze/stufe1-ein-schluessel.svg"
			aria-label="Ein Schlüssel passt in fünf Schlösser, eine Elster hat eine Kopie"></object>
	</div>
	<p class="quelle">Quelle: …</p>
</section>
```
`bild-gross`: Grafik bekommt zwei Drittel der Breite. `bild-links`: Grafik links. Mehrere Ebenen übereinander (Grafik + Stempel, Grafik A wird zu Grafik B): `<div class="r-stack bild"> <object class="illu" …> <span class="stempel fragment stempeln">…</span> </div>`.

### `l-buehne` (Grafik über die ganze Folie, Text im Kasten)
```html
<section class="l-buehne">
	<div class="stufenleiter ecke" data-stufe="2"></div>
	<div class="inhalt">
		<object class="buehne-bild" type="image/svg+xml" data="assets/illustrationen/skizze/stufe2-postit.svg" aria-label="…"></object>
		<div class="titelkasten oben-links">   <!-- oben-links | unten-links (Standard) | oben-rechts | unten-rechts -->
			<span class="stufe-badge">Stufe 2</span>
			<h2>Der Zettel am Bildschirm</h2>
			<p>Sicher vor dem Internet. Nicht vor Besuch.</p>
		</div>
	</div>
</section>
```
Passt zu Grafiken mit freier Fläche links: Stufe 1, 2, 4, 5, tresor-weggerollt. Overlays (Handschrift auf dem Zettel o. Ä.) mit `.handnotiz` und `style="left:…; top:…"` absolut in `.inhalt` setzen.

### `l-zahl` (große Zahl)
```html
<section class="l-zahl ton-lila">
	<div class="inhalt">
		<p class="leise">„Niemand kann sich Dutzende von Zugangsdaten merken.“ – Bitkom</p>
		<p class="zahl">10<span class="einheit"> %</span></p>
		<p class="zahl-text">nutzen einen eigenständigen Passwortmanager.</p>
	</div>
	<p class="quelle">Quelle: BSI, Cybersicherheitsmonitor 2025</p>
</section>
```
Auf Papier ist die Zahl Lila, auf Lila Orange. `l-zahl mit-bild` = Zahl links, `.bild` rechts (Muster-Folie 5). `.zahl.mittel` (200 px) passt in andere Layouts, `.zahl.pixel` in Pixelschrift. Zwei Zahlen nebeneinander: `<div class="zahlen"><div>…zahl…</div><span class="ikon gross pfeil" data-ikon="pfeil" data-titel=""></span><div>…</div></div>`.

### `l-zweispalter`
```html
<section class="l-zweispalter">
	<div class="inhalt">
		<p class="dachzeile">Stufe 5</p>
		<h2>Der Profi-Tresor im Abo</h2>
		<div class="spalten plus-minus raster">     <!-- ohne plus-minus: neutrale Spalten; .mitte = vertikal zentriert -->
			<div class="spalte plus"><h3>Fair ist</h3><ul class="liste eng"><li>…</li></ul></div>
			<div class="spalte minus fragment"><h3>Der Haken</h3><ul class="liste eng"><li>…</li></ul></div>
		</div>
	</div>
</section>
```

### `l-stufenleiter`
```html
<section class="l-stufenleiter">
	<div class="inhalt">
		<h2>Sechs Stufen, von „au weia“ bis „richtig gut“</h2>
		<div class="stufenleiter" data-stufe="0">
			<span class="leiter-marke sprechblase pixel fragment" data-nr="1">Und du?</span>
		</div>
	</div>
</section>
```
Text in der freien Fläche oben links statt Überschrift darüber: `<div class="leiter-text"><h2>…</h2><ol class="liste eng">…</ol></div>` als erstes Kind von `.inhalt` (Muster-Folie 7). Details zur Leiter siehe unten.

### `l-vergleich` (Tabelle)
```html
<section class="l-vergleich">
	<div class="inhalt">
		<h2>Wem gehört der Tresor?</h2>
		<table class="vergleich">
			<thead><tr><th></th><th>Browser</th><th>Abo-Tresor</th><th class="hervor">Dein Tresor</th></tr></thead>
			<tbody>
				<tr><th>Code offen?</th><td><span class="teils">teils</span></td><td><span class="nein">nein</span></td><td class="hervor"><span class="ja">ja</span></td></tr>
			</tbody>
		</table>
	</div>
</section>
```
Höchstens 4 Zeilen × 3 Spalten. `.ja` / `.nein` / `.teils` setzen ein farbiges Zeichen davor, `.hervor` färbt eine Spalte.

### `l-karten` (Tool-Karten)
```html
<section class="l-karten">
	<div class="stufenleiter ecke" data-stufe="6"></div>
	<div class="inhalt">
		<p class="dachzeile">Stufe 6</p>
		<h2>Unsere drei Favoriten</h2>
		<div class="karten raster">                 <!-- .karten.zwei für zwei Karten -->
			<article class="karte fragment">         <!-- .karte.hervor = orangener Schatten -->
				<object class="karte-bild" type="image/svg+xml" data="assets/illustrationen/skizze/favorit-lokal.svg" aria-label="…"></object>
				<p class="weg">lokal bei dir</p>
				<h3>KeePassXC-Familie</h3>
				<p>Datei bei dir, kein Konto</p>
				<ul class="plusminus"><li class="plus">kostenlos, ohne Cloud</li><li class="minus">Abgleich selbst</li></ul>
				<span class="stempel gruen klein">Erste Wahl</span>
			</article>
			…
		</div>
	</div>
</section>
```
Statt Grafik geht auch eine Ikone: `<span class="karte-bild ikon" data-ikon="datei" data-titel=""></span>`. Pro Karte höchstens: Weg, Name, eine Zeile, zwei Plus/Minus.

### `l-liste` und `l-checkliste`
```html
<section class="l-liste">                       <!-- .mit-bild: Liste links, .bild rechts -->
	<div class="inhalt">
		<h2>Drei Dinge bis heute Abend</h2>
		<ul class="liste">                         <!-- ol.liste = Pixel-Ziffern; .eng = dichter -->
			<li class="fragment"><span class="ikon" data-ikon="tresor" data-titel=""></span>Passwortmanager installieren</li>
			<li class="fragment">ohne Ikone: oranges Pixel als Punkt</li>
		</ul>
	</div>
</section>

<section class="l-checkliste mit-bild">
	<div class="inhalt">
		<h2>Was du nicht mehr musst</h2>
		<div>
			<ul class="checkliste">
				<li class="nein abhaken fragment"><span class="streichen fragment">Alle paar Monate ändern</span></li>
				<li class="erledigt"><strong>Länge vor Sonderzeichen</strong></li>
			</ul>
			<div class="balken fragment wachsen">Länge schlägt Komplexität</div>
		</div>
		<object class="illu quadrat bild" type="image/svg+xml" data="assets/illustrationen/skizze/kaffeetasse.svg" aria-label="Dampfende Kaffeetasse"></object>
	</div>
</section>
```
`li.erledigt` = grüner Haken, `li.nein` = rotes Kreuz, `.abhaken.fragment` = Zeichen kommt per Klick.

### `l-zitat`
```html
<section class="l-zitat ton-lila">
	<div class="inhalt">
		<blockquote class="zitat">
			<p>Ein Passwortmanager funktioniert ähnlich wie ein Notizbuch, das in einer Schublade eingeschlossen ist.</p>
			<cite>BSI</cite>
		</blockquote>
	</div>
</section>
```

### `l-frage` (Titelfrage / Urteil)
```html
<section class="l-frage ton-lila">              <!-- .mit-bild: zweispaltig, z. B. Leiter rechts -->
	<div class="inhalt">
		<h2>Passwortmanager – Schutz oder <span class="streichen fragment">Schnickschnack?</span></h2>
		<p class="antwort fragment aufblitzen">Schutz.</p>
		<p class="fragment fade-up">„Aus Sicht des BSI überwiegt der Nutzen bei weitem.“</p>
	</div>
</section>
```

### `l-zeitleiste`
```html
<section class="l-zeitleiste">
	<div class="inhalt">
		<p class="dachzeile">2025</p>
		<h2>Der Passwortmanager, der verschwand</h2>
		<ol class="zeitleiste">
			<li class="fragment weg"><span class="wann">Juni</span><span class="ikon" data-ikon="diskette" data-titel="Speichern"></span><span class="was">kein Speichern</span></li>
			…
		</ol>
		<p class="fragment fade-up gross unten-raus"><strong>Umzug nach fremdem Zeitplan</strong></p>
	</div>
</section>
```
`li.weg` legt ein rotes Kreuz über die Ikone. 3 bis 4 Punkte.

### `l-quiz` (Rangliste im Retro-Look)
```html
<section class="l-quiz ton-nacht">
	<div class="inhalt">
		<p class="dachzeile">Quiz</p>
		<h2>Meistgeleakte Passwörter 2025</h2>
		<ol class="rangliste">
			<li><span class="platz">1</span><span>123456</span></li>
			…
			<li class="gesucht"><span class="platz">6</span><span class="kaestchen fragment" data-loesung="kaffeetasse"></span></li>
		</ol>
		<div class="seite"><p class="sprechblase pixel">11 Buchstaben?</p><span class="ikon riesig" data-ikon="kaffee" data-titel="Kaffeetasse"></span></div>
	</div>
	<p class="quelle">Hasso-Plattner-Institut, Januar 2026 · gezählt in Datenlecks</p>
</section>
```
`.kaestchen data-loesung="…"` wird zu leeren Kästchen; als Fragment drehen sich die Buchstaben nacheinander um.

### Handzeichen (in jedem Layout)
```html
<p class="handzeichen fragment"><span class="ikon" data-ikon="hand" data-titel=""></span>Wer hat mehr als zehn Online-Konten?</p>
```

### `l-rezept` (Rezeptkarte)
```html
<section class="l-rezept ton-hell">
	<div class="inhalt">
		<div class="rezeptkarte">
			<p class="rezept-kopf">Wechselrezept</p>
			<h2>Passwörter in Deiner Hand</h2>
			<p class="rezept-meta"><span><span class="ikon" data-ikon="kalender" data-titel=""></span>30 Min.</span><span>Schwierigkeit: mittel</span></p>
			<ol class="rezept-schritte">
				<li><span class="ikon" data-ikon="schluessel" data-titel=""></span><span><b>Zutaten</b> · warum überhaupt</span></li>
				…
			</ol>
		</div>
		<div> rechte Spalte frei (z. B. Messgerät) </div>
	</div>
</section>
```

### `l-wegweiser` (Entscheidungshilfe)
```html
<section class="l-wegweiser mit-qr">            <!-- mit-qr: rechts Platz für den QR-Code -->
	<div class="inhalt">
		<h2>Welcher passt zu dir?</h2>
		<ul class="wegweiser raster">
			<li class="fragment"><span class="wenn"><span class="ikon" data-ikon="laptop" data-titel=""></span>Ein Hauptrechner, Lust auf Kontrolle</span><span class="dann">KeePassXC</span></li>
			…
		</ul>
	</div>
	<figure class="qr klein ecke"><img src="assets/logos/qr-diday-passwoerter.svg" alt="QR-Code zum DI.DAY-Rezept"><figcaption>DI.DAY-Rezept</figcaption></figure>
</section>
```
Der Pfeil zwischen „wenn“ und „dann“ kommt automatisch.

### `l-schluss`
```html
<section class="l-schluss ton-lila" data-ohne-nummer>
	<div class="inhalt">
		<div class="schluss-text">
			<h2>Los geht's! <span class="akzent pixel">#DIDit</span></h2>
			<ul class="liste eng"><li>Erster Schritt: dein E-Mail-Konto</li><li>Gleich: Live-Demo &amp; Umzugshilfe</li></ul>
		</div>
		<div class="qr-reihe">
			<figure class="qr"><img src="assets/logos/qr-diday-passwoerter.svg" alt="QR-Code: di.day/de/wechselrezepte/passwords"><figcaption>DI.DAY-Rezept: Passwörter in Deiner Hand</figcaption></figure>
			<figure class="qr"><img src="assets/logos/qr-luise-oranienburg.svg" alt="QR-Code: luise-oranienburg.de"><figcaption>luise-oranienburg.de</figcaption></figure>
		</div>
		<div class="schluss-seite">
			<figure class="aufkleber"><img src="assets/logos/diday-illustration-florian-biege.png" alt="…"><figcaption>Illustration: Florian Biege für di.day</figcaption></figure>
			<div class="logos"><img class="logo-diday" src="assets/logos/diday.svg" alt="DI.DAY"><span class="logo-luise"><img src="assets/logos/luise.png" alt="luise Oranienburg"></span></div>
		</div>
	</div>
</section>
```
QR-Codes nicht verkleinern (300 px, damit sie aus dem Saal scannbar sind). `.qr.klein` (200 px) nur für die Bildnachweise-Folie oder als Zusatz in einer Ecke.

### `l-nachweise` (Bildnachweise, bleibt während des Umbaus stehen)
```html
<section class="l-nachweise">
	<div class="inhalt">
		<h2>Danke! Bildnachweise</h2>
		<ul class="nachweise">
			<li>Illustration Titel und Schluss: Florian Biege für di.day</li>
			<li>DI.DAY-Logo und Schriftzug: di.day, mit Freigabe · luise-Logo: luise Oranienburg</li>
			<li>Skizzen und Ikonen: eigene Zeichnungen</li>
			<li>Schriften: Atkinson Hyperlegible (Braille Institute), Silkscreen, Caveat – SIL Open Font License</li>
		</ul>
		<div class="qr-reihe">
			<figure class="qr klein"><img src="assets/logos/qr-diday-passwoerter.svg" alt="QR-Code zum DI.DAY-Rezept"><figcaption>DI.DAY-Rezept</figcaption></figure>
			<figure class="qr klein"><img src="assets/logos/qr-luise-oranienburg.svg" alt="QR-Code zu luise-oranienburg.de"><figcaption>luise-oranienburg.de</figcaption></figure>
		</div>
	</div>
</section>
```
Fotonachweise entfallen (keine Fotos). Eigene variantenspezifische Grafiken als „eigene Zeichnungen“ führen.

## Weitere Bausteine

| Baustein | HTML | Hinweis |
|---|---|---|
| Stempel | `<span class="stempel">Beispiel – niemals selbst verwenden!</span>` | Farben: Standard Rot, `.gruen`, `.lila`; `.klein`; Drehung per `style="--dreh:-4deg"` |
| Sprechblase | `<p class="sprechblase">…</p>` | `.rechts` (Zipfel rechts), `.pixel` (Orange, Pixelschrift) |
| Kasten | `<div class="kasten">…</div>` | `.orange`; auf Lila halbtransparent |
| Aufkleber | `<figure class="aufkleber">img + figcaption</figure>` | weißer Grund für Bilder auf Lila; `style="--dreh:-2deg"` |
| Ikonen-Raster | `<ul class="ikon-raster"><li class="fragment"><span class="ikon" data-ikon="mail">E-Mail</span></li>…</ul>` | Konten, Geräte |
| Mini-Treppe | `<ol class="treppchen"><li>SMS</li><li>App</li><li>Passkey</li></ol>` | Farben per `style="--t1:…; --t2:…; --t3:…"` (Standard: hell- bis kräftig Orange) |
| Längen-Balken | `<div class="balken fragment wachsen">Länge schlägt Komplexität</div>` | wächst pixelweise |
| Plus/Minus | `<ul class="plusminus"><li class="plus">…</li><li class="minus">…</li></ul>` | |
| QR | `<figure class="qr">img + figcaption</figure>` | `.klein`, `.ecke` (unten rechts, außerhalb `.inhalt`) |
| Handnotiz | `<div class="handnotiz" style="left:…px; top:…px; font-size:60px; transform:rotate(-8deg)">Passwort: kaffeetasse</div>` | Kuli-Blau, Caveat |

## Ikonen (Skizzen-Sprite)

```html
<span class="ikon" data-ikon="schluessel"></span>                  <!-- nur Ikone, Titel aus dem Sprite als aria-label -->
<span class="ikon" data-ikon="mail">E-Mail</span>                   <!-- Ikone + Text -->
<span class="ikon gross" data-ikon="kaffee" data-titel=""></span>   <!-- dekorativ (aria-hidden) -->
```
Größen: Standard 1,6 em, `.mittel` 2,6 em, `.gross` 4,4 em, `.riesig` 8 em, oder `style="--ikon:220px"`. `.senkrecht` setzt den Text unter die Ikone.

Verfügbare Namen (Übersicht mit Bild: Musterseite, vorletzte Folie):
`schluessel zettel buch browser abo-tresor stern tresor mail bank bahn gesundheit shop streaming chor social wolke handy laptop haus server schloss schloss-offen haken kreuz kaffee wuerfel finger umschlag kalender kette hand diskette stift auge tuer code lupe paragraph preis wegweiser familie werkzeug herz datei pfeil fragezeichen glanz`

Farben einer Ikone lassen sich in der Varianten-CSS über `--ik-a`, `--ik-b`, `--ik-c` (Füllfarben) und `--sk-tinte` (Kontur) ändern.

## Geteilte Grafiken (`assets/illustrationen/skizze/`)

Alle im Stil „Skizze“ (Marker-Konturen, versetzte Farbflächen, Caveat-Beschriftung), transparent. Immer per `<object type="image/svg+xml" data="…" aria-label="…">` einbinden.

| Datei | Format | Inhalt | Klasse |
|---|---|---|---|
| `stufe1-ein-schluessel.svg` | 1600×1000 | ein Schlüssel „passt überall!“, fünf offene Schlösser, Elster mit „Kopie!“ (links frei) | `illu` |
| `stufe2-postit.svg` | 1600×1000 | Monitor mit Zettel „Passwort: kaffeetasse“, „Bank: hallo123“, Handy „klick!“ (links frei) | `illu` |
| `stufe3-passwortbuch.svg` | 1600×1000 | Buch „Meine Passwörter“ mit Einträgen, „offline ✓“, Handy „???“ | `illu` |
| `stufe4-browser.svg` | 1600×1000 | Browser „Passwort speichern?“ mit Schlüsselbrett, Kette zur „Konzern-Cloud“ | `illu` |
| `stufe5-abo-tresor.svg` | 1600×1000 | glänzender Tresor mit Abo-Preisschild, Bauplan hinter Schloss „Code: zu“, Schild „USA / Kanada“ | `illu` |
| `stufe6-favoriten.svg` | 1600×1000 | die drei Wege nebeneinander mit Namen (oben frei) | `illu` |
| `favorit-lokal.svg` | 800×600 | Haus + Laptop mit Datei-Schloss (KeePassXC) | `illu quer43` / `karte-bild` |
| `favorit-cloud.svg` | 800×600 | Wolke mit Schloss über Bergen „Schweiz“, Handy, Laptop (Proton Pass) | `illu quer43` / `karte-bild` |
| `favorit-selbst.svg` | 800×600 | Server im Vereinskeller, Checkliste, Schraubenschlüssel (Vaultwarden) | `illu quer43` / `karte-bild` |
| `passphrase.svg` | 1600×1000 | Würfel, Wortliste „7.776 Wörter“, Kärtchen Kaktus Laterne Hafen Gurke Orbit, „nur ein Beispiel!“ | `illu` |
| `zwei-faktor.svg` | 1600×1000 | Schlüssel „1. Passwort“ + Handy mit Code „2. Code“ und Fingerabdruck „Passkey“ | `illu` |
| `passkey.svg` | 1600×1000 | Handy mit Fingerabdruck „Schlüssel bleibt auf dem Handy“; echte Seite „kennt nur das Schloss“ ✓, falsche Seite „passt nicht!“ | `illu` |
| `leck-tueren.svg` | 1600×1000 | Shop mit Riss, Roboter probiert den Schlüssel an Mail, Bank, Bahn, Chor, Video: „probiert’s überall!“ | `illu` |
| `tresor-weggerollt.svg` | 1600×1000 | Tresor auf Sackkarre, Zettel „URLs“, Pfeil „Master-Passwort“ (LastPass) | `illu` |
| `notfallumschlag.svg` | 800×600 | Umschlag „Notfallblatt“ mit Siegel | `illu quer43` |
| `kaffeetasse.svg` | 600×600 | dampfende Tasse mit Herz | `illu quadrat` |

Die Grafiken erzeugt `werkzeuge/skizzen.py` (stufe1–3 sind handgezeichnet). Nur die zentrale Instanz ändert sie.

## Stufenleiter

**Entscheidung:** Die Leiter ist EIN inline-SVG (Daten in `js/skizzen-daten.js`), das `deck.js` in jedes `<div class="stufenleiter">` einsetzt. Zustände sind nur CSS-Klassen, die Farben stehen in `theme.css`. Dadurch reicht eine Definition für alle Zustände, die Schriften aus `theme.css` gelten, und reveal kann die Leiter per Auto-Animate von groß nach klein bewegen.

```html
<div class="stufenleiter" data-stufe="3"></div>          <!-- groß (im Fluss, volle Breite) -->
<div class="stufenleiter ecke" data-stufe="3"></div>     <!-- Mini oben rechts, als direktes Kind von <section> -->
```

| Attribut | Werte | Wirkung |
|---|---|---|
| `data-stufe` | `0` | alle Stufen neutral (Überblick am Anfang) |
| | `1` … `6` | erledigte Stufen gedämpft Lila, aktuelle Orange, kommende neutral |
| | `alle` | alle farbig: Lila von hell nach dunkel, Stufe 6 Orange |
| `data-marke` | `1` … `6` | Stufe für die `.leiter-marke`-Kinder (Standard: aktuelle Stufe) |
| `data-labels` | `"A\|B\|C\|D\|E\|F"` | eigene Beschriftungen (Standard: Ein Passwort, Zettel, Buch, Browser, Abo-Tresor, Dein Tresor) |
| `data-beschriftung="aus"` | | Beschriftung weg (in `.ecke` immer weg) |
| `data-nummern="aus"` | | Nummern weg |

Symbole auf den Stufen: Schlüssel, Zettel, Buch, Browser, Tresor mit Preisschild, Stern.

**Marken** (Figur, Sprechblase, Fähnchen) stehen als Kinder in der Leiter und werden auf die Oberkante einer Stufe gesetzt (unten mittig verankert):
```html
<div class="stufenleiter" data-stufe="5">
	<span class="leiter-marke"><img src="assets/illustrationen/variante-a/erika-nachdenklich.svg" alt="Erika" style="width:120px"></span>
	<span class="leiter-marke sprechblase pixel fragment" data-nr="6">Und du?</span>
</div>
```
In der Mini-Leiter Marken relativ zur Leiterbreite bemessen (z. B. `width: 12%`).

**Von groß nach klein (Auto-Animate):** beide Folien bekommen `data-auto-animate`, beide Leitern `data-id="leiter"`:
```html
<section class="l-stufenleiter" data-auto-animate> … <div class="stufenleiter" data-stufe="0" data-id="leiter"></div> … </section>
<section class="l-illu" data-auto-animate> <div class="stufenleiter ecke" data-stufe="1" data-id="leiter"></div> … </section>
```
Auf Folien mit Mini-Leiter rücken `h2`, `.dachzeile` und `.stufe-badge` direkt in `.inhalt` automatisch von der Leiter weg; anderen Inhalt oben rechts frei lassen (Bereich ca. 340 × 240 px).

## Fragmente (Klicks)

Standard ist ein dezentes Einblenden. Nur diese Arten verwenden:

| Klasse | Wirkung |
|---|---|
| `fragment` | einblenden |
| `fragment fade-up` / `fade-left` | einblenden mit kleiner Bewegung |
| `fragment aufblitzen` | erscheint und blinkt einmal pixelig („Heute: deine Passwörter“, „Schutz.“) |
| `fragment streichen` | Text steht schon da, eine Linie zieht durch |
| `fragment stempeln` | Stempel fällt mit Schwung auf die Folie |
| `fragment hervorheben` | Text steht schon da und bekommt den Textmarker |
| `li … abhaken fragment` | in `.checkliste`: Haken bzw. Kreuz kommt per Klick |
| `fragment wachsen` | Balken wächst pixelweise |
| `kaestchen fragment` | Quiz-Buchstaben drehen sich um |

Reihenfolge bei Bedarf mit `data-fragment-index="1"`. Mehrere Zustände an einer Stelle: reveal-Klasse `r-stack` mit `fragment` / `fragment fade-out`.

## Notizen

```html
<aside class="notes">Sprechtext der Folie …</aside>
```
Taste **S** öffnet die Referentenansicht (Notizen, nächste Folie, Uhr). Den kompletten Sprechtext aus dem Drehbuch hineinschreiben, Regieanweisungen wie (Klick) dürfen stehen bleiben.

## Rendern und prüfen

Arbeitsdateien nach `/home/matthias/.cache/claude-tmp/claude-1000/-home-matthias-GIT-merlina-minds-di-day-passwort-manager/1866b7a0-a53a-4598-9f57-8669b2a9b894/scratchpad/decks/<variante>/`.

**Überläufe finden** (meldet Folien, deren Inhalt über den Rand ragt):
```sh
chromium --headless=new --disable-gpu --no-sandbox --virtual-time-budget=8000 \
  --dump-dom "file:///home/matthias/GIT/merlina-minds/di-day-passwort-manager/variante-a.html?pruefen" 2>/dev/null \
  | grep -o 'data-ueberlauf="[^"]*"'
```
Ergebnis muss `data-ueberlauf="keiner"` sein.

**Konsolenfehler:**
```sh
chromium --headless=new --disable-gpu --no-sandbox --enable-logging=stderr --v=0 --virtual-time-budget=6000 \
  --dump-dom "file:///…/variante-a.html" 2>&1 >/dev/null | grep -i -E "console|uncaught|failed" | grep -v -i -E "dbus|gpu|sqlite"
```
`deck.js` warnt dort z. B. bei unbekannten Ikonen-Namen.

**Alle Folien auf einmal** (eine PDF-Seite je Folie):
```sh
chromium --headless=new --no-sandbox --disable-gpu --no-pdf-header-footer --virtual-time-budget=20000 \
  --print-to-pdf="$OUT/deck.pdf" "file:///…/variante-a.html?print-pdf"
pdfinfo "$OUT/deck.pdf" | grep Pages          # muss der Folienzahl entsprechen
pdftoppm -png -r 40 "$OUT/deck.pdf" "$OUT/s"
```
Achtung: Mit kleinerem Zeitbudget druckt Chromium manchmal nur EINE Seite (reveal baut die Druckansicht asynchron). Dann einfach wiederholen. Übersicht: `magick montage "$OUT"/s-*.png -tile 4x -geometry +6+6 "$OUT/uebersicht.png"`.

**Einzelne Folie, alle Fragmente sichtbar** (`?fragments=false` wirkt, getestet):
```sh
chromium --headless=new --disable-gpu --no-sandbox --hide-scrollbars --virtual-time-budget=4000 \
  --window-size=1920,1080 --screenshot="$OUT/folie-05.png" "file:///…/variante-a.html?fragments=false#/5"
```
Index ab 0. „Letzte Reihe“: zusätzlich `--window-size=640,360` – Text muss dann noch lesbar sein.

Screenshots immer ansehen (Read-Tool). Typische Probleme: Überschrift läuft in die Mini-Leiter, zu viel Text in Karten, Grafik zu klein, weil sie viel freie Fläche hat (dann `bild-gross` oder `l-buehne`).
