feat(website): SEO, a11y, and build pipeline overhaul

- SEO: per-locale og:locale, Organization+WebSite schema, FAQPage replacing ItemList
- SEO: BreadcrumbList on legal pages, site.webmanifest, expanded sitemap
- a11y: hamburger ARIA+ESC, skip-to-content, aria-hidden on step-num
- a11y: focus-visible states, prefers-reduced-motion, emoji→SVG icons
- CSS: extract .mock-section-label, replace transition:all, will-change hints
- Build: esbuild JS minifier (-46%), sharp AVIF conversion (26 files, quality 70)
- Build: content hashing (style.XXXX.min.css), SVG minification, picture injection
- Cleanup: remove lightningcss (caused CSS merging bugs)
This commit is contained in:
Koala
2026-06-01 03:20:51 +02:00
parent 9eab699e2a
commit 72180ba817
58 changed files with 2569 additions and 1513 deletions
+17 -7
View File
@@ -433,15 +433,25 @@ document.addEventListener('DOMContentLoaded', () => {
// Mobile Hamburger Menu Toggle
const hamburger = document.querySelector('.hamburger');
const navLinks = document.querySelector('.nav-links');
const navLinks = document.querySelector('#primary-nav');
if (hamburger && navLinks) {
// Initialize accessibility attribute
hamburger.setAttribute('aria-expanded', 'false');
hamburger.addEventListener('click', () => {
const isOpen = navLinks.classList.toggle('open');
hamburger.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
});
const open = () => {
navLinks.classList.add('open');
hamburger.setAttribute('aria-expanded', 'true');
document.addEventListener('keydown', onEsc);
};
const close = () => {
navLinks.classList.remove('open');
hamburger.setAttribute('aria-expanded', 'false');
document.removeEventListener('keydown', onEsc);
};
const toggle = () => navLinks.classList.contains('open') ? close() : open();
const onEsc = (e) => { if (e.key === 'Escape') close(); };
hamburger.addEventListener('click', toggle);
navLinks.querySelectorAll('a').forEach(a => a.addEventListener('click', close));
}
// Dynamically localize home links on root dynamic pages (impressum, datenschutz, join)