# UI Guidelines Qualitätsregeln für Benutzeroberflächen. Keine Designvorgaben. --- ## Scope Diese Datei definiert **Qualitätsanforderungen** für: - Accessibility (Barrierefreiheit) - Responsive Design (Mobile-First) - Performance-Budgets - SEO-Grundlagen - GEO/AI-Search-Optimierung - Interaktionsqualität **Geltungsbereich:** Gilt global für jedes Projekt. Definiert WIE UI gebaut wird, nicht WIE sie aussieht. --- ## Read Order Diese Datei wird nach `SYSTEM_SKILLS.md` gelesen: 1. `skills/SYSTEM_SKILLS.md` 2. `skills/UI_GUIDELINES.md` (diese Datei) 3. `skills/DEFINITION_OF_DONE.md` 4. `skills/CLIENT_OVERRIDES.md` 5. Projekt-Specs --- ## Non-Goals Diese Datei definiert **NICHT**: - Welche Farben verwendet werden (kommt aus Tokens) - Welche Schriftarten verwendet werden (kommt aus Tokens) - Welche Layouts oder Sections erstellt werden (kommt aus ProjectSpec) - Konkrete visuelle Gestaltung - UI-Templates oder Komponenten-Vorlagen **Regel:** Alle visuellen Entscheidungen kommen aus `design_tokens.json` und `stylesheet.css`. --- ## Stil-Adjektive & Stil-Verbote Die visuellen Grundprinzipien werden durch Kategorie F definiert. ### Stil-Adjektive (styleAdjectives) Maximal 5 Wörter, die den visuellen Charakter definieren (z.B. "modern", "sportlich", "seriös", "elegant", "minimalistisch"). **Pflicht:** Bei JEDER visuellen Entscheidung prüfen: - Passt diese Entscheidung zu den definierten Adjektiven? - Verstärkt sie den gewünschten Charakter? ### Stil-Verbote (styleProhibitions) Definieren No-Gos (z.B. "verspielt", "comic", "laut", "kitschig"). **Pflicht:** Keine Designentscheidung darf gegen ein Stil-Verbot verstoßen. ### Prüfschema Vor jeder UI-Entscheidung: 1. ✓ Passt es zu den Stil-Adjektiven? 2. ✓ Verstößt es gegen kein Stil-Verbot? 3. ✓ Ist es konsistent mit bisherigen Entscheidungen? --- ## Adaptive Layout-Regeln nach Interaktionsniveau Das Layout passt sich dem definierten Interaktionsniveau aus Kategorie G an. ### Level: ruhig - Maximale visuelle Ruhe - Große Whitespace-Blöcke (min. `--spacing-2xl` zwischen Sections) - Keine Animationen - Maximal 1 CTA pro Viewport - Keine Sticky-Elemente außer minimaler Header - Klare vertikale Rhythmik - Keine Parallax-Effekte ### Level: moderat - Ausgewogenes Layout - Dezente Hover-Effekte (opacity, subtle scale) - IntersectionObserver-basierte Fade-Ins - Moderate Whitespace (`--spacing-xl` bis `--spacing-2xl`) - CTAs dürfen wiederholt werden, aber nicht aufdringlich - Subtile Scroll-Progress-Indikatoren erlaubt ### Level: dynamisch - Scroll-triggered Animationen erlaubt - Parallax-Effekte möglich - Interaktive Elemente (Hover-Reveals, Micro-Interactions) - Sticky CTAs auf Mobile - Stagger-Animationen für Listen - Visuelle Überraschungsmomente erlaubt --- ## Conversion-optimiertes Layout Das Layout richtet sich nach dem Seiten-Zweck aus Kategorie E. ### Seiten mit purpose: konvertieren ``` ┌─────────────────────────────────────┐ │ Hero mit primärem CTA above-the-fold │ ├─────────────────────────────────────┤ │ Trust-Section (direkt unter Hero) │ │ - Bewertungen, Zertifikate, Logos │ ├─────────────────────────────────────┤ │ Nutzen / USPs │ ├─────────────────────────────────────┤ │ Einwand-Entkräftung │ │ - FAQ oder "Häufige Fragen" │ ├─────────────────────────────────────┤ │ Kontaktformular / Buchung │ │ - Mit sekundärem CTA │ └─────────────────────────────────────┘ ``` - Above-the-fold CTA mit primärer Handlungsaufforderung - Trust-Section direkt unter dem Hero - Einwand-Entkräftung vor dem Kontaktformular - Sticky CTA-Bar auf Mobile ### Seiten mit purpose: informieren ``` ┌─────────────────────────────────────┐ │ Klare H1 + Einleitung │ ├─────────────────────────────────────┤ │ Inhaltsverzeichnis (bei langen │ │ Seiten > 3 Sections) │ ├─────────────────────────────────────┤ │ Content-Sections mit H2-Struktur │ │ - Scanbare Absätze │ │ - Listen und Tabellen │ ├─────────────────────────────────────┤ │ CTA am Ende (nicht dominant) │ └─────────────────────────────────────┘ ``` - Klare H2-Struktur für Scanability - Inhaltsverzeichnis bei langen Seiten (>3 Sections) - CTAs am Ende von Sektionen, nicht dominant - Fokus auf Lesbarkeit und Navigation ### Seiten mit purpose: ueberzeugen ``` ┌─────────────────────────────────────┐ │ Problem-Statement (Identifikation) │ ├─────────────────────────────────────┤ │ Lösung präsentieren │ │ - USP-Cards / Feature-Grid │ ├─────────────────────────────────────┤ │ Beweis (Social Proof) │ │ - Testimonials, Case Studies │ │ - Zahlen und Fakten │ ├─────────────────────────────────────┤ │ CTA mit klarer Handlungsaufforderung │ └─────────────────────────────────────┘ ``` - Problem → Lösung → Beweis → CTA Flow - USP-Cards/Feature-Grid prominent - Social Proof zwischen Content-Sections - Emotionale + rationale Argumentation --- ## Ansprache-konsistente UI-Texte Alle UI-Texte müssen die Ansprache aus Kategorie C widerspiegeln. ### Ansprache: du | Element | Beispiel | |---------|----------| | Button | "Jetzt starten", "Schick uns eine Nachricht" | | Formular-Label | "Dein Name", "Deine E-Mail" | | Placeholder | "Wie können wir dir helfen?" | | Microcopy | "Wir melden uns bei dir zurück" | | Fehlertext | "Bitte gib deine E-Mail an" | | Erfolgstext | "Danke! Wir haben deine Nachricht erhalten." | ### Ansprache: sie | Element | Beispiel | |---------|----------| | Button | "Jetzt starten", "Senden Sie uns eine Nachricht" | | Formular-Label | "Ihr Name", "Ihre E-Mail" | | Placeholder | "Wie können wir Ihnen helfen?" | | Microcopy | "Wir melden uns bei Ihnen" | | Fehlertext | "Bitte geben Sie Ihre E-Mail an" | | Erfolgstext | "Vielen Dank! Wir haben Ihre Nachricht erhalten." | ### Konsistenz-Regel **Pflicht:** Die gewählte Ansprache muss auf ALLEN Seiten und in ALLEN UI-Elementen konsistent sein. Mischformen sind verboten. --- ## Responsive Breakpoints ### Konkrete Viewports | Viewport | Bereich | Verhalten | |----------|---------|-----------| | Mobile | 320px – 767px | Hamburger Navigation, Stack-Layout, Touch-Targets 44×44px | | Tablet | 768px – 1023px | Collapsed Navigation erlaubt, 2-Column-Grids | | Desktop | 1024px+ | Full Navigation, bis zu 4-Column-Grids | ### Mobile (320px – 767px) - Hamburger-Navigation mit Slide-Out oder Fullscreen-Overlay - Einspaltiges Layout (Stack) - Touch-Targets mindestens 44×44px - Keine Hover-Only-Interaktionen - Sticky Header (optional, je nach Interaktionsniveau) - Bottom-Sticky CTAs bei Conversion-Seiten ### Tablet (768px – 1023px) - Navigation kann collapsed bleiben oder aufklappen - 2-Column-Grids möglich - Touch und Hover coexistieren - Seitlicher Padding erhöht ### Desktop (1024px+) - Volle Navigation sichtbar - Bis zu 4-Column-Grids - Hover-Effekte aktiv - Container-Max-Width greift --- ## Accessibility (Barrierefreiheit) ### WCAG 2.1 Level AA Jede UI muss mindestens WCAG 2.1 Level AA erfüllen: | Anforderung | Kriterium | |-------------|-----------| | Kontrast (normaler Text) | mindestens 4.5:1 | | Kontrast (großer Text) | mindestens 3:1 | | Kontrast (UI-Elemente) | mindestens 3:1 | | Fokus-Indikator | sichtbar für alle interaktiven Elemente | | Tastatur-Navigation | vollständig ohne Maus bedienbar | | Screen Reader | alle Inhalte zugänglich | ### Semantisches HTML ```html Zum Kontaktformular
Aktion ausführen
Zum Kontaktformular ``` ### ARIA-Attribute - ARIA nur verwenden, wenn natives HTML nicht ausreicht - `aria-label` für Icons ohne sichtbaren Text - `aria-expanded`, `aria-hidden` für dynamische Inhalte - `aria-live` für dynamische Updates (z.B. Fehlermeldungen) - `role` nur wenn semantisches HTML keine Option ist ### Formulare - Jedes Eingabefeld braucht ein sichtbares `