**Was:** `BlogNav.astro` berechnet den Navigationszustand vollständig in TypeScript-Variablen (`onBlog`, `onArchive`, `onCategoriesIndex`, `onCategoryTerm`, etc.) und rendert das HTML anhand dieser Flags.
-**Warum:** Hugo's `menu/tree.html` ist ein rekursives Partial, das den Baum traversiert und dabei Hugo-interne Konzepte wie `.IsDescendant`, `.Ancestors`, `.Eq` nutzt. Diese existieren in Astro nicht. Statt einer allgemeinen Lösung wurde für den Blog-Ast (der einzige aktuell implementierte Ast) eine explizite State-Machine gewählt, die die konkreten Seitentypen des Blogs kennt und die entsprechenden CSS-Klassen (`off`, `sub`, `selected`, `active`) direkt ableitet.
+**Warum:** Hugo's `menu/tree.html` ist ein rekursives Partial, das den Baum traversiert und dabei Hugo-interne Konzepte wie `.IsDescendant`, `.Ancestors`, `.Eq` nutzt. Diese existieren in Astro nicht. Statt einer allgemeinen Lösung wurde eine explizite State-Machine gewählt, die die konkreten Seitentypen kennt und die CSS-Klassen (`off`, `sub`, `selected`, `active`) direkt ableitet.
-**Entscheidungsgrundlage:** Die `off`-Klassen wurden durch Analyse des Hugo-HTML-Outputs für alle relevanten Seitentypen ermittelt (Homepage, `/blog/`, Archiv-Seiten, Jahres-Seiten, Blog-Posts, Categories/Tags-Index, Categories/Tags-Term).
+**Wichtige Regel:** `#submenu li.s.off { display: none }` (Classic-Layout). Ein `ul.s` ohne `active` blendet sich nicht selbst aus — nur `li.s.nav-leaf` und `li.s.off` sind hidden.
-**Wichtige Regel:** Ein `li.s.off`-Element ist via CSS (`#submenu li.s.off { display: none }`) ausgeblendet. Ein `ul.s` (ohne `active`) blendet sich selbst nicht aus — nur `li.s.nav-leaf` und `li.s.off` sind hidden. Diese CSS-Regel war entscheidend für die korrekte Implementierung der Navigation.
+**`off`-Klassen-Logik** (aus Hugo-Template-Quellen im `frontend`-Branch hergeleitet):
+
+Hugo verwendet zwei verschiedene Menü-Templates:
+- `layouts/_partials/menu/blog.html` — für Blog-Seiten: Blog immer sichtbar, alle anderen Sections immer `off`
+- `layouts/_partials/menu/default.html` + `tree.html` — für alle anderen Seiten: Section-Index-Seiten (`IsNode=true`) blenden alle anderen Sections aus; auf der Homepage und regulären Root-Seiten (Impressum, Datenschutz) sind alle Sections sichtbar (Kind- bzw. Geschwister-Logik in `tree.html`)
+
+Daraus ergibt sich für `BlogNav.astro`:
+- `blogSectionOff = onAbout` — Blog im Submenu hidden nur auf `/about.html` (Section-Index)
+- `aboutOff = blogSelected` — About im Submenu hidden nur auf Blog-Seiten
+
+Wenn Projects implementiert wird: `blogSectionOff |= onProjects`, `aboutOff |= onProjects`.
---
---
-#### Standalone-Seiten ohne Navigation (Offener Punkt)
-
-**Was:** Die Seiten `about.html`, `impressum.html` und `datenschutz.html` haben keinen `menu`-Slot befüllt und zeigen daher keine Seitennavigation.
+#### Standalone-Seiten: Navigation über BlogNav
-**Warum:** Hugo zeigt auf Standalone-Seiten eine vollständige Site-Navigation (Blog-Baum + Projects-Baum + About-Baum). Die Implementierung dafür würde eine `SiteNav`-Komponente erfordern, die alle Sektionen kennt — inklusive der Projects-Seiten mit deren `current`-Flag-Logik. Das ist deutlich aufwendiger als `BlogNav` und wurde für die Migration zurückgestellt.
+**Was:** Die Seiten `about.html`, `impressum.html` und `datenschutz.html` nutzen `BlogNav.astro` im `menu`-Slot. Der About-Eintrag im Submenu zeigt sich korrekt als ausgewählt auf `/about.html` und als sichtbar (ohne `off`) auf Impressum/Datenschutz.
-**Zukünftige Aufgabe:** Eine `SiteNav.astro`-Komponente, die alle Hauptsektionen rendert und die `menu/tree.html`-Logik für Projects (only show `current: true` pages unless on path) repliziert.
+**Offener Punkt — Projects-Baum:** Hugo zeigt auf allen Seiten auch den Projects-Baum im Submenu (mit spezieller `current`-Flag-Logik für Projektversionen, aus `menu/tree.html`). Dieser fehlt noch. Sobald Projects implementiert wird, muss `BlogNav.astro` um den Projects-Ast erweitert werden (oder die Komponente wird in `SiteNav.astro` umbenannt).
---