// SRC-04 Prüfung 2 (Barrierefreiheits-Kontrastprüfung der Hervorhebung): // echte WCAG-2.1-Kontrastberechnung statt einer rein manuellen Behauptung. function srgbToLinear(channel: number): number { const c = channel / 255; return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4); } function relativeLuminance(hex: string): number { const clean = hex.replace("#", ""); const r = parseInt(clean.slice(0, 2), 16); const g = parseInt(clean.slice(2, 4), 16); const b = parseInt(clean.slice(4, 6), 16); return 0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b); } // contrastRatio berechnet das WCAG-Kontrastverhältnis zwischen zwei // Hex-Farben (>= 4.5:1 gilt als AA-konform für Fließtext). export function contrastRatio(colorA: string, colorB: string): number { const lumA = relativeLuminance(colorA); const lumB = relativeLuminance(colorB); const lighter = Math.max(lumA, lumB); const darker = Math.min(lumA, lumB); return (lighter + 0.05) / (darker + 0.05); }