Weniger Text, mehr Bild: Schablonen-Elemente entfernt

Über-uns-Block mit Kennzahlen, Zielgruppen-Leiste, Eyebrow-Labels,
Pillen, Checklisten und reine Textsektionen entfernt. Hero auf
Headline, eine Zeile und zwei Buttons reduziert. Unterseiten mit
Foto im Kopf, Philosophie über Fassadenbild mit Parallax, Layout
breiter (max. 1680px).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
NotPika69andClaude Opus 5.5 committed 2026-09-30 21:07:20 +02:00
1 parent 62916fc179
commit ba44dc3f0a
31 files changed
+227 -591

No files matched your search

+8 -43
View File
@@ -85,37 +85,6 @@
cmp._set = set;
});
/* ---------- Umschalter Privat / Gewerbe (Tabs) ---------- */
$$('.switch').forEach((sw) => {
const tabs = $$('[role="tab"]', sw);
const pill = $('.switch__pill', sw);
const place = (t) => { if (pill) { pill.style.width = t.offsetWidth + 'px'; pill.style.transform = `translateX(${t.offsetLeft - 4}px)`; } };
const select = (t, focus) => {
tabs.forEach((x) => {
const on = x === t;
x.setAttribute('aria-selected', String(on));
x.tabIndex = on ? 0 : -1;
const panel = document.getElementById(x.getAttribute('aria-controls'));
if (panel) panel.hidden = !on;
if (on && panel && window.gsap && !matchMedia('(prefers-reduced-motion: reduce)').matches) {
gsap.fromTo(panel.children, { opacity: 0, y: 14 }, { opacity: 1, y: 0, duration: .6, ease: 'expo.out', stagger: .035 });
}
});
place(t);
if (focus) t.focus();
};
tabs.forEach((t, i) => {
t.addEventListener('click', () => select(t));
t.addEventListener('keydown', (e) => {
const d = e.key === 'ArrowRight' ? 1 : e.key === 'ArrowLeft' ? -1 : 0;
if (d) { e.preventDefault(); select(tabs[(i + d + tabs.length) % tabs.length], true); }
});
});
const initial = tabs.find((t) => t.getAttribute('aria-selected') === 'true') || tabs[0];
requestAnimationFrame(() => place(initial));
addEventListener('resize', () => place(tabs.find((t) => t.getAttribute('aria-selected') === 'true')));
});
/* ---------- Notruf-Pille: nach dem Hero sichtbar, am Seitenende weg ---------- */
const sos = $('.sos');
if (sos) {
@@ -269,18 +238,6 @@
if (img) tl.from(img, { scale: 1.18, duration: 1.8, ease: 'expo.out' }, 0);
});
/* ---- Zähler ---- */
$$('[data-count]').forEach((el) => {
const to = el.dataset.count === 'years' ? years : Number(el.dataset.count);
const o = { v: 0 };
el.textContent = '0';
gsap.to(o, {
v: to, duration: 1.8, ease: 'expo.out',
scrollTrigger: { trigger: el, start: 'top 90%', once: true },
onUpdate: () => { el.textContent = Math.round(o.v); },
});
});
/* ---- Philosophie: Wort für Wort hell (gescrubbt) ---- */
$$('[data-scrub-words]').forEach((el) => {
SplitText.create(el, {
@@ -305,6 +262,14 @@
});
});
/* ---- Philosophie: Hintergrundbild läuft langsamer mit ---- */
$$('.philosophy__media picture').forEach((el) => {
gsap.fromTo(el, { yPercent: -8 }, {
yPercent: 8, ease: 'none',
scrollTrigger: { trigger: el.closest('section'), start: 'top bottom', end: 'bottom top', scrub: true },
});
});
/* ---- Parallax für einzelne Elemente ---- */
$$('[data-parallax]').forEach((el) => {
const amt = Number(el.dataset.parallax) || 10;