menu--social.html.twig:32 nutzt bg-[#bedc00] !text-[#001f46]. src/main.css:452,454,458,464 enthält #f4ffab, #00459d (×3), #fdfbf4. footer.twig hat 'border-[#bedc00]', 'decoration-[#bedc00]', 'text-[#f4ffab]', 'bg-[#001f46]'. navbar.tailwind.css nutzt var(--brand-dark-blue, #001f46) mit Hex-Fallback.
Regel: „Jeder kanonische Brand-Hex (#BEDC00, #001F46, …) im Code muss über die korrespondierende CSS-Variable (--brand-lime, --brand-dark-blue, …) referenziert werden." #f4ffab und #fdfbf4 existieren in theme.brand.css nicht — entweder Token anlegen oder Verwendung begründen.
<a>-TagCode: <a ... {{ sub_item.in_active_trail ? 'aria-current="page"' : '' }}>. Vor das Tag ein {% set aria_current = sub_item.in_active_trail ? 'aria-current="page"' : '' %} und im Tag {{ aria_current }} rendern.
with_context: false
Hard Violation
Die beiden neu eingeführten include('@byte_theme/components/icon/icon.twig', { icon: 'list', ... })-Aufrufe haben kein drittes Argument with_context: false. AGENTS.md verlangt zur Vermeidung von Context-Pollution explizit with_context: false oder with ... only.
Pre-existing Includes (Close-Button, Placeholder-Block) sind nicht in Scope — nur die zwei neu in diesem PR hinzugefügten.
{% if 'xing.' in url_str %} als Plattform-DetectionPlattform-Erkennung über Substring-Matching auf gerenderter URL ist fragil (Trailing-Whitespace, Query-Strings, URL-Aliases). Sauberer wäre item.original_link.getPluginId() oder ein dediziertes Plattform-Feld am Menüpunkt. Keine explizite Regel im Korpus — Advisory.
aria-current="page" falsch gebunden
Incorrect Implementation
aria-current="page" an in_active_trail statt an die exakte aktuelle SeiteDrupal setzt in_active_trail=true auf jedem Vorfahren im aktiven Trail, nicht nur auf der aktuellen Seite. Bei einem Sub-Item, das Vorfahre der aktuellen Route ist, vergibt der Template-Code fälschlich aria-current="page".
ADR-0027 §Entscheidung: „aria-current='page' auf dem aktiven Sub-<a>-Link (nicht auf dem Parent-Button)" — gemeint ist die aktuelle Seite, nicht der Trail. Verstoß gegen WCAG 2.1 SC 1.3.1 (Info and Relationships). Gate-on item.in_active_trail + Pfad-Equality, oder Route-Name-Equality.
document.documentElement.classList.add("navbar-modal-open") ist im isOpen-Setter weggefallenDie CSS-Regel :root.navbar-modal-open { overflow: hidden } in navbar.tailwind.css:4 bleibt im Diff — wird aber nie mehr aktiviert. Folge: mobiler Overlay öffnet, Body-Scroll bleibt aktiv, CSS-Regel ist Dead-Code.
ADR-0027 §Consequences: „Hamburger-Toggle bleibt unverändert" — Scroll-Lock war vorher Teil davon.
::before
Incorrect Implementation
::before-Lime-Arrow" nicht umgesetztADR-0027 §Entscheidung: „Sub-Item CSS: .solcom-nav-sub-link — neue CSS-Klasse in src/main.css mit ::before-Lime-Arrow." PRD §Implementation: „führender Lime-Arrow via ::before-Pseudo-Element."
Implementation: <span class="solcom-nav-sub-link__icon"><svg …> als inline-DOM. Funktional ähnlich, aber Decision verletzt + zusätzliche DOM-Nodes pro Menüpunkt.
drush cr-Step ohne Spec
Scope Creep
Diff fügt drush cr vor updatedb/cim in beiden Deploy-Stages hinzu. Operativ sinnvoll (Cache-Reset vor Update), aber weder in PRD, ADR-0027 noch Story-Hub spezifiziert — gehört in eigenes Infrastruktur-Ticket.
PRD und ADR-0027 referenzieren nur menu--main.html.twig, navbar.js, src/main.css, HeaderTemplatesTest.php. Das Social-Menü liegt im Footer-Bereich, der explizit ausgeklammert ist.
PRD §Testing nennt Enter/Space als Kontrakt (native <button> deckt das, aber unverifiziert). main.css setzt @apply no-underline für .solcom-btn-link--nav.solcom-btn-link--active-trail — visueller Kontrakt der ADR ungeprüft.
PRD §Out of Scope: „URL-Konventionen / Path Aliases — bereits implementiert (Pathauto), kein Handlungsbedarf." Korrekt ausgeklammert.
Aber: docs/stories/F-40-navigation-seitenstruktur.html §Akzeptanzkriterien sagt „Noch nicht definiert." PR transitioniert P2503-84 nach „Zu Review", ohne den Story-Hub mit dem Stand zu synchronisieren (erfüllt / explizit deferred). Verletzt project_story_hub_pattern.