diff --git a/brand/README.md b/brand/README.md
index 2e461cd..f260b7c 100644
--- a/brand/README.md
+++ b/brand/README.md
@@ -8,6 +8,9 @@ Name `box`) in Weiß auf der Akzentfläche.
- **`app-icon.svg`** – 1024×1024, vollflächig, feste Farbe (`#4d5cd4`), ohne
abgerundete Ecken. Für App-Icon (iOS/macOS via Icon Composer oder Xcode
„AppIcon", App Store). Die Rundung macht das System selbst.
+- **`icons/`** – Quellgrafiken der gefüllten Icons (Ein-/Auslagern, Korrektur).
+ Ihre Pfaddaten stehen inline in `../web/src/components/Icon.jsx`; siehe
+ `icons/README.md`.
- **Favicon / Web-Logo:** `../web/public/favicon.svg` – dasselbe Zeichen mit
abgerundeter Platte und Hell-/Dunkel-Umschaltung (für den Browser-Tab).
diff --git a/brand/icons/README.md b/brand/icons/README.md
new file mode 100644
index 0000000..89ff962
--- /dev/null
+++ b/brand/icons/README.md
@@ -0,0 +1,38 @@
+# Icon-Quellen
+
+Hier liegen zugekaufte/heruntergeladene Grafiken, deren Pfaddaten **inline** in
+`web/src/components/Icon.jsx` stehen (Abschnitt `GEFUELLT`). Zur Laufzeit lädt
+niemand diese Dateien – sie sind die Quelle, nicht das Auslieferungsformat.
+
+Warum inline statt `
`: Die Icons sollen die Textfarbe annehmen
+(`fill="currentColor"`), damit sie sich mit Thema und Zustand mitfärben. Als
+externe Datei ginge das nicht; die Originale tragen eine feste schwarze Füllung.
+
+## Dateien
+
+| Datei | Icon-Name | Bedeutung |
+|---|---|---|
+| `einlagern.svg` | `einlagern` | Kiste, Pfeil **hinein** – Bewegungsart „Eingelagert" |
+| `auslagern.svg` | `auslagern` | Kiste, Pfeil **heraus** – Bewegungsart „Ausgelagert" |
+| `korrektur.svg` | `korrektur` | Stapel mit Stift – Bewegungsart „Korrektur" |
+
+Die beiden Kisten unterscheiden sich nur in **einem** Pfad: der Pfeilrichtung.
+Wer sie verwechselt, dreht Ein- und Auslagern um, ohne dass etwas kaputtgeht –
+deshalb die ausdrückliche Zuordnung oben.
+
+## Nach einer Änderung neu übernehmen
+
+Die Pfaddaten wurden per Skript übernommen, nicht abgetippt. Wird eine Datei
+ersetzt, dieselbe Extraktion wiederholen und das Ergebnis in `GEFUELLT`
+eintragen (`viewBox` mitnehmen – die Kisten sind 24×24, die Korrektur 64×64):
+
+```sh
+python3 - <<'PY'
+import re, pathlib
+for name in ("einlagern", "auslagern", "korrektur"):
+ roh = pathlib.Path(f"brand/icons/{name}.svg").read_text()
+ print(name, re.search(r'viewBox="([^"]+)"', roh).group(1))
+ for d in re.findall(r']*\sd="([^"]+)"', roh):
+ print(f' ')
+PY
+```
diff --git a/open-box.svg b/brand/icons/auslagern.svg
similarity index 100%
rename from open-box.svg
rename to brand/icons/auslagern.svg
diff --git a/open-box (1).svg b/brand/icons/einlagern.svg
similarity index 100%
rename from open-box (1).svg
rename to brand/icons/einlagern.svg
diff --git a/edit-server.svg b/brand/icons/korrektur.svg
similarity index 100%
rename from edit-server.svg
rename to brand/icons/korrektur.svg
diff --git a/web/src/components/Icon.jsx b/web/src/components/Icon.jsx
index 17db8c1..0e6af09 100644
--- a/web/src/components/Icon.jsx
+++ b/web/src/components/Icon.jsx
@@ -146,6 +146,10 @@ const PATHS = {
// Gefuellte Icons mit EIGENEM viewBox. Die uebrigen hier sind Strichzeichnungen
// (fill:none, stroke:currentColor); diese kommen als fertige Grafik und muessen
// deshalb getrennt gehalten werden.
+//
+// Quelle der Pfade: brand/icons/*.svg (dort steht auch, wie man sie nach einer
+// Aenderung neu uebernimmt). Inline statt
, damit sie ueber currentColor
+// die Textfarbe annehmen – die Originaldateien tragen festes Schwarz.
const GEFUELLT = {
// Kiste mit Pfeil HINEIN – aus open-box (1).svg
einlagern: {