diff --git a/IDEAS.md b/IDEAS.md
index b7a64e6..34397a1 100644
--- a/IDEAS.md
+++ b/IDEAS.md
@@ -372,6 +372,19 @@ Zu klären, wenn es soweit ist:
- **In der HoneyBar?** Nur lesend, und auch das erst, wenn alles unter einer
Domain liegt — schreiben kann sie von einer fremden Site aus nicht.
+### Das Wappen — ✅ gebaut (02.09.2026)
+
+Aus dem `■` ist eine Pixelbiene geworden (Marcs Idee, 01.09.2026). Vier Anläufe:
+einfarbig 12 × 12 (wirkte durch den angedeuteten Streifen wie ein Grinsen),
+farbig 16 × 16 von vorn, als Kasten mit geraden Kanten, und schließlich die
+**Seitenansicht** nach einem gedruckten Vorbild — braune Streifen, schwarze
+Beine, Flügel mit Kerbe.
+
+Was dabei hängen blieb, steht im [README](README.md): SVG statt PNG wegen der
+fremden CSPs, gelb statt mitgefärbt, und die Zeichenfassung fürs System-Fenster.
+Eine 3/4-Ansicht (gerechneter Würfel, 2:1) liegt in der Schublade — sie ist
+unter 64 px unbrauchbar, taugt aber für ein großes Startbild.
+
### Eigene App-Logos — verschoben aus 1.3 (29.08.2026)
**Beschlossen als Planung (25.08.2026), aber nicht als Nächstes.** Je App ein
diff --git a/README.md b/README.md
index 33ce2e9..d9dbc6b 100644
--- a/README.md
+++ b/README.md
@@ -184,6 +184,57 @@ in beiden: Menüleiste, Palette, Einstellungen, App-Liste.
**Tasten:** `M` Betriebsart · `S` Einstellungen · `?` Hilfe ·
`Esc` schließt Startmenü, oberstes Fenster oder Dialog — in dieser Reihenfolge.
+## Das Wappen
+
+Links in beiden Leisten sitzt eine Pixelbiene — seitlich, mit braunen Streifen,
+schwarzen Beinen und Flügeln mit Kerbe. Sie ersetzt das `■`, das dort seit dem
+ersten Tag stand.
+
+**Sie steht an genau einer Stelle:** `tools/biene.py`, als 16 × 16 Zeichen, ein
+Zeichen je Pixel. Daraus entstehen alle Fassungen:
+
+```
+python3 tools/biene.py
+```
+
+| Ausgabe | wohin |
+|---|---|
+| `web/img/biene.svg` | Favicon |
+| `web/js/biene.js` | Menüleiste des Schreibtischs (`BIENE_SVG`), System-Fenster und Startlauf (`BIENE_ASCII`) |
+| `web/img/biene-256.png`, `-32.png` | Doku und Vorschau |
+
+In die HoneyBar ist dieselbe SVG-Zeile **einkopiert** — sie ist eine einzelne
+Datei ohne zweite Anfrage. Ein Test (`TestWappenIstUeberallDasselbe`) hält die
+drei Kopien zusammen; wer das Raster ändert, lässt das Skript laufen und
+kopiert die Zeile neu.
+
+**Warum SVG und nicht PNG?** Die HoneyBar läuft in *fremden* Apps. Ein ``
+holte dort eine Datei von HoneyOS, und ob das erlaubt ist, entscheidet die CSP
+der fremden App (`img-src`). Markup kann niemand blockieren, es braucht keine
+zweite Anfrage, und es ist mit 2,6 kB kleiner als das PNG.
+
+**Warum bleibt sie gelb?** In der grünen und der eisblauen Röhre wechselt alles
+die Farbe mit — die Biene nicht. Ein Zeichen, das die Farbe wechselt, ist ein
+Symbol wie *wolke*; eines, das seine Farbe behält, ist ein Wappen. Der eine
+warme Fleck liest sich als „das hier ist das System selbst".
+
+### Und aus Schriftzeichen
+
+Im System-Fenster und über dem Startlauf steht dieselbe Biene aus `#`, `:` und
+`-`. Beides sind Textflächen — ein Bild darin wäre ein Fremdkörper, wie ein
+Foto in einer Tabelle. So wird aus dem System-Fenster ein **neofetch**.
+
+Zwei Dinge stecken in der Umsetzung, die man nur durch Ausprobieren findet: Ein
+Zeichen ist etwa halb so breit wie hoch, ein Pixel muss also **zwei Zeichen**
+breit sein. Und Blockzeichen (`█ ▓ ▒`) sehen im Editor perfekt aus, hinterlassen
+im Browser aber feine Fugen zwischen den Zellen — der Körper wird zur Waffel.
+Gewöhnliche Schriftzeichen behaupten gar nicht erst, eine Fläche zu sein.
+
+Dass ausgerechnet die **Seitenansicht** als Text funktioniert, ist kein Zufall:
+Ihre Streifen laufen senkrecht, also bleibt jede Textzeile ein
+zusammenhängendes Stück Körper. Von vorn zerfällt die Biene in Streifen und
+liest sich wie ein Strichcode.
+
## Widgets
Ein Widget ist eine **Beschreibung**, kein Kasten in der `index.html`:
diff --git a/main.go b/main.go
index ca337d2..4b7df52 100644
--- a/main.go
+++ b/main.go
@@ -52,7 +52,7 @@ func ladeGlyphen() map[string][]string {
// Version ist die einzige Stelle, an der sie steht. build.sh liest sie hier aus
// und vergibt denselben Docker-Tag; die Oberfläche holt sie über /api/public.
// Vorher stand sie zusätzlich in os.js und lief mit den Image-Tags auseinander.
-const Version = "1.2"
+const Version = "1.3"
type Server struct {
cfg config.Config
diff --git a/tools/biene.py b/tools/biene.py
new file mode 100644
index 0000000..d1e9f25
--- /dev/null
+++ b/tools/biene.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python3
+"""Erzeugt das HoneyOS-Wappen aus einem Textraster.
+
+Die Biene steht **hier** und nirgends sonst: als 16 × 16 Zeichen, ein Zeichen
+je Pixel. Daraus entstehen alle Fassungen, die HoneyOS braucht — SVG für die
+beiden Leisten, PNG für Dokumentation und Vorschau, und eine Fassung aus
+Schriftzeichen fürs System-Fenster und den Startlauf.
+
+ python3 tools/biene.py
+
+Kein Pillow, keine Abhängigkeit: Ein PNG ist ein Kopfteil, ein zlib-Strom aus
+Bildzeilen (jede mit einem Filterbyte davor) und eine Prüfsumme — das kann die
+Standardbibliothek. Der Vorteil gegenüber einem Bildprogramm ist nicht die
+Bequemlichkeit, sondern dass die **Quelle Text bleibt**: Ein Pixel ändern heißt
+einen Buchstaben ändern, danach stimmen wieder alle Fassungen überein.
+"""
+import json
+import pathlib
+import struct
+import zlib
+
+WURZEL = pathlib.Path(__file__).resolve().parent.parent
+
+# Die Farben nach dem Vorbild: Die Streifen sind **braun**. Schwarz sind nur
+# Augen, Beine und Fühler — das ist der Unterschied zwischen warm und hart.
+FARBEN = {
+ "Y": (242, 179, 61), # Honiggelb, der Körper
+ "L": (255, 208, 96), # Oberkante, eine Spur heller
+ "y": (210, 149, 42), # Unterseite im Schatten
+ "S": (92, 58, 28), # Streifen
+ "s": (70, 43, 20), # Streifen an der Unterkante
+ "E": (24, 20, 16), # Augenfeld und Beine
+ "B": (99, 199, 192), # der Lichtpunkt im Auge
+ "D": (59, 36, 18), # Fühler
+ "W": (245, 242, 231), # Flügel
+ "w": (214, 209, 190), # Flügel, untere Lage
+}
+
+# Von der Seite: Stachel hinten, Kopf in Laufrichtung. Diese Ansicht ist es
+# geworden, weil ihre Streifen **senkrecht** laufen — deshalb bleibt sie auch
+# als Text lesbar, wo die Vorderansicht in Streifen zerfällt.
+BIENE = [
+ "....WW...WW.....",
+ "..WWWWW.WWWWW...",
+ "..WWWWWWWWWWW.D.",
+ "...WWWWWWWWW.DD.",
+ "...LLLLLLLLLLL..",
+ "..YYSSYYSSYYYYY.",
+ ".YYYSSYYSSYYEBY.",
+ "SYYYSSYYSSYYEEY.",
+ ".YYYSSYYSSYYYYY.",
+ "..yssyyssyyyyyy.",
+ "...EE..EE..EE...",
+ "...EE..EE..EE...",
+ "................",
+ "................",
+ "................",
+ "................",
+]
+
+
+def svg(raster):
+ """Waagerechte Läufe gleicher Farbe werden ein Rechteck — dieselbe Idee wie
+ bei den Pixelsymbolen in web/js/glyphs.js, nur mit Farbe statt currentColor.
+
+ Warum SVG und nicht PNG für die Leisten: Die HoneyBar läuft in *fremden*
+ Apps. Ein
holt dort eine Datei von HoneyOS, und ob das erlaubt ist,
+ entscheidet die CSP der fremden App. Markup kann niemand blockieren."""
+ teile = []
+ for y, zeile in enumerate(raster):
+ x = 0
+ while x < len(zeile):
+ z = zeile[x]
+ if z not in FARBEN:
+ x += 1
+ continue
+ lauf = 1
+ while x + lauf < len(zeile) and zeile[x + lauf] == z:
+ lauf += 1
+ r, g, b = FARBEN[z]
+ teile.append(f'
holte eine Datei von HoneyOS, und ob das geht,
+ * entscheidet die CSP der fremden App. Erzeugt von tools/biene.py —
+ * dieselbe Zeile steht in web/img/biene.svg (ein Test hält sie gleich).
+ */
+ const WAPPEN = '';
+
const root = host.attachShadow({ mode: "open" });
root.innerHTML = `
@@ -136,10 +143,12 @@
}
.home { letter-spacing: .14em; color: var(--p); padding-left: 2px; }
.home b { color: var(--p-mid); font-weight: 400; }
- /* Dasselbe Quadrat wie in der Menüleiste des Schreibtischs: dort ist es
- klein und leicht angehoben. Ein Zeichen in voller Größe sah daneben
- wie ein anderes Logo aus. */
- .home .hex { font-size: 10px; vertical-align: 2px; }
+ /* Dasselbe Wappen wie in der Menüleiste des Schreibtischs, in derselben
+ Größe. Es bleibt gelb, während der Rest die Röhre wechselt: Ein
+ Zeichen, das die Farbe mitwechselt, ist ein Symbol — eines, das seine
+ Farbe behält, ist ein Wappen. */
+ .home .hex { display: inline-block; width: 20px; height: 20px; vertical-align: -6px; }
+ .home .hex svg { display: block; width: 100%; height: 100%; }
.home:hover { border-color: var(--p-dim); }
.home[aria-expanded="true"] { border-color: var(--p-dim); background: var(--p-faint); }
/* Bei vielen Apps schiebt man den Streifen seitwärts. Ohne
@@ -247,7 +256,7 @@