From 82dc9599ccdd6628208aecd0f8a8a7bee8cb899d Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 3 Oct 2026 16:49:05 +0000 Subject: [PATCH] =?UTF-8?q?Ma=C3=9Fgeschneiderte=20Website=20f=C3=BCr=20Ol?= =?UTF-8?q?zinger=20Haustechnik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neuer statischer Webauftritt für die Olzinger GmbH (Heizung, Sanitär, Lüftung, regenerative Energien – Ergolding bei Landshut, seit 1985). - Hero mit live berechnetem WebGL-„Wärmebild“: Maus als Wärmequelle, Wärmespur, Isothermen und Temperaturanzeige; Preloader „Thermostat“ - Gestapelte Leistungskarten mit animierten SVG-Illustrationen - Interaktives Energie-Haus (Wärmepumpe, Solarthermie, Speicher, Fußbodenheizung, Bad, Lüftung) mit Tabs, Hotspots und Autoplay - Heizungs-Finder mit Empfehlung und Übernahme ins Kontaktformular - Ablauf als sich füllende Rohrleitung, Zeitleiste mit Zählwerk, Live-Öffnungsstatus inkl. bayerischer Feiertage - Kontaktformular mit PHP-Versand (Honeypot, Zeitfalle) und mailto-Fallback; Impressum, Datenschutz, 404-Seite - Smooth-Scroll (Lenis) und GSAP-Animationen, alles lokal gehostet; reduzierte Bewegung, Betrieb ohne JavaScript, axe ohne Befunde - SEO: Schema.org HVACBusiness, Open-Graph-Bild, Sitemap, robots.txt Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Kjd7UMh3HKyVziCgiZ9A2i --- .gitignore | 4 + .htaccess | 33 + 404.html | 96 ++ README.md | 93 ++ assets/css/main.css | 1466 ++++++++++++++++++++ assets/fonts/OFL-InstrumentSans.txt | 93 ++ assets/fonts/OFL-InstrumentSerif.txt | 93 ++ assets/fonts/instrument-sans-var.woff2 | Bin 0 -> 57332 bytes assets/fonts/instrument-serif-italic.woff2 | Bin 0 -> 22128 bytes assets/fonts/instrument-serif.woff2 | Bin 0 -> 21032 bytes assets/img/apple-touch-icon.png | Bin 0 -> 7604 bytes assets/img/favicon-32.png | Bin 0 -> 1048 bytes assets/img/favicon.svg | 12 + assets/img/logo.svg | 13 + assets/img/og-image.jpg | Bin 0 -> 96203 bytes assets/js/contact.js | 233 ++++ assets/js/finder.js | 232 ++++ assets/js/house.js | 121 ++ assets/js/main.js | 504 +++++++ assets/js/thermal.js | 402 ++++++ assets/vendor/LICENSE-lenis.txt | 9 + assets/vendor/LICENSES.md | 10 + assets/vendor/ScrollTrigger.min.js | 11 + assets/vendor/SplitText.min.js | 11 + assets/vendor/gsap.min.js | 11 + assets/vendor/lenis.min.js | 2 + datenschutz.html | 214 +++ impressum.html | 201 +++ index.html | 1315 ++++++++++++++++++ kontakt.php | 117 ++ robots.txt | 4 + site.webmanifest | 12 + sitemap.xml | 19 + tools/og-template.html | 46 + 34 files changed, 5377 insertions(+) create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 404.html create mode 100644 README.md create mode 100644 assets/css/main.css create mode 100644 assets/fonts/OFL-InstrumentSans.txt create mode 100644 assets/fonts/OFL-InstrumentSerif.txt create mode 100644 assets/fonts/instrument-sans-var.woff2 create mode 100644 assets/fonts/instrument-serif-italic.woff2 create mode 100644 assets/fonts/instrument-serif.woff2 create mode 100644 assets/img/apple-touch-icon.png create mode 100644 assets/img/favicon-32.png create mode 100644 assets/img/favicon.svg create mode 100644 assets/img/logo.svg create mode 100644 assets/img/og-image.jpg create mode 100644 assets/js/contact.js create mode 100644 assets/js/finder.js create mode 100644 assets/js/house.js create mode 100644 assets/js/main.js create mode 100644 assets/js/thermal.js create mode 100644 assets/vendor/LICENSE-lenis.txt create mode 100644 assets/vendor/LICENSES.md create mode 100644 assets/vendor/ScrollTrigger.min.js create mode 100644 assets/vendor/SplitText.min.js create mode 100644 assets/vendor/gsap.min.js create mode 100644 assets/vendor/lenis.min.js create mode 100644 datenschutz.html create mode 100644 impressum.html create mode 100644 index.html create mode 100644 kontakt.php create mode 100644 robots.txt create mode 100644 site.webmanifest create mode 100644 sitemap.xml create mode 100644 tools/og-template.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e7e04ed --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +Thumbs.db +node_modules/ +*.log diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..e281952 --- /dev/null +++ b/.htaccess @@ -0,0 +1,33 @@ +# Olzinger Haustechnik – Apache-Konfiguration (optional) +# Alle Blöcke sind abgesichert, damit fehlende Module keinen Serverfehler auslösen. + +ErrorDocument 404 /404.html + + + AddType font/woff2 .woff2 + AddType image/svg+xml .svg + AddType application/manifest+json .webmanifest + + + + Header always set X-Content-Type-Options "nosniff" + Header always set Referrer-Policy "strict-origin-when-cross-origin" + Header always set X-Frame-Options "SAMEORIGIN" + Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" + + + + ExpiresActive On + ExpiresByType text/html "access plus 0 seconds" + ExpiresByType text/css "access plus 1 week" + ExpiresByType application/javascript "access plus 1 week" + ExpiresByType text/javascript "access plus 1 week" + ExpiresByType font/woff2 "access plus 1 year" + ExpiresByType image/svg+xml "access plus 1 month" + ExpiresByType image/png "access plus 1 month" + ExpiresByType image/jpeg "access plus 1 month" + + + + AddOutputFilterByType DEFLATE text/html text/css application/javascript text/javascript image/svg+xml application/json + diff --git a/404.html b/404.html new file mode 100644 index 0000000..9c56f4c --- /dev/null +++ b/404.html @@ -0,0 +1,96 @@ + + + + + + Seite nicht gefunden – Olzinger Haustechnik + + + + + + + + +
+
+ + 0871 72617 +
+ +
+
+

Fehler 404

+

Kein Anschluss unter dieser Adresse.

+

Diese Seite gibt es nicht – oder nicht mehr. Kein Grund zur Sorge: Wir bringen Sie zurück auf den richtigen Weg.

+ +
+ + +
+ + +
+ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..669a962 --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +# Olzinger Haustechnik – Website + +Maßgeschneiderter Neuauftritt für die **Olzinger GmbH** (Heizung · Sanitär · Lüftung · Regenerative Energien, Ergolding bei Landshut, seit 1985). + +Statische Website ohne Build-Schritt: HTML, CSS und JavaScript, alle Bibliotheken und Schriften lokal eingebunden (kein CDN, keine Cookies, kein Tracking). + +## Gestaltungsidee: „Wärmebild“ + +Haustechnik sieht man nicht – man spürt sie. Deshalb zeigt der Einstieg ein **live berechnetes Wärmebild** (WebGL) mit Isothermen wie bei einer Thermografie-Kamera. Die Maus wirkt als Wärmequelle, hinterlässt eine Wärmespur, und ein Messfadenkreuz zeigt die „Temperatur“ an. Durch die ganze Seite zieht sich das Motiv **warm trifft kalt** (Vorlauf/Rücklauf): Farbverlauf Blau → Magenta → Orange, das Logo als Thermostat-Skala, Bänder in Rücklauf-Blau und Vorlauf-Orange. + +## Bereiche der Startseite + +| Bereich | Besonderheit | +|---|---| +| Preloader | Thermostat-Bogen „dreht hoch“, Jahreszahl zählt von 1985 bis heute (nur beim ersten Aufruf) | +| Hero | WebGL-Wärmebild, Live-Öffnungsstatus (inkl. bayerischer Feiertage) | +| Bänder | Endlos-Laufschrift, reagiert auf Scroll-Tempo und -Richtung | +| Intro | Text „heizt sich“ Wort für Wort beim Scrollen auf | +| Leistungen | 5 gestapelte Karten (Sticky-Stack) mit animierten Illustrationen: Wärmepumpe, Heizkörper, Waschtisch, Wärmetauscher, Manometer | +| Energie-Haus | Interaktiver Hausschnitt: Wärmepumpe, Solarthermie, Speicher, Fußbodenheizung, Bad, Lüftung – mit fließenden Medien in den Leitungen | +| Heizungs-Finder | 4 Fragen → Empfehlung (Wärmepumpe / Pellets / Hybrid) mit Passungsbalken; Ergebnis lässt sich ins Kontaktformular übernehmen | +| Ablauf | Rohrleitung füllt sich beim Scrollen | +| Über uns | Zähler, Zeitleiste mit Zählwerk-Jahreszahl (1985 → heute), Geschäftsführung | +| Karriere | Ausbildung Anlagenmechaniker/in SHK, Initiativbewerbung | +| Kontakt | Kontaktkarten, Öffnungszeiten mit „Heute“-Markierung, Formular | +| Footer | Schriftzug „heizt auf“ beim Scrollen | + +Außerdem: `impressum.html`, `datenschutz.html`, `404.html` („Kein Anschluss unter dieser Adresse“), weicher Seitenwechsel, SEO-Daten (Schema.org `HVACBusiness`, Open-Graph-Bild, Sitemap). + +## Lokal ansehen + +```bash +python3 -m http.server 8000 +# dann http://localhost:8000 öffnen +``` + +`index.html` lässt sich auch direkt per Doppelklick öffnen; das Kontaktformular nutzt dann den E-Mail-Fallback. + +## Veröffentlichen + +Den kompletten Ordnerinhalt auf den Webspace laden (z. B. per FTP). Voraussetzungen: + +- Beliebiger Webserver; für den direkten Formularversand **PHP 7.4+** mit funktionierender `mail()`-Funktion (`kontakt.php`). +- Ohne PHP funktioniert das Formular trotzdem: Es öffnet dann das E-Mail-Programm des Besuchers mit vorbereiteter Nachricht. +- `.htaccess` (Apache) setzt die 404-Seite, Caching und Sicherheits-Header. Bei anderen Servern einfach ignorieren. +- `404.html` nutzt absolute Pfade (`/assets/...`) – liegt die Seite in einem Unterordner, Pfade dort anpassen. + +## Vor dem Livegang prüfen (TODO) + +Die Firmendaten stammen aus öffentlich zugänglichen Quellen. Bitte bestätigen bzw. ergänzen: + +- [ ] **Impressum:** Umsatzsteuer-ID und berufsrechtliche Angaben (Kammer, Berufsbezeichnung) – als Kommentar in `impressum.html` vorbereitet. +- [ ] **Datenschutz:** Hosting-Anbieter, Speicherdauer der Server-Logs, Vertrag zur Auftragsverarbeitung – als `TODO` in `datenschutz.html` markiert. Rechtstexte sind Entwürfe und ersetzen keine Rechtsberatung. +- [ ] **Inhalte:** Mitarbeiterzahl (≈ 25), Ausbildungsstart (September), Leistungsliste, Texte zur Karriere. +- [ ] **Formular:** In `kontakt.php` Empfänger/Absender prüfen (`RECIPIENT`, `SENDER`); einmal testweise absenden. +- [ ] Optional: echte Fotos (Team, Projekte, Bäder) ergänzen – die Illustrationen sind so gestaltet, dass sie auch ohne Fotos tragen. + +## Struktur + +``` +index.html Startseite +impressum.html Impressum +datenschutz.html Datenschutzerklärung +404.html Fehlerseite +kontakt.php Formularversand (optional, PHP) +assets/css/main.css Design-System und alle Styles +assets/js/thermal.js WebGL-Wärmebild +assets/js/main.js Preloader, Smooth-Scroll, Navigation, Scroll-Animationen +assets/js/house.js Energie-Haus (Tabs, Hotspots, Autoplay) +assets/js/finder.js Heizungs-Finder (Bewertungslogik + Ergebnis) +assets/js/contact.js Öffnungszeiten live, Feiertage, Kontaktformular +assets/vendor/ GSAP, ScrollTrigger, SplitText, Lenis (lokal) +assets/fonts/ Instrument Sans & Instrument Serif (OFL, lokal) +assets/img/ Favicon, Logo, Open-Graph-Bild +tools/og-template.html Vorlage zum Neu-Rendern des Open-Graph-Bilds +``` + +## Anpassen + +- **Farben, Abstände, Schriften:** Design-Tokens am Anfang von `assets/css/main.css` (`--warm`, `--cool`, `--ink`, `--paper` …). +- **Öffnungszeiten:** in `assets/js/contact.js` (`SCHEDULE`) sowie in `index.html` (Text und Schema.org-Daten). +- **Heizungs-Finder:** Gewichtung in `assets/js/finder.js` (`evaluate`), Texte in `TEXTS`. +- **Open-Graph-Bild:** `tools/og-template.html` im Browser öffnen (über einen lokalen Server) und einen Screenshot mit 1200 × 630 px als `assets/img/og-image.jpg` speichern. + +## Qualität + +- Barrierefreiheit: geprüft mit axe-core (WCAG 2.1 AA) – keine Befunde; Tastaturbedienung für Menü, Tabs und Finder; `prefers-reduced-motion` wird respektiert (keine Smooth-Scroll-, Preloader- oder Scroll-Animationen). +- Ohne JavaScript bleiben alle Inhalte sichtbar und nutzbar. +- Getestet in Chromium: Desktop (1366, 1440, 1920 px), Tablet (834 px) und Smartphone (390 px). + +## Lizenzen + +GSAP 3.15 (Standard „No Charge“ License), Lenis (MIT), Instrument Sans/Serif (SIL OFL 1.1) – Details in `assets/vendor/LICENSES.md` und `assets/fonts/`. diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..615f7a7 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,1466 @@ +/* ========================================================================== + Olzinger Haustechnik – Stylesheet + Gestaltung: Wärmebild-Ästhetik · warm (Vorlauf) trifft kalt (Rücklauf) + ========================================================================== */ + +/* ---------- Schriften (lokal gehostet, OFL) ---------- */ +@font-face { + font-family: "Instrument Sans"; + src: url("../fonts/instrument-sans-var.woff2") format("woff2"); + font-weight: 400 700; + font-stretch: 75% 100%; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Instrument Serif"; + src: url("../fonts/instrument-serif.woff2") format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} +@font-face { + font-family: "Instrument Serif"; + src: url("../fonts/instrument-serif-italic.woff2") format("woff2"); + font-weight: 400; + font-style: italic; + font-display: swap; +} + +/* ---------- Design-Tokens ---------- */ +:root { + --ink: #0B151E; + --ink-2: #0F1D29; + --ink-3: #162839; + --paper: #F3EFE8; + --paper-2: #EAE4DA; + --sand: #E7DFD2; + --white: #FFFDF9; + + --text: #0B151E; + --text-2: #4D5963; + --text-dark: #F3EFE8; + --text-dark-2: rgba(243, 239, 232, .68); + + --warm: #FF6A2B; + --warm-ink: #C2410C; + --amber: #FFB547; + --magenta: #C2456B; + --cool: #2E9BEF; + --cool-ink: #1565A8; + --air: #3CCFC0; + --eco: #46C27E; + --steel: #8FB3D9; + + --line: rgba(11, 21, 30, .1); + --line-2: rgba(11, 21, 30, .2); + --line-dark: rgba(243, 239, 232, .12); + + --grad-thermal: linear-gradient(90deg, #2E9BEF 0%, #C2456B 55%, #FF6A2B 100%); + + --radius-xl: 40px; + --radius-lg: 28px; + --radius: 18px; + + --container: 1360px; + --gutter: clamp(20px, 4.2vw, 64px); + --section: clamp(96px, 12vw, 176px); + --nav-h: 84px; + + --ease: cubic-bezier(.16, 1, .3, 1); + --ease-in-out: cubic-bezier(.65, 0, .35, 1); + + --font-sans: "Instrument Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; + --font-serif: "Instrument Serif", ui-serif, Georgia, "Times New Roman", serif; + --font-mono: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; +} + +/* ---------- Basis ---------- */ +*, *::before, *::after { box-sizing: border-box; } + +html { + overflow-x: hidden; overflow-x: clip; + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; + scroll-behavior: smooth; + background: var(--ink); +} +html.lenis, html.lenis body { height: auto; } +.lenis.lenis-smooth { scroll-behavior: auto !important; } +.lenis.lenis-stopped { overflow: clip; } + +body { + margin: 0; + background: var(--paper); + color: var(--text); + font-family: var(--font-sans); + font-size: clamp(16px, .55vw + 10px, 18px); + line-height: 1.6; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + overflow-x: clip; +} +.has-loader body { overflow: hidden; } + +img, svg, canvas { display: block; max-width: 100%; } +a { color: inherit; text-decoration: none; } +button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; } +h1, h2, h3, p { overflow-wrap: break-word; } +address { font-style: normal; } + +:focus-visible { outline: 2px solid var(--warm); outline-offset: 3px; border-radius: 6px; } +::selection { background: var(--warm); color: var(--ink); } + +.sr-only { + position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; +} +.sprite { position: absolute; width: 0; height: 0; overflow: hidden; } + +.icon { + width: 1.15em; height: 1.15em; flex: none; + fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; +} + +.container { + width: 100%; + max-width: calc(var(--container) + var(--gutter) * 2); + margin-inline: auto; + padding-inline: var(--gutter); +} + +.skip-link { + position: fixed; top: 12px; left: 12px; z-index: 1000; + padding: 10px 18px; border-radius: 999px; + background: var(--paper); color: var(--ink); font-weight: 600; + transform: translateY(-160%); transition: transform .3s var(--ease); +} +.skip-link:focus { transform: none; } + +/* ---------- Typografie ---------- */ +.h1 { + margin: 0; + font-size: clamp(42px, 6.3vw, 102px); + line-height: .96; + letter-spacing: -.042em; + font-weight: 600; + font-stretch: 86%; + text-wrap: balance; +} +.accent { + font-family: var(--font-serif); + font-style: italic; + font-weight: 400; + font-stretch: normal; + letter-spacing: -.02em; +} +.h1 .accent { color: var(--warm-ink); font-size: 1.05em; } +.sheet--dark .h1 .accent, +.footer .accent { + color: var(--amber); + background: linear-gradient(95deg, #FFC56B 0%, #FF8A3C 45%, #FF5F6D 100%); + -webkit-background-clip: text; background-clip: text; + -webkit-text-fill-color: transparent; +} +.split-line { padding-bottom: .06em; margin-bottom: -.06em; } + +.lead { + margin: 0; + max-width: 48ch; + font-size: clamp(18px, 1.3vw, 21px); + line-height: 1.55; + color: var(--text-2); + text-wrap: pretty; +} +.sheet--dark .lead { color: var(--text-dark-2); } + +.label { + display: inline-flex; align-items: center; gap: 12px; + margin: 0 0 28px; + font-size: 14px; font-weight: 500; letter-spacing: .02em; + color: var(--text-2); +} +.label__num { + display: inline-grid; place-items: center; + min-width: 36px; height: 24px; padding: 0 9px; + border-radius: 999px; border: 1px solid var(--line-2); + font-family: var(--font-mono); font-size: 12px; color: var(--text); +} +.label__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--grad-thermal); } +.sheet--dark .label { color: var(--text-dark-2); } +.sheet--dark .label__num { border-color: var(--line-dark); color: var(--paper); } + +.eyebrow { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-size: 15px; font-weight: 500; } +.eyebrow__dot { + position: relative; width: 8px; height: 8px; border-radius: 50%; background: var(--warm); + box-shadow: 0 0 0 4px rgba(255, 106, 43, .22); +} + +/* ---------- Buttons & Links ---------- */ +.btn { + --btn-bg: var(--ink); --btn-fg: var(--paper); + --btn-fill: var(--warm); --btn-fill-fg: var(--ink); + position: relative; isolation: isolate; overflow: hidden; + display: inline-flex; align-items: center; justify-content: center; gap: 14px; + height: 58px; padding: 0 26px; + border-radius: 999px; border: 1px solid transparent; + background: var(--btn-bg); color: var(--btn-fg); + font-size: 16px; font-weight: 600; letter-spacing: -.005em; white-space: nowrap; + transition: color .45s var(--ease), border-color .45s var(--ease); + -webkit-tap-highlight-color: transparent; +} +.btn::before { + content: ""; position: absolute; z-index: -1; + right: 8px; top: 50%; width: 42px; height: 42px; margin-top: -21px; + border-radius: 50%; background: var(--btn-fill); + transform: scale(0); transition: transform .75s var(--ease); +} +.btn:hover::before, .btn:focus-visible::before { transform: scale(13); } +.btn:hover, .btn:focus-visible { color: var(--btn-fill-fg); } +.btn:has(.btn__icon) { padding-right: 8px; } +.btn__label { position: relative; } +.btn__icon { + position: relative; display: grid; place-items: center; + width: 42px; height: 42px; border-radius: 50%; + background: var(--btn-fill); color: var(--btn-fill-fg); + transition: background-color .45s var(--ease), color .45s var(--ease); +} +.btn__icon .icon { width: 18px; height: 18px; transition: transform .6s var(--ease); } +.btn:hover .btn__icon { background: var(--btn-fill-fg); color: var(--btn-fill); } +.btn:hover .btn__icon .icon { transform: rotate(-45deg); } + +.btn--light { --btn-bg: var(--paper); --btn-fg: var(--ink); } +.btn--dark { --btn-bg: var(--ink); --btn-fg: var(--paper); } +.btn--warm { --btn-bg: var(--warm); --btn-fg: var(--ink); --btn-fill: var(--ink); --btn-fill-fg: var(--paper); } +.btn--ghost { + --btn-bg: transparent; --btn-fg: var(--ink); + --btn-fill: var(--ink); --btn-fill-fg: var(--paper); + border-color: var(--line-2); +} +.btn--ghost .icon { width: 18px; height: 18px; } +.btn--ghost::before { right: auto; left: 50%; margin-left: -21px; } +.btn--ghost-light { --btn-fg: var(--paper); --btn-fill: var(--paper); --btn-fill-fg: var(--ink); border-color: rgba(243, 239, 232, .32); } +.btn--sm { height: 44px; padding: 0 20px; font-size: 15px; } +.btn--sm::before { right: 50%; margin-right: -21px; } + +.link-arrow { + position: relative; display: inline-flex; align-items: center; gap: 10px; + padding-bottom: 5px; font-weight: 600; +} +.link-arrow::after { + content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; + background: currentColor; opacity: .3; +} +.link-arrow::before { + content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; + background: currentColor; transform: scaleX(0); transform-origin: right; + transition: transform .7s var(--ease); +} +.link-arrow:hover::before { transform: scaleX(1); transform-origin: left; } +.link-arrow .icon { width: 18px; height: 18px; transition: transform .6s var(--ease); } +.link-arrow:hover .icon { transform: translateX(5px); } + +/* ---------- Status (Öffnungszeiten live) ---------- */ +.status { + display: inline-flex; align-items: center; gap: 10px; + margin: 0; padding: 8px 15px 8px 13px; + border-radius: 999px; background: rgba(11, 21, 30, .06); + font-size: 14px; font-weight: 500; line-height: 1.3; +} +.status--dark, .hours .status { background: rgba(243, 239, 232, .09); color: var(--paper); } +.status__dot { position: relative; flex: none; width: 8px; height: 8px; border-radius: 50%; background: #9AA5AE; } +.status.is-open .status__dot { background: #3DDC84; } +.status.is-open .status__dot::after { + content: ""; position: absolute; inset: -4px; border-radius: 50%; + border: 2px solid #3DDC84; animation: ping 2.2s var(--ease) infinite; +} +.status.is-break .status__dot { background: var(--amber); } +.status.is-closed .status__dot { background: #FF6B6B; } + +/* ---------- Preloader ---------- */ +.loader { display: none; } +.has-loader .loader { + position: fixed; inset: 0; z-index: 300; + display: grid; place-items: center; + background: var(--ink); color: var(--paper); +} +.loader__center { display: grid; justify-items: center; gap: 20px; } +.loader__mark { width: clamp(96px, 11vw, 136px); height: auto; overflow: visible; } +.loader__track { fill: none; stroke: rgba(243, 239, 232, .08); stroke-width: 9; stroke-linecap: round; } +.loader__arc { fill: none; stroke-width: 9; stroke-linecap: round; } +.loader__dot { fill: var(--paper); } +.loader__year { + margin: 0; font-size: clamp(44px, 6vw, 76px); font-weight: 600; font-stretch: 80%; + letter-spacing: -.045em; line-height: 1; font-variant-numeric: tabular-nums; +} +.loader__caption { + position: absolute; bottom: 28px; margin: 0; + font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--text-dark-2); +} +.loader__caption--l { left: var(--gutter); } +.loader__caption--r { right: var(--gutter); } + +/* ---------- Navigation ---------- */ +.nav { + position: fixed; inset: 0 0 auto 0; z-index: 100; + padding: 12px var(--gutter) 0; + pointer-events: none; + transition: transform .7s var(--ease); +} +.nav.is-hidden { transform: translateY(-160%); } +.nav.is-hidden .nav__bar { box-shadow: none; } +.nav__bar { + pointer-events: auto; + max-width: calc(var(--container) + 32px); margin-inline: auto; + height: 64px; padding: 0 8px 0 16px; + display: flex; align-items: center; justify-content: space-between; gap: 20px; + border-radius: 999px; border: 1px solid transparent; + color: var(--paper); + transition: background-color .5s var(--ease), border-color .5s, color .5s, box-shadow .5s; +} +.nav.is-scrolled .nav__bar { + background: rgba(246, 243, 237, .8); + color: var(--ink); + border-color: rgba(11, 21, 30, .08); + box-shadow: 0 12px 40px -16px rgba(11, 21, 30, .28); + -webkit-backdrop-filter: blur(18px) saturate(1.5); + backdrop-filter: blur(18px) saturate(1.5); +} +.menu-open .nav.is-scrolled .nav__bar, +.menu-open .nav__bar { + background: transparent; color: var(--paper); border-color: transparent; box-shadow: none; + -webkit-backdrop-filter: none; backdrop-filter: none; +} + +.logo { display: inline-flex; align-items: center; gap: 11px; } +.logo__mark { width: 34px; height: 34px; } +.logo__text { display: flex; flex-direction: column; line-height: 1; } +.logo__word { font-size: 19px; font-weight: 700; font-stretch: 90%; letter-spacing: .02em; text-transform: uppercase; } +.logo__sub { margin-top: 4px; font-size: 10.5px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase; opacity: .62; } + +.nav__links { display: flex; gap: 2px; } +.nav__links a { + position: relative; padding: 9px 14px; border-radius: 999px; + font-size: 15px; font-weight: 500; + transition: background-color .3s; +} +.nav__links a:hover { background: rgba(243, 239, 232, .1); } +.nav.is-scrolled .nav__links a:hover { background: rgba(11, 21, 30, .06); } +.nav__links a.is-active::after { + content: ""; position: absolute; left: 50%; bottom: 2px; + width: 5px; height: 5px; margin-left: -2.5px; border-radius: 50%; background: var(--warm); +} +.nav__actions { display: flex; align-items: center; gap: 8px; } +.nav__phone { + display: inline-flex; align-items: center; gap: 8px; padding: 9px 12px; + font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; +} +.nav__phone .icon { width: 17px; height: 17px; } +.nav__toggle { + display: none; place-items: center; + width: 48px; height: 48px; border-radius: 50%; + background: var(--paper); color: var(--ink); +} +.nav.is-scrolled .nav__toggle { background: var(--ink); color: var(--paper); } +.menu-open .nav__toggle { background: var(--paper); color: var(--ink); } +.nav__toggle-lines { position: relative; display: block; width: 18px; height: 10px; } +.nav__toggle-lines i { + position: absolute; left: 0; right: 0; height: 2px; border-radius: 2px; background: currentColor; + transition: transform .5s var(--ease), top .5s var(--ease); +} +.nav__toggle-lines i:first-child { top: 0; } +.nav__toggle-lines i:last-child { top: 8px; } +.nav__toggle[aria-expanded="true"] .nav__toggle-lines i:first-child { top: 4px; transform: rotate(45deg); } +.nav__toggle[aria-expanded="true"] .nav__toggle-lines i:last-child { top: 4px; transform: rotate(-45deg); } + +/* Mobiles Menü */ +.menu { + position: fixed; inset: 0; z-index: 90; + display: flex; flex-direction: column; justify-content: space-between; + padding: calc(var(--nav-h) + 28px) var(--gutter) max(28px, env(safe-area-inset-bottom)); + overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; + background: var(--ink); color: var(--paper); + clip-path: circle(0% at calc(100% - var(--gutter) - 32px) 44px); + visibility: hidden; + transition: clip-path .8s var(--ease-in-out), visibility 0s linear .8s; +} +.menu.is-open { + clip-path: circle(160% at calc(100% - var(--gutter) - 32px) 44px); + visibility: visible; + transition: clip-path .9s var(--ease-in-out), visibility 0s; +} +.menu__glow { + position: absolute; right: -30vw; bottom: -30vw; width: 90vw; height: 90vw; border-radius: 50%; + background: radial-gradient(closest-side, rgba(255, 106, 43, .42), rgba(194, 69, 107, .18) 55%, transparent); + pointer-events: none; +} +.menu__links { position: relative; display: flex; flex-direction: column; } +.menu__links a { + display: flex; align-items: baseline; gap: 16px; + padding: 4px 0; + font-size: clamp(36px, 8.5vw, 64px); font-weight: 600; font-stretch: 84%; + letter-spacing: -.04em; line-height: 1.08; +} +.menu__links a span { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0; opacity: .5; } +.menu__foot { position: relative; display: grid; justify-items: start; gap: 14px; margin-top: 40px; font-size: 17px; } +.menu__foot a { display: inline-flex; align-items: center; gap: 10px; } + +/* ---------- Sheets (abgerundete Sektionen) ---------- */ +.sheet { + position: relative; z-index: 2; + margin-top: calc(var(--radius-xl) * -1); + border-radius: var(--radius-xl) var(--radius-xl) 0 0; + background: var(--paper); +} +.sheet--dark { background: var(--ink); color: var(--paper); } +.sheet--sand { background: var(--sand); } + +.section-head { max-width: 980px; margin-bottom: clamp(48px, 6vw, 92px); } +.section-head .h1 { margin-bottom: 28px; } +.section-head--split { + display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); + gap: clamp(28px, 4vw, 64px); align-items: end; max-width: none; +} +.section-head--split .h1 { margin-bottom: 0; } +.section-head--center { margin-inline: auto; text-align: center; } +.section-head--center .lead { margin-inline: auto; text-wrap: balance; } + +/* ========================================================================== + HERO – Wärmebild + ========================================================================== */ +.hero { + position: relative; isolation: isolate; overflow: hidden; + min-height: 100vh; min-height: 100svh; + display: flex; flex-direction: column; justify-content: flex-end; + padding: calc(var(--nav-h) + 48px) 0 calc(clamp(60px, 7vw, 100px) + 8px); + color: var(--paper); + background: + radial-gradient(42% 52% at 78% 28%, rgba(255, 106, 43, .55), rgba(138, 35, 80, .35) 45%, transparent 72%), + radial-gradient(40% 50% at 18% 85%, rgba(46, 155, 239, .22), transparent 70%), + radial-gradient(60% 60% at 50% 50%, #142C4A, #07111A 75%); +} +.hero__canvas { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; } +.hero__shade { + position: absolute; inset: 0; z-index: -1; pointer-events: none; + background: + linear-gradient(90deg, rgba(5, 11, 18, .62) 0%, rgba(5, 11, 18, .28) 42%, rgba(5, 11, 18, 0) 68%), + linear-gradient(0deg, rgba(5, 11, 18, .7) 0%, rgba(5, 11, 18, 0) 38%); +} + +.hero__inner { + position: relative; + display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 390px); + gap: 24px clamp(24px, 4vw, 64px); align-items: end; +} +.hero__eyebrow { grid-column: 1 / -1; color: rgba(243, 239, 232, .86); } + +.hero__title { + margin: 0; + font-size: clamp(64px, 12.4vw, 204px); + line-height: .84; + font-weight: 600; + font-stretch: 78%; + letter-spacing: -.052em; +} +.hero__line { display: flex; align-items: flex-start; gap: .07em; overflow: hidden; padding: .03em 0 .07em; margin-bottom: -.06em; } +.hero__word { display: inline-flex; align-items: baseline; will-change: transform; } +.hero__dot { + display: inline-block; flex: none; + width: .15em; height: .15em; margin-left: .045em; + border-radius: 50%; +} +.hero__dot--warm { background: var(--warm); box-shadow: 0 0 .28em rgba(255, 106, 43, .75); } +.hero__dot--cool { background: var(--cool); box-shadow: 0 0 .28em rgba(46, 155, 239, .75); } +.hero__dot--air { background: var(--air); box-shadow: 0 0 .28em rgba(60, 207, 192, .7); } +.hero__tag { + margin-top: .95em; + font-family: var(--font-mono); + font-size: clamp(10px, .82vw, 13px); + font-weight: 400; letter-spacing: .04em; line-height: 1.2; + color: rgba(243, 239, 232, .64); + white-space: nowrap; +} +.hero__tag::before { content: "("; } +.hero__tag::after { content: ")"; } + +.hero__aside { padding-bottom: .4em; } +.hero__lead { margin: 0 0 28px; font-size: clamp(17px, 1.25vw, 20px); line-height: 1.55; color: rgba(243, 239, 232, .9); text-shadow: 0 1px 2px rgba(5, 11, 18, .35), 0 2px 22px rgba(5, 11, 18, .55); } +.hero__ctas { display: flex; flex-wrap: wrap; gap: 12px; } + +.hero__bottom { + position: relative; + display: flex; align-items: center; justify-content: space-between; gap: 20px; + margin-top: clamp(36px, 6vh, 64px); padding-top: 20px; + border-top: 1px solid rgba(243, 239, 232, .14); +} +.hero__scroll { display: inline-flex; align-items: center; gap: 12px; font-size: 14px; font-weight: 500; } +.hero__scroll-icon { + display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; + border: 1px solid rgba(243, 239, 232, .3); + transition: background-color .4s, color .4s; +} +.hero__scroll:hover .hero__scroll-icon { background: var(--paper); color: var(--ink); } +.hero__scroll-icon .icon { width: 18px; height: 18px; animation: nudge 2.4s var(--ease) infinite; } + +/* Messfadenkreuz */ +.probe { + position: absolute; left: 0; top: 0; z-index: 3; width: 0; height: 0; + pointer-events: none; opacity: 0; transition: opacity .4s; + will-change: transform; +} +.probe.is-on { opacity: 1; } +.probe__frame { + position: absolute; left: -26px; top: -26px; width: 52px; height: 52px; + --c: rgba(255, 255, 255, .9); + background: + linear-gradient(var(--c), var(--c)) top left / 11px 1.5px no-repeat, + linear-gradient(var(--c), var(--c)) top left / 1.5px 11px no-repeat, + linear-gradient(var(--c), var(--c)) top right / 11px 1.5px no-repeat, + linear-gradient(var(--c), var(--c)) top right / 1.5px 11px no-repeat, + linear-gradient(var(--c), var(--c)) bottom left / 11px 1.5px no-repeat, + linear-gradient(var(--c), var(--c)) bottom left / 1.5px 11px no-repeat, + linear-gradient(var(--c), var(--c)) bottom right / 11px 1.5px no-repeat, + linear-gradient(var(--c), var(--c)) bottom right / 1.5px 11px no-repeat; +} +.probe__dot { position: absolute; left: -2px; top: -2px; width: 4px; height: 4px; border-radius: 50%; background: #fff; } +.probe__val { + position: absolute; left: 34px; top: 12px; + padding: 4px 8px; border-radius: 6px; + background: rgba(5, 11, 18, .58); + -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); + font-family: var(--font-mono); font-size: 12px; white-space: nowrap; color: #fff; + font-variant-numeric: tabular-nums; +} + +/* Skala (horizontal, in der unteren Leiste) */ +.legend { + display: flex; align-items: center; gap: 12px; + font-family: var(--font-mono); font-size: 11px; color: rgba(243, 239, 232, .7); + pointer-events: none; +} +.legend__rec { display: inline-flex; align-items: center; gap: 8px; text-transform: uppercase; letter-spacing: .16em; margin-right: 4px; } +.legend__rec i { width: 7px; height: 7px; border-radius: 50%; background: #FF4D4D; animation: blink 1.6s steps(1) infinite; } +.legend__val { font-variant-numeric: tabular-nums; } +.legend__bar { + position: relative; width: clamp(100px, 11vw, 170px); height: 6px; border-radius: 6px; + background: linear-gradient(90deg, #0B1B2E 0%, #14335A 14%, #3B2466 32%, #8A2350 48%, #E0482A 62%, #FF8A2A 76%, #FFD27A 90%, #FFF6E0 100%); + box-shadow: 0 0 0 1px rgba(255, 255, 255, .14); +} +.legend__marker { + position: absolute; left: 30%; top: -6px; + width: 2px; height: 18px; margin-left: -1px; border-radius: 2px; + background: #fff; box-shadow: 0 0 8px rgba(255, 255, 255, .7); + transition: left .35s var(--ease); +} +.legend__hint { margin-left: 4px; padding-left: 14px; border-left: 1px solid rgba(243, 239, 232, .2); } + +.no-webgl .probe, .no-webgl .legend { display: none; } + +/* Intro-Startzustände (nur mit JS) */ +.js .hero__word { transform: translateY(112%); } +.js .hero__dot { transform: scale(0); } +.js .hero__tag, .js [data-hero-fade] { opacity: 0; } +.js .nav__bar { opacity: 0; } + +/* ========================================================================== + TAPES – Vorlauf / Rücklauf + ========================================================================== */ +.tapes { + position: relative; z-index: 4; + overflow: hidden; overflow-x: clip; overflow-y: visible; + height: clamp(110px, 12vw, 180px); + margin-top: calc(clamp(110px, 12vw, 180px) / -2); + pointer-events: none; +} +.tape { + position: absolute; left: -4%; right: -4%; top: 50%; + padding: clamp(12px, 1.25vw, 18px) 0; + overflow: hidden; white-space: nowrap; + box-shadow: 0 24px 40px -24px rgba(5, 11, 18, .55); +} +.tape--warm { background: var(--warm); color: var(--ink); transform: translateY(-50%) rotate(-2.6deg); } +.tape--cool { background: var(--cool); color: #fff; transform: translateY(-50%) rotate(2.2deg); } +.tape__track { + display: inline-flex; align-items: center; gap: clamp(16px, 1.8vw, 28px); + padding-right: clamp(16px, 1.8vw, 28px); + font-size: clamp(17px, 2vw, 30px); font-weight: 600; font-stretch: 84%; + letter-spacing: -.01em; text-transform: uppercase; line-height: 1; + will-change: transform; +} +.tape__track .icon { width: .7em; height: .7em; } + +/* ========================================================================== + INTRO + ========================================================================== */ +.intro { padding: clamp(96px, 11vw, 168px) 0 var(--section); } +.intro__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 0 24px; } +.intro .label { grid-column: 1 / -1; } +.intro__text { + grid-column: 1 / span 9; margin: 0; + font-size: clamp(27px, 3.4vw, 54px); + line-height: 1.17; letter-spacing: -.032em; font-weight: 500; font-stretch: 92%; + text-wrap: pretty; +} +.intro__aside { + grid-column: 10 / span 3; align-self: end; + display: grid; justify-items: start; gap: 18px; + padding-bottom: .5em; color: var(--text-2); font-size: 16px; +} +.intro__aside p { margin: 0; } +.intro__aside .link-arrow { color: var(--ink); } + +.ichip { + display: inline-grid; place-items: center; + width: 1.55em; height: 1em; margin: 0 .03em; vertical-align: -.1em; + border-radius: 999px; +} +.ichip .icon { width: .58em; height: .58em; stroke-width: 2.2; } +.ichip--warm { background: linear-gradient(120deg, #FFC56B, #FF6A2B); color: var(--ink); } +.ichip--cool { background: linear-gradient(120deg, #8ED9FA, #2E9BEF); color: var(--ink); } +.ichip--air { background: linear-gradient(120deg, #B2F2EA, #3CCFC0); color: var(--ink); } + +.badge { position: relative; width: 128px; height: 128px; color: var(--ink); } +.badge__ring { position: absolute; inset: 0; width: 100%; height: 100%; animation: spin 20s linear infinite; overflow: visible; } +.badge__ring text { font-size: 10.6px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; fill: currentColor; } +.badge__mark { position: absolute; inset: 33%; width: 34%; height: 34%; } + +/* ========================================================================== + LEISTUNGEN – gestapelte Karten + ========================================================================== */ +.services { padding: var(--section) 0 calc(var(--section) * .55 + var(--radius-xl)); } +.stack { position: relative; display: grid; gap: 28px; } +.svc { position: relative; } +.svc--eco { --c: var(--eco); } +.svc--warm { --c: var(--warm); } +.svc--cool { --c: var(--cool); } +.svc--air { --c: var(--air); } +.svc--steel { --c: var(--steel); } + +.svc__inner { + --shade: 0; + position: relative; overflow: hidden; + display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); + gap: clamp(20px, 3vw, 44px); + min-height: min(620px, calc(100vh - var(--nav-h) - 72px)); + padding: clamp(18px, 2.4vw, 36px); + border-radius: var(--radius-xl); + background: var(--ink-2); + color: var(--paper); + border: 1px solid rgba(255, 255, 255, .06); + box-shadow: 0 40px 90px -50px rgba(11, 21, 30, .7); + transform-origin: 50% 0; +} +.svc__inner::after { + content: ""; position: absolute; inset: 0; border-radius: inherit; + background: #05090D; opacity: var(--shade); pointer-events: none; +} +.svc__body { display: flex; flex-direction: column; padding: clamp(6px, 1.4vw, 18px); } +.svc__top { display: flex; align-items: center; justify-content: space-between; gap: 16px; } +.svc__num { font-family: var(--font-mono); font-size: 13px; color: var(--text-dark-2); } +.svc__cat { + display: inline-flex; align-items: center; gap: 8px; + padding: 8px 14px; border-radius: 999px; + background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); + font-size: 14px; font-weight: 500; +} +.svc__cat .icon { width: 17px; height: 17px; color: var(--c); } +.svc__title { + margin: auto 0 18px; padding-top: 36px; + font-size: clamp(32px, 3.5vw, 56px); line-height: 1.0; + letter-spacing: -.04em; font-weight: 600; font-stretch: 86%; + text-wrap: balance; +} +.svc__text { margin: 0 0 26px; max-width: 48ch; color: var(--text-dark-2); } +.svc__list { + list-style: none; margin: 0 0 30px; padding: 0; + display: grid; grid-template-columns: 1fr 1fr; gap: 11px 22px; + font-size: 15.5px; line-height: 1.4; +} +.svc__list li { display: flex; align-items: flex-start; gap: 10px; } +.svc__list .icon { width: 17px; height: 17px; margin-top: .1em; color: var(--c); stroke-width: 2.2; } +.svc__foot { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px; + padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, .1); +} +.svc__badge { + display: inline-flex; align-items: center; gap: 8px; + padding: 7px 13px; border-radius: 999px; font-size: 13px; font-weight: 500; + background: color-mix(in srgb, var(--c) 16%, transparent); + color: color-mix(in srgb, var(--c) 55%, #fff); +} +.svc__badge .icon { width: 15px; height: 15px; } +.svc__badge--link { transition: background-color .3s; } +.svc__badge--link:hover { background: color-mix(in srgb, var(--c) 30%, transparent); } + +.svc__art { + position: relative; isolation: isolate; overflow: hidden; + min-height: 300px; + border-radius: calc(var(--radius-xl) - 12px); + background: + radial-gradient(110% 90% at 70% 15%, color-mix(in srgb, var(--c) 20%, transparent), transparent 62%), + #08121A; + border: 1px solid rgba(255, 255, 255, .05); +} +.svc__art::before { + content: ""; position: absolute; inset: 0; z-index: -1; + background-image: + linear-gradient(rgba(255, 255, 255, .055) 1px, transparent 1px), + linear-gradient(90deg, rgba(255, 255, 255, .055) 1px, transparent 1px); + background-size: 32px 32px; background-position: -1px -1px; + -webkit-mask-image: radial-gradient(ellipse at center, #000 35%, transparent 80%); + mask-image: radial-gradient(ellipse at center, #000 35%, transparent 80%); +} +.art { position: absolute; inset: 0; width: 100%; height: 100%; padding: 4%; } + +/* SVG-Illustrationen */ +.art .a-line { fill: none; stroke: rgba(255, 255, 255, .88); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } +.art .a-thin { fill: none; stroke: rgba(255, 255, 255, .32); stroke-width: 1.4; stroke-linecap: round; } +.art .a-faint { fill: none; stroke: rgba(255, 255, 255, .2); stroke-width: 1.4; } +.art .a-fill { fill: rgba(255, 255, 255, .045); } +.art .a-fill-dark { fill: #0C1822; } +.art .a-thick { stroke-width: 3.5; } +.art .a-label { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; fill: rgba(255, 255, 255, .6); text-transform: uppercase; } +.art .a-label--chip { fill: rgba(255, 255, 255, .92); text-transform: none; letter-spacing: .01em; } +.art .a-temp { font-family: var(--font-mono); font-size: 15px; fill: #fff; } +.art .a-chip rect { fill: rgba(255, 255, 255, .07); stroke: rgba(255, 255, 255, .16); } +.art .a-pipe { fill: none; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; } +.art .a-flow { fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 2 12; --dash: -14; animation: dash 1.1s linear infinite; } +.art .a-flow--pipe { stroke: rgba(255, 255, 255, .9); stroke-width: 2; stroke-dasharray: 3 15; --dash: -18; } +.c-warm { stroke: var(--warm); } +.c-cool { stroke: var(--cool); } +.c-eco { stroke: var(--eco); } +.c-air { stroke: var(--air); } +.c-amber { stroke: var(--amber); } +.c-amber-dim { stroke: #C98A2E; } +.c-hot { stroke: #FF4D3D; } +.c-exhaust { stroke: #B48CDE; } +.c-air-dim { stroke: #2B9E93; } +.c-exhaust-dim { stroke: #8A6AAE; } +.c-warm-fill { fill: var(--warm); } +.c-eco-fill { fill: var(--eco); } +.c-air-fill { fill: var(--air); } + +.a-spin-slow { transform-box: fill-box; transform-origin: center; animation: spin 26s linear infinite; } +.a-fan { transform-box: fill-box; transform-origin: center; animation: spin 1.5s linear infinite; } +.art .a-blade { fill: rgba(255, 255, 255, .85); } +.art .a-hub { fill: #fff; } +.art .a-hub-ring { fill: #0C1822; stroke: rgba(255, 255, 255, .85); stroke-width: 2; } +.art .a-ray { fill: none; stroke: #FFD27A; stroke-width: 3; stroke-linecap: round; } +.art .a-leaf { fill: rgba(70, 194, 126, .18); stroke: var(--eco); stroke-width: 2; stroke-linejoin: round; } +.art .a-leaf-vein { fill: none; stroke: var(--eco); stroke-width: 1.6; stroke-linecap: round; } +.art .a-led { fill: var(--eco); animation: glow 2.4s ease-in-out infinite; } +.art .a-chip-dot { animation: glow 2s ease-in-out infinite; } + +.art .a-wave { fill: none; stroke: var(--amber); stroke-width: 2.4; stroke-linecap: round; opacity: 0; animation: rise 3s ease-in-out infinite; } +.art .a-heatfill { transform-box: fill-box; transform-origin: 50% 100%; animation: heat 7s var(--ease-in-out) infinite; } +.art .a-knob { transform-box: fill-box; transform-origin: center; animation: knob 7s var(--ease-in-out) infinite; } +.art .a-needle-line { fill: none; stroke: var(--warm); stroke-width: 3; stroke-linecap: round; } + +.art .a-spout { fill: none; stroke: rgba(255, 255, 255, .9); stroke-width: 12; stroke-linecap: round; } +.art .a-stream { fill: none; stroke: url(#g-water); stroke-width: 7; stroke-linecap: round; stroke-dasharray: 16 6; --dash: -22; animation: dash .55s linear infinite; } +.art .a-ripple { fill: none; stroke: #8ED9FA; stroke-width: 1.6; transform-box: fill-box; transform-origin: center; animation: ripple 1.8s ease-out infinite; } +.art .a-float { animation: float 5s ease-in-out infinite; } + +.art .a-duct { fill: none; stroke-width: 24; stroke-linecap: round; opacity: .14; } +.art .a-stream-line { fill: none; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 10 14; --dash: -24; animation: dash 1.15s linear infinite; } + +.art .a-gauge-track { fill: none; stroke: rgba(255, 255, 255, .1); stroke-width: 8; stroke-linecap: round; } +.art .a-gauge-ok { fill: none; stroke: var(--eco); stroke-width: 8; stroke-linecap: round; } +.art .a-gauge-high { fill: none; stroke: #FF5A5A; stroke-width: 8; stroke-linecap: round; opacity: .85; } +.art .a-ticks { fill: none; stroke: rgba(255, 255, 255, .55); stroke-width: 1.6; stroke-linecap: round; } +.art .a-gauge-nums text { font-family: var(--font-mono); font-size: 15px; fill: rgba(255, 255, 255, .8); text-anchor: middle; } +.art .a-needle { transform-box: fill-box; transform-origin: center; transform: rotate(256.5deg); } +.svc.is-inview .a-needle { animation: needle-in 2.6s var(--ease) both, needle-idle 3.4s ease-in-out 2.6s infinite; } +.art .a-card rect { fill: rgba(12, 24, 34, .94); stroke: rgba(255, 255, 255, .16); } +.art .a-checks path { fill: none; stroke: var(--eco); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; } +.art .a-card-text { font-family: var(--font-sans); font-size: 14px; fill: rgba(255, 255, 255, .86); } + +/* Animationen der Illustrationen nur, wenn die Karte sichtbar ist */ +.js .svc .art * { animation-play-state: paused; } +.js .svc.is-inview .art * { animation-play-state: running; } + +/* ========================================================================== + ENERGIE-HAUS + ========================================================================== */ +.house { padding: var(--section) 0 calc(var(--section) + var(--radius-xl)); } +.house .h1 { color: var(--paper); } +.house__grid { + display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, 1fr); + gap: clamp(24px, 3vw, 48px); align-items: center; +} +.house__stage { position: relative; aspect-ratio: 900 / 640; } +.house__svg { width: 100%; height: 100%; overflow: visible; } + +.h-cellar { fill: var(--ink); } +.h-ground { fill: none; stroke: rgba(255, 255, 255, .32); stroke-width: 1.5; } +.h-roof { fill: none; stroke: rgba(255, 255, 255, .62); stroke-width: 4; stroke-linejoin: round; stroke-linecap: round; } +.h-wall { fill: none; stroke: rgba(255, 255, 255, .5); stroke-width: 4; } +.h-wall--in { stroke-width: 2.5; stroke: rgba(255, 255, 255, .28); } +.h-slab { fill: none; stroke: rgba(255, 255, 255, .3); stroke-width: 8; } +.h-thin { fill: none; stroke: rgba(255, 255, 255, .16); stroke-width: 1.5; } +.h-furn { fill: none; stroke: rgba(255, 255, 255, .22); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; } +.h-labels text { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; fill: rgba(255, 255, 255, .36); } + +.h-unit { fill: #13222F; stroke: rgba(255, 255, 255, .78); stroke-width: 2; } +.h-unit-line { fill: none; stroke: rgba(255, 255, 255, .55); stroke-width: 1.5; stroke-linecap: round; } +.h-fan path { fill: rgba(255, 255, 255, .78); } +.h-airwaves path { fill: none; stroke: var(--eco); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 3 9; --dash: -12; animation: dash 1s linear infinite; } +.h-pipe { fill: none; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; opacity: .6; } +.h-flow { fill: none; stroke: rgba(255, 255, 255, .92) !important; stroke-width: 1.8; stroke-linecap: round; stroke-dasharray: 3 12; --dash: -15; animation: dash 1.1s linear infinite; } +.h-panel { fill: url(#g-panel); stroke: rgba(255, 255, 255, .85); stroke-width: 1.5; stroke-linejoin: round; } +.h-panel-line { fill: none; stroke: rgba(255, 255, 255, .4); stroke-width: 1; } +.h-ray { fill: none; stroke: #FFD27A; stroke-width: 2.5; stroke-linecap: round; } +.h-sun-core { fill: #FFC15E; } +.h-tank { fill: url(#g-tank); stroke: rgba(255, 255, 255, .8); stroke-width: 2; } +.h-tank-glow { fill: none; stroke: rgba(255, 255, 255, .22); stroke-width: 1.2; } +.h-floorglow { animation: breathe 4s ease-in-out infinite; } +.h-loops path { fill: none; stroke: var(--warm); stroke-width: 6; stroke-linecap: round; } +.h-meter { fill: #13222F; stroke: rgba(255, 255, 255, .7); stroke-width: 1.5; } +.h-fixture { fill: none; stroke: rgba(255, 255, 255, .62); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; } +.h-drops path { fill: none; stroke: #8ED9FA; stroke-width: 2; stroke-linecap: round; animation: drops 1.1s linear infinite; } +.h-drops path:nth-child(2n) { animation-delay: -.45s; } +.h-drops path:nth-child(3n) { animation-delay: -.8s; } +.h-duct { fill: none; stroke-width: 9; stroke-linecap: round; stroke-linejoin: round; opacity: .32; } +.h-duct-flow { fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-dasharray: 6 10; --dash: -16; animation: dash 1.25s linear infinite; } +.h-vent { fill: none; stroke: rgba(255, 255, 255, .72); stroke-width: 3; stroke-linecap: round; } + +.sys { transition: opacity .7s var(--ease); } +.js .house__grid .sys { opacity: .26; } +.js .house__grid .sys.is-on { opacity: 1; } +.house__grid .sys.is-on .h-pipe { opacity: .95; } + +.hotspot { + position: absolute; left: var(--x); top: var(--y); z-index: 2; + width: 34px; height: 34px; margin: -17px 0 0 -17px; + display: grid; place-items: center; + border-radius: 50%; + background: rgba(11, 21, 30, .6); + border: 1.5px solid rgba(255, 255, 255, .8); + -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); + transition: transform .45s var(--ease), background-color .35s, border-color .35s; +} +.hotspot::before { + content: ""; width: 12px; height: 12px; + background: + linear-gradient(#fff, #fff) center / 100% 2px no-repeat, + linear-gradient(#fff, #fff) center / 2px 100% no-repeat; + transition: transform .5s var(--ease); +} +.hotspot::after { + content: ""; position: absolute; inset: -7px; border-radius: 50%; + border: 1.5px solid rgba(255, 255, 255, .55); + animation: ping 2.6s var(--ease) infinite; +} +.hotspot:hover { transform: scale(1.12); } +.hotspot.is-active { background: var(--warm); border-color: var(--warm); } +.hotspot.is-active::before { + transform: rotate(45deg); + background: + linear-gradient(var(--ink), var(--ink)) center / 100% 2px no-repeat, + linear-gradient(var(--ink), var(--ink)) center / 2px 100% no-repeat; +} +.hotspot.is-active::after { border-color: rgba(255, 106, 43, .7); } +.hotspot__label { + position: absolute; left: calc(100% + 10px); top: 50%; + padding: 6px 12px; border-radius: 999px; + background: var(--paper); color: var(--ink); + font-size: 13px; font-weight: 600; white-space: nowrap; + opacity: 0; transform: translate(-6px, -50%); pointer-events: none; + transition: opacity .3s, transform .45s var(--ease); +} +.hotspot[data-part="wp"] .hotspot__label { left: auto; right: calc(100% + 10px); transform: translate(6px, -50%); } +.hotspot:hover .hotspot__label, +.hotspot:focus-visible .hotspot__label, +.hotspot.is-active .hotspot__label { opacity: 1; transform: translate(0, -50%); } + +.house__panel { + position: relative; overflow: hidden; + padding: clamp(20px, 2.2vw, 30px); + border-radius: var(--radius-lg); + background: rgba(255, 255, 255, .035); + border: 1px solid rgba(255, 255, 255, .08); +} +.house__tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 26px; } +.house__tabs button { + display: flex; align-items: center; gap: 10px; + padding: 11px 13px; border-radius: 14px; + background: rgba(255, 255, 255, .035); border: 1px solid rgba(255, 255, 255, .07); + color: var(--text-dark-2); font-size: 14px; font-weight: 500; text-align: left; line-height: 1.25; + transition: background-color .35s, color .35s, border-color .35s; +} +.house__tabs button:hover { color: var(--paper); border-color: rgba(255, 255, 255, .2); } +.house__tabs button[aria-selected="true"] { background: var(--paper); color: var(--ink); border-color: var(--paper); } +.house__tabs .icon { width: 18px; height: 18px; } +.part[hidden] { display: none; } +.part.is-active { animation: part-in .7s var(--ease) both; } +.part__kicker { margin: 0 0 8px; font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--amber); } +.part__title { margin: 0 0 12px; font-size: clamp(28px, 2.5vw, 40px); line-height: 1.05; letter-spacing: -.035em; font-weight: 600; font-stretch: 88%; } +.part p { margin: 0 0 18px; color: var(--text-dark-2); } +.part__points { list-style: none; margin: 0 0 24px; padding: 0; display: grid; gap: 8px; font-size: 15.5px; } +.part__points li { display: flex; align-items: flex-start; gap: 12px; } +.part__points li::before { content: ""; flex: none; width: 6px; height: 6px; margin-top: .62em; border-radius: 50%; background: var(--warm); } +.house__progress { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: rgba(255, 255, 255, .06); } +.house__progress i { display: block; width: 100%; height: 100%; background: var(--grad-thermal); transform: scaleX(0); transform-origin: left; } + +/* ========================================================================== + HEIZUNGS-FINDER + ========================================================================== */ +.finder { padding: var(--section) 0; } +.finder__grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.25fr); gap: clamp(32px, 5vw, 88px); align-items: start; } +.finder__head { position: sticky; top: calc(var(--nav-h) + 48px); margin-bottom: 0; } +.finder__note { display: inline-flex; align-items: center; gap: 8px; margin: 26px 0 0; font-size: 14px; color: var(--text-2); } +.finder__note .icon { color: var(--eco); } +.finder__app { + position: relative; + display: flex; flex-direction: column; + min-height: 540px; + padding: clamp(22px, 3vw, 44px); + border-radius: var(--radius-xl); + background: var(--white); + border: 1px solid var(--line); + box-shadow: 0 50px 90px -60px rgba(11, 21, 30, .45); +} +.finder__top { display: flex; align-items: center; gap: 18px; margin-bottom: 30px; } +.finder__count { font-family: var(--font-mono); font-size: 13px; color: var(--text-2); white-space: nowrap; } +.finder__progress { flex: 1; height: 4px; border-radius: 4px; background: var(--paper-2); overflow: hidden; } +.finder__progress i { display: block; width: 100%; height: 100%; background: var(--grad-thermal); transform: scaleX(.25); transform-origin: left; transition: transform .9s var(--ease); } +.finder__form { position: relative; } +.finder__step { min-width: 0; margin: 0; padding: 0; border: 0; } +.finder__q { + margin: 0 0 26px; padding: 0; + font-size: clamp(26px, 2.3vw, 38px); line-height: 1.1; letter-spacing: -.032em; font-weight: 600; font-stretch: 90%; +} +.finder__opts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } +.finder__opts--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } +.opt { position: relative; display: block; cursor: pointer; } +.opt input { position: absolute; opacity: 0; pointer-events: none; } +.opt__box { + display: flex; flex-direction: column; gap: 6px; height: 100%; + padding: 22px 20px; + border-radius: 20px; border: 1.5px solid var(--line); + background: var(--paper); + transition: border-color .3s, background-color .3s, box-shadow .35s, transform .5s var(--ease); +} +.opt__box .icon { width: 34px; height: 34px; margin-bottom: 14px; stroke-width: 1.4; } +.opt__box strong { font-size: 17px; font-weight: 600; line-height: 1.25; } +.opt__box small { font-size: 14px; line-height: 1.4; color: var(--text-2); } +.opt:hover .opt__box { border-color: var(--ink); transform: translateY(-3px); } +.opt input:focus-visible + .opt__box { outline: 2px solid var(--warm); outline-offset: 3px; } +.opt input:checked + .opt__box { border-color: var(--warm); background: #FFF3EA; box-shadow: 0 0 0 4px rgba(255, 106, 43, .14); } +.opt input:checked + .opt__box .icon { color: var(--warm-ink); } +.finder__nav { margin-top: auto; padding-top: 28px; } +.finder__back { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 500; color: var(--text-2); transition: color .3s; } +.finder__back:hover { color: var(--ink); } +.finder__back:disabled { opacity: .3; cursor: default; } +.finder__back .icon { width: 18px; height: 18px; } +.finder__app.is-done .finder__nav { display: none; } + +.finder__result:focus { outline: none; } +.finder__result-kicker { margin: 0 0 6px; font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--warm-ink); } +.finder__result-title { margin: 0 0 14px; font-size: clamp(32px, 3.2vw, 50px); line-height: 1; letter-spacing: -.04em; font-weight: 600; font-stretch: 86%; } +.finder__result-text { margin: 0; color: var(--text-2); max-width: 56ch; } +.finder__bars-label { margin: 26px 0 12px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-2); } +.finder__bars { list-style: none; margin: 0 0 26px; padding: 0; display: grid; gap: 12px; } +.finder__bars li { display: grid; grid-template-columns: minmax(120px, 170px) 1fr 48px; align-items: center; gap: 14px; font-size: 15px; } +.finder__bars li.is-top { font-weight: 600; } +.finder__bars b { font-family: var(--font-mono); font-size: 13px; font-weight: 500; text-align: right; font-variant-numeric: tabular-nums; } +.bar { height: 10px; border-radius: 10px; background: var(--paper-2); overflow: hidden; } +.bar i { display: block; height: 100%; border-radius: 10px; background: var(--grad-thermal); transform: scaleX(0); transform-origin: left; transition: transform 1.3s var(--ease); } +li:not(.is-top) .bar i { background: linear-gradient(90deg, #9FB0BE, #6E8292); } +.finder__addons { list-style: none; margin: 0 0 28px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; } +.finder__addons li { + display: inline-flex; align-items: center; gap: 8px; + padding: 8px 14px; border-radius: 999px; + background: var(--paper); border: 1px solid var(--line); + font-size: 14px; font-weight: 500; +} +.finder__addons .icon { width: 16px; height: 16px; color: var(--warm-ink); } +.finder__actions { display: flex; flex-wrap: wrap; gap: 12px; } +.finder__disclaimer { margin: 20px 0 0; font-size: 13px; color: var(--text-2); } + +/* ========================================================================== + ABLAUF + ========================================================================== */ +.process { + position: relative; + padding: calc(var(--section) * .6) 0 calc(var(--section) + var(--radius-xl)); +} +.process::before { + content: ""; position: absolute; inset: 0; pointer-events: none; + background-image: + linear-gradient(var(--line) 1px, transparent 1px), + linear-gradient(90deg, var(--line) 1px, transparent 1px); + background-size: 56px 56px; + -webkit-mask-image: radial-gradient(ellipse 60% 55% at 50% 50%, rgba(0, 0, 0, .5), transparent 75%); + mask-image: radial-gradient(ellipse 60% 55% at 50% 50%, rgba(0, 0, 0, .5), transparent 75%); +} +.steps { --g: clamp(20px, 3vw, 44px); position: relative; } +.steps__list { + position: relative; list-style: none; margin: 0; padding: 0; + display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--g); +} +.steps__pipe { + position: absolute; left: 32px; top: 28px; + width: calc(75% + var(--g) * .75); + height: 8px; border-radius: 8px; + background: var(--paper-2); + box-shadow: inset 0 1px 2px rgba(11, 21, 30, .12); + overflow: hidden; +} +.steps__fill { + display: block; width: 100%; height: 100%; + background: linear-gradient(90deg, var(--cool), var(--magenta) 55%, var(--warm)); + transform: scaleX(0); transform-origin: left; +} +.step { position: relative; } +.step__node { + position: relative; z-index: 1; + display: grid; place-items: center; + width: 64px; height: 64px; margin-bottom: 28px; + border-radius: 50%; + background: var(--paper); border: 2px solid var(--line-2); + font-family: var(--font-mono); font-size: 14px; + transition: background-color .5s, border-color .5s, color .5s, box-shadow .6s var(--ease), transform .6s var(--ease); +} +.step.is-on .step__node { + background: var(--ink); border-color: var(--ink); color: var(--paper); + box-shadow: 0 0 0 7px rgba(255, 106, 43, .2); + transform: scale(1.04); +} +.step__title { margin: 0 0 10px; font-size: clamp(22px, 1.8vw, 28px); line-height: 1.15; letter-spacing: -.025em; font-weight: 600; } +.step p { margin: 0; color: var(--text-2); } + +/* ========================================================================== + ÜBER UNS + ========================================================================== */ +.about { padding: var(--section) 0 calc(var(--section) + var(--radius-xl)); } +.stats { + list-style: none; margin: 0 0 clamp(72px, 9vw, 140px); padding: 0; + display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); + border-top: 1px solid var(--line-2); +} +.stat { padding: 28px 24px 0; border-left: 1px solid var(--line); } +.stat:first-child { padding-left: 0; border-left: 0; } +.stat__num { + display: block; + font-size: clamp(54px, 6.6vw, 108px); line-height: .9; + font-weight: 600; font-stretch: 80%; letter-spacing: -.05em; + font-variant-numeric: tabular-nums; +} +.stat__num small { margin-right: .04em; font-size: .5em; font-weight: 500; vertical-align: .55em; } +.stat__label { display: block; margin-top: 14px; color: var(--text-2); } + +.history { + display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); + gap: clamp(32px, 6vw, 96px); + margin-bottom: clamp(72px, 9vw, 140px); +} +.history__year { position: sticky; top: calc(50vh - 130px); align-self: start; } +.odo { + display: flex; + height: 1em; overflow: hidden; + font-size: clamp(96px, 13vw, 208px); line-height: 1; + font-weight: 600; font-stretch: 78%; letter-spacing: -.04em; + font-variant-numeric: tabular-nums; +} +.odo__digit { display: block; height: 1em; overflow: hidden; } +.odo__digit:nth-child(3), .odo__digit:nth-child(4) { color: var(--warm-ink); } +.odo__strip { display: block; width: 1ch; line-height: 1; word-break: break-all; text-align: center; will-change: transform; } +.history__caption { margin: 18px 0 0; font-size: 18px; font-weight: 500; color: var(--text-2); } +.history__list { list-style: none; margin: 0; padding: 0; border-left: 1.5px solid var(--line-2); } +.tl { position: relative; padding: 0 0 clamp(56px, 11vh, 128px) clamp(28px, 3vw, 48px); } +.tl:last-child { padding-bottom: 8px; } +.tl__title, .tl p, .tl__year { transition: color .5s var(--ease), background-color .5s var(--ease), box-shadow .5s var(--ease); } +.js .tl:not(.is-active) .tl__title { color: #56616B; } +.js .tl:not(.is-active) p { color: #56616B; } +.js .tl:not(.is-active) .tl__year { background: transparent; color: #4D5963; box-shadow: inset 0 0 0 1px var(--line-2); } +.tl::before { + content: ""; position: absolute; left: -7px; top: 6px; + width: 12px; height: 12px; border-radius: 50%; + background: var(--sand); border: 2px solid var(--ink); + transition: background-color .4s, border-color .4s, box-shadow .5s; +} +.tl.is-active::before { background: var(--warm); border-color: var(--warm); box-shadow: 0 0 0 6px rgba(255, 106, 43, .2); } +.tl__year { + display: inline-block; margin-bottom: 14px; padding: 4px 11px; + border-radius: 999px; background: var(--ink); color: var(--paper); + font-family: var(--font-mono); font-size: 13px; +} +.tl__title { margin: 0 0 10px; font-size: clamp(26px, 2.3vw, 36px); line-height: 1.1; letter-spacing: -.03em; font-weight: 600; font-stretch: 90%; } +.tl p { margin: 0; max-width: 46ch; color: var(--text-2); } + +.leaders__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; } +.leader { + display: flex; align-items: center; gap: 18px; + padding: 22px; border-radius: var(--radius-lg); + background: var(--paper); border: 1px solid var(--line); + transition: transform .6s var(--ease), box-shadow .5s; +} +.leader:hover { transform: translateY(-4px); box-shadow: 0 30px 60px -40px rgba(11, 21, 30, .45); } +.leader__avatar { + flex: none; display: grid; place-items: center; + width: 76px; height: 76px; border-radius: 50%; + font-family: var(--font-serif); font-style: italic; font-size: 30px; color: #fff; +} +.leader__avatar--warm { background: radial-gradient(circle at 30% 28%, #FFC56B, #FF6A2B 55%, #C2456B); } +.leader__avatar--cool { background: radial-gradient(circle at 30% 28%, #8ED9FA, #2E9BEF 55%, #3B2466); } +.leader__avatar--team { background: var(--ink); } +.leader__avatar--team .icon { width: 32px; height: 32px; stroke-width: 1.5; } +.leader__name { margin: 0 0 4px; font-size: 20px; font-weight: 600; letter-spacing: -.015em; } +.leader__role { margin: 0; font-size: 15px; line-height: 1.4; } +.leader__meta { margin: 4px 0 0; font-size: 14px; color: var(--text-2); } + +/* ========================================================================== + KARRIERE + ========================================================================== */ +.career { overflow: hidden; padding: var(--section) 0 calc(var(--section) + var(--radius-xl)); } +.career__glow { + position: absolute; right: -22vw; top: -18vw; width: 72vw; height: 72vw; border-radius: 50%; + background: radial-gradient(closest-side, rgba(255, 106, 43, .32), rgba(194, 69, 107, .14) 55%, transparent); + pointer-events: none; +} +.career__grid { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; } +.career .h1 { margin-bottom: 28px; } +.perks { list-style: none; margin: 36px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; } +.perks li { + display: inline-flex; align-items: center; gap: 9px; + padding: 10px 16px; border-radius: 999px; + border: 1px solid rgba(243, 239, 232, .16); + font-size: 15px; +} +.perks .icon { width: 17px; height: 17px; color: var(--amber); } +.jobs { display: grid; gap: 16px; } +.job { + padding: clamp(24px, 3vw, 36px); + border-radius: var(--radius-lg); + background: rgba(255, 255, 255, .04); + border: 1px solid rgba(255, 255, 255, .1); + transition: background-color .4s, border-color .4s, transform .6s var(--ease); +} +.job:hover { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .2); transform: translateY(-4px); } +.job__head { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; } +.job__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--warm); color: var(--ink); } +.job__icon .icon { width: 20px; height: 20px; } +.job__tag { font-size: 13px; font-weight: 500; letter-spacing: .02em; color: var(--text-dark-2); } +.job__title { margin: 0 0 12px; font-size: clamp(22px, 1.9vw, 29px); line-height: 1.15; letter-spacing: -.025em; font-weight: 600; font-stretch: 92%; } +.job p { margin: 0 0 22px; color: var(--text-dark-2); } + +/* ========================================================================== + KONTAKT + ========================================================================== */ +.contact { padding: var(--section) 0 calc(var(--section) + var(--radius-xl)); } +.contact__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(32px, 6vw, 96px); align-items: start; } +.contact .h1 { margin-bottom: 28px; } +.cards { list-style: none; margin: 40px 0 16px; padding: 0; display: grid; gap: 10px; } +.ccard { + display: flex; align-items: center; gap: 16px; + padding: 14px 18px 14px 14px; border-radius: 20px; + background: var(--white); border: 1px solid var(--line); + transition: transform .6s var(--ease), border-color .3s, box-shadow .4s; +} +a.ccard:hover { transform: translateX(6px); border-color: var(--line-2); box-shadow: 0 24px 50px -36px rgba(11, 21, 30, .45); } +.ccard__icon { flex: none; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; background: var(--paper-2); } +.ccard__icon .icon { width: 20px; height: 20px; } +.ccard__body { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; } +.ccard__body small { font-size: 13px; color: var(--text-2); } +.ccard__body strong { font-size: 17px; font-weight: 600; overflow-wrap: anywhere; } +.ccard__go { width: 18px; height: 18px; margin-left: auto; opacity: .4; transition: transform .5s var(--ease), opacity .3s; } +a.ccard:hover .ccard__go { opacity: 1; transform: translate(2px, -2px); } + +.hours { padding: 22px; border-radius: 22px; background: var(--ink); color: var(--paper); } +.hours__head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; } +.hours__title { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-size: 18px; font-weight: 600; } +.hours__list { margin: 0; } +.hours__list div { + display: flex; justify-content: space-between; gap: 16px; + padding: 11px 0; border-top: 1px solid rgba(243, 239, 232, .1); + font-size: 15px; +} +.hours__list dt { color: var(--text-dark-2); } +.hours__list dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; } +.hours__list .is-today dt, .hours__list .is-today dd { color: var(--paper); font-weight: 600; } +.hours__list .is-today dt::after { + content: "Heute"; margin-left: 10px; padding: 2px 8px; border-radius: 999px; + background: var(--warm); color: var(--ink); font-size: 11px; font-weight: 600; vertical-align: 1px; +} + +.form { + padding: clamp(22px, 3.2vw, 46px); + border-radius: var(--radius-xl); + background: var(--white); border: 1px solid var(--line); + box-shadow: 0 50px 90px -60px rgba(11, 21, 30, .45); +} +.form__topics { margin: 0 0 28px; padding: 0; border: 0; min-width: 0; } +.form__legend { margin-bottom: 14px; padding: 0; font-size: 15px; font-weight: 600; } +.chips { display: flex; flex-wrap: wrap; gap: 8px; } +.chip { position: relative; } +.chip input { position: absolute; opacity: 0; pointer-events: none; } +.chip span { + display: inline-flex; padding: 9px 16px; border-radius: 999px; + border: 1px solid var(--line-2); font-size: 14px; font-weight: 500; + cursor: pointer; transition: background-color .3s, color .3s, border-color .3s; +} +.chip:hover span { border-color: var(--ink); } +.chip input:checked + span { background: var(--ink); border-color: var(--ink); color: var(--paper); } +.chip input:focus-visible + span { outline: 2px solid var(--warm); outline-offset: 2px; } +.form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; } +.field { position: relative; margin-bottom: 20px; } +.field label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 600; } +.field label small { font-size: 13px; font-weight: 400; color: var(--text-2); } +.field input, .field textarea { + width: 100%; padding: 14px 16px; + font: inherit; font-size: 17px; color: var(--ink); + background: var(--paper); border: 1.5px solid transparent; border-radius: 14px; + transition: border-color .3s, background-color .3s, box-shadow .3s; +} +.field textarea { min-height: 140px; resize: vertical; line-height: 1.5; } +.field input:hover, .field textarea:hover { border-color: var(--line-2); } +.field input:focus, .field textarea:focus { outline: none; border-color: var(--ink); background: #fff; box-shadow: 0 0 0 4px rgba(255, 106, 43, .16); } +.field__error { display: none; margin: 8px 0 0; font-size: 13px; color: #B42318; } +.field.is-invalid input, .field.is-invalid textarea { border-color: #D93C3C; background: #FFF6F5; } +.field.is-invalid .field__error { display: block; } +.field--hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; } +.field--check { margin-top: 6px; } +.check, .field .check { display: flex; align-items: flex-start; gap: 12px; margin: 0; cursor: pointer; font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--text-2); } +.check input { position: absolute; opacity: 0; pointer-events: none; } +.check__box { + flex: none; display: grid; place-items: center; + width: 24px; height: 24px; margin-top: 1px; + border-radius: 7px; border: 1.5px solid var(--line-2); background: var(--paper); + transition: background-color .25s, border-color .25s; +} +.check__box .icon { width: 15px; height: 15px; stroke-width: 2.6; color: var(--paper); opacity: 0; transform: scale(.4); transition: opacity .25s, transform .4s var(--ease); } +.check input:checked + .check__box { background: var(--ink); border-color: var(--ink); } +.check input:checked + .check__box .icon { opacity: 1; transform: none; } +.check input:focus-visible + .check__box { outline: 2px solid var(--warm); outline-offset: 2px; } +.check a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; } +.field--check.is-invalid .check__box { border-color: #D93C3C; } +.form__submit { display: flex; align-items: center; flex-wrap: wrap; gap: 18px; margin-top: 10px; } +.form__hint { margin: 0; font-size: 13px; color: var(--text-2); } +.form__status:empty { display: none; } +.form__status { margin-top: 18px; padding: 15px 18px; border-radius: 14px; font-size: 15px; line-height: 1.5; } +.form__status.is-success { background: #E6F6EC; color: #14532D; } +.form__status.is-info { background: #FFF2E8; color: #7C2D12; } +.form__status.is-error { background: #FDECEC; color: #7F1D1D; } +.form.is-busy button[type="submit"] { opacity: .6; pointer-events: none; } + +/* ========================================================================== + FOOTER + ========================================================================== */ +.footer { overflow: hidden; padding: clamp(80px, 10vw, 136px) 0 26px; } +.footer__cta { + display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 32px; + padding-bottom: clamp(48px, 6vw, 80px); border-bottom: 1px solid var(--line-dark); +} +.footer__claim { margin: 0; max-width: 15ch; font-size: clamp(36px, 5vw, 78px); line-height: 1; letter-spacing: -.042em; font-weight: 600; font-stretch: 86%; } +.footer__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; padding: clamp(40px, 5vw, 64px) 0; } +.footer__h { margin: 0 0 14px; font-size: 12px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--text-dark-2); } +.footer__col p, .footer__col address { margin: 0; line-height: 1.75; } +.footer__col ul { list-style: none; margin: 0; padding: 0; line-height: 1.9; } +.footer a { transition: color .3s; } +.footer__col a:hover, .footer__bottom a:hover { color: var(--amber); } +.footer__word { + margin: 0 calc(var(--gutter) * -.35); + font-size: clamp(64px, 25.5vw, 430px); line-height: .8; + font-weight: 700; font-stretch: 78%; letter-spacing: -.03em; + text-align: center; text-transform: uppercase; white-space: nowrap; + user-select: none; overflow: hidden; padding-bottom: .04em; +} +.footer__word span { + --heat: 0%; + display: block; + background: linear-gradient(90deg, #2E9BEF 0%, #3B6FD0 22%, #C2456B 48%, #FF6A2B 72%, #FFB547 100%); + background-size: 260% 100%; background-position: var(--heat) 0; + -webkit-background-clip: text; background-clip: text; + -webkit-text-fill-color: transparent; color: transparent; +} +.footer__bottom { + display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px 24px; + margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--line-dark); + font-size: 14px; color: var(--text-dark-2); +} +.footer__bottom p { margin: 0; } +.footer__bottom ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 22px; } +.footer__top { display: inline-flex; align-items: center; gap: 6px; } +.footer__top .icon { width: 16px; height: 16px; } + +/* ========================================================================== + Unterseiten (Impressum / Datenschutz / 404) + ========================================================================== */ +.page-hero { + position: relative; overflow: hidden; isolation: isolate; + padding: calc(var(--nav-h) + clamp(64px, 9vw, 120px)) 0 calc(clamp(64px, 7vw, 96px) + var(--radius-xl)); + background: var(--ink); color: var(--paper); +} +.page-hero::before { + content: ""; position: absolute; inset: 0; z-index: -1; + background: + radial-gradient(40% 70% at 85% 20%, rgba(255, 106, 43, .45), rgba(138, 35, 80, .2) 50%, transparent 75%), + radial-gradient(35% 60% at 10% 100%, rgba(46, 155, 239, .25), transparent 70%); +} +.page-hero .h1 { max-width: 14ch; } +.page-hero .label { color: var(--text-dark-2); } +.page-hero .label a { text-decoration: underline; text-underline-offset: 3px; } +.legal { padding: clamp(64px, 8vw, 112px) 0 calc(var(--section) + var(--radius-xl)); } +.legal__grid { display: grid; grid-template-columns: minmax(0, 240px) minmax(0, 760px); gap: clamp(32px, 6vw, 96px); } +.legal__toc { position: sticky; top: calc(var(--nav-h) + 32px); align-self: start; display: grid; gap: 4px; font-size: 14px; } +.legal__toc a { padding: 6px 0; color: var(--text-2); transition: color .3s; } +.legal__toc a:hover { color: var(--ink); } +.legal__body h2 { margin: 56px 0 16px; font-size: clamp(24px, 2.2vw, 32px); line-height: 1.15; letter-spacing: -.025em; font-weight: 600; scroll-margin-top: calc(var(--nav-h) + 24px); } +.legal__body h2:first-child { margin-top: 0; } +.legal__body h3 { margin: 30px 0 10px; font-size: 19px; font-weight: 600; } +.legal__body p, .legal__body li { color: #2B3640; } +.legal__body ul { padding-left: 1.2em; } +.legal__body a { text-decoration: underline; text-underline-offset: 3px; } +.legal__card { padding: 24px 26px; border-radius: 22px; background: var(--white); border: 1px solid var(--line); } +.legal__card p { margin: 0 0 6px; } +.legal__card p:last-child { margin-bottom: 0; } + +.nav--solid .nav__bar { opacity: 1; } + +/* Seitenwechsel */ +.curtain { + position: fixed; inset: 0; z-index: 400; pointer-events: none; + background: var(--ink); + transform: translateY(100%); + transition: transform .6s var(--ease-in-out); +} +.curtain::after { + content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; + background: var(--grad-thermal); +} +.is-leaving .curtain { transform: none; } + +/* ========================================================================== + Keyframes + ========================================================================== */ +@keyframes spin { to { transform: rotate(360deg); } } +@keyframes dash { to { stroke-dashoffset: var(--dash, -14); } } +@keyframes ping { 0% { transform: scale(.7); opacity: .9; } 80%, 100% { transform: scale(1.5); opacity: 0; } } +@keyframes blink { 50% { opacity: 0; } } +@keyframes glow { 50% { opacity: .35; } } +@keyframes breathe { 50% { opacity: .55; } } +@keyframes rise { 0% { opacity: 0; transform: translateY(14px); } 30% { opacity: .9; } 100% { opacity: 0; transform: translateY(-28px); } } +@keyframes heat { 0% { transform: scaleY(.06); } 45%, 72% { transform: scaleY(1); } 100% { transform: scaleY(.06); } } +@keyframes knob { 0% { transform: rotate(-70deg); } 45%, 72% { transform: rotate(60deg); } 100% { transform: rotate(-70deg); } } +@keyframes ripple { from { transform: scale(.4); opacity: 1; } to { transform: scale(3.2); opacity: 0; } } +@keyframes float { 50% { transform: translateY(-10px); } } +@keyframes drops { 0% { transform: translateY(-6px); opacity: 0; } 25% { opacity: 1; } 100% { transform: translateY(44px); opacity: 0; } } +@keyframes needle-in { 0% { transform: rotate(135deg); } 55% { transform: rotate(272deg); } 78% { transform: rotate(250deg); } 100% { transform: rotate(256.5deg); } } +@keyframes needle-idle { 0%, 100% { transform: rotate(256.5deg); } 50% { transform: rotate(259deg); } } +@keyframes part-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } } +@keyframes nudge { 0%, 60%, 100% { transform: translateY(0); } 30% { transform: translateY(4px); } } + +/* ========================================================================== + Responsive + ========================================================================== */ +@media (min-width: 900px) and (min-height: 660px) { + .svc { position: sticky; top: calc(var(--nav-h) + 12px + var(--i) * 14px); } + .stack { gap: 18vh; } +} + +@media (max-width: 1180px) { + .nav__links { display: none; } + .nav__toggle { display: grid; } + .intro__text { grid-column: 1 / -1; } + .intro__aside { grid-column: 1 / -1; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 20px 32px; margin-top: 48px; } + .intro__aside .badge { grid-row: span 2; } +} + +@media (max-width: 1100px) { + .house__grid { grid-template-columns: minmax(0, 1fr); } + .house__panel { max-width: 720px; } + .house__tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); } + .leaders__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } +} + +@media (max-width: 900px) { + :root { --nav-h: 76px; --radius-xl: 30px; } + .nav__bar { height: 58px; } + .hero__inner { grid-template-columns: minmax(0, 1fr); } + .legend { display: none; } + .section-head--split { grid-template-columns: minmax(0, 1fr); align-items: start; } + .section-head--split .h1 { margin-bottom: 0; } + .svc__inner { grid-template-columns: minmax(0, 1fr); min-height: 0; } + .svc__art { order: -1; min-height: 0; aspect-ratio: 6 / 5; } + .svc__title { padding-top: 22px; } + .finder__grid { grid-template-columns: minmax(0, 1fr); } + .finder__head { position: static; } + .finder__app { min-height: 0; } + .steps__list { grid-template-columns: minmax(0, 1fr); gap: 36px; padding-left: 92px; } + .steps__pipe { left: 28px; top: 32px; bottom: 32px; width: 8px; height: auto; } + .steps__fill { transform: scaleY(0); transform-origin: top; } + .step__node { position: absolute; left: -92px; top: -4px; margin: 0; } + .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .stat:nth-child(3) { padding-left: 0; border-left: 0; } + .stat:nth-child(n+3) { border-top: 1px solid var(--line); margin-top: 28px; } + .history { grid-template-columns: minmax(0, 1fr); } + .history__year { display: none; } + .career__grid { grid-template-columns: minmax(0, 1fr); } + .contact__grid { grid-template-columns: minmax(0, 1fr); } + .footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .legal__grid { grid-template-columns: minmax(0, 1fr); } + .legal__toc { position: static; display: none; } +} + +@media (max-width: 640px) { + .nav__phone span { display: none; } + .nav__phone { width: 44px; height: 44px; justify-content: center; padding: 0; border-radius: 50%; border: 1px solid rgba(243, 239, 232, .28); } + .nav.is-scrolled .nav__phone { border-color: var(--line-2); } + .nav .btn--sm { display: none; } + .logo__mark { width: 30px; height: 30px; } + .logo__word { font-size: 17px; } + .hero__title { font-size: clamp(56px, 18vw, 92px); } + .hero__line { flex-direction: column; gap: 0; } + .hero__tag { margin: -.35em 0 .55em .1em; } + .hero__bottom { flex-wrap: wrap; } + .hero__scroll span:first-child { display: none; } + .hero__ctas .btn { flex: 1 1 auto; } + .intro__aside { grid-template-columns: minmax(0, 1fr); } + .intro__aside .badge { grid-row: auto; width: 104px; height: 104px; } + .svc__list { grid-template-columns: minmax(0, 1fr); } + .house__tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .hotspot { width: 28px; height: 28px; margin: -14px 0 0 -14px; } + .hotspot__label { display: none; } + .finder__opts, .finder__opts--2 { grid-template-columns: minmax(0, 1fr); } + .opt__box { flex-direction: row; flex-wrap: wrap; align-items: center; column-gap: 14px; padding: 16px 18px; } + .opt__box .icon { margin: 0; width: 28px; height: 28px; } + .opt__box small { flex-basis: 100%; padding-left: 42px; margin-top: -4px; } + .finder__bars li { grid-template-columns: minmax(0, 1fr) 44px; } + .finder__bars .bar { grid-column: 1 / -1; grid-row: 2; } + .stats { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } + .leaders__grid { grid-template-columns: minmax(0, 1fr); } + .form__row { grid-template-columns: minmax(0, 1fr); } + .footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 18px; font-size: 15px; } + .footer__bottom { flex-direction: column; align-items: flex-start; } + .house__stage { margin-inline: calc(var(--gutter) * -1 + 4px); } +} + +/* ---------- Reduzierte Bewegung ---------- */ +@media (prefers-reduced-motion: reduce) { + html { scroll-behavior: auto; } + *, *::before, *::after { + animation-duration: .001ms !important; + animation-iteration-count: 1 !important; + transition-duration: .001ms !important; + } + .art .a-heatfill { animation: none !important; transform: none; } + .art .a-wave { animation: none !important; opacity: .7; } + .art .a-needle { animation: none !important; } + .h-drops path { animation: none !important; opacity: .8; } + .badge__ring { animation: none !important; } +} + +/* Finder: Navigation (Zurück / Weiter) */ +.finder__nav { display: flex; align-items: center; justify-content: space-between; gap: 16px; } +.finder__next { + display: inline-flex; align-items: center; gap: 8px; + padding: 10px 18px; border-radius: 999px; + background: var(--ink); color: var(--paper); + font-size: 15px; font-weight: 600; + transition: opacity .3s, transform .5s var(--ease); +} +.finder__next .icon { width: 17px; height: 17px; } +.finder__next:disabled { opacity: .18; cursor: default; } +.finder__next:not(:disabled):hover { transform: translateX(3px); } diff --git a/assets/fonts/OFL-InstrumentSans.txt b/assets/fonts/OFL-InstrumentSans.txt new file mode 100644 index 0000000..9a39a8e --- /dev/null +++ b/assets/fonts/OFL-InstrumentSans.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) InstrumentSans-Italic[wdth,wght].ttf: Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/OFL-InstrumentSerif.txt b/assets/fonts/OFL-InstrumentSerif.txt new file mode 100644 index 0000000..a39b7e0 --- /dev/null +++ b/assets/fonts/OFL-InstrumentSerif.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Instrument Serif Project Authors (https://github.com/Instrument/instrument-serif) InstrumentSerif-Italic.ttf: Copyright 2022 The Instrument Serif Project Authors (https://github.com/Instrument/instrument-serif) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/instrument-sans-var.woff2 b/assets/fonts/instrument-sans-var.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..78557c785e0d4b6cbfb0be48dffd641665ac37d1 GIT binary patch literal 57332 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%0DI7~; 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/instrument-serif-italic.woff2 b/assets/fonts/instrument-serif-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..197abca2553c84829217223cdbc6efbe2493d645 GIT binary patch literal 22128 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 r`c>E=qXD$kT>BC|j+QsJ+fPOEM!%8lhhhSNnX& literal 0 HcmV?d00001 diff --git a/assets/fonts/instrument-serif.woff2 b/assets/fonts/instrument-serif.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0ad69719cac6f45ed3057825095b0cdffa7d3c99 GIT binary patch literal 21032 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 WjQ%A!B%bghBs}oK1481-lLV3Qq!Nt~35j?k zE>Sc^MTs<0RHU@-O7*(!HoHB}KbP%xduDb^y8U)%&Y3gk%>V!2{FgZj;*d72Fkm0z zJ2+z%051|l3jPmafVD8rA4F{IV*k(9`q-N+_98R4po%l>#yEm;oa_D7wr7+A8F>Y_ zMYA5M!JWSLwhh#=(}^q>s%%B-FxQdp${!4N-C*?2ZJa;B7~yq$pbSM|rvnk#*brWJ zcaG^9LyWCdG>1!Wfq!u&yxATsbmqa?-vie`FPsBCNasN~lmRsLwWIoTE1q}uB=tO! zt?1rvIk9B<7Wfuz&;$y>5G{ezk8^FgIF`Dc2;_Lt*xP}#AAaCzN5AEBNw!T7HB-!9 zwM|uk8U897#x(DxF&4dG+PF9^cW2;AnFj|;oUjHjq8K-g^ZeC2QCPMaTv*HvmdIdX z_05)NaD)fN5rQu>3uW0E;QBp{6psB~C+sYY<8OmzA{0~MX+=Jvz%D^|k8ZKXz@yjq z#Zfb2?p3{A=5nEWN%8P}@jo;_9d>&J$C^S?IZVXA)B%c*HL4Cq@7yUE=x=Gjy_+YH z2)^tr>@Chgd7d3pl#uG2j!7Y8UXwef4N~j;bUPQ6f|V*0S<Y8=x&#C9 zAgc}G1nSF}U@<;m2FqH{6J*Fl;4wa6hJ*~rP*>le(r$qIG!~CQjw2BP@;pE}fMDc- z+LM*i#Rly%;e@XnXGQY>L6!@o3=DjDu4$*|0jdQukYF?6E2gH6$OG}tXQ@E2MN`1Y z138`r7%TS8b&tpcW~o@Jz@M74YHKi%JF66HHy%c^xU_6G0#noV%J~lr5ISnAq70A` z)ACEOY298V!uiGX;1}gsTMKo4{7j{rG5Tyk#|2EyolAiY=_x18cB%EESs(Q}JSxVx#R6CI}?k9`5V + + + + + + + + + + + diff --git a/assets/img/logo.svg b/assets/img/logo.svg new file mode 100644 index 0000000..66d5a18 --- /dev/null +++ b/assets/img/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + OLZINGER + HAUSTECHNIK + diff --git a/assets/img/og-image.jpg b/assets/img/og-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a364082482058eb42cdfbcc43c8b121fafd4ab17 GIT binary patch literal 96203 zcmb5Vbx<5n^e;Ng;z1VI#hpN~;2r`CEQ>8Jf#B{C0wlP*ySoPW1Pcxc8a%kWB@jp+ z-`}lU_x*EU)jKoO^Oi|SaUQr$ZfdByXv;qG%K?{nnUcFJ% zP?cANzy4o_Vcut{(cM);L6%NePoEBB{eRu@pUu?F&H2Cc|3#kiy`BFrcL12- z`oH-6f2py|E!@nW9L}E(CfBFJpU4tFVPdQQh1veYZ~qq-{||e)JG(#msQrgsks7a_ zu=x{av-*GGxBo9}=Ir{PfAo`&xP!gNe`WnA|1rj~aMaR#I%7T^)PNhH0Vn{n|JDEL z`bnG$0YLZ$0KoD8NB1@Z09r!;fPCry=$P^W06!Q2TE6`s-T!G5XH!?x|H%&ZDMhig z1c1vj0KnA)0HW^zfNk(Uwx{I(!j109ME%6e>1ne9>;Vga4p0Of0W*O63Go3u052f; zZy9(6pn}2w?N5S+hKh#q3o<3aH$C)gw+4P3gNrAOmMCzMgg zATq^da0wvhODMo1VU(@s7t(m^>h96d*h@-A&Lkk{mR#7>KQ&Fk`cn9nc3@&kQOV54 zIWvo|P&Q)yJ7|Cl_<|EBWP8UBY1#*FFsf&M001o(n2onHOz8bFd5R?v*LJrHV1O97n z(F7d|yupWJqfTs+zmPS;9vuE_@;F|4vHt+#_t!8Jh--;H|EYgKLU5Eh%W5G{JSvey zvWVhA!zV0AI6>=D3~mwX+42co$etZ%&w?v@Q1kl|b@8sCay){SV|a48i~yQ6<$yBt zorPjrGxoRK!&E^d9T>xcMm-Rn`0jmQ#4xx41DUmYLE=po8%InPEBZRm9B@FU>ons z9A*TR#7jpyKt4RujFu!`QOusyz#R^YwNmaZ#puFttk{)dTu*!MnV339e;L!$=N$k7 z2ojlC$Iv}bupErJgpdurJIl(#bqG*E)1wV8d^Lh8AnI)&D1<5-)IbU07NPd7U5^s9!Oq7vg0 zIx(R_|?V6jLfF$M5@(&|-?HoIdG0(4O6W%seJ} zEl;ZDCcj=$-S`zE0*j3tE6t29(`JyZWs-5!YOk=H*GDdFZ%11cF_rI{Uu!VFL*rRE zXo%qhJG63`tvb`0Tj<0en<{5jjBpePlKL^1ocRAOu%wHYjpE33ObzE$8HW65GVN1x z;2qX$)2!_OzFwl8VYf2P&ym3th8OkDPxP~qLgyOz@E1Z%xZ&Vgpv_bnf@vTn8h&3@ z%aQr*ML4}?LVYhH)nhu|HK;@0=LLDMhT}3@0EYvFkQY-H6NV|rSV<2|g9PY+Xy!Rg z^ryF~5&@q&#kDjfFqn?olum*#94-soF%dCNJr4#4%ezL%{|O?2h+aJ)rzUy z?a|_}ho9!DM4Fy3z($|_og6t%#24PLGwc7fld(uWu_%~+SD9RG&BZk&7eNlEu>>z; zaYXRQZ=0$@s-Ve3uhkOCF|EH9;=!UBE6wu+#!+$WJ7Rz02d1+p$f727;CW(!)7fwl zz>HZ~Px){{yHbj=dIFaONmoocbC^Vmk`{oWo|u6p=Vv~MT^ugmGwL^60f2Ki{A2u$ zcKFPGianncUp$SB+x1N>5LUM>hQ4Q6y=Oc1>~mmrr?`>!NAP8gn-nXkcYwm7d@-Xk zji{%k-!bHdTOg$~C$8JhSRrlZO`@yow-q(*&$?3v3QkPWN_Cjfrh@iXOdLm zYSJ{K<6Reo$5-v3G+yepBcc{MzZ1B|QSb5a0(F|#_`bFq2$%}D<*JF)(wTN^`Q{!<= z5ejmGjkKdnG2h$|H7?hi5~rI|1X1MhhI>cI)orrfH7Eu)G~fg8iOZ5vqH!AvuY?yE zO_t#I^uaV)Yy+27lpwmCDHMBup}=MX|JzxoJ%ZcnV+ew$Nq>eV-x)H0s)co;`dsWf zq&6#Ts?w}-{OTn%=aF=HyU|7}*TT@#*~$K*e$}ggg1*2P&?pBxUz`I$0t)XdE zIJ2bqPj#Q3PTdd@sXzsdZ5?%|zi5eOFOHyp&F2#__G@21kNDO22#-x<C%2bXaeN##&`ved|GW}wN*7lx zh=hnV@U$ANx(aAiid4{qIY(9T3}QE_zU2SKks?Hjmo=(}d86Ts`e@h}fr`aZB>E0O z$@j{MJ?yb~-J|drF}K)QfBWo=V|6eqy6qM zUx7t7$UH;SYcBQ+8Zb3RRl}Gh@+VqYFh5{k>z6%RUu|!{M|Q-@$)bIs?;%UFB8n_0 zP7&7fm&%qEj4QqmpZu%1MgU6<)R}ku3EAwm2v}4YdpIA7MN!&!Zdvx#Xc{Gd-^elT z05gB*A=qKz(92A#m2u*@=Xj&$5T&4^Lg|+)waXSAtDhanz@4sSG;TCiDrBjo3CZhg zF*W`;H02NsH9yh>*CBBf`Y;IkXh+jSWw2b+Hi<^-)`a>$pj~}+EkKFMr+_P3$;11H zq7t*j^xX@RO7-Bra1I$pNMN`E67Y|ShoG2(FhQ8|`zU;|Squc20G(rOxHQCHeLon~ z;lid|3BXZ3l-+xSnWu#Nq&=lE?-&aKHZ+=WC)tu3`Q_+DXd)=(}=Qag+X_0qzw zEmmL*GdFiv`ss?VB`FK{(3eAgz-rn>vCN>ztEb0c5AKbPbh{RKJk(Q=j zeX6BzDUPxR6@z+fFHbz5poU%c!q7s&JW=$inhIAr?ddEnPnbac)RY=Dw@P8YcxIL( zM12W!QEB^2dk75}-IJ@BB0de4}QR{~&%v=4La8g zC+C`a2GtZ1XWwI1nFOL3AYnw{Fhf3Ieuq&f$_pB>iH#TA1hN)an*rn_Dp^51*(_n2 ze$PoCX63>II+EHDQtW8e2ViyvE6v(t@P|c!m1%TF?>c)$LCBeeKFjk4;b|OG zf2rvxNGsqv9ImZlCDyMnVi;j0>;H~h*klz^WA8cx8PM^fBhH%ffc^5DxhEO^f#cb* zmQbUfAMFU!F+`Hk;?f*B6Bq5b>`He2T`w;k63w?JVn)8F7PcAI*SxeAt*5!@*FwD_ zqPOV`byc^C@6C&x5UZ|PecxtQ9*&O82+t0Ipl_O2=^^kuHB)RtC2An@$i`?>P-CJX z9Or$=H@i-1Sa|FRMAo!x3Q|{Mr(Jv8{7=mIkF~O;? zu|g;Lu|QON4XJ@Lu_Yo&sM2z8-zO8CesjmdjG*&Nj7}sNlW;DUW}Kz70fSvS47<(F zGy*Ms7`H++N(VEY%3zw6dp;)+s%M;Qw&Js1^J3-yfS(*jfR^3!x9Ao;KGCIA6C%QJ zOeix~<=a?R6r~xnH>qW5nulVL#?;FPwO$fEq7K*6zV@;mZ6C9@KH8&8o)!Z=DyX3k>qRbQ?6<`KWBxNPu;P_m(z6jHF(};0cZvq zHQl{f4?kM=`DXNGsyGnx;F8hX40&f6iRjoWmNIQz} zk+p~$8Rb@@8(-m&V6zM_?=2_g#-$d-+*8w0&K(Q;lO#II5BS}+;mpl)!nv+!72DkN zcg`y`6~`shmU02X9adZP)@`LcyN^1R(0~a4nwjn)*iN!*1*+@?6cq#c9p&kpR)rxQ zlUxD00npQuIMmemEM1?RSkKlO7ldk-_U#GZ0_H^vNdM1C#lKkxyk?iR&zE(1Cvx@c zc0VpG#$_C~V}C}q70-*Gt9hd>=qL2D@q*}{XnXKtVsEB(>mPu3C&l6vhWigF+CC3i z_#Nkeb4p@eRiP`=GSJgr`syGr{l4+LD3+0vU$R-Mh{~4d-tNZs##nzERm_8N=y2a# zt10fHO8Xc#qo5FB+K6|%7q`Ab1wRj4iHG=?ZC-yP9`b_F7i~RrBKvJL=nF=q7&C9= zs45pBFB_V_qOiB!;?o@8!;7rSH2YAF4Ox2(Rfaqqt zVy~ap*ew|8G`APu>yVy#a5SyakGsJk3eK`vN+_qc91C5#7J>FK* z`JH2Kn?NQ{!;~R^8rG$$D&tm^qo)078=ti!1z%ZZSQHZZI@!xH+NfhmsY=-a`CKV z9;>$r9HieM$awq3*=t==%YHXXPuDg}NPn8Wm#E?Ubr~~`7brVcz5nAuqGHu1v!=vO zLVoVAk=^@=9X}yY#sV201`MsAO|+=u@|%9_nWag+nG^GQ>Rq!(EeoNu&}H6n3Ax&$ zH!^cv9tnjjHb2~7etg*^8K$3Fg?5xQ75%L@&tLk9o*_P$-JI01b)?8Y=&xhS?@*e8j}gRPeSQ#Gj7oZ5iFnT& zX(k9y%smroPCRCd=c>F?1Hjl3)tgfw%#I+rUZH-bG|5-mKe}GQxyZ#hWs7G`eaRG( zd`c}^iuDhuH&iiD*{RKq)B<{`NMOA>n(t_iI!Y74^pb5Oua+^UUbl~yE6YGEq!5t= z@yM1GIU$~K=yp+kFy1~Ev|AI6<(Sw%niV@8!fYL@Plwlz6mSnIY0ezN|sPtj;qcPJ^n zKjukr&we0WhF&tUaOz88a<(bob0=O76}o8q{4Mg}fJG`wcy{hr7>zYHE2BwFpQ#Ds zTLO%2HPkri?C_WpKDGqbLX#6Q=AZYBsp%S_F|}=~QkMQe5?4wCKFEN|R`TJ=wq+*AE-LnvwZLBG z2pim? zVNFAo@l9?WO`w%hgiC{O?NFgHYok+|68^lij8CO<+ydcF5bqbce$%y_6j)9&cpvG{ zAVD1DZIaO8GOh(PpcrtPvTdME9lkHrmfu?^J%n$!yg1zYQdrKLQ|_|seU!|Dai(Ik!*m?LpN{7=*(WR!lBc8d;UbH#V|GS}I3^7V>%XyDky4(By085T z{iMj5V43}W@NN!_uNEUwn1h|N!Y5gQlx#fg3N$APsqJzxe&Zw^$DLljarYJZr!s|U z#99KK#ATF6wA3IX+C$ydDVBi7FiGSFejTpBKH^_2cT9ZZMo59J3&EC_4ot_$|9Ps} zd_a8-^W=D=EytJ~&bBZGn1Mk`GQc&Q&!xe^emI)BaT?>x6&=ofZe)LWK!`!GIV+k! zj!C)r$l$2iY6M8G#S^=b@22>bB}pg)A@0Ey11PvqHsih?f`skxt}r*h zJ7kOpF@n%mYVrOM7das!T*u5qG#bZ9mZIpd4`V8^3|$t2J{i_*M~Tv}N1IV`Q=A6H z+>h?}IrNVue>HI?NC3&qG3{9ZI7FvC*gSA|ki)&>oB5xLwC~Cx_+OP+Ib@P%K-$;e zhDNJfYIYKTJSsR=Ta=eLiOMdCaH^WLEe#-q3}f29YNj*j&?xYa zFc#=pUR~z3tGTc!rLPcl_!G`=btJ)K+ccZz{CgSrG;ES+ZNqt?=BH%@%&3csyUiGy zRG+TUw3)2fmyz4$&sv1p=SmGU7@^EIR4zXoi;4;%T~@jZNEUxsu)Jn4N^Af~02GXN z>*+-qGWX0tA5r6Cw3#F7Kxnw-PgW(2;s5+M84PVBZjO_Osw(Kyq3+C7(b>v1c$)^a zKQSvjS#lyzI3c<^M`_YizHfcK(0OchHdM>jHtp`C!ZLfAqnbDQZbj4SMTaEQqyMir zG7nNgaY36FSKcgV75{*bIR_gLbt!o-CWbam54}E~U7K&#Q8jgoHl8&3xRuY@(9cD+ zv*QOuc&&&LcC41gk>ONB-HJ3kq#m{2;;&)feF!VCHB_nAv!Rqov0GKT%`cH%i?aCU z@(<`rbVf}Ixqd;=ohvSTUZ+q{bwLx!ZqsbY-m$sX$tjpLIq{KQys;^pC?aM3A@^BtjyHRedMzm~-db9^vj#4`Ql_5br6DT1Ua{h(f_a!x1 zx#q0Eq2q(X`+fV2OOEYKzfIIYKLtezsUYFptzhBEF|7jTrfe$x^nZYRv1-@PMkih4 z_N^R-HGxAK2?LiG zVY!SAKlS$-gr3)F1d-cL?b^`{q5Ch|_&hTN7+IaMCF(lFWP;|W`y`=S|hyM z4O(dg*^t>L*zFYK7&@#NJBaqny9guxpoz&edC~3;jd* zPDWK@-bq~XM+Lf#D1nCMqZn-0iRZ*fbJ?-Q7haZ$G@6g`H2)cZmp7$?K zShK~Wt&{g+*Dq@S+#WJ4i8Ps8`bWzLxyLKb2i@n{=*oV9!oh(uxE;ce=foC5PB+Mo zgfIPhc;7<*E_KZ1P#PO&RM`9wO-aT?$lv3g}p%0>-HFfD-SoPOYym;W4cdsnX zqgl31#p%xHvgN^6b$-d78S?2=DPb%ps>oyBSE+L|&+4O1j92u@wN%N}m-adj3+3wAI%%Se4nOYJI$Fqg zH?bL6LIwt9hJJ?h|$M^fD0`S+gB#xNuSiwQTwvsRVw;JWS^P> zqJuM6=mTk6VM=D3*-Vot7zHEJUeamLQxxG0&S@V;#`Bq`C^)3$Eaa>T<0S)-9O;8X z%I=?GKgol~q_^K!t}w$A`Knkjk5kGBs^7-PjOh8XJ~MbcWF<;T7KB$f*x>J$Vu^sX zc@ssCOUHB1lSvAb?l3qTu+zC#5OSK$or(F^V&gV)WKl_z1VO%Bv6n-rGqE= z%Y*c`h8j0{@$(;!F=d?p=1S^=b0c?DBH*#{#i;HSYPs>e4e`S1gyo67yiapLdv}Sk zVQhHOxeK@%K25i4PX{nc0N=zq}_&#-fow~#yc;Y zM@yh47Z%zhq163QQ?}Ej>YB|Fx@D3q&kLQwAc}y+6cN^-V(|8aD~TYZokXbE!YF9U zQGa-(a}4GgR&FACl(OaUyCFpD&RC;)k8?HyCyaM65Xt@;)Y|^)6lG}ko;HuB@V%ycFyN#_0q>Vy;hDI~?dn=(WgD?IvwAcVc5kihVRB(Tt~W2!87qJ4 z3a@mDsZEIZT~)sPxzXRw^21JTNEQVg*~Tj-;HX*k4z^u9rIICWD8yP9 zi{?U{g$RO&p89E95l!&|f&5~lR&==A)wgRZvJ`|k?AOa5Dsk<~=yexILSB~gbV_TZ z`%7|gQL)Ecx@vp2#7DV-*|Bo{D|Rk|+o^GI6BnjwDhAfA=3rPW_NfbSrYY3&q=YUO z9C9jlQ8=i}F`=ItEuu%RS3e0{Iyot50_|y0nlHsB$R3i+xcM z$+eQgsSjG8E%&w&s`JSGdp8$Rrr6cA9Ddrt)3>y}vy=W+=a>A(Uh*IRSJH+)(b?M- z88M~r*|K|1<~%pzqP@j4Ru1XNgoEl2tL@BorUYBxt@55i%jU!q%>1o+c_oO8Xma8y z5vD4QKRj}^K9g6`5kW~T5*1NMXXH{bZ%>39fUNhaCyw2oUJ5i#K;@TMF|+0@z8;d`86zci-an9#~x zE2(Kt&Ri16rEu)IZR>uT`1e}?EMW_1>wg(Gj{cI(ao8-y@Qj55>-rXTHj6zs&!QeV zcloy-SO3HnXXpt~4vF;Epbex09>xcixBFf6dcROF^>o{28CWP(CCth^&R?KEyr^>X zvKq*2WPc?1lHAk8pnc!{5BPQu`*U{ui}X$3Uks^lcTjIc+5OR@!@*8zMtoi|17G@N zub<}CuLW`D+tjTu81{&)BEzM%{gU1MnHx&W5)MZx-A_%;6FKYT*#n8~XM}#A#N{p+ zU$;*g|G}kF?yxB{&dpGn@Uw(29mcsu(-d?y@R%#ziTx&1FB|L+HqxKDNN96t&7?l# zO!v3+w&Y**7@b{}tx-Y*>Tb?ZnW{#&T6G>=e?fn6-+Tc+^Dy{K(=c6IY3shIR6c8i zd}nRS2JQig(eLB=mR$Or{zr9WZ zhG;0AOX_eBM0N0f)Hhe?SH1CaGMdAxP@jV`H)jfYgQ;YXb#m7}F#cRz(Vv|XR?}=N zJ#^%1Zi}a;8`^o)$@(27-M$fHT$|ygk)j+4FTFfuO6@;r-g3s9B#QZAHtQ?cF;nqo zM)Y%|U`;(w6eD8xz*rFg17lPLII)JH=x?~Y5@uh7;w zw|1D4=ODdb8yVCPDja^ryIiZM5 z#(j}vH*MtaEA7omkc3c%a_&v zEGrWJxZF9ALklmn^0O#7ys2nSY4t+VjMm>~ezt>-Q}156iCK?DpuA$bIM@(_*M)X_ZA!QZE=O|rO{#P8NG$wL5K@bFC`qr%!$93z?hu?CNv z^ZgPo{9!M&8C}mvGU~7+gyRa9C}PVa?uc&Mrz2JQ`%TUM%A2zDiLn#Ov=6(2A^kL4 zG7p2SS*gx47=)N|L*zns*%wYju`Cx!I#bO?mOl}nx~9qX93Qz-*yY;9($l&JWl%8b z-6UE5sJN&`WivYTXDb(--)Jw3q_Eo(*Bmw+q)^gziA`{&Vc}8NXM<2AjS9|p*1psV z!CES0T2Zyc=M-@svZ#NVqj;J|J7H4_2D#PF%+cE4b2(;N9xZ(~Wz2|i(|=_`JvMkQ zH2OZIV>1+#Y~S8(7E&j`CE0hRR^=qWdF|FP(Dq2*bdPjYMq=l0E_%(~ny9BC$nW+Bvj%~8)&ykaVx za!Q`iKUZwRo!4 z{8Gz4Q8K>xhiiwY)~O{7?$HM}h}B)ib%$ZYcT)ZcM1IOFcUv-34RNtq3DNVChCMf>Br%vmtue)w0 z=6HkwwQAen_$o>*VLr@o1Y|tWYCBzc(RTcbLb2@zZl6xjVFEw9)BqB{qbtQC{sCwX ztO7`)DL$i}nL>>8H7ifJHXWWedciTi%X7~IY`)$Xxa^7CKC6M7YBSM~haVHI$F}d8 z>}IUy%#-S$R*jMmwZ&7>^UJJa?jk?$?9>Y%lUQs+OyZC&?~T-BEvf0s!(?uB8XD~c zG%LQy7T(Jz1;+&-G^V@qR@p(^0S%^~EagtKq&;1Nhdu7wHR*_WvC;mXA;-$hZxwxs zL*?IUnNCH>crv)=4yK~KrSsKlIli(DeXQa+$S{ogbXn0+I6CvcD-BQxyIAI+C zoqBgR7LNze7LZ0K+P0Zy{7z9(AQNv}PbrR5h=R(!3J_W3k;}GEcHNbYMhR&(QGpMdEHP)IXR?-jED%D0ZWn>e<)4r!g3rf!>C zV@$!wf74-6`6fm841Kj+L+`~_VN5eGMD@}HKkKplgLx+37{uyLfC z$E=u@0wSo1y9=)LO@g9)vzyLe9FYNHqB*630ip{zSZ;(jJ_&u$&LR=*u8ym!qO|2& z#2r3~`ssbC!KawH5dZi&ZZ*bs5d?d%Hsr{rfKR0ATdV?flkfeqRlU%odz8=dUfg9L^*Ss zz#~=*J{CYD}uZ5|o`vonQycOm7gUY>^yt7K=_$=hC)vTTq@UxroczA(oq z9&RQ2zy^oaPe0LgruCH6>tM;+pSIxkSWj$(sp%57`Y4O0B2F0RfhZ=U%bdp4VRh;8 zJ&BqQ+$I~6d+_q*wgi#<0Sg4c1hdHk!7|F*xsMRw&Fghl(qqH)&v7wh1#l=?kyr$#CknbDK7>_+$?p6nEcq!Xd8Q&`q>zV|- zt+pvRKs{AQ%yn$l;OIeOt7I^wZ&u*!YjsVzzJ>!ON%q-DYB)Hf5RWRFdg%2PuATnp zO)kWi`fOE4_o~|qZ-P($06Bmc75B}Y+fgd!>rl=&YM?Tu@~_j$io z|5^gUPb=-oUWNSPc<``!6kR%ZC$o7IP5zPmj#zO!fct9eEaeJ8+B#GFdpbr1(M|c@ z2>V+{?O_~%G-G}U^y2paj;_jg_z!prjnVu>&c92N-lCz{8fTl9eY)vW_Kh^UJ1pAmjF7VqGLs7Yrr*8I zhZlWs!0grzOApd>)gF_AUpkvB4>P?5tXmol(pqu^HMxOb+f1q+KRtxhW{+Q5UEmcJ z*mh`9DTN{CmbJ59Ql@}EGEEQWx>|xWZ?{<9*F^;*2nw2S<@iolC+R@y#Yr=q4ev6% zoIVb%ymGTMPVupAb@C8xGNu`dU5|!z6#A5^wj9p=tgv|xwx{hCBF-q%SMyVm-(4`& zd{+$4^vxjjvZpMS2>%-NANg2?wV{=O+_*KU%VNT#x%wy&(v z>NNY#F$~X|%<_+JYej_-vUG`5-*1_-ejGIoS*Z&HJF4@um_1ATvf1(83w&--)6B(i z+07wj?8EJFU?>?Ogii-qS2m}J?X1fV+7DNiS@l()b+~b4cbKU0c|W^qX8o*YWx8kM zb-)C5+f!&17IOUu!8P^r1+kNTvjk$Qg*3Cs1In-dGSf!W8TX3)YTQ+#sLM^j%h>mh zu}rQ>@boXu&!xq8L5RcM-I!-4W4(J?@9ZQFNu);x6#=jKy7Rg>Mg2luugbMN3d$!~ z$`a&{W0h{uY!Ns?HxanP6urkCc*A*e*9KlR!Ud+4v(zf3wzACEYpcSH^ygNZ zg3=mqUx4k&86`vsk{$h%nWxYQpb%8%OX*S3eC94s!_!RYFvBi*?l`*cor&kC?e zy^@RwN{>l;iU`<_jLBg8j(=cGuI|YTlo{I09aDK7lJH}WD6T36TT8@mCjP^YS=Okt z-%LY=(m)G{kY1tEhxWCc0+T5_6(sL9d0Zlr%F6oZGhXXG{fY=5MJeXo{IG0~zUUN^ zCXe7f$qI^qDf-+$v$e0V|Gs7Db<1_4-s6eFG3sWH1#HT7}L_OC`ft@NuqfBXpfC>%0c>scv!a^Av z(KCLljcjvZci>^YeN9D40|RFkfCQ(|6MUd8M?8C#=S+#s?Oo9hEZaB1h_7O{mQ_7L zIrDq5UfAxTR1u0bq)q;LqvBTI*_Tp%_R?QoM39Gk=2vNR{^_nm=Q>@=BiZD^!7`m+ zxEwEZW|h$m=B^9xs+-Z$HSfg`p;gDZe9!305PqRH z1M?Z035r}u%Y3>=v-b+b6rsGO1-Q%5oc7Aa%L`If_|stQ>xmYGh7)zv7kVx?lnWYR zI3zEb%MJCuc8IuilS$!?`D@e22!yPM?5j~A2(4ed<7n4s`LGk~?bXsY8M`|*uUe*_FH-6qE*#QpOZq{} z`PMS)l8$@GNte%Neu5Qq$yD9LYMV^Mw zDp{3AYaDbS-n^CkKs3a(6Pj$lnJ=-ypJEpL{(;1|@xtKk&ZG@=HNLv=64Oh~xeDb2 z2OJj_ui_`H?{?R*in8hCu*niL52=a!rPOBjQLhLuXU?K4HJS35O!YwTPFb36$JMxM zHpxXx2|WiPOBa~Go0>osJC=%T@dpU6osuFM6#29%`fZ_Uh*i?p+UV)yj@~HHaOw)^<0~Yz?!#dOG-Td$o zI+%VAB4zJ{Q{IQ8TwS12q!v{YzgH`cC@pq~NWHdH)iY=2g#~QS>B}Fw+P0_Wb_aJ1 zo2;wy4YBQ}RLqW*kBF~yQmk6xCM2g{lI!9fq{d5&c`9Lp%{O#=6G_xjZ?&gb(=Gk9 zR4x2OP2!P%WpuDco{hX`?|Xw9R90vb=x;4Y571dK^$ttZG7*TeBm&FqZfF!teJR^fSs{6RoHoGE=t4Ha($>p0p2>n1QBU^Fk_@#m$$ z1XuDN27{NIn1ogdC{}r6vq~{r)2TVOI$HD9%S8*Z{e`bJY~sQ^@Ztrf#on`|7N{jm zf54Co;NckNJuSb`Wh))l{2xQ^k&$tUX7mx34@fVP{({2k|?3By-vx5 z@oA#&iR|YNW_rU`;+nZNaE9X|zcFoZZ6*iI(Y#XOna^;^lMc`;`D751Y5{W;EvYY! zF!S5EMCCBv++t=Qce+q_l#>-Cok_finXi0T%^;*_BZ#SQ(^HALru8;E(@=`-m;%Eb zo)<~;jDzr_2pye!N|%*tp+mwI%>95vmx_YDc-`MZx#hQ7@6m+@_#e;)r;(HMo#76L z6tD{CX#~mu9`a*~PM>?Z>whsfF$nFfoCZ;uqiCQe1FnLvKJhSlJpKNaO~NuVVDSpL z#a7|1PnK>kGHGc|tl{|%W1Mn1nY6;bxA$p5_ahn2{C>&yX~q;aXATrwZi42+=GvNB zJ~YIvI{C2Vu=B`%WFx3aOqKo;f2CPp1IMOD4Mydw(bAl>t92iArct9d_e+-{eSynm z;9_Vr|I%=CtFfba<(eF34vO~Dhz=*jp8Fws;86n7+8M%e+;6M3&6W3`Z_UTvi(^=< zMt^pxZ3)0ow>lhS#RV6wYGt6h@ zAcC)u0jWL3lAT+?D;eS1+n1ib1ud{L*vyiN?mez1Ja*UO8Q8)e+)iXROL~{_6hFQ! zMSqKVT>PDmmF8SRc5ptCO3oLVy<+Z5nuX1ndZ%Mx*q%u9lQ$u>)1;6BOivHH?-O4? zH@MC;?Z03B6y&CIC3x~1rC=xG=XxxRAM;UWz5Yk7z(a?<9i>;y-?>)?5Jrx{8Huo7 zxJLGI+4CLbSIvx^`ZbcKTrgCr?M3lfyK35x?I0NB!!wbQEiLEemlIzShJUny*TwE3`auM@uz$ z_jV)TxwD(sGZ*XGa-Z*J-mikdTr{XJppkPs~^u8U#336}O$$*ztWhUPP~>!sO@2{k<9 z!%Btyo6OsRrl1rriOKXysPR&r@v~*cA{>aMgtj#u-en7Asuo?EL@f&(OL3mt&Aa@s zdJetYqS5cg8hSG+cnPpw-JI!rnB~;4!=`Q#rJ__zDBydP=5P>C#S;{^Ej$%2dS)x zmDsSJ<@uwQ=Rd%3co?;c^KB6|A2l&Ko$z=#J9W_DHj>MmBDDKPi?jXM=-`wf`DUx zL=!y#9p#0Wb$dP9hQtTOcVoDiP6K_VW)_SYy9pf=Ren zw1)^QF$5iy!NwIzT4*%SO_Jq}!mpk>l_62X{?%I~hi^o_dm*&}-Jv#yx?$1ifMBK{ z+X&Fl)G<<44pf=#62av&_Ns6m+^DY~ zBwagUF5jU349Wlvp1D&1V+jaxh{_0v zOi*?Pa)#kW!va%i+XxL*hrA46DK*mKb_xAjU{30>1AUdm*8c$2X$Njwg$9pR3wM?} z4q8@0On;qwhB0O#=!(Zgvld=j;R5hsF9GQ z0G`LP0rNq~lmm$-62xyZqDVX7qi3X#=}IF6!ibZI%8@-F{E@Mu4V+F^yK7TcF}CGX zMWm2B?73jkMw@AlxpKTQ+H$C}g&JS_!menl=;UkRxt*0 zo(A0%4tDz8m9?2k)DhFFx|O@@5F7U>Qek`A2;Zn%ZmRhs%B75Cp{^L(uJE+It!shh z5%X0t0F<{FQU@DnpjGyE@y$6RTVBboKVF%MRI(y^LY+49*%Cw-yQ+w6h0mMP;+p}7 zxIL7)M1nUcYhZSfvazfV4KlH{*^WCP49CfGbSfHlT+9tG4$O&wp+d)=mzej8Y&#OA zQPgPLzMUr*xx`8AvC8e$hB``({XtQ`PzmVJvs}H^Yq`#JnNb2pHyx62f;&!1iCWxI zBQrQsfFdzH(FDPdu}*slaw@S9-PHOXlAzEge&r(B6TGOcWH1PVdTyrN7#pYt#wV(@ zFi10qS=P9&rs@4FLur#Q0$K)2%r@w)rt&a;soisDKMnD%c6Gdp?S3HO{1x}M&7)L3 zkLITQf~&K%b<6pqmXmVgdn<11va_1TGnSh$-&KZ9V>=o#ISS^s3?#vjV+!`P6SR)2 zn>?FiiY;i7@m3Z{5OSo(0hKXNnmWqD=GJ1UQt#CQp7F3+TTkle(5beB6Ta&|)zbVK z8%q<=VFHv1j4n={g=*2sOuOK;4Hn>iW&zq%-ea6@7*fXJHqyb$=D!luA6fL;JxT_a z1oK=_2eB$IGN&7b6oE0hQ)^{%<4SDe=82zQ`w;CKv7Sy>j)kcGSbwJC4KdTQ01#=^ z9Q2*_f#|o@v8`<1$}qGZu&H&GM=-yT@{i6}hdsvbCoV0=T-0=TTmDv;zeJe?bX-=$ z(`DS*`8PNpdYiXt>bSe@8N7zIwpkKe)Guq}{JF_Bm$#eC@$MIK*T}@3icR-G%qwaz zgP2vvah2bVap#Lu+WOjX4RJh#mj%Ug;Abn9)7)EMmoQpnLgT9tDm)J5Z-a}LYqda# z^&M21boydi@)dm0A;Sun8Qeizc*jx=_Kx^n=Vg+q1|Ui|&carc z9eQDN^PRR|)qN*1?02|EASF(tZ-WENTT~gJ*(g%0PNf4zv2+irK-pPA_Ou?}M!C+I z=66M>T65~k$*I)lu2>+omsD!5~m4K4ib-&Ht3Nd24tvnNkmE`WD!KEQ&Eq#O_&G=DaWc1 zN=5<*l*B@ee9#h&u$IW{5S#=8=z;LcAfBng-V+5F!UAX;AQt8mApr#-W4t9Em`@Se zATzRH$n=ty$R43M?YaRJH}60PboM|PfI6V;5xhpp#!v`!Btk#$3E+hoKpcRGkD92r zl;<6l!#@=lHbh6w0TCn=PDG%BIu#Jpyckbpn@H-LPGri5BaT4XI3sjyX>fTRRe|B~ zBi>n>da1O=RZ5kgRGHthWKUU@CxG^c{i+*hDxnC-3P+W$f(Sl}F^nIv6?SQj(L_tk zau^FSd20&$+F z)iTlQj#&AiiajMUw1e_e<;L<;10&r}K_;=pk5v4l0~uCP1DFFjQu7=Ml15c%wxP@; zU`az-MiuRI!O4(RfMfIZW1=)RP5=gvMOe-N!m<0n*d#FlQd40D1jnkrl~*^^daS?z zaVl*+6-3s)YE?RNlo}8wkozsfIu>U1dqK=t3-!17%BjW_4QQ~ zK^+8;qH;!a=%od?oxb$9b4PNDB2A+WmpA~IEjY`}4xu}l6(gY8Rf!;}QufoQR(Wb? zw{=@uK`Gm`8i#lQt0_}8DnL0Y&dRjd(+;Q$hq^LW*7H5)44^f%Y58r-x|KRTFn3*8 zV#6!C({Ony)1}*ZQ~)IO3d^t6+~5wuRUFtKdfF~@4*1w3bMaQwx2X7>4_=D*I-LSq z*7LeII|LocOQ@F7=P+Qxq#Vf*wu-K;N~m{8A!7g$p6G>-wCT7t&2T#%maDpawFAb^ z60tz(I9r;0+aO8zm~-=09h_C2qcO2tEo_ZOm()D8$LDuhSU>x&PUyj=!6Bi$C7xP( zd{|12%~sWO8VBUsF&$M$u6_vtfMW__vPRzO=F08p;Ur0;AgPa!T&OpA`_!1(GDNJb zbm3g3cJt}<9Mko1v16DYv@LX)@1Rr!7#SUwU_k>Av97!h04J>d$SlSO$p8+$JE_F= z#4PsP$8k{0NZB^bPRYHnJrjTd!A{bXKs0k^LSufjC=Dd!eAL+7^GM2zTH_L9Aeic` zYj%^5R4@V$MQa!%BPY7YESqBoEIL-3D`RnRDYs*p?5krrhyY2L3z=(Mr%)sP-Q!`= zbLW#>aaDI%2)3pAn=nY~R$#*$N*c_`l1kFrbAo5la%Y~M7~+FlEf98EDX`-k^h0Uo zxWd;;fq4yUNhINNa&kH_!Bsk9F*EA7T4~j8Tsd3rb$39y3L0fAR*JV|1GuN%I`>bk z-bMjVmqxX5=gR2E1VyEtn1{I4e^!l@#pq#*R9L~&y3X2C&~mS3ybYmqWz5=Oi>~e- zOuia=0kWm7bAgvT<11rmL22cgR<_i;>b2hh7B`sn9C)JVLCOsW43R#onxm!Hf7PV# zio9rdXL=;Zs8RaI)2}*-kVnE0X}zHP#dF6*x(@fKJ8t1oS5B);!>PC!>NiB@9XQ%| zHK>3Z@<&kMt*NM&wXzB28Eg($6=SW4+-GPjJxhL3k+(&zJjLTGCeGgdt@22vRx-|# zxVpC0Y-$-E@Z5J>%_7$bmA$noUeXk9aQ^_!e^uAT&vCsn&x>)>wGBC!l+9~!1NSWp zuGOYlhXM%c3%g#~RnzOZM0$>^4N6os0vTC_wNK}T?|g5WEbZm32D`gvU3KbI2bo@m}xFKmqW zT#e-sPU4`0yn?a0vP=W;UAScO`FPawi5Y;0HhLHe(NCZo_d|dMUy~ox)KWn+lC@j0 zv}wA%O^4O>Dynq6>djyT$wmE8YBrNTqc8_`t}||aOR3WpdakVU_n&%tbyByf<7 z>_UMfmuQ2903pEU0hP1QNN<1El|9s9OhJyb;EGBUo;xi24EkG&IH?35J(yLE_~yXA!;)BPr4h0 z6S#3!QE6?l+a*8@#!`a1fC<4p6tFsF1eNAHi&-;L?8%DbU_^ycj$nVTPM1n-xQi5sibEi8w4Y9>W~q# z00;=%2nW~E32pO0_#he))6p+TOdNDT!aH_AKp5Ihzw5l}eiz0fi^D3UGH-3xYEP>`--5{{V`sN<>ci2y1ruq5_+q1ASCgCx9S@ zozaL1mlq#Ynh7Kb2>?Mc0ZcURe#I(mk_1UtiXpjn>ZB`FhC^m09$5lltHZ$htjDTG zqxLQ;v|Crn=yHI};2bLjM*)*1Fy}jBVLcYb8gNM<;Ukw%%{OxrB$AHNx+E(>f<6fx z9lG>V?;kZ7Bx3Qv?ekX?Or5Y(ra7L_GNJ)?0FbRDP;415BkV<@ zMOEBQL(A}05t#3}Oprv0QH`*3(Mh$@XlopM;|q0-Hq&W)hI%Y~rIgs%gSy`lMvxyl zTXDvD)Y=1%cUDKcAw_@y4`pC%kGXY53x&XN0n7&xB{6avmeOdIoMYgL2dBE3`7Wt& z`jQF9Wl=del#JtVMJ#S+LI&5{2O4!o!UCi=OmqtR5y@8_Hd(~T5M?;i6M*MOWun{< zE~jYfv*Zk8;I&g|7H)7c%vDEM7j*^^zh%i^Wz^4hg~w56nBWHIWysybsx(Gg(4&#< ze0Zo48(=E{%)x~UZ6BN!*w})5E=;S`H&a8-=oZ+LZ6SBzTF z8YBg9%wwXan3IjxnrxQ_{Tqn_g=&plPt z=!al}t)p)wKs?=o=WMiTXPt0-x_x_<#h)uqqllwu=MWi8xRcN>W`>8#IqqKCW4Bec zw^ZmilFpwadc5vc9$V_WndQaDIb6ANrsM@JK8XdiYE<nQ<$cr=i@xCY*dsD@K8G1ah)YPrMd) znKw58*Hxx{$B?aNp>n`^oz6Qsa_`WtTfHf6_%gB9(`wT&>P`dqD4fSLWp!ICfLm7E zmEBy$p0mM%Bh=zt*2C={#Vi>I>NzLiD;fx z-Duv_kxt@j(RMxTmBMSbjI_9WSUt#)Jr`FWF6&8l;jjMyE2TBn1ih|+;=1hywbv5u znhD3CT=t;S?IxEj$CzY%g6p*2ZL4$g<74U>5JiK>`PL%i0#XueYo{$8G3W zA9rNyYNf6o??O8+{yd&vJ{ESMyWIo>3I(DRpaB9)Rc^o&vfmiv&h);w9Z*=Khs9L{M4xNrH_K7WT4{G(LzhSJX{>Yx}g*(Xb;Ni)=`9mM@; z=$wJm;Rr-!c~0{Ul9RXePhsj*Py{8iU>?d`hpI+EE3My7jcQM+NL8lS0_tRu&L<*9 zM5@38DBmfQ^)}bp8^J5fS~nE9H=31ZHlq*YJIsP4f4eTf;xDpSg*tbK{8f3P@S(TW z?R3kU_LWAXcK%Auq~|d5x~T`=0|XGhx!|U=)2`>ttS52V(u%=YaM zCn0{8{{T_%g5U2m{*%1_0IpsQ_FdCI8uZ)Z{LFyWM?4(=2O-LEU|uhkclQB)sAM zCgQ&ZSiZGuN>v`?RaPzO?SmSKX0kr z+TSvj7u9>(Skq2O_gp%!O@C6)gdgu7$NvD`t^S($-{AQE(s;x8N}uvUdl5!?Un|X76<_Vd^%B8O5I0|O22tZ9Sk+P|;oz;<$fH5AZGYH?%rZRwA z4^&AonD`|!fDR!508`wF7(g5BfKYQiQ-}yX(I^9G!T=qR1n!Nq(Ew!zehAoPCqqvz!_5w&&4pv9S{|PG4`qQle(WQZ3*NI2~S0|Ieiq^ z%-}0oLPWU2VcdcmGJ2HcEt^~A2|0H~0!y4src8{InZOdLibx=IOae~WM8shn-IF4T zFqj_hFqEB?fQUcI6^0Wicm-$0z=-yv7@FFgwaSvCpdL5n<p;QQ@GiE+M2- zZo_lkIS6x?xc$qMs321vU@ks`d7cDyg}$lgemV&I7e^dpolT+}F)7LBnSh2KX2!|1 zPB6D(Z4vM&>9PUX^+5NIag^1ex!Wi?nZzK7IOv}7CKDz0z>xOrNK^@LT&peW7E}%g z9aWbU`6?GQ4p(F$rZq&99oEZ$X;Gz5u%ESLX_6MZ!8KZOh7JA-qqpPxJ2(~T2;7CH zu|G+8Cv`=q>h!;K7MFr6J7JZdBis1?&47UcNahSeOy99iJMOtJx2cb$nq>N}O2xvp zDwgguIUg0p$p%D6!COkPr10VOf$XBjnB$?29S1z zCJbU#tYF?V)n%4#F~n1Bnd-SMF5T5Dwd8w@$(0)m6I_=#v{DGsw3bwDu>d zT-oQg_~N3yQ*m(j?Im4E9A;HC+W<)W7OG+h#_NlhCr=z`qS8;I=V*gzU?UYPAGvXs zHqNhIl-n61VRE<6Ypb@KBa)bf<@03ir2cuhe0x@zm_6^y>0OFvc_Xq7+$gup=u~D>{`7GMOOu60+T_vgDDBy5gYs>N(#M zsck1oB$dz8(C(bk?f^YZD;uC(2_KR_2LyQ5f3G8e=dRETD!rg|1zg+vmd7y@ zI+``jGd@uxxDv8fw0$rG*jw=k)l}t`mHz-jxW#G)o44j>0?B)$ww<}JMxcEmxQvCi zr4E_pR$4WrRkbi1SU{fX%&cvWdvx0EgXH+0d~+vK2CclhnSsAw=T~K`*xdai>PPsMgCwh!@N$k1JQLVVMZNO+1 zCzSfG7T5}|sX&jeFh_Ood~Q!CkMg+WjuF82`KsNM1{Ru)hqyXm7*svE!~hqig?PM} z=~0ofT8-5@w4&mfbH>HED>26XQfMTD(Qhk`IA!vA*#;l}YA4zZEvLh*3Bs^;zpoHm|XWQRer(RE|z% zK=;Ia5N@Xlv}GWHh2=ZW3$lz3l2Jb-wkR`_LPkjlPh=5#CJ_h&x&!qi*vnWtuYfuQ zCp(&^onGeE$F3_m;C!1=tM9AGAA|2$^Y{ykG?M8ydYdjlJq21#Z|R~}uh$nO)>YMq z(;togE$L@Q@k@<#^4?b4Yd36Y{jZ$vQ}#mXw5dM5YILczx}`@3wWD%LfEU?)taRg~ z`#^D>AlPMUv~F5^`IITRpR}K`bdL!1gRgj}!FqQuGj4TzMm&Dg&2KULC3VaDcILCa zKVkH3Ihsb1r|Hz=%d@wqL9w(op`-LE+iDap?yqgBx@%dzwCcC9a|4Im;I%J`cvZ#6 zTk*HXohZI(>GwK!l-}Rg{EzyT1DM9Vtw;T+^6k@_}U@(I4h%q^Zf zaAm=4oj*&txSrBkPyC|&E?x%w9~xJg#awHt^8Wy1SkSlTjl9Z^clj^5d*x-#e{%S~ zm*>~v2G&K#9dMS89VW|7sdPtgHmPs<716AHwtQ66?5(Wm*3tZ%dTpf6YZ*MP015ZI z1)JMLTKsL}?zuo2W}9zqXw&}y!fiwM)FFBH7TDu1Gi?-6`brB3fg(A`5ys3p3N zpzk7shjx-Vo;_F!`^A^w_1B+8hWCxM+BHb`n?}v`S`VQvZ2f^7!xPq7J`Letv=140 zJEvdRaLr2w+uv3d>wPBQ%sj!cAjpg^{{a15o-6+V<+N|_AO8T^cCB;pe{qGSxv8V^ zK8=4>zwTApQrwZ~Vd8!<@m_A@zYX}O!#z{+Zxra)I(5UR%XL5vI>2sN@hy1B*qEH9 zJTf1;Io}ohZsNZgYH2UxciBDKSgI&}7KfLLoV?SMKT)ga9TV)n$H6|!-X!>g!xkJz zq3L#&w5#y*Mx{&Ibll+Axrf~*N4(OjtYLRw8{aa37oh(DsISHU0Q}2i{{Sda{{TsR zR*wp6H(XG7V$#B`*0wI4W-V>UJDpXoEg(ku2RlHNOr`WJvBQM-9;?=zFYF7(dZmjl zHQj$o(W^WM3uZOfH5rYZM=L@7$#C^wJb$v69bWO*74WWr+bvqR4LaGkR|30eH2L(r z#z1)oX$RCL=a1z4YvG_GVR{Jr75KmZ0GVum=aP zik9^6?6mq?UW-%*Gf>qW>P)ITv7i^cdV$O8zROSWdFy6}HBLCwn_u<~v3YO&ZejWo z^TvCl#@CDT04RwV8DD1cW7&s~yd$-#sOna9bsY_c9jNK9H7U~*k1?bNGp0!8lM+|P zhu*4LeJ0C2kPsBw@J3`6Ui&NT?Cy0Ns#dm^^=@vfI5M3YEH8aW9e`-bK7lYAXR;s; z>(QJI>`CHh6x&j~)R|$!*3ZahqfnaUckmR=(Ek9`_SQui9CKi5{>0cmKHh)k zS={lTb$Dqcy%zzR-zCPDiYCn@L| zq;ZfwYQ~nccs`Jz(=FN(j7nv*bGh@~Mhs)`Pht}TGtmS95CKR5DnMuNQi5~QFo16G zP#Xi)Ob2KAlznTv_|S6V+iJm047O? zZ`hC3Xa_D3X5l&dKBFERCK#&Qw;^9D|}-sQfT*kbjp)r zJyZ#p5VTq}RIJ9v>qv-?E0{75#uPvp?zsb0R;v0&IZn!vY}#O&t^f_16JD8M%=JLY z%GAbCt~pp-9~&&Crkny3D*d#0B9*1PWo#H|WnNO4xJ9bQ(EbE(k%y1?S z>if!Jmo9KV>;2&!0>s&L0roA|Z6wkdkxVS|Z^v1fWR)-^gVZQCa1ZEKNan!G%O_SB zqsW1UATkJ)nn%x~v4h?1C1+aW6K6uSwX!F=rjud;0IimEjauwsAO{u8$z2#m^UO51 z!42kg$8ifI8Vn!Mwck|_s41{TI(UdwvX~j_xiZU6jB!qrVQZks>ZxOAD{ZyAsus1m zB#oCBHg29gT*jE+qFL0rA|CH`zs{jWh3@9+R-3{p`8Mr1rX=I4E$PXCCVMXw0&Z{u3XD1 zy3Wzn>a~n%B$e5NDd|*2Dt`5MeP?z>3N6y@gaP!Ijr%H?*FDZIGD`FF&v#B-v)U}C zTtOyJSzMi#nNsP|O@xl8qS2-4PPshp9JGMTisfqDvfZ9VsD=y|btz+uiXac zVh5b>GN}B~uub}fK-i+jQ)%cMpS4ojCD}PW%Dh{U0a{F4nR0$v-BPpi>W@9dsIip+ zkmKKVxs*g1Oi{+zRpO7;WMylH85JEL6?=6T$1QqHsMFn|RgR(#0993?C*YOD=On7{ zH0yh-S68(JIBwb5b(*xfTz3R@?7Ky^SJ~9(XapU{bt?L8uA?uveN-_RI)$%k#>8w_X1vqiZB^9X*l;MNU6p{fxoC4;hP$Xn zIoxZ%kCT3#LANnXQm)Zbm#D~GZnLIQqeh*21e#CidM?4M>8`V`Sp$^pdxghVp!&h(P`G29AWm?&t#ZiGxGxR- zoBiNdz3}s!Pdwak8j*M6`*1#~<|aNXf~Qd1)?>2`GFND88+B^>5%02G#nvtMjJ-{(DQk$%{OL2*>Qvo%&uvUKa1-&Fw(e(fJh6~g?5)v_nSG)n{ttby$N5LXi`gNqLUp z`cdkDngIDDvJ-^CM3@QTyQEwO$|(o2zX#5?DDkftXywuL%{rCPZ+|MMFZp%)0>3W( ziuIwS`1_+!E{5uMw>E_T0PxL0_tFdX5pr{VPL4lM&2Mh~Gw41w+gygjZ}f^4xubF) zQknah7f|*@(hjff1HwSIX<8chPd&LPJh%KVRrXK98>V@B=K^YBzpL9_TbF*})Z7RB z;ay+Y7f3grEo&N!n>6e+dVn6!eOh3Df*!S({{R{+{qNDm;lE{`E;^^R4~l`$np(%x zZYi1H%e!wN`7!70Ue?yN7HIl5qo}?)EbZ!7bnOgjck?gH{{Um{a;1;7Hx9b1$^2y7 zt9q^{a_TQ|`&`znu$#uOJKTPy)}+exs#2)X>UA1g;Ch3CzY?{*Hl~ZMYC2_1)Uvp# zZsL2f#i#Ty+lBc7?E$0yBJsD5?7)WpHm_ZyvueA{1MGNJ!+Wr~XQ!^e2gaBw@Lw3} ze7U*QX?H+;+8Wj{Kxi8PIt4Y;yjA0>UK)6J#5`42pPF>bV)}H>&#K}XO{dVk%?Hr0$xbWr zFN=8RR;jA%+Ww(=cKV)R=B(zjk?F|64PYIb0>=z4O>)o0`#8F%h@KtjJ}2L7N_6?T zUre~Q;sS7D@sM71*cSZ3Z3x8k# z03H7Ty6C^+Wqcb}{2^7%)7zx*B_V7Ny8FFA^SE~{Z8&N4lDqe^Plz=CyYvNb5MSd*eOHp5jbd5UN zl^be;S$T6WFyYmV1QIqSz+`g;=%w<{A3SBW@Kb@RYcHb9ty<~-07ld897t_Sq)#)W zJdFU8-vUH}rycL5U2C`0SjN(0SjL92pa!*~03Co*Uy@qqw8x72_M&fVaki;!dHI`0 z#;4KgH`9@T0zNbAE88B&-Z<+XEO6ehrSUCqr0bd+ss8|7@&=oV4+J#2FkTBB34tKD ztd&`D+-B1=mg(r*>lmJOS)urs+O2Yuc8v zKwR)nn^l#xn@Z5(bmxw4T7#=8A9fGcF*xQ2*vsd>H2ANl_&30Jyh(XXTwDhWdpk~U zU!+%XJguI90Ou3gr>rH7v#54Yb@UdstY~XMYg!-xAOM>Dmg0YD{{R)Zn*G;xc*{|- z1^mpn(_i#zOcREH$RvK~l6uPZ@3E(kTK9?8n$HdKRnfiGw5n{mx4m-!eQE^qxvz)? z&2elPk{z9-)?9W?l+IhHsxB?)-dokTxTQ|Dy=InFrBR{Hdq{!^I3SLT@|)U+!Yh9X zJWsi@(^%$cTAd+%V$+`~t|U5?{?)+8UQ*fazgJg?KL~A$Jiia`zyaXi(Q)cW0TA7@V}XO?=pe%LP~dtG}sT5&d! zeaE~nXxcjciw$i?+KV7xQWaIN&4CiE0)fcCU{HcLO?ubB;}s_K`0u(LoI$8_NYOcY}|gb_x5J0;U)IK~xq z0RSGQFhFw!AU@QXAVQRadn<{lu!9Ou1iRi)V+)QH>d!C$U=7nGc9j{x)i7X$1cQnAA~79QMkPL@DUpqWZ6~TZX9Hq_B0UfZ?ISQf zR7bjVvYUvBBXto6uIL7283-d8-8jJ|0j@nhCI$eQu=(>3c}dPLAd?|kZ~&~~vaPY+ zQ)s@_A26TTg-OXI^;cSnbHOlNASztmQb8LavO*xnBrO(f52z>ea#aQajk+y{Xj`;5 z>pOCS#%`*rO=`wAm8S8KXwn;j`cy3G0`l@b)(I<3qXl~JtyKH1GyY{>o}b0z-B)D7 z>#9SslCS#JTt?EQFT;7cX*4=u5!qJUkW6=2@?FQb@$uDK(V0608EN0(g5e1WAPK_f zlWzNTVcTIyi4hnorh&N%#>@tpO2fvdZaJ#7bdb3!l-+fDX)t|U8SEB2FyB3fK+ffI z-big)jt@N5L4F3qb)HS|^y2C=D?OlnQbL5~MedgqIXzPw7#UgE-y5ZZCVB;HKJCJx zreoDw2x*di7I{YajLH740%7(+i(G8{?CnyQJEK=@dlM zcK(W%=X^pmmlI0jnGy?R51Lf7yy0+iktEJHgnx@l!QcW z3!k$Ex@A+5BxmNlu6tvU+*! zS2k{LOZGwB*A+|2$v6v>((Fy$X0#7*ePh{Sx27Cg2J5tP4L-%R+xoR{tsMgA#%;mR z$*!QdxC9Go0x2^Dj;fZ?>PAwdOK2J0a&~r(xv17O5>6KQ$DN*fQ$m4zni@HrdIinW z(ZwctmvsduotxCHL9}#+@-PS7oD=&Mf~((M<@H=i?6sJ<^5nUCY4a>?*)*-W&v)TP zx|1>ur6}zyC}(}UCRvbT0B3dDEy2NV;bbi=aV^2rgWUf7r9Q zy12P^fo&~XlWEq5Tr_*G?z-Nkr&O}6Sn&sNS2a`y8E)gUhPDk#7L^<_>U;XEbB_KT z?6NpQ)?eDbg;6zWHd^J>O;_4g=59gy&0Vt37i|RLz>l;pxvE;47Zq4RkVu61a@Et- zDaCY>5jY7oF-pI-#A^ir2~7Wx{x1~q=wMQj>)Xs%{$$AA;fads9m3?E~F82jaUHsbcGT&tdD3eHMDOS*hEK zWW~ca^i;9f)UI}2bR6H zM%AW!IiwNyh5K)(-qX~qEpKRE2>mOcntH9czV9V|5M49Q@b`svE?G9( ztF7m^nMKb303^Ei;PTP=ZMgGSaKqneYfStFS3CI3Usv|p(>|Zz9;GGkbjD?`k@|YK=d%Ybme~wXXY8-~KVL-umCP2Cev)!9G2^4&-st zYtU<^Ak=B5KKF(Bci@h$bT1e<8vB|VPgu2U&t^KKTJP{&SLjE!wypTLz#V3XH!0L^ zt!;*PilU((Wir1otS>6**VfmRaa!7=YOwydobxkNAMGYt;1u?vieW|0J~AufBDxbn^gogR0E%nT zW4k(|O*Wsk;dUPnG@+qz2MXz7yuU%x?QP??B__A|m&X0JwSlI138~w2a-B~0*3^2% zPc}ZvMNID{Ua@{)kiNxB+ONh66q!n&8r-&<8XDG%TYLex`ybXgop1Hy7GP-yyAT>J(TX%JBBdYXQTW4*eI+X|c~O zYZ_eV7!3kRE7P75dlT`89MiVc_@1xyHKNr4;+uXS2a1XDin5W|uH$cbLzLKi++d0n=~YH8s=!W;+VFAvXOCinQ%SD-zS zzuND?U%0ye02-{k{{Z+yzu6xT{{Xn&{+cV$9?0MAci^wwT>k)#R$68L97Ou-?Thm7 z+b4}~xU0t9TEX?4bo~LWv9_d7y3@)XQPJGJ#7|Jx_Ft%r@)z0`PmUaYCV%j?f8!&H zb~!yhYQ4|+JU_8~L;c-{=(t`O7+&c79v|4gB7W|}^js}DKAMa^r?(e?{{RR+qgtmI zaAulZ?;?eTYT>hvXVeWR?4}pL7w5O(1O0J0S0DZof0la3i|T2~>Etp!GQFYrJ*WC2 z{yb6QFgE;1@8#&P zC5*3Heh=_RiabaB3h(9Ut@HY8EPcO37mGg#U;7Qff4*-20Ew=#QT~?v8UFON5BWNe`YUP8J!zlmzd5~&wYTWr zJ?PfWF;7;txw5J7^375H6(+CK`CJW;1aQ8WcS`QZhV*+|x<*-Eg^eaXh9eFQk%GCx zVP&3PS8XuIQThG&K(rcEIOl}*mbM>#r&P9i9ek>iK7W?|3&;Vnh3=oi4@6Y7@cOUk zHl_1^L{LA>yf#=sgN4z@e`I5v{m4ln5+DK;#X0ySS)G-T8TC~@PsvQQ<}g%Xjnj#v z4FVO6reB;u>X2-a>a27RbaYn`3xF`ukJ6(Xg)q_#kpWR48VK}EL~WHYz~O_H z7c@u(!bd`YPG&bi-)yM?i7p8>!?I*xNiQIerOx+2P-8%e$y%O3XlQIRp-w`yG*dX``ISX# zBAfP>^dU@x0F9N5_u0tv9laBX=B= zb6y%inO9vOd5!ELH`6r@5C_$0B&b)4wNEZa!6!)@mJG#G(yVI0qRwZ7})wK&lZ?u=Ja}l z&uBY81!?8-Y8IY`3gYZsSyhg}g1L+67nOPfWG^%1V)Qtw`eYtc`WHK82TiOohX|jF z>$c-*E3w*B157UEGWSQ=ykC(u9*+-ob-Ol@yH!?sc9xX8g5noiv}8C9CMS#cH*twIS>YNxoX7Lx-Oou7CjBTt*=%+;Y@|LgL#N2s9skk-Es0> z>zdH*+g9W`z;e^cTI*DG#b;EUbRCk@SSabY56rysf~85A7|N_;%H_*>TGK|1^7iPv zMF8C@&^ia7RAPEAD@V2Su4#e?D9H<5{cogQJk9}zk43&Q=JRE{r3c@6E+xd~Re^#! zPh?YI8Qk_(3SvwTwQY_pEk}|g3GxY@{S?|DLJYLd>hztf<>`f6nGWu*0v$f7Ie^TS zHY!wYuAggAJ(!)xbuE6~t*J`001T`r3b(Lwf%mOdrteAGO$SHGW0Yx))s@w2Q-_)B z_p2(i>3Un69{mH4g0{0W@m1IuxpgzOR*+XdQR(qz_jNkWNu_!RM}ptAb!|?Nr*l{gkmCpD zyE{o2G-LK)Pt9-|WvV(P+`#QW^`5B>g2tdQo_9#Qw_3$fnR z@^rdX{{ZrYpRle1lbcGNYl3CW5Z{XWUxkgy$MP(WCtfT!ZUByx9pQ2H+UiyTt|DIP zXhqdSRY}Vd*$c7>BK;5gpZQbR@C0OzMV#y6CFaK{YK;| z)OfL^Jhu~4qjGx%>hb>oC(m>1-C(Ovkn+r#g{92pZ7O0t&|H4S3uZL))qJ=xPt8^4 zb27DK0K^5g>O4P}%hsG_S93YU^(3gZ!XhWtMZ}Z5DN=^gd)x*#SX-x+BV87Gblme3 z`W90!GT}0=W8GSt0mm}g^m;bHIsWxc!%>XiXMYijow+dL3~V87ZL?@InyfgTn5Hj) zYo&k@^ zoqNHK1io{*-t8vdlil6)*cjvXw6Djl*XkFsMzQ$Qz%4YLWmr`4`n87;L>i=9NB9cbeo4Bcgs&yc>Ve+Ljq@JDrF^J8lsyIx!!*mH@XA&WyEgpre>JFVC>--{k!~y_vExe!*j1 z_gkSv0J8P(Y|j>4uJa3n1YVl3VNX*J=+$GDP*clQQk$$%&7oWVN{Qym3xvog8a0Lu z;1Ez6fP3iv?2(%iLRta`x|7VF$LV)}r@;8<+DzqaWXQ=UP$UD;<+eoBKPz_+a;DG|obHr=A{>QrW;kzm&p9P1^X2bqC1=Z<4&( zCz73Np8Wf!aT!6{Yas18SEygk`pGpS| zCQ9LGaiwQHXI_H5O~K2r?zwhJMlzM0xRr!h1kcjk^|C>SVte56MffBhBB4&dn(kxCz@6o$0Xv(#w78 z3maoN%?$b8RlDKF$|D~T_fGR6E!`cYQ}H!>V;bb2<)(8E{IdGNlE?$U=k${ND2giv zZo^Bq&6_EM^bfF+Zn@hro6lZaVv~ShiQN z;dbwrVsuj2O;xUMeJ5Pyq0^%u_NY7Ihe+phBs_|EP&|uzq-ev-taV&Ru!Z5{zWu`Q zesXZwfCd@th5o$Ecu711S7;SpL`}B-0S0-V`La!mqGlj5S*M~qTY51qYta(l2C53@ z^?4NeqWBk5UNmO5v+X~-UG(`V-*bL`aEM+d(f5#p$%K{jd9@U!K-Al<>mhF}VmzI; z1Ax0>Y0ou?FY)e&wYNf}Q?84*Qel)g0kga}?3_sV`Rqo5XBWeV{^BXH-l374FoLDK ztU08evB&opM2pZDludTBJXY&;9d9o}YAZHxqp&r>3?3^z!9uLB-l;J>hrsEH${k$>*b=c?WT#5}%s5jl@}+D0?wPQ^%y6KWRbb z>tvNqe~zg_?}{y*qiZL*4fmRYXjz6BjuXjZ+7$!e0|>ay^%nzzKaw4nMGh&#)W2cM zFm@ay;?%~M;nF@f(SfEGa}06*)AIY(oRhxvbD9G%T~_T@;sze6TE*)M345G3A)v$pbN6kdzhZahdN4=?^{KF%O|;8CcTOgnGqd3Hg(*E02Nu(#xDF7PH84dpw&LXva~-=MhJl{n1Vj>WTFU3Z~%QZt-m1&g~d6i_?U=% zI*NS4>x4=NoaiGx_lI>U9RF`M-|z^PN-p)Vx1e%WVjn@lC_Vjlu&HLJh@>qB9#9*^ zDO~nN5lu&~BSPm}xL7Z?jhhaIliF+sQ~fQJMYg`i|4)$7LulWrg^1SBm)mc2Y;}{YY|VeU=w=|C#zH$_;b1wr*{iWUOp-$VbsWsaG~XeNEB=?j1hoZO&24 zaAH`Ya`zv15@i+a!DMQH^268UQr#pNZ!e$vZy9iv-8U2m2SpohYho`-B zP({;l!IxgWw1;_QFlqM^mfx=&z)jCu$Jb$! zVGF+>W4>aqwfAhDE~cPpBXnP{U)y%rbI&0ZV+jl1w_p|bly@lUqyOX$q;s+=x? z6P;T`^5}@t;XqEa2jywz@=FX`O*7YionesVwe|tZ!@wp_Tn*e-$XQ-5A!mAH`?2+- zGeq~~IW5V8c*wy)$Jo+OdKkTR&|kSFF7;Rdw0VJmMuy8<6*xc*{dCP9hW~W`k#`5x z9Ya#YiTIO}|1XxI&E#oEOs{u!o%76}O@)yb7e{!;krH_y64;0cjCaZ0U!qhB_ zOqwh?MoRltlUKOl*%pXE&-!m!y+UxY(Y+Wu`Br@czP~fzX|u^)AOqOu@M+lZdh{r* zvw6UCc(bC5|2EhRB+TyrJg&F(%r)Kh(vnX~xph_9S`qKSj%%4S)k;xxpqnrF$k^uhDN{9yAFQ z1z&t|yjJ*dtjw`6E*+{0{P;m)H4wGw3aI&%0QnRdwo6jhcR!v~xxm)#Tkj@I`btYK z%J)qL4Jn8X^~WzBhwKOiH2#VD>$aEfJ|q<99ivu{pSyo1uM0i~tWhA5WTo zuTRRjPV}d4_7>uC(f$y!uL`#8N}~^Q_y)gRkYcOT&Bvg+&zf-BB)cpn_xA*pv@x<~ z-ZT0m(huwqI+Gjv8lzYZSPTER7b8NL8N_<{SgmgXXZ(W+yxX6SEA~R4%|MXBe^RVtuPoajeyZ)%NV^3XOF3dOb z?{%0bX`K^bc%JE?Q8Z0@Ss)*p70VTj3xq58WYy>6_Cy%{JxZ^Lgj1zD(#iTHevJY-AOsO#K6(@>zpuA}O)`jl1hU*bwLC$L!Y6peWs=u-G*H=(Q~yE?5~Q$R=Y?4f3)mBfUS|!;}k;O8an&(B~!27nBYFqtsOTa`Q5g? z@F7UT>j-sDK@-*V8WI18{pV6R$qYGS#6TE~W77D9xL6s3{||sHa__}DgpY~fvIXDy zSBB&JBTFEz8M;Z32Vz8TqO+$VV`{u_-n#J{1Yd1Yt2q5X!StIGGbabIv%bQvuqu&EazELs*-*k6%NWK1NI{Qb<3M}n6TW4T5sBu&VLfJ+ z|EFTswdG0lWXUish!C3fPZvD4b3fd}>y)c$}seJuOj#o6wPimhib3ZLCIY~F`EsK+@LsTJLR#HL|99HmgG zo!~{Z7xsKBu(6+*t+V%4I#l1TA~eT;$p_)Uo&qJWiLQ@h}SzRYgH;J zhFpWz*F}eAAFqsODiOgf<@?SPdCCq^H(x^kqkjNj@vTR~9NZLkfhUy;e_%)F_}aaY zO@_5V!?oS%2kweD6(4;CzS{&Y952|H&^sjeu~Sr8x%1qg3~D{#mod>9kYQA zswa3K<{qMY*-juBF01ZWR73m7=S3vvNSo1&)Ag2|zm0Wv!Rjjd0BrQR#8)vlrqrg> z;~dZFh&J7SfDBiEyV~_2RK}AL~iApItnoWL95R zVy3*vdv&EqHZu4=GJ|iEtcqo6WDi92nlryyc865(J&#ZnJpS!hTBa$CqxTG5_zUmF z_>~n^<)>2Bl2l|VL%9zf95gI6(Y_RLO(OYlrtQJH(egpB%@W#Ti+2{q-!E-yV5JZ; zAiB{lcVma-{{h~jAyTp)@oxb80iKZV<>N3Z(%4d_DzGH|Z&o!Ed%H6?{caK0yRwqm zcSs|;3BQCe-%Xt};pWxkvU%VzBt?Y?tbM6Ces>Urs*TLu0An(clZ+aJ<;8NNx@sVX z>r}s^t$HRgivuur38xV$IG0FDq=^sJi2i8QEf&~>1$YbwP+u=l=b0>pbjZRi3Py3U zy%k#Aqa*l~)vcJg_ABd(8EQGV3nu5QTVD%l5ejja403w0lB++@R%fYR9b8J$3Kn0= zNJi$0r1s>A%2Fm?97n|ihLIle2zcjA_c!d>97Y?18jpIlp8{|)Sf2F3mkT} z*qPUfa3GM#80qwO{$))&dC%$UW$Av@w6z(ly0X8-f*U;o+S7%*LZc!fa$UIX&7g{L zwsw!@fg?J4JmOaKaR(zyyi#Eg-}*_US-~N2P40wJPwDXXQVUfwRUez)+x~ZRa8$Sl zEN?u4dKKZGxG2``eYjNdN+NE}K&8(}bk&C}aUT$XS>$T1)YlSUEYL+#qsA?K=P%eG zzn`5wzkxO=mz!;m8ER^oxZb_}Kq~g5vj5z1+}no;!FnrA7It(BxuCxY+yFRdN)dU8lCO9!TRmuVwAUR zLvC!-Za0}x62+m3$_FEE88=4*3o6ntL&LiPV4OFu85f2JGZv3ovYfnur$ixeUjok% zvdH3L*EP(=2aDdS!B=BeW6!#&-QI3S*dO~S*=-b14nzkW;qXaEm$B>^Lb=vRq{CJ< zbk7zoT#!A_Eqj67qdc8k6lHqD+*@CvpfmBWVs?j5UUT*b@5EUfjD{@gm3mXr=aCO) zPY1`INo@1}3aI2gj|vc1W$#7*S&5MK;Ge@DGi0@B9_-FOirKgg*Ta^`oSNx~xVLUD zLM1g(VAkm!5^I&B{+edL&K%pVt1%cyP&~QHx}?|mv?&zcFU-y+T9nsjGqeqBr7BWL zZ)nuU7)hg5DAxWR7vRT|MZP!KQmAyR{${~b*3ei~YKKXo+ZAkL?_!|;&1n~MrHgLw zrJO6;+*`e02qzFXWGhrHH)J@0m-=10FG%`Wi2MDnf=n4rfVhbqXftus?K!31)M}+t zJ|*s`%VKR&uswi9Zm0g}x&tum*)==P#2@ode6Yx zb5@|J&Didpr{FM@Ws(ys8usNB@@BeUS3pD%(9Db(wpmc@Uj_=(wE2$pl<;kYGAqM# zIfw8AB~?B8j3+jlaHV<{+R~>>a-mWzN#)j34TvSJjnYaPXZh|o9Ilq{(V71M1t}{Q zkFv)A3%)*aWq978~^XgRtA1TO-@hS4I|3J zTPi>^*(MJ$PANiTLJaXr%%0l$U)IM6aSX$os!TRmOB;FvH{>pH@Ypo@BR<6oBJ>1|M_{Yj?>PPD{L|+s}eAYkXr%SFiBTMWjio*dI0rURIW;E7?k0vgD~Zdg(sz zr<>oZ@ho8uuyHSIQ0lVlPhtz`YO@IX_iQIzGD1y6&Tso12rA@K2%O|*`oj&Cu`Sw3 zUJmLO5sP(qnjJRuu1M1#&U1nhD(+W6%;>+Fj+J`xGCqbf^eiT zn_|d)lqLQF91*w5;J?3#*%z-|dKvqXDv$32lsaFQsJwq%uYiWCh~(N|@uUl#^LCialAqK_6s5dP0b z_m?bjM*joch|ZmioU6G{2>*Q4DBp>g{C?yBFge0`%d$E~Ht%ZjER(^0n|%-Oaa5zk~k) zPDzLn-mad+K_%ul!CI5eqjUjLsft6d_EE&R=kSn3hn;%h&qdIMB7st9*B~j&u(!K> z?xMG=(HzcsIKE?)^0kMz$&9O43O07>v+!v_b1_K4N1pp5#BjkS-J4C;3v0yPtA2W8goi!YAS^r<~JH5^c)XH2I9Ow zvBK;&;df=m8?3`Ah=BsZh$39Kku5f5G+LQiZCAz(nE4s<+TQH}NcFiEw3H~HU( z`hR~K$2Nt5Ct&|ovDPLv!z^EzVZ2qNMn{?BhXeu;^%fyAxMp1*Sc-KLQjcq`juDvi z!%&{65~&C0utN_g6{Fy)5+C8f_jRB*STsZo2xn2~nkTXfHNKq};Y*SUpblVPb2*9H zqM9L|qSR9Ve)s@_{&wm3niiAD5gaRj5dFiR`#Fibdg-pJZh9GX>Har^MVBNy0o)&6V)ehjhn9|Lx58QP5iRQ{Hn_LSM3_`Gc-4H9 zIdar)@!C6)wK|1l%l11n&cb2!#nyjqt}!3WV2y_@o3*9*H%S341ne}gkevdGD4BRP zseMvJ+A0qSgp)ok(J40T0(E{xR=o4hiFbL2Ku@e_q0AV`$vdKJQ?1kgOhjp5D2yj1 z-Ot0p*=M5K4{QFlLC;kKCWv>LHwT<&7u9erzR|kL2k!@@y20bq2D>!+hLgJjvIozU z<*{zwFwR2`QyoQ6Z?Kn?YhqDj>NTerg33`{Ut>lXZ86|w$mD(|V%+ts4uSCuqHJp| zy0#&s24FFd2EGvl@OZA6+Np)~W>JS~FBnt3iN@(-$FG^5Ye|?td*>`$I<(DLfs|V; z6_|$70;lTJV>tyKUs7C#%Aa{DSFUail{{*46Sw>UxNv%h(>X*fvA#VPhs4G0=gwjO zsKawc{uOYFsCb~l)nV4$WAhaoJE3}us_y)2PAEF=G+#wh{A3oHQfdH(N4Lxhi>-V63*ijM1)G(=Oqg5j>y8kYiGp3mqyW z@o6ks`(~+k-GOk1R3qPf(Zi@Os!4;Z)5!UdMr<&cYHF;#Ge-EUB@{}bFe^I0eZyv{6|b4)+$4e(icHy5ILNL0EM6;LTsXTvMD~e+ zG9ZvseJTRSm<@s6Ui*WEUu~46TzE0q6gUR^DjeERCWNfKR@4Gn7O4985=tiDWU-)u z%t_~xE-IYgz1)Zy_{&o%)2mXwXMM6vJ@*gM-X*N87qk>3jm7RQ-E>hok0Ba;3mkQ7 ztaDzx3Yqfr!vN{9mCi+nNuR&SQzY%5?UWwZ8*Z<($Kg4h8RyHF>@Di$xznfO1|7{T zFGYCisRn_Qj_kv|-WyM`3o_w$`}`g3K6s2C{WW*Ns_EJ%tOsr`{IHDvIy~AOvrNaV zu~{@9=Qe!Q&0FDF1W0A`>0p_IFoSwIvsTYuLAjOx_U#&1=0oM@o7e)UKd99&XRKwD zo~U@jr+SdOlDmOFny8-B4cC~WtfTj&*7xkWFS>Qn5!DMO6CJ86PR|@g1EFIvA9;0 zF1K+faa)!yxj=zRzur%V>p9-8JQ4}eC$s}0hKt-o6;*EQtDoNG=yY2P_$yZ)h7jNk zmm($yEhd{%hswR0B~D?xULR|Q;QhVsEjp1+NOKrAK!lWJ`v(xk`HVcHo+QGA8PO<3 zqmwmfGVNdtHNK{r%j*@s^59(gT5BbsUJPtiYU_t)DId%cl}@{ziV!WZ3N9W%OJ97! z!(!5hi4b3=b)#020E=>9>%nMq3%#*3E_~ z(K*-ifCD3<#~i5Vr`8l<dcWZk)Gr$*A{IkGcSRL(eSDOgGaJk4y55YE@(|Pt#{P|0^FSp&pg!6Qmd&^epc*t>tlkECZZ|O1c6X8e( z_QO!tDGR-H*UWVq4S|eAbyaBea9u3*j>Gyfj+Kj#GAcf86fVM~*heg{d!uP@P~*(q z1*K5?@)st6O|C#M%ok68*+QS%Rz1J(d=EY|nLXXKun&|Zra5Kclly<)n7 z;2+r>cmCl1sx6v+wze|e47N^U&pYslQ1jF7DaeV6WCFH+jF`MDJfkB(3LFaFybu)G zGnzm)8BaMiQDcQ$OJT%*{1`_WyHPXun%XWQa5%=w-_kl8St2}e6Bnip4K!i##oT|< zD)IDq{&XpBc2aZq;~DFT76hCU72L>DhDIm##EBcOH4*EDY^ejamiSCvq zZ)D*=sr03be^)O`(bHV24=3-yds| z$ueXRyxj!9X;|-GP;GsU9$ic(Db!=d)hJtpe#Kx!5jBn8=1lkM_tu{TzYiDdG|j5~ zS`!OcNiMWR03Isj*d8wmgFj3fifJ0Leo8K?I3-p$ze%})L+>^|kdZ0g?nhzA(UN^I zhrLJ4fXS}Jw5Hs?Q#E3k+3T#HAc_Egc8S%#sZ&OM` zoFTM$hEpxn*Z3cT1Nf=%aJu9*cfY+i-yM|t2+489VA;T;%pDRbUTREM+UJaY=vcl!?B&mi|3(r))xPKZ%9q`qye*4-e zs$N&8@O@hsGiD^#-%G>t06uyC;c{zhd#hJn*gs6NkTaHrGQE$Zr47zOwUk|fH_8I{ z49xV!$EnL(C#pE+0HjdxJAOf(r|C<&bkE-4DBu6L!#ahVn1 zi73kBgiPm6s#Rb>ouQ~!@tnxvaqZ>nB|0Dj)=6gR_v|Gq>CBY$?2R!2RzIo~+ z$G7Av4}JEv;%B^aTqq?XB_nJcElt|Efw5Kjs=D4FCovrYYKTZ#NYCu}(1goBfMB*p zwtxk*7fa=%j`u)7!Q&SbquT*S_Uj!acc=P!)`GHw9$)$5NRIzV9vY)CVxJ~w19dS!&)5FZ3PQjPfV4sQc3!p>mns+*+pNri###53$l-X5`c)0FW zyZzU%2^TYSi%(C&m2UGHQG7-2Q|`-cr+(sD%LX^cjjgEqKV%j!IHfVD-A%QKcO=ldPrJC5!4l(+EuPySojVoBr*845VjBe7FZ6g%Te zGL%>Cb2^iJC^kBkOpsO_>%B7g1@&U&sKCxIR}*vz@=KWgoJoSJUVb_v(!=sdv1h1_ zYdK4mf}U^fClkf8dd>V-jO2q!VBTM@>}%#Pcx}f815LHP{tc~QIV#<6Whz8nDFQ8n zFrg|J#dkQCc^e&F+l&zYlke>swC`(SdASDMYZNl+6k)^^8t>RmrHtt(YV) zN*`w^kqvp7!)q{?T8{RszWUw8p510L_ZHj(^-vV&%{}kBg?K%RvP117u7)d$A-Qn- z0xwEYFE^)+BGd~Oy+W9uOA1vV(fz5Atn+WQ(B`q7@?JEQKqJ47*$9|qfTV==tvEvl zt-JR@z&QjdBwJ~R%PyT0ty%_&Xm z-$jaDRFP@l{p5BO7!KrQBB`&;Mo+Pk!sm*wY-xs?^{C32e+BFbUMcNSJu+@BR{Ga# zEmPG1vVX7@K2%|YJ!ABB$@$*r_=b3~J$X5Kj@|?Zj7{ZE7~RxKW`2mLdikpVJW58UT#49JutRdAvomS7N{gQU83w;)CobqLwpe>bbI2&^kgg)bA z-6Yid$hxg4F`;Js^pa|?#=d+H&-j&On+t%R<=S8=V$bS6-xX?tIfD01Nh}uieR2sM zqM}wFW4}UD(y!c`-bMj*O#8K&+^A8I=*GlEke_=Z*9 z^14|lYY!sexm6}rMrorK#-tB1{p0w&Rec?_=O*ds?`vl4E4ogG3`Sop5GyW*H`#EB zw;qo${*CH!FGTFLf?qr5Y)(eMw)wTR(ok?MIw}T%M99rsHW_bcEgSHuQLo8dN>~#?FAm_?jP&vKqjt)lCiIA~#?6!;EwuhT zu7(*npF}*9E0~{{1btFy8WoCwH-DzoOAtDzj|jACIj>jWjDncI&LU_^L_22Nua+MDpz!tBi9@;@a~)tR{cxpD*9w^ zXZ4A_edg*5cz(ivH|w^F7^cxqchXyq4TKqHXq-CqdqL|`s;;0$Z9w3V$k3o|RuXe)w5l;ri076pt^Avoz9K zcZi|55)Ypk>1=e8oN-0dZ&c{16p7|ljMio-!G8NV=foN7=Ue=e6D|0Q(vrQzaKEEU zKc=|C4yH)DQl~hh>8oU`x0{XY_UgCM3orl`;4;Rbml&}@ex zA68j#F&KvFxq9(uWC9229j!Y)H4lG6!Bo4+@+>gXsqLt1s%y>jwAN@s^p=_*gJeTx z@zUtC53o0sIUQRqU*DMyheQRpsUo#&0 z_TWwQy7#HcXqg=B7&qxM``rece+b8`96YO*uq5Y$og!b`2gWXY!#}7opCSuBc7&BX zuA9@XsF?4^n~Bh2yV18`4Da4K1T{rORvOEMyRrdw%Ln)DqG}H>fX5M1JJbb8-Sx}0 zGXkRP*eP?6M>dac&6Lztv`%a)D&1HKbDzqjen0Z_7-Yoo+=r+1ATgp@&Zf+=AtAG23GqfaL|?@$0gDN3`v{awz(Fn3Osk33o76TNkRdL&sZpqwPuAq|!#- zDp(CbO>6YOkE?N7V#2Zw3l|NmQxZX%@fA_Hfu3ubR@7$~8SS%Z!5zxwguj<&wAEDYfus8TX*$s+Kh(s85j277F-RKso9VxvK}9}9kxeL= z#>_69b*_UtAM_*KuMKUDCN*5B`aU`}tr!C*Pex zPaBGBve3YJF<_~$aAG>xrDjS^=yKfZ6e~xTI>bJ6kN!QG&^?RgZ-MBc081VW7pZGt zI!_C(&B-zaC=JnnrUUo1w+6Vg5+QrSj6yq3eGbrb4V*>9#pId-91EpTrArExh7$+L z#zvCcDLGUyTWoQ43^@HWf5NCs(1F_EZ{s|fC_-Y$34RR-L&awuBeF!RTWr$lqsz%C z2;bA{Q1(SL+kll-3Ud2Px^Q)UqIiyTn_c-JszRy$0OhZ*nJ~NUxtFLxEi%RnbohYe zbClT}S>cl)J1v>n(IL_FAu*o39y1d~y8HR=aeZ-y^(1$1a?%ilWOr&Ec<9g@v}wz} z09DwZG0vLb%oGl_S1=3R@`noABObYHOi;-^W zNb(!5>xeLVEIMquV%1uF6u4*_L{wV(Afn3aa5(HkqFYO17DOA}dvsrZqB)93pI53# z!(~#8#0U=k0fjUy?tK&ye6e2AU6|d3g{k%L=Sq%yZ*aS)NEwOFs z)HjV9`g`A~8lg{yDnj3kdYsHi4b+p!%w?P=M`peh}&s+lYX)r4Mld+ zE&3TcJ8Fr7_qSRpvPvUczD2z6>CnGb=wb29=G|ff#7Dr0t^e{!Fr`E3G-c9g&8z;a zrbEf_IOs3%mt=Yp*m)}Dw8C*6Mk6^F4;C*ybn_{{tTf(%AG@>CU$=U(y)-r=OkWF!2{b+HY?&c#GMJhxT4FdW=h7)hMe~6wDXm};kH%``^0>&qMsG$k0Q;(bZ5%a`vP`HaxeTf|jTrYk8dY)9k;T`1e4 zBg$r6N;?TQy*a>}=kARh;=Wc!v&6~BJer;M5dn=(4|X3notu5lql=W61$%Qh9N$%2 zd=C zN@K{;j`&4J>nfva@3#MaC@#@;{Q5oTKE>NSDm2Gr9Cc!?v*b7q_;Mri)%6 zu85V03g+|im^OUL##GG~-=Tq39p-8D6EoAVPjuw^`2#*wrOw?g@X{p`_lwd?g{Rxq zma5;;30H_c>!X$A5!Vx@cE{5(ml8OQ%lK-2$_-ELt%Pz)bbE$ill3Y*o7eDi#G!Py z3@Blcd@HU6d;$e}y`1i5B~^H*7ko+mulJSD^=FXuhTLJNSq8BE9*!OWMjeCxBv9ZOy z<)3zX(dK|~aCyHzFqJ&h-8_!*)|fe(MV~A$0$%-oE`#foaj!-x&rnhza1WVV6G#l@ zmk*_9S5FZ)KW61Sw^FE9`Ifs|vQ*5xe{iWhrC&AH%+*+g?k0f;o_xP7RTb3f!mqqe z()|nw7V9(a`+Moa@lpSDU5*Dmv5b@Xc*EK1-!N4~JwMwi--lajLZEtltI@OqF9gqD zZ9oI{6;}TTd#c|a-eTe+Ra=>HYpDBJabRfpsYrS?LB>EiK?c;t55NLcm}1fS3)Oof~Eb4{3m#me(oTCx6R&?EXn zO@@$HSbMIZkCKE~vd8&y;pVBc>+{F<>iX#lR*=ckr{=oyso_MM-(oS4W#UZybJLuT zS-+8+Hf#s2XhH62_=K?rwhZvA;nzJqr%eb2bs z4HhHhCkubL;fGkkhs4oL6KsNI;ZS3o`@kEoq)=e}-l@}hcW4j}N@*}C;<(iF1bumPnD z(^?v2Y@08W}quF=U;R%1Q$L5@b$I1aH!TRI)y;EU1cuTVe<5WPJ>M*QZY=+#xljjHHhJLH@@IWhVht6QNxq|nO4Zt=gCq7n^`QoOGDzt zEVMuuTQBF$Y zXpgCt8CNciC<%2Y3J;L^42%C^ZwT6p6Pi=FU*LlN;z2{A?Quo%5=g_!g5@nK>98FI zTAdlLWVPdJFr;T$qQEK{3#$fhSF$*1g@0O&AcS*dJ<59Y{C(vkT2i?Lg15}rBfh*X zlR zoS=TSrl=m3p~`B$V;Qz5>I>US;CVm+N zJHaX>Z}vMNus??AV+G$Ear@u`o`bm)`jz5=SPIpbgKcDq&r}NzVcszJ}fo)W_6C3@B*#N{=AwUwzrxRvM!CQqYC~G~J*pX7Q(l!Y{CO_3O$t6${ zBVASsZlZ{7KGhRmMBHIHEhxmn*G_lwFqGwH24tw2q>IkAe)?LF&hN8{x6NIvOG(RV za+SG_y^&%~LD3X%KvqFl=M&>`%-2qX^`FcyHBxkwnVENIX8u8>}y-&swzny4q+ROZ|%ATZK{sBU0Dg+P ztswV?q?6L|B$JGi4lL4lxCchJOP&YY65tri3^odx>T|+x#|x(Von~bP6Xiq1iRv?E zFWv)E`}2_r)ICP>C1v}WL_aCo5ug&~$zw>EXZ_(D*Mqv(Hc}F=QCxnTlDFNAocT@d z4LRT~F9Xb`^NZ#_(%2wL(3aj?x}}wW&B^NEin(4rN4fJuaL&z-ehtMQEgnyQp7az{K>t183s2og}@A1YuGvEicG$R&vh7Lx3Q^gX}6d9C4hTdcJ`RMrE zDYnQnQjjb9OtN994>^y^M(!#{$_^(=dzPBJf+t>NGQm{w~9)KZv&~M9T}E!b!ZW9 zjg;_IgumvPp7E*jp_f7SXI*c!@nNYM2Q5^$>HaesP_vW(KpFMIBI%m>eoQBdo=k^O z3%iSfCcP%Oms-4^pHurQw*^+CqsIUdBTEz@b{Qp+_h$KB$)3+QT66vutZqh=50%RE z{{V*K!gy6Uu^1~~>v^P$O5RMEH?6pCc!A?NTon<^UOX!TWP&T8y&qUsJCvt~UW`^h z0=nWtwtp>+FYx`Mk@JAEbV*@3Gm5bUPWw!UkkUA(#HxCaO7Jmh@Q(8gA~mmwB_~?r zgmdL1<(g|rSA%;q8Z9WoQ)W0aiO>Xj%|6~PzKp4i|5A|nD9n!;Q>HyrY^3fcvjX_S z(mjT66~_(^;K%f(rLgZ3@Nd(j#&K+B`nnKeKaov6!l9;{cz;-z6=tDaAfx${;WPpr zd6VJK`=(g`EZ0rJ^pda$g)Q#VS51fI`F|(M>EGe5mfG{fhODkVh(&M`Zdksf-f9Y_ z9WBVV=El8`Yh>~_!^qlrpYy{7XKaWUCc9uuC=`i$j?Ase125&qwg1Le5O}Wml@UeE zoD(e8pn8)efF@K(^1&4eDqJ1T%l=L%fGfKU0VGkb*@lU|Q>2a%SAtg|@)?E9_2ll)YqsM%K5Ua9TO-_Kvm*=V6Ta-1)^!S^FM zAC2cNi?~3+l)a!;Ox)e*2%gu$-?R;lgjY63QR_}cDy8dNt>GkZ0pY%8UhF<+?&r?* z@>O*BLBgT)74`e-iByC4v3g)Q zR2fq`%rh>a+6gS!!guCdDTKa5(_P%&tBQg7eR?_V|R!ty>c3}pejh= z7YJ|`87!GUF0`}Jr0ii4XjQGuW);pv;W;FJ^fjrkM$Xa$xD$r<<{&Lo{Ybjpk83p| zVN@|`1_LfLEt`$KvYUqU*sb`sZq&L#*aMm8r_x!i{P4gtOg1&Q z!(1NY`vcZU5|9gOONDaWZ$PNl^@z0{Q&dy--{G|LVJBd(&Cy&F0*@vB<5eRzEcy5b z^IKJ)J0C4~5$$s!k&ICbg^_mLqeb1_iGf}`yXQ=pihbqL%CcazW%Ka6;h%&$qlK%dEEUps5Z4U( zh`>s})>igb-G_?q9Vc(tV!H{=cjpYt99~$FS<|#_1v!~=YJ~x@)tfK*1j(4E~Ah9%GkX_6YvYsCeZk4)iht%>4c_q6OBdkT$qqYG$^7}IE70nSy z{28=-KH08EQgVoPFp9ELxDs?FC@x->l9J+-yt^}p%akASBX9KQoc5w@z?V{^1NYW6 zL()kLrJ2=rmL?fcyWdCNi~DB&E%ws%>rx>YcTIC{px|M-_n$uwNrvB;p(`Qqp`Dr% zL})=O5N<&q?-qSnv2H-V~hZz)6Fd;l1#;uRk<-XMNSI zqWYk_W;b$n3h_pru?Dk)ziJg%7iOb;x?_=t^G8({u**3T6s`F|HNii*D!|$lnat83 zQ(z+tD=AbtDN z(}6C_xkL3PT9f_Q8eioX>#F=q;q6u04!@;ptdjc+s#h(I<&O^jW&2}FqbpNoN^TBg zz;j6I4$GgL+^u-tIQ$_xP_4q87pijR*807)_VX#V-{ew8(U^O zzdNcq!~6#QtLq-z+ECOy4Ry(EojX*vxSrAIO9-jxoS|+?!2?v=97be!XbWM`#oy^0Eql=;5)MD zYqeT7C_e}o)g+YPe;Wf+kKAYQBje7`l z903G%1%7t>e(3)IMe$2O)Y>7J+CyoaZu)g6dzrlVqcN0_5 z>FTvUiBj3LA6(H5=Pf+k!LI1iB08@}kHQ;%fBu2B{{WR8{{U3HP@7m@Ls|(Z00FsO zHwk;JCRTcVL&uLAE_`v~+Z}r2N@kWVEL&vTW>+Gpoqt@LkfopROWF_)T#t!Ykn2cDzA{{Wkhn*A1EkGy5X7u+Y~ml5l_ zWkF9+(|C^R>Vu9)J1$&Aj-bR5)JpwF@RP-D6UGh?wc-sPpli%iyR>ndmbHNQnD0)Y z^$>jqypz>O9s4}z?YrQ9vBj*g#Rpt!dTU1yaV1H4yR@ba8t(5_mH{O0=E3S`Wcc|t)hzJeapSvR zY~L4b?Py!m*6htXENwQISW+Z_AW7xPTyDSZL&uzQbc;SI)Ge-bt35{E{L`gpPMf)@ zK0yVdcAvF%Uln{6;_nA_M%nQupBA-=7W##`FSfY-%i{<3t^oQ*SI)@m(QPrt_ZeH4 zs{O~MRh6l-tv3hLcn)itWDs^Ce23a!!b^`ByfV4cG~-NbR#n@5Vk$e8wJJ0@rG)h6 zYup6ld1niwdms4mW#ShG*>H}ha4GRtgKpX(k3ZRV%mJ*Z-tK6IxNm@Z#6UAx~> zojSIZ>K2!~nb~ldl26Tkk9e=(KLvQjY0JbKXlA6wa#7UnVx7${!#5|o_du5SB4KZic<0q)aJcsp)P1mgSJrgP z%|7o~v8ii$Mf58(@qHo8$27IW>h>jici1z8Y3V)~>fA#5U|nl>?qgpWG-!@ikNEDY zzdBlZc3-T1%Q|~B-vGEKlLUE|)hnM+A36c#$FnKa2M&i_!k&^ANYC4JW;A~9<5VbI*zAU*RADUwXEhn z0OT+*7Cd=OZtGm-vr+kNF%rJV?6t);I8Vo35v}p4#J)p!#!`AB#fv zSM>^bSNlDG`}M!*E<-~0Eb!NdbGZ9;qD)~eU+WFUG5jKmei_7#m;baAK1X}KM4)!xlSdh>ikEnRe6`xysYAT zlJZv>@Ll-LO-CiWyF`zl$wZ9otN}2^S}m&rdMC>Y-dM_sjLI}NtCu2oDF%+p(!~hn z3262}NY3dFqq2K!j?#lDF5NhvM9g6#WdtHUR0#L8Dtp2<8*GuH2cmHU)j5KpAn!7O zAZ0|isNGDA5Rq;`ost9q<^KS&6M%ZBk+4gzstiQt6uo6eKq(W~q5@##DK~wT17xe| zkQ^i`g;##2%nx{|#=?Fn)Rvj<6k7%W-Bd+LL??l^JEaqivWXq?sG9BH%IKUGCl}K^ zvVIFI96=acAMcj91CfV9*b?#Urz4kvYU90Pq5nH7MDKNQ9zGN4W)2{qe}sMtxw7W@ zOzqJ|agUl~E4r5PgvY#QJro8orZPlh>oox;^;aA;Koj2-dOW*|T(WK4+l%34+y%H{59Hbq)v@@^9=C$8aH zWpdtAMy#4{#P&scMvJ*WG~^YASn26;=eV(tEVHWSk{lk~g$nmZwKf1F8HFoIe?23! zfj>2n`>t@Eu&W-~=hbMkswma>kGk)4sa(-E^<(o6LGBh=&Q{tNEUQn*udu^i8zRAu zT2dT30Vic)%=Yv}#kseMg4b+9t%Q}9Sh{e}YpJ{4-EFkHHt)!m^%1(o^-r&&kRZl( zT=_?S897??8uoo6iT4iUvd>PW5h$^*<<@ImmOlg{>XWF~b4cZE$oMXN@Y}PClE$ia z01KY5sN36bqr3HHeMcU?i>uS9wOZG8CkHjqL0o*CJC6K0T^Yr=hPc|0%bHDhcMKJzHqPKp z8r+Wki?&@w&vh(37PxontYybZg~7@39XNBlU(s$D2P>NK=-^a^8t2|E0Q#6+Txt)d zOjUUA1`zE|p)zW}(<=||R<-`|9i-b_a)ZrGf5Qs5(`6tp!(;T-t90lsjVr)Gj6&yPQ@n zM^*YWg)3+cZVRJyYFdLJP`ASxazWj2bqROJe6MHY@JRFdd2MTUwRGtoV~F%wA9P%0 z#FriAJ7@hK-nDShVgTk7l~XlPLGvinbB~}4(Z}P@ay;z*RhLwGJ9_pH+(TyRIua$8MgBRpskV zFQd{NwAyk%xD9u6*kL|ow#OqEoK$k`(<`m%mV*yJCY>6q!~-1eP1Z>)J( zB=ic}b~Ocdf&gsiDps#8x43mbt{XoLtOmVEC!NvpTVsyg+2^lqdW~}GrJ_8xm~1TW zym_PK%&}%QB%JP`a3E!AG5opm<@^U^D=nbcr|}6>p;o9RjrVq1DYBKBm(=EX=sGI3 z$;p#7e}1#iVnV!fTGDIW&|Y(uL>l#d-O22usZ^JS10jvfEV8dRn=bl7wd>wsIKk)? z>9{$r=QD^BS06t2U{$QD0Lqz@ozjqrlrI(OfDnj5KnbK1KqyQBx)SJsa=&FfBi4@* zcw51mqm0zL(rsT;_kL4(zrvOH*1uG}kF}Gmdq42NbGfS7I^xmCw=HLukNB=?$D7km zKWGT#rvGt15r;E-TpkNIFlm_Y0RdmZjsaE}iSmUE!zxC~Epw ziMm(g-wrsxOo=zTP2BV(U$bemev^mC~+k@m{+@3-F#RMn~Yb#+0% zmVM=YK4WuN%PsyRzSZ_`WbI$^&$Isk2Gu5CZ$_=Fhi@*k*gwGy`&Hi1oFsUz!+=^D z&Ga5F({3OA&z!OU0CWE3jJ`Rvz2f@qt-CEPsN2#JPKyH?I{+XrCH@c{W9Z%-@XnGS z4!zZU@(1TOl_!Ju)o=gp;!d$Qi%Z9vd}=13IW8 z(=PR$M$=8x?dn|LUR7-h6lsZdN4UdU2XaVXre4o}%NiGjRu+2ByKh5N<43eqb$Wn4 zm5Ye_lt$7vFWmHjh379|-UPST{6y9Gn(C0LPls()ZUNE)ifkJxVoIR5X&9}KiU zExxp&X>+Oh?ldS8Sxhp$N^KHyPb&nTrf@c0{d`N=7yYjM7yFy9@w&_Ht30~3bJOvs z#d!XjJa7Crd;Gi9yfyJ(ihL&5{{S2C#-MHLJOhGtwJQ()7;NKI)wwbEbXAf~J;lD<@s62}9{{YohIFf%g(0UGS*P++p&mn0b zjE%uwoA!M6wb#5ly|d7`uIj$6!Y(41eNta>U^Wh8j$Fajhhg<%AmyJI-xiqieqW-T zPs18V8E99!Cb?rq`%JuHr&fhgAdcYf2;32nau?+{v;dQYg4(SPPG@dr7DdNW7=dnq(~t4UkUcL@Uv0zOT!v=`WBpT zwf#2smCdatxvg`WWtAEWh!M)}W1q|lIP&qT&mG6+7K5znTrsO!YWh9(dmT>A{$&fA z4&{3twhzKV8xTk<-F^ytacSDCEwpbD*xMWYF}lqPf7bO*(^Z2s�FAG%q#(08)>P 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 literal 0 HcmV?d00001 diff --git a/assets/js/contact.js b/assets/js/contact.js new file mode 100644 index 0000000..57c850d --- /dev/null +++ b/assets/js/contact.js @@ -0,0 +1,233 @@ +/* ========================================================================== + Olzinger – Öffnungszeiten (live, inkl. bayerischer Feiertage) & Kontaktformular + ========================================================================== */ +(function (w, d) { + 'use strict'; + + /* ---------- Öffnungszeiten ---------- */ + // Minuten seit Mitternacht; Index = Wochentag (0 = Sonntag) + var SCHEDULE = { + 0: [], + 1: [[420, 720], [780, 990]], + 2: [[420, 720], [780, 990]], + 3: [[420, 720], [780, 990]], + 4: [[420, 720], [780, 990]], + 5: [[420, 690]], + 6: [] + }; + var DAYS = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; + + function fmt(min) { + var h = Math.floor(min / 60), m = min % 60; + return h + ':' + (m < 10 ? '0' : '') + m; + } + + function easter(y) { + var a = y % 19, b = Math.floor(y / 100), c = y % 100, dd = Math.floor(b / 4), e = b % 4; + var f = Math.floor((b + 8) / 25), g = Math.floor((b - f + 1) / 3); + var h = (19 * a + b - dd - g + 15) % 30, i = Math.floor(c / 4), k = c % 4; + var l = (32 + 2 * e + 2 * i - h - k) % 7, m = Math.floor((a + 11 * h + 22 * l) / 451); + var month = Math.floor((h + l - 7 * m + 114) / 31), day = ((h + l - 7 * m + 114) % 31) + 1; + return Date.UTC(y, month - 1, day); + } + + // Gesetzliche Feiertage in Bayern (Gemeinde mit überwiegend katholischer Bevölkerung) + var holidayCache = {}; + function holidays(y) { + if (holidayCache[y]) return holidayCache[y]; + var DAY = 864e5, e = easter(y), map = {}; + var add = function (t, name) { var dt = new Date(t); map[dt.getUTCMonth() + 1 + '-' + dt.getUTCDate()] = name; }; + add(Date.UTC(y, 0, 1), 'Neujahr'); + add(Date.UTC(y, 0, 6), 'Heilige Drei Könige'); + add(e - 2 * DAY, 'Karfreitag'); + add(e + 1 * DAY, 'Ostermontag'); + add(Date.UTC(y, 4, 1), 'Tag der Arbeit'); + add(e + 39 * DAY, 'Christi Himmelfahrt'); + add(e + 50 * DAY, 'Pfingstmontag'); + add(e + 60 * DAY, 'Fronleichnam'); + add(Date.UTC(y, 7, 15), 'Mariä Himmelfahrt'); + add(Date.UTC(y, 9, 3), 'Tag der Deutschen Einheit'); + add(Date.UTC(y, 10, 1), 'Allerheiligen'); + add(Date.UTC(y, 11, 25), '1. Weihnachtstag'); + add(Date.UTC(y, 11, 26), '2. Weihnachtstag'); + return (holidayCache[y] = map); + } + function holidayName(y, m, day) { return holidays(y)[m + '-' + day] || null; } + + function berlinNow() { + var now = new Date(); + try { + var parts = new Intl.DateTimeFormat('de-DE', { + timeZone: 'Europe/Berlin', year: 'numeric', month: 'numeric', day: 'numeric', + hour: 'numeric', minute: 'numeric', hourCycle: 'h23' + }).formatToParts(now); + var get = function (t) { for (var i = 0; i < parts.length; i++) if (parts[i].type === t) return parseInt(parts[i].value, 10); return 0; }; + var y = get('year'), mo = get('month'), da = get('day'); + return { y: y, m: mo, d: da, mins: get('hour') * 60 + get('minute'), wd: new Date(Date.UTC(y, mo - 1, da)).getUTCDay() }; + } catch (e) { + return { y: now.getFullYear(), m: now.getMonth() + 1, d: now.getDate(), mins: now.getHours() * 60 + now.getMinutes(), wd: now.getDay() }; + } + } + + function computeStatus() { + var n = berlinNow(); + var hol = holidayName(n.y, n.m, n.d); + var slots = hol ? [] : SCHEDULE[n.wd]; + var i; + for (i = 0; i < slots.length; i++) { + if (n.mins >= slots[i][0] && n.mins < slots[i][1]) { + return { state: 'open', text: 'Jetzt geöffnet · bis ' + fmt(slots[i][1]) + ' Uhr', wd: n.wd }; + } + } + if (slots.length > 1 && n.mins >= slots[0][1] && n.mins < slots[1][0]) { + return { state: 'break', text: 'Mittagspause · ab ' + fmt(slots[1][0]) + ' Uhr wieder erreichbar', wd: n.wd }; + } + if (slots.length && n.mins < slots[0][0]) { + return { state: 'closed', text: 'Geschlossen · öffnet heute um ' + fmt(slots[0][0]) + ' Uhr', wd: n.wd }; + } + var base = Date.UTC(n.y, n.m - 1, n.d); + for (i = 1; i <= 14; i++) { + var dt = new Date(base + i * 864e5); + var wd = dt.getUTCDay(); + var s = SCHEDULE[wd]; + if (!s.length || holidayName(dt.getUTCFullYear(), dt.getUTCMonth() + 1, dt.getUTCDate())) continue; + var when = i === 1 ? 'morgen' : (i < 7 ? 'am ' + DAYS[wd] : 'am ' + dt.getUTCDate() + '.' + (dt.getUTCMonth() + 1) + '.'); + var prefix = hol ? 'Heute Feiertag (' + hol + ')' : 'Geschlossen'; + return { state: 'closed', text: prefix + ' · öffnet ' + when + ' um ' + fmt(s[0][0]) + ' Uhr', wd: n.wd }; + } + return { state: 'closed', text: 'Geschlossen', wd: n.wd }; + } + + var statusEls = d.querySelectorAll('[data-status]'); + var dayRows = d.querySelectorAll('[data-days]'); + + function renderStatus() { + var st = computeStatus(); + Array.prototype.forEach.call(statusEls, function (el) { + el.classList.remove('is-open', 'is-break', 'is-closed'); + el.classList.add('is-' + st.state); + var t = el.querySelector('.status__text'); + if (t) t.textContent = st.text; + }); + Array.prototype.forEach.call(dayRows, function (row) { + var days = row.getAttribute('data-days').split(',').map(Number); + row.classList.toggle('is-today', days.indexOf(st.wd) > -1); + }); + } + renderStatus(); + w.setInterval(renderStatus, 60000); + + /* ---------- Kontaktformular ---------- */ + var form = d.querySelector('[data-contact-form]'); + if (!form) return; + + var statusBox = form.querySelector('[data-form-status]'); + var ts = form.querySelector('[data-ts]'); + if (ts) ts.value = String(Date.now()); + + var RECIPIENT = 'kontakt@olzinger.de'; + var fields = { + name: form.querySelector('[name="name"]'), + email: form.querySelector('[name="email"]'), + message: form.querySelector('[name="message"]'), + privacy: form.querySelector('[name="privacy"]') + }; + + Object.keys(fields).forEach(function (k) { + var el = fields[k]; + if (!el) return; + el.setAttribute('aria-describedby', 'e-' + k); + el.addEventListener(el.type === 'checkbox' ? 'change' : 'input', function () { + if (el.closest('.field').classList.contains('is-invalid')) validateField(k); + }); + }); + + function validateField(k) { + var el = fields[k], ok = true; + if (k === 'email') ok = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(el.value.trim()); + else if (k === 'privacy') ok = el.checked; + else if (k === 'message') ok = el.value.trim().length >= 5; + else ok = el.value.trim().length > 0; + el.closest('.field').classList.toggle('is-invalid', !ok); + el.setAttribute('aria-invalid', ok ? 'false' : 'true'); + return ok; + } + + function setStatus(type, html) { + statusBox.className = 'form__status' + (type ? ' is-' + type : ''); + statusBox.innerHTML = html || ''; + } + + function selectTopic(topic) { + if (!topic) return; + var radios = form.querySelectorAll('[name="topic"]'); + Array.prototype.forEach.call(radios, function (r) { r.checked = (r.value === topic); }); + } + + w.addEventListener('olz:topic', function (e) { selectTopic(e.detail); }); + w.addEventListener('olz:prefill', function (e) { + var det = e.detail || {}; + selectTopic(det.topic); + if (det.message && fields.message) { + fields.message.value = det.message; + fields.message.closest('.field').classList.remove('is-invalid'); + } + }); + + function buildMail(data) { + var topic = data.get('topic') || 'Allgemeine Anfrage'; + var lines = [ + 'Anliegen: ' + topic, + 'Name: ' + (data.get('name') || ''), + 'E-Mail: ' + (data.get('email') || ''), + 'Telefon: ' + (data.get('phone') || '–'), + 'PLZ / Ort: ' + (data.get('place') || '–'), + '', + String(data.get('message') || '') + ]; + return 'mailto:' + RECIPIENT + + '?subject=' + encodeURIComponent('Anfrage über olzinger.de – ' + topic) + + '&body=' + encodeURIComponent(lines.join('\n')); + } + + form.addEventListener('submit', function (e) { + e.preventDefault(); + var valid = ['name', 'email', 'message', 'privacy'].map(validateField); + if (valid.indexOf(false) > -1) { + var firstBad = form.querySelector('.is-invalid input, .is-invalid textarea'); + if (firstBad) firstBad.focus(); + setStatus('error', 'Bitte prüfen Sie die markierten Felder.'); + return; + } + var data = new FormData(form); + form.classList.add('is-busy'); + setStatus('', ''); + + var done = function (ok, serverValidation) { + form.classList.remove('is-busy'); + if (ok) { + form.reset(); + if (ts) ts.value = String(Date.now()); + setStatus('success', 'Vielen Dank! Ihre Anfrage ist bei uns angekommen. Wir melden uns schnellstmöglich bei Ihnen.'); + } else if (serverValidation) { + setStatus('error', 'Bitte prüfen Sie Ihre Angaben – einige Felder sind unvollständig.'); + } else { + w.location.href = buildMail(data); + setStatus('info', 'Fast geschafft: Ihr E-Mail-Programm öffnet sich mit Ihrer vorbereiteten Anfrage – bitte dort nur noch auf „Senden“ klicken. Alternativ erreichen Sie uns unter 0871 72617.'); + } + }; + + if (!/^https?:$/.test(w.location.protocol) || !w.fetch) { done(false); return; } + + w.fetch(form.getAttribute('action'), { method: 'POST', body: data, headers: { Accept: 'application/json' } }) + .then(function (res) { + return res.text().then(function (txt) { + var json = null; + try { json = JSON.parse(txt); } catch (err) { json = null; } + if (res.status === 422 && json) return done(false, true); + done(!!(res.ok && json && json.ok === true)); + }); + }) + .catch(function () { done(false); }); + }); +})(window, document); diff --git a/assets/js/finder.js b/assets/js/finder.js new file mode 100644 index 0000000..b36db0b --- /dev/null +++ b/assets/js/finder.js @@ -0,0 +1,232 @@ +/* ========================================================================== + Olzinger – Heizungs-Finder + Vier Fragen → erste, unverbindliche Empfehlung (Wärmepumpe / Pellets / Hybrid). + Das Ergebnis kann direkt ins Kontaktformular übernommen werden. + ========================================================================== */ +(function (w, d) { + 'use strict'; + + var app = d.querySelector('[data-finder]'); + if (!app) return; + + var form = app.querySelector('[data-finder-form]'); + var steps = Array.prototype.slice.call(form.querySelectorAll('.finder__step')); + var result = form.querySelector('.finder__result'); + var countEl = app.querySelector('[data-finder-count]'); + var barEl = app.querySelector('[data-finder-bar]'); + var backBtn = app.querySelector('[data-finder-back]'); + var nextBtn = app.querySelector('[data-finder-next]'); + var reduce = w.matchMedia('(prefers-reduced-motion: reduce)').matches; + var total = steps.length; + var index = 0; + var answers = {}; + var pointerSelect = false; + var advanceTimer = 0; + + var LABELS = { + gebaeude: { neubau: 'Neubau', gedaemmt: 'Bestand, gut gedämmt', unsaniert: 'Bestand, wenig gedämmt' }, + verteilung: { fbh: 'Fußbodenheizung', hk: 'Heizkörper', mix: 'Fußbodenheizung & Heizkörper' }, + lager: { ja: 'vorhanden', nein: 'nicht vorhanden' }, + dach: { ja: 'ja', nein: 'nein / unbekannt' } + }; + + var SYSTEMS = { + wp: { name: 'Wärmepumpe', title: 'Luft-Wasser-Wärmepumpe', topic: 'Wärmepumpe & Regenerativ' }, + pellet: { name: 'Pelletheizung', title: 'Pelletheizung', topic: 'Wärmepumpe & Regenerativ' }, + hybrid: { name: 'Hybridheizung', title: 'Hybridheizung', topic: 'Heizung' } + }; + + var TEXTS = { + wp: { + neubau: 'Für Ihren Neubau ist die Wärmepumpe die naheliegende Wahl: Sie heizt mit Umweltwärme, arbeitet mit niedrigen Vorlauftemperaturen besonders effizient und harmoniert perfekt mit einer Fußbodenheizung.', + gedaemmt: 'Ihr Haus bringt gute Voraussetzungen mit: Dank Dämmung reichen niedrige Vorlauftemperaturen – genau dort arbeitet eine Wärmepumpe besonders effizient. Ob einzelne Heizkörper getauscht werden sollten, prüfen wir vor Ort.', + unsaniert: 'Mit Flächenheizung kann eine Wärmepumpe auch im älteren Haus gut funktionieren. Eine Heizlastberechnung zeigt, ob vorher kleinere Maßnahmen sinnvoll sind.' + }, + pellet: 'Holzpellets heizen nahezu CO2-neutral und liefern auch die hohen Vorlauftemperaturen, die klassische Heizkörper in älteren Häusern brauchen. Den nötigen Lagerraum haben Sie bereits.', + hybrid: 'Wärmepumpe und Brennwertkessel im Team: Die Wärmepumpe übernimmt den Großteil des Jahres, der Kessel springt nur an sehr kalten Tagen ein. Oft ist auch eine Hochtemperatur-Wärmepumpe möglich – das klären wir mit einer Heizlastberechnung.' + }; + + /* Bewertung – bewusst einfach und nachvollziehbar gehalten */ + function evaluate(a) { + var s = { wp: 0, pellet: 0, hybrid: 0 }; + var G = { neubau: [7, 1, 0], gedaemmt: [6, 2, 2], unsaniert: [1, 4, 4] }[a.gebaeude] || [0, 0, 0]; + s.wp += G[0]; s.pellet += G[1]; s.hybrid += G[2]; + + if (a.verteilung === 'fbh') { s.wp += 4 + (a.gebaeude === 'unsaniert' ? 3 : 0); s.pellet += 1; s.hybrid += 1; } + if (a.verteilung === 'mix') { s.wp += 2; s.pellet += 2; s.hybrid += 2; } + if (a.verteilung === 'hk') { s.wp += (a.gebaeude === 'unsaniert' ? 0 : 3); s.pellet += 3; s.hybrid += 3; } + + if (a.lager === 'ja') s.pellet += 3; else { s.pellet -= 6; s.hybrid += 1; } + if (a.dach === 'ja') { s.wp += 1; s.pellet += 1; s.hybrid += 1; } + + var max = { wp: 12, pellet: 11, hybrid: 9 }; + var pct = {}; + Object.keys(s).forEach(function (k) { pct[k] = Math.round(Math.max(0, Math.min(1, s[k] / max[k])) * 100); }); + var priority = ['wp', 'hybrid', 'pellet']; + var order = Object.keys(s).sort(function (x, y) { + return (pct[y] - pct[x]) || (priority.indexOf(x) - priority.indexOf(y)); + }); + return { pct: pct, order: order, top: order[0] }; + } + + function addons(a, top) { + var list = []; + if (a.dach === 'ja') list.push(['i-sun', 'Solarthermie für Warmwasser']); + if (a.gebaeude === 'neubau') list.push(['i-wind', 'Wohnraumlüftung mit Wärmerückgewinnung']); + if (top === 'wp' && a.verteilung !== 'fbh') list.push(['i-gauge', 'Heizkörper-Check & hydraulischer Abgleich']); + if (top === 'pellet') list.push(['i-tank', 'Pufferspeicher für mehr Effizienz']); + if (top === 'hybrid') list.push(['i-gauge', 'Heizlastberechnung vor Ort']); + list.push(['i-check', 'Beratung zu Fördermöglichkeiten']); + return list; + } + + function icon(id) { + return ''; + } + + function updateChrome() { + var isResult = index >= total; + countEl.textContent = isResult ? 'Ihr Ergebnis' : 'Frage ' + (index + 1) + ' von ' + total; + barEl.style.transform = 'scaleX(' + (isResult ? 1 : (index + 1) / total) + ')'; + backBtn.disabled = index === 0; + if (!isResult) { + var name = steps[index].querySelector('input').name; + nextBtn.disabled = !answers[name]; + nextBtn.textContent = ''; + nextBtn.insertAdjacentHTML('beforeend', (index === total - 1 ? 'Ergebnis zeigen' : 'Weiter') + icon('i-arrow')); + } + app.classList.toggle('is-done', isResult); + } + + function panel(i) { return i >= total ? result : steps[i]; } + + function go(to, focus) { + if (to === index) return; + var from = panel(index); + var target = panel(to); + var dir = to > index ? 1 : -1; + index = to; + if (to >= total) renderResult(); + updateChrome(); + + var reveal = function () { + from.hidden = true; + from.classList.remove('is-active'); + target.hidden = false; + target.classList.add('is-active'); + if (to >= total) animateBars(); + if (focus) { + var f = to >= total ? result : target.querySelector('input:checked') || target.querySelector('input'); + if (f) f.focus({ preventScroll: true }); + } + }; + + if (w.gsap && !reduce) { + w.gsap.to(from, { + x: -28 * dir, opacity: 0, duration: 0.28, ease: 'power2.in', + onComplete: function () { + w.gsap.set(from, { clearProps: 'transform,opacity' }); + reveal(); + w.gsap.fromTo(target, { x: 36 * dir, opacity: 0 }, { x: 0, opacity: 1, duration: 0.7, ease: 'expo.out', clearProps: 'transform,opacity' }); + } + }); + } else { + reveal(); + } + } + + function renderResult() { + var r = evaluate(answers); + var sys = SYSTEMS[r.top]; + result.querySelector('[data-result-title]').textContent = sys.title; + var text = r.top === 'wp' ? TEXTS.wp[answers.gebaeude] || TEXTS.wp.gedaemmt : TEXTS[r.top]; + result.querySelector('[data-result-text]').innerHTML = text; + + var bars = result.querySelector('[data-result-bars]'); + bars.innerHTML = r.order.map(function (k, i) { + return '
  • ' + SYSTEMS[k].name + '' + + '' + + '' + r.pct[k] + ' %
  • '; + }).join(''); + + result.querySelector('[data-result-addons]').innerHTML = addons(answers, r.top).map(function (a) { + return '
  • ' + icon(a[0]) + a[1] + '
  • '; + }).join(''); + + var summary = 'Heizungs-Finder – meine Angaben: Gebäude: ' + LABELS.gebaeude[answers.gebaeude] + + ' · Wärmeverteilung: ' + LABELS.verteilung[answers.verteilung] + + ' · Lagerraum: ' + LABELS.lager[answers.lager] + + ' · Sonnige Dachfläche: ' + LABELS.dach[answers.dach] + + '. Erste Empfehlung: ' + sys.title + '. Ich hätte gern eine persönliche Beratung.'; + var apply = result.querySelector('[data-finder-apply]'); + apply.setAttribute('data-topic', sys.topic); + apply.setAttribute('data-message', summary); + } + + function animateBars() { + var bars = result.querySelectorAll('.bar i'); + // Zwei Frames warten, damit die Transition sicher greift + w.requestAnimationFrame(function () { + w.requestAnimationFrame(function () { + Array.prototype.forEach.call(bars, function (b, i) { + b.style.transitionDelay = (0.12 * i) + 's'; + b.style.transform = 'scaleX(' + b.getAttribute('data-v') + ')'; + }); + }); + }); + } + + function restart() { + answers = {}; + Array.prototype.forEach.call(form.querySelectorAll('input[type="radio"]'), function (r) { r.checked = false; }); + var current = panel(index); + current.hidden = true; + current.classList.remove('is-active'); + index = 0; + steps[0].hidden = false; + steps[0].classList.add('is-active'); + updateChrome(); + var first = steps[0].querySelector('input'); + if (first) first.focus({ preventScroll: true }); + } + + form.addEventListener('pointerdown', function (e) { + if (e.target.closest('.opt')) pointerSelect = true; + }); + form.addEventListener('keydown', function () { pointerSelect = false; }); + + form.addEventListener('change', function (e) { + var input = e.target; + if (input.type !== 'radio') return; + answers[input.name] = input.value; + updateChrome(); + if (pointerSelect) { + w.clearTimeout(advanceTimer); + advanceTimer = w.setTimeout(function () { go(index + 1, false); }, 320); + } + }); + + nextBtn.addEventListener('click', function () { + if (nextBtn.disabled) return; + w.clearTimeout(advanceTimer); + go(index + 1, true); + }); + backBtn.addEventListener('click', function () { + if (index > 0) { w.clearTimeout(advanceTimer); go(index - 1, true); } + }); + form.addEventListener('submit', function (e) { e.preventDefault(); }); + + var restartBtn = result.querySelector('[data-finder-restart]'); + if (restartBtn) restartBtn.addEventListener('click', restart); + + var applyBtn = result.querySelector('[data-finder-apply]'); + if (applyBtn) { + applyBtn.addEventListener('click', function () { + w.dispatchEvent(new CustomEvent('olz:prefill', { + detail: { topic: applyBtn.getAttribute('data-topic'), message: applyBtn.getAttribute('data-message') } + })); + }); + } + + updateChrome(); +})(window, document); diff --git a/assets/js/house.js b/assets/js/house.js new file mode 100644 index 0000000..6b84ff2 --- /dev/null +++ b/assets/js/house.js @@ -0,0 +1,121 @@ +/* ========================================================================== + Olzinger – Energie-Haus + Tabs + Hotspots steuern, welches System im Hausschnitt hervorgehoben wird. + Solange niemand klickt, wechseln die Komponenten automatisch. + ========================================================================== */ +(function (w, d) { + 'use strict'; + + var root = d.querySelector('[data-house]'); + if (!root) return; + + var tabs = Array.prototype.slice.call(root.querySelectorAll('[role="tab"]')); + var parts = Array.prototype.slice.call(root.querySelectorAll('.part')); + var hotspots = Array.prototype.slice.call(root.querySelectorAll('.hotspot')); + var systems = Array.prototype.slice.call(root.querySelectorAll('.sys')); + var progress = root.querySelector('[data-house-progress]'); + var order = tabs.map(function (t) { return t.getAttribute('data-part'); }); + var reduce = w.matchMedia('(prefers-reduced-motion: reduce)').matches; + + var DURATION = 6500; + var current = null; + var autoplay = !reduce; + var inView = false; + var hovering = false; + var elapsed = 0, last = 0, raf = 0; + + hotspots.forEach(function (h) { + h.setAttribute('aria-controls', 'part-' + h.getAttribute('data-part')); + }); + + function activate(id, focusTab) { + if (id === current) return; + current = id; + root.setAttribute('data-active', id); + tabs.forEach(function (t) { + var on = t.getAttribute('data-part') === id; + t.setAttribute('aria-selected', on ? 'true' : 'false'); + t.tabIndex = on ? 0 : -1; + if (on && focusTab) t.focus(); + }); + parts.forEach(function (p) { + var on = p.getAttribute('data-part') === id; + p.hidden = !on; + p.classList.toggle('is-active', on); + }); + hotspots.forEach(function (h) { + var on = h.getAttribute('data-part') === id; + h.classList.toggle('is-active', on); + h.setAttribute('aria-pressed', on ? 'true' : 'false'); + }); + systems.forEach(function (s) { s.classList.toggle('is-on', s.getAttribute('data-sys') === id); }); + elapsed = 0; + } + + function stopAutoplay() { + autoplay = false; + if (progress) progress.style.transform = 'scaleX(0)'; + if (raf) w.cancelAnimationFrame(raf); + raf = 0; + } + + function tick(now) { + raf = 0; + if (!autoplay || !inView || hovering) return; + var dt = last ? now - last : 16; + last = now; + elapsed += Math.min(dt, 100); + if (progress) progress.style.transform = 'scaleX(' + Math.min(elapsed / DURATION, 1) + ')'; + if (elapsed >= DURATION) { + var next = order[(order.indexOf(current) + 1) % order.length]; + activate(next, false); + } + raf = w.requestAnimationFrame(tick); + } + + function run() { + if (!autoplay || !inView || hovering || raf) return; + last = 0; + raf = w.requestAnimationFrame(tick); + } + + tabs.forEach(function (t) { + t.addEventListener('click', function () { stopAutoplay(); activate(t.getAttribute('data-part'), false); }); + }); + hotspots.forEach(function (h) { + h.addEventListener('click', function () { stopAutoplay(); activate(h.getAttribute('data-part'), false); }); + }); + + // Tastatursteuerung nach WAI-ARIA Tabs-Pattern + var tablist = root.querySelector('[role="tablist"]'); + if (tablist) { + tablist.addEventListener('keydown', function (e) { + var i = order.indexOf(current), n = order.length, to = -1; + if (e.key === 'ArrowRight' || e.key === 'ArrowDown') to = (i + 1) % n; + else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') to = (i - 1 + n) % n; + else if (e.key === 'Home') to = 0; + else if (e.key === 'End') to = n - 1; + if (to < 0) return; + e.preventDefault(); + stopAutoplay(); + activate(order[to], true); + }); + } + + // Pausieren, solange der Nutzer mit der Maus im Bereich ist + root.addEventListener('pointerenter', function (e) { + if (e.pointerType === 'mouse') { hovering = true; if (raf) { w.cancelAnimationFrame(raf); raf = 0; } } + }); + root.addEventListener('pointerleave', function (e) { + if (e.pointerType === 'mouse') { hovering = false; run(); } + }); + + if ('IntersectionObserver' in w) { + new IntersectionObserver(function (entries) { + inView = entries[0].isIntersecting; + if (inView) run(); + }, { threshold: 0.35 }).observe(root); + } + + activate(order[0], false); +})(window, document); diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..b08d931 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,504 @@ +/* ========================================================================== + Olzinger – Hauptskript + Preloader, Hero-Intro, Smooth-Scroll, Navigation und Scroll-Animationen. + ========================================================================== */ +(function (w, d) { + 'use strict'; + + var html = d.documentElement; + var $ = function (s, c) { return (c || d).querySelector(s); }; + var $$ = function (s, c) { return Array.prototype.slice.call((c || d).querySelectorAll(s)); }; + + var reduce = w.matchMedia('(prefers-reduced-motion: reduce)').matches; + var finePointer = w.matchMedia('(hover: hover) and (pointer: fine)').matches; + var fallback = !!w.__olzFallback; + w.__olzReady = true; + + /* ---------- Dynamische Jahreszahlen ---------- */ + var nowYear = new Date().getFullYear(); + $$('[data-current-year]').forEach(function (el) { el.textContent = nowYear; }); + $$('[data-years]').forEach(function (el) { + el.textContent = nowYear - 1985; + el.setAttribute('data-count', nowYear - 1985); + }); + + /* ---------- Wärmebild ---------- */ + var thermal = null; + var canvas = $('[data-thermal]'); + if (canvas && w.OlzThermal) { + thermal = w.OlzThermal.init(canvas, { + hero: $('[data-hero]'), + probe: $('[data-probe]'), + probeVal: $('[data-probe-val]'), + legendMarker: $('[data-legend-marker]'), + calm: $('.hero__aside'), + reduceMotion: reduce + }); + } else { + html.classList.add('no-webgl'); + } + + /* ---------- Mobiles Menü (auch ohne GSAP funktionsfähig) ---------- */ + var menu = $('[data-menu]'); + var toggle = $('[data-menu-toggle]'); + var menuOpen = false; + var lenis = null; + + if (menu) { menu.hidden = false; menu.setAttribute('inert', ''); menu.setAttribute('aria-hidden', 'true'); } + + function openMenu() { + if (!menu || menuOpen) return; + menuOpen = true; + menu.classList.add('is-open'); + menu.removeAttribute('inert'); + menu.setAttribute('aria-hidden', 'false'); + toggle.setAttribute('aria-expanded', 'true'); + toggle.querySelector('.sr-only').textContent = 'Menü schließen'; + html.classList.add('menu-open'); + if (lenis) lenis.stop(); + if (w.gsap && !reduce) { + w.gsap.fromTo($$('.menu__links a, .menu__foot > *'), { y: 40, opacity: 0 }, + { y: 0, opacity: 1, duration: 0.9, ease: 'expo.out', stagger: 0.045, delay: 0.25 }); + } + } + function closeMenu() { + if (!menu || !menuOpen) return; + menuOpen = false; + menu.classList.remove('is-open'); + menu.setAttribute('inert', ''); + menu.setAttribute('aria-hidden', 'true'); + toggle.setAttribute('aria-expanded', 'false'); + toggle.querySelector('.sr-only').textContent = 'Menü öffnen'; + html.classList.remove('menu-open'); + if (lenis) lenis.start(); + } + if (toggle) toggle.addEventListener('click', function () { if (menuOpen) closeMenu(); else openMenu(); }); + d.addEventListener('keydown', function (e) { if (e.key === 'Escape' && menuOpen) { closeMenu(); toggle.focus(); } }); + + /* ---------- Ohne GSAP: alles statisch sichtbar lassen ---------- */ + if (!w.gsap || !w.ScrollTrigger) { + html.classList.remove('has-loader', 'js'); + html.classList.add('no-js'); + if (thermal) thermal.heatUp(); + d.addEventListener('click', function (e) { + var a = e.target.closest('a[href^="#"]'); + if (a && a.dataset.topic) w.dispatchEvent(new CustomEvent('olz:topic', { detail: a.dataset.topic })); + if (a) closeMenu(); + }); + return; + } + + var gsap = w.gsap, ScrollTrigger = w.ScrollTrigger; + gsap.registerPlugin(ScrollTrigger); + if (w.SplitText) gsap.registerPlugin(w.SplitText); + gsap.config({ nullTargetWarn: false }); + + /* ---------- Smooth Scroll ---------- */ + if (!reduce && typeof w.Lenis === 'function') { + lenis = new w.Lenis({ lerp: 0.105, smoothWheel: true, wheelMultiplier: 1, touchMultiplier: 1.4 }); + lenis.on('scroll', ScrollTrigger.update); + gsap.ticker.add(function (t) { lenis.raf(t * 1000); }); + gsap.ticker.lagSmoothing(0); + if (html.classList.contains('has-loader')) lenis.stop(); + } + w.olzLenis = lenis; + + function navHeight() { + var bar = $('.nav__bar'); + return bar ? bar.getBoundingClientRect().height + 12 : 76; + } + + // Natürliche Position berechnen (auch für „sticky“-Elemente) + function targetY(el) { + if (el.id === 'top') return 0; + var stack = el.closest('[data-stack]'); + if (stack && el.classList.contains('svc')) { + var cards = $$('.svc', stack); + var gap = parseFloat(getComputedStyle(stack).rowGap) || 0; + var y = stack.getBoundingClientRect().top + w.scrollY; + for (var i = 0; i < cards.length && cards[i] !== el; i++) y += cards[i].offsetHeight + gap; + var stickyTop = parseFloat(getComputedStyle(el).top); + return y - (isNaN(stickyTop) ? navHeight() : stickyTop); + } + return el.getBoundingClientRect().top + w.scrollY; + } + + function scrollToEl(el) { + var y = targetY(el); + if (lenis) lenis.scrollTo(y, { duration: 1.4, easing: function (t) { return t === 1 ? 1 : 1 - Math.pow(2, -10 * t); } }); + else w.scrollTo({ top: y, behavior: reduce ? 'auto' : 'smooth' }); + } + + d.addEventListener('click', function (e) { + var a = e.target.closest('a[href^="#"]'); + if (!a) return; + var id = a.getAttribute('href'); + if (id.length < 2) return; + var target = d.getElementById(id.slice(1)); + if (!target) return; + e.preventDefault(); + if (a.dataset.topic) w.dispatchEvent(new CustomEvent('olz:topic', { detail: a.dataset.topic })); + var wasOpen = menuOpen; + closeMenu(); + setTimeout(function () { scrollToEl(target); }, wasOpen ? 380 : 0); + if (history.replaceState) history.replaceState(null, '', id === '#top' ? location.pathname : id); + }); + + /* ---------- Seitenwechsel mit Vorhang ---------- */ + var curtain = d.createElement('div'); + curtain.className = 'curtain'; + curtain.setAttribute('aria-hidden', 'true'); + d.body.appendChild(curtain); + d.addEventListener('click', function (e) { + if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return; + var a = e.target.closest('a[href]'); + if (!a || a.target === '_blank' || a.hasAttribute('download')) return; + var url; + try { url = new URL(a.getAttribute('href'), location.href); } catch (err) { return; } + if (!/^https?:$/.test(url.protocol) || url.origin !== location.origin) return; + if (url.pathname === location.pathname) return; + e.preventDefault(); + closeMenu(); + html.classList.add('is-leaving'); + w.setTimeout(function () { location.href = url.href; }, reduce ? 0 : 560); + }); + w.addEventListener('pageshow', function () { html.classList.remove('is-leaving'); }); + + /* ---------- Preloader & Hero-Intro ---------- */ + function heroIn() { + var tl = gsap.timeline({ defaults: { ease: 'expo.out' } }); + tl.fromTo('.hero__word', { y: 0, yPercent: 112 }, { yPercent: 0, duration: 1.5, stagger: 0.1 }, 0) + .fromTo('.hero__dot', { scale: 0 }, { scale: 1, duration: 1.1, ease: 'back.out(3)', stagger: 0.1 }, 0.55) + .fromTo('.hero__tag', { opacity: 0, x: -12 }, { opacity: 1, x: 0, duration: 1.2, stagger: 0.1 }, 0.7) + .fromTo('[data-hero-fade]', { opacity: 0, y: 24 }, { opacity: 1, y: 0, duration: 1.3, stagger: 0.12 }, 0.35) + .fromTo('.nav__bar', { opacity: 0, y: -16 }, { opacity: 1, y: 0, duration: 1.2 }, 0.2) + .add(function () { if (thermal) thermal.measure(); }); + return tl; + } + + function intro() { + if (fallback) { gsap.set('.nav__bar', { opacity: 1 }); if (thermal) thermal.heatUp(); return; } + var loader = $('.loader'); + var useLoader = html.classList.contains('has-loader') && loader && !reduce; + + if (reduce) { + html.classList.remove('has-loader'); + gsap.set('.hero__word', { yPercent: 0, y: 0 }); + gsap.set('.hero__dot', { scale: 1 }); + gsap.set('.hero__tag, [data-hero-fade], .nav__bar', { opacity: 1 }); + if (thermal) thermal.heatUp(); + return; + } + + if (!useLoader) { + html.classList.remove('has-loader'); + if (loader) loader.remove(); + if (thermal) thermal.heatUp(); + heroIn(); + return; + } + + var arc = $('.loader__arc', loader); + var yearEl = $('[data-loader-year]', loader); + var len = arc.getTotalLength(); + var counter = { v: 1985 }; + gsap.set(arc, { strokeDasharray: len, strokeDashoffset: len }); + + var tl = gsap.timeline(); + tl.from('.loader__center', { opacity: 0, scale: 0.92, duration: 0.6, ease: 'power2.out' }, 0) + .from('.loader__caption', { opacity: 0, y: 10, duration: 0.6, stagger: 0.08 }, 0.1) + .to(arc, { strokeDashoffset: 0, duration: 1.35, ease: 'power2.inOut' }, 0.15) + .to(counter, { + v: nowYear, duration: 1.35, ease: 'power2.inOut', + onUpdate: function () { yearEl.textContent = Math.round(counter.v); } + }, 0.15) + .to('.loader__center, .loader__caption', { opacity: 0, y: -20, duration: 0.5, ease: 'power2.in', stagger: 0.03 }, 1.65) + .add(function () { if (thermal) thermal.heatUp(); }, 1.7) + .to(loader, { clipPath: 'inset(0% 0% 100% 0%)', duration: 1.05, ease: 'expo.inOut' }, 1.85) + .add(heroIn(), 2.25) + .add(function () { + html.classList.remove('has-loader'); + loader.remove(); + if (lenis) lenis.start(); + ScrollTrigger.refresh(); + }, 2.95); + } + + /* ---------- Navigation ---------- */ + var nav = $('[data-nav]'); + ScrollTrigger.create({ + start: 0, end: 'max', + onUpdate: function (self) { + var y = self.scroll(); + nav.classList.toggle('is-scrolled', y > 40); + if (menuOpen) return; + if (y > 420 && self.direction === 1) nav.classList.add('is-hidden'); + else if (self.direction === -1 || y <= 420) nav.classList.remove('is-hidden'); + } + }); + nav.addEventListener('focusin', function () { nav.classList.remove('is-hidden'); }); + + var navLinks = $$('[data-nav-link]'); + navLinks.forEach(function (link) { + var sec = d.getElementById(link.getAttribute('href').slice(1)); + if (!sec) return; + ScrollTrigger.create({ + trigger: sec, start: 'top 45%', end: 'bottom 45%', + onToggle: function (self) { + if (self.isActive) navLinks.forEach(function (l) { l.classList.toggle('is-active', l === link); }); + else link.classList.remove('is-active'); + } + }); + }); + + /* ---------- Animationen, die Bewegung voraussetzen ---------- */ + function motion() { + // Hero: Inhalte beim Scrollen leicht anheben und ausblenden + gsap.to('.hero__inner', { + yPercent: -10, opacity: 0.15, ease: 'none', + scrollTrigger: { trigger: '.hero', start: 'top top', end: 'bottom top', scrub: true } + }); + + // Überschriften: Zeilen-Reveal + if (w.SplitText) { + $$('[data-split]').forEach(function (el) { + w.SplitText.create(el, { + type: 'lines', mask: 'lines', linesClass: 'split-line', autoSplit: true, + onSplit: function (self) { + return gsap.from(self.lines, { + yPercent: 110, duration: 1.25, ease: 'expo.out', stagger: 0.09, + scrollTrigger: { trigger: el, start: 'top 86%', once: true } + }); + } + }); + }); + + // Intro-Text: Wort für Wort „aufheizen“ + var introText = $('[data-scrub-words]'); + if (introText) { + var split = w.SplitText.create(introText, { type: 'words', wordsClass: 'scrub-word' }); + gsap.fromTo(split.words, { opacity: 0.13 }, { + opacity: 1, ease: 'none', stagger: 0.1, + scrollTrigger: { trigger: introText, start: 'top 82%', end: 'bottom 50%', scrub: true } + }); + gsap.from('.ichip', { + scale: 0, rotate: -25, duration: 0.9, ease: 'back.out(2.4)', stagger: 0.18, + scrollTrigger: { trigger: introText, start: 'top 70%', once: true } + }); + } + } + + // Allgemeine Reveals + $$('[data-reveal]').forEach(function (el) { + gsap.from(el, { + y: 44, opacity: 0, duration: 1.25, ease: 'expo.out', + scrollTrigger: { trigger: el, start: 'top 90%', once: true } + }); + }); + $$('[data-reveal-stagger]').forEach(function (el) { + gsap.from(el.children, { + y: 40, opacity: 0, duration: 1.15, ease: 'expo.out', stagger: 0.09, + scrollTrigger: { trigger: el, start: 'top 90%', once: true } + }); + }); + + // Vorlauf/Rücklauf-Bänder + $$('.tape').forEach(function (tape) { + var track = $('.tape__track', tape); + var unit = track.innerHTML; + var unitWidth = track.scrollWidth; + if (!unitWidth) return; + var copies = Math.max(2, Math.ceil((tape.offsetWidth * 1.2) / unitWidth) + 1); + track.innerHTML = new Array(copies + 1).join(unit); + var dir = parseFloat(tape.getAttribute('data-tape')) || 1; + var tween = gsap.fromTo(track, + { x: dir > 0 ? 0 : -unitWidth }, + { x: dir > 0 ? -unitWidth : 0, duration: unitWidth / 70, ease: 'none', repeat: -1 }); + tween.totalTime(tween.duration() * 500); + var boost = { v: 1 }; + ScrollTrigger.create({ + trigger: tape, start: 'top bottom', end: 'bottom top', + onUpdate: function (self) { + var v = Math.min(Math.abs(self.getVelocity()) / 250, 7); + var sign = self.direction === 1 ? 1 : -1; + gsap.to(boost, { + v: (1 + v) * sign, duration: 0.25, overwrite: true, + onUpdate: function () { tween.timeScale(boost.v); } + }); + gsap.to(boost, { + v: sign, duration: 1.2, delay: 0.25, ease: 'power2.out', + onUpdate: function () { tween.timeScale(boost.v); } + }); + } + }); + gsap.fromTo(tape, { xPercent: dir * -4 }, { + xPercent: dir * 4, ease: 'none', + scrollTrigger: { trigger: '.tapes', start: 'top bottom', end: 'bottom top', scrub: true } + }); + }); + + // Leistungskarten: gestapelt, die hinteren treten zurück + var cards = $$('.svc'); + var mm = gsap.matchMedia(); + mm.add('(min-width: 900px) and (min-height: 660px)', function () { + cards.forEach(function (card, i) { + var next = cards[i + 1]; + if (!next) return; + var inner = $('.svc__inner', card); + gsap.to(inner, { + scale: 0.9 + i * 0.012, '--shade': 0.55, ease: 'none', + scrollTrigger: { + trigger: next, start: 'top 82%', + end: function () { return 'top ' + (parseFloat(getComputedStyle(next).top) || 100) + 'px'; }, + scrub: true, invalidateOnRefresh: true + } + }); + }); + }); + + // Illustrationen: leichter Parallax + $$('.svc__art .art').forEach(function (art) { + gsap.fromTo(art, { yPercent: 4 }, { + yPercent: -4, ease: 'none', + scrollTrigger: { trigger: art.closest('.svc'), start: 'top bottom', end: 'bottom top', scrub: true } + }); + }); + + // Ablauf: Rohr füllt sich + var steps = $('[data-steps]'); + if (steps) { + var fill = $('[data-steps-fill]', steps); + var pipe = $('.steps__pipe', steps); + var items = $$('[data-step-item]', steps); + var mmSteps = gsap.matchMedia(); + mmSteps.add({ desktop: '(min-width: 901px)', mobile: '(max-width: 900px)' }, function (ctx) { + var desktop = ctx.conditions.desktop; + if (!desktop) { + var nodes = items.map(function (it) { return $('.step__node', it); }); + var placePipe = function () { + var top0 = steps.getBoundingClientRect().top; + var a = nodes[0].getBoundingClientRect(), b = nodes[nodes.length - 1].getBoundingClientRect(); + pipe.style.top = (a.top - top0 + a.height / 2) + 'px'; + pipe.style.height = (b.top - a.top) + 'px'; + pipe.style.bottom = 'auto'; + }; + placePipe(); + ScrollTrigger.addEventListener('refreshInit', placePipe); + } + gsap.fromTo(fill, desktop ? { scaleX: 0, scaleY: 1 } : { scaleY: 0, scaleX: 1 }, { + scaleX: 1, scaleY: 1, ease: 'none', + scrollTrigger: { + trigger: steps, start: 'top 72%', end: desktop ? 'bottom 62%' : 'bottom 68%', scrub: 0.6, + onUpdate: function (self) { + var p = self.progress, n = items.length; + items.forEach(function (it, i) { it.classList.toggle('is-on', p > (i / (n - 1)) * 0.97 + 0.01); }); + } + } + }); + return function () { + pipe.style.top = pipe.style.height = pipe.style.bottom = ''; + }; + }); + } + + // Footer-Schriftzug „heizt auf“ + var word = $('[data-footer-word] span'); + if (word) { + gsap.fromTo(word, { '--heat': '0%' }, { + '--heat': '100%', ease: 'none', + scrollTrigger: { trigger: '.footer', start: 'top 80%', end: 'bottom bottom', scrub: true } + }); + gsap.from(word, { + yPercent: 60, opacity: 0, duration: 1.4, ease: 'expo.out', + scrollTrigger: { trigger: '[data-footer-word]', start: 'top 95%', once: true } + }); + } + + // Magnetische Buttons + if (finePointer) { + $$('[data-magnetic]').forEach(function (btn) { + var xTo = gsap.quickTo(btn, 'x', { duration: 0.6, ease: 'power3' }); + var yTo = gsap.quickTo(btn, 'y', { duration: 0.6, ease: 'power3' }); + btn.addEventListener('pointermove', function (e) { + var r = btn.getBoundingClientRect(); + xTo((e.clientX - r.left - r.width / 2) * 0.22); + yTo((e.clientY - r.top - r.height / 2) * 0.32); + }); + btn.addEventListener('pointerleave', function () { xTo(0); yTo(0); }); + }); + } + } + + /* ---------- Funktionen, die immer laufen (auch bei reduzierter Bewegung) ---------- */ + function essentials() { + // Illustrationen nur animieren, wenn sichtbar + if ('IntersectionObserver' in w) { + var io = new IntersectionObserver(function (entries) { + entries.forEach(function (en) { en.target.classList.toggle('is-inview', en.isIntersecting); }); + }, { threshold: 0.15 }); + $$('.svc').forEach(function (c) { io.observe(c); }); + } else { + $$('.svc').forEach(function (c) { c.classList.add('is-inview'); }); + } + + // Zähler + $$('[data-count]').forEach(function (el) { + var target = parseInt(el.getAttribute('data-count') || el.textContent, 10); + if (isNaN(target)) return; + if (reduce) { el.textContent = target; return; } + var from = parseInt(el.getAttribute('data-count-from') || '0', 10); + var obj = { v: from }; + el.textContent = from; + gsap.to(obj, { + v: target, duration: 2.2, ease: 'power3.out', + scrollTrigger: { trigger: el, start: 'top 92%', once: true }, + onUpdate: function () { el.textContent = Math.round(obj.v); } + }); + }); + + // Historie: Zählwerk mit Jahreszahl + var hist = $('[data-history]'); + if (hist) { + var strips = $$('[data-odo-digit] .odo__strip', hist); + var caption = $('[data-odo-caption]', hist); + var entries = $$('.tl', hist); + var setYear = function (year, title) { + String(year).split('').forEach(function (ch, i) { + if (!strips[i]) return; + gsap.to(strips[i], { yPercent: -10 * parseInt(ch, 10), duration: reduce ? 0 : 1.1, ease: 'expo.inOut', delay: reduce ? 0 : i * 0.06, overwrite: true }); + }); + if (caption) caption.textContent = title; + }; + entries.forEach(function (entry) { + var y = entry.getAttribute('data-year'); + var year = y === 'now' ? nowYear : parseInt(y, 10); + var title = ($('.tl__title', entry) || {}).textContent || ''; + ScrollTrigger.create({ + trigger: entry, start: 'top 62%', end: 'bottom 62%', + onToggle: function (self) { + if (!self.isActive) return; + entries.forEach(function (e2) { e2.classList.toggle('is-active', e2 === entry); }); + setYear(year, title); + } + }); + }); + entries[0].classList.add('is-active'); + setYear(1985, ($('.tl__title', entries[0]) || {}).textContent || ''); + } + } + + /* ---------- Start ---------- */ + essentials(); + if (!reduce) motion(); + intro(); + + // Nach dem Laden der Schriften Positionen neu berechnen + if (d.fonts && d.fonts.ready) d.fonts.ready.then(function () { ScrollTrigger.refresh(); }); + w.addEventListener('load', function () { ScrollTrigger.refresh(); }); + + // Deep-Link (#kontakt etc.) nach dem Aufbau korrekt anspringen + if (location.hash && location.hash.length > 1) { + var deep = d.getElementById(location.hash.slice(1)); + if (deep) w.setTimeout(function () { w.scrollTo(0, targetY(deep)); }, 60); + } +})(window, document); diff --git a/assets/js/thermal.js b/assets/js/thermal.js new file mode 100644 index 0000000..cee457f --- /dev/null +++ b/assets/js/thermal.js @@ -0,0 +1,402 @@ +/* ========================================================================== + Olzinger – „Wärmebild“ (WebGL) + Ein thermografisches Feld mit Isothermen. Die Maus wirkt als Wärmequelle + und hinterlässt eine Wärmespur, die langsam abkühlt und sich ausbreitet. + Hinter Fließtext wird die Wärme gedämpft, damit alles lesbar bleibt. + ========================================================================== */ +(function (w) { + 'use strict'; + + var MAX_HEAT = 14; + var T_MIN = 14; // °C bei Feldwert 0 + var T_MAX = 28; // °C bei Feldwert 1 + + var VERT = 'attribute vec2 aPos; void main(){ gl_Position = vec4(aPos, 0.0, 1.0); }'; + + var FRAG = [ + '#ifdef GL_OES_standard_derivatives', + '#extension GL_OES_standard_derivatives : enable', + '#endif', + 'precision highp float;', + '#define MAXH ' + MAX_HEAT, + 'uniform vec2 uRes;', + 'uniform float uTime;', + 'uniform float uIntro;', + 'uniform vec4 uCalm;', + 'uniform vec4 uHeat[MAXH];', + 'float hash(vec2 p){ p = fract(p * vec2(123.34, 456.21)); p += dot(p, p + 45.32); return fract(p.x * p.y); }', + 'float noise(vec2 p){ vec2 i = floor(p); vec2 f = fract(p); vec2 u = f * f * (3.0 - 2.0 * f);', + ' return mix(mix(hash(i), hash(i + vec2(1.0, 0.0)), u.x), mix(hash(i + vec2(0.0, 1.0)), hash(i + vec2(1.0, 1.0)), u.x), u.y); }', + 'float fbm(vec2 p){ float v = 0.0; float a = 0.5; mat2 m = mat2(1.6, 1.2, -1.2, 1.6);', + ' for (int i = 0; i < 5; i++){ v += a * noise(p); p = m * p; a *= 0.5; } return v; }', + 'vec3 pal(float t){', + ' t = clamp(t, 0.0, 1.0) * 8.0;', + ' vec3 c0 = vec3(0.020, 0.043, 0.071); vec3 c1 = vec3(0.043, 0.106, 0.180); vec3 c2 = vec3(0.078, 0.200, 0.353);', + ' vec3 c3 = vec3(0.231, 0.141, 0.400); vec3 c4 = vec3(0.541, 0.137, 0.314); vec3 c5 = vec3(0.878, 0.282, 0.165);', + ' vec3 c6 = vec3(1.000, 0.541, 0.165); vec3 c7 = vec3(1.000, 0.780, 0.420); vec3 c8 = vec3(1.000, 0.910, 0.700);', + ' if (t < 1.0) return mix(c0, c1, t);', + ' if (t < 2.0) return mix(c1, c2, t - 1.0);', + ' if (t < 3.0) return mix(c2, c3, t - 2.0);', + ' if (t < 4.0) return mix(c3, c4, t - 3.0);', + ' if (t < 5.0) return mix(c4, c5, t - 4.0);', + ' if (t < 6.0) return mix(c5, c6, t - 5.0);', + ' if (t < 7.0) return mix(c6, c7, t - 6.0);', + ' return mix(c7, c8, t - 7.0);', + '}', + 'float calm(vec2 p){', + ' vec2 a = smoothstep(uCalm.xy - 0.08, uCalm.xy + 0.02, p);', + ' vec2 b = 1.0 - smoothstep(uCalm.zw - 0.02, uCalm.zw + 0.08, p);', + ' return a.x * a.y * b.x * b.y;', + '}', + 'void main(){', + ' vec2 uv = gl_FragCoord.xy / uRes;', + ' float asp = uRes.x / uRes.y;', + ' vec2 p = vec2(uv.x * asp, uv.y);', + ' float t = uTime;', + ' vec2 s = p * 1.35;', + ' vec2 q = vec2(fbm(s + vec2(0.0, t * 0.05)), fbm(s + vec2(5.2, -t * 0.04)));', + ' vec2 r = vec2(fbm(s + 2.4 * q + vec2(1.7, 9.2) + t * 0.06), fbm(s + 2.4 * q + vec2(8.3, 2.8) - t * 0.05));', + ' float f = fbm(s + 2.2 * r);', + ' float base = smoothstep(0.18, 0.86, f) * 0.46;', + ' vec2 dz = p - vec2(asp * 0.8, 0.76);', + ' base += 0.36 * exp(-dot(dz, dz) / 0.11) * (0.8 + 0.2 * sin(t * 0.45));', + ' vec2 dc = p - vec2(asp * 0.16, 0.12);', + ' base -= 0.12 * exp(-dot(dc, dc) / 0.2);', + ' base *= mix(0.5, 1.0, smoothstep(0.0, 0.95, uv.x * 0.85 + uv.y * 0.55));', + ' float heat = 0.0;', + ' for (int i = 0; i < MAXH; i++){ vec4 h = uHeat[i]; vec2 d = p - h.xy; heat += h.z * exp(-dot(d, d) / max(h.w * h.w, 0.0001)); }', + ' heat *= 1.0 - 0.62 * calm(p);', + ' float v = max(base, 0.0) + heat * 0.66;', + ' v = 1.0 - exp(-v * 1.35);', + ' v *= uIntro;', + ' vec3 col = pal(v);', + ' float k = v * 15.0;', + '#ifdef GL_OES_standard_derivatives', + ' float fw = fwidth(k) * 1.15;', + '#else', + ' float fw = 0.05;', + '#endif', + ' float dist = abs(fract(k + 0.5) - 0.5);', + ' float line = 1.0 - smoothstep(0.0, fw, dist);', + ' col += line * (0.03 + 0.2 * v) * vec3(1.0, 0.93, 0.86);', + ' float g = hash(gl_FragCoord.xy + fract(t * 7.0) * 91.7) - 0.5;', + ' col += g * 0.032;', + ' vec2 vc = uv - 0.5;', + ' col *= 1.0 - dot(vc, vc) * 0.5;', + ' gl_FragColor = vec4(col, 1.0);', + '}' + ].join('\n'); + + /* ---------- CPU-Gegenstück des Feldes (für die Temperaturanzeige) ---------- */ + function fract(x) { return x - Math.floor(x); } + function smoothstep(a, b, x) { var t = Math.min(1, Math.max(0, (x - a) / (b - a))); return t * t * (3 - 2 * t); } + function hash(x, y) { + x = fract(x * 123.34); y = fract(y * 456.21); + var dd = x * (x + 45.32) + y * (y + 45.32); + x += dd; y += dd; + return fract(x * y); + } + function noise(x, y) { + var ix = Math.floor(x), iy = Math.floor(y), fx = x - ix, fy = y - iy; + var ux = fx * fx * (3 - 2 * fx), uy = fy * fy * (3 - 2 * fy); + var a = hash(ix, iy), b = hash(ix + 1, iy), c = hash(ix, iy + 1), d = hash(ix + 1, iy + 1); + var ab = a + (b - a) * ux, cd = c + (d - c) * ux; + return ab + (cd - ab) * uy; + } + function fbm(x, y) { + var v = 0, a = 0.5; + for (var i = 0; i < 5; i++) { + v += a * noise(x, y); + var nx = 1.6 * x - 1.2 * y, ny = 1.2 * x + 1.6 * y; + x = nx; y = ny; a *= 0.5; + } + return v; + } + + function compile(gl, type, src) { + var sh = gl.createShader(type); + gl.shaderSource(sh, src); + gl.compileShader(sh); + if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) { + if (w.console) console.warn('[Wärmebild] Shader-Fehler:', gl.getShaderInfoLog(sh)); + gl.deleteShader(sh); + return null; + } + return sh; + } + + function init(canvas, opts) { + opts = opts || {}; + var root = document.documentElement; + var hero = opts.hero || canvas.parentElement; + var gl = null; + try { + gl = canvas.getContext('webgl', { antialias: false, alpha: false, depth: false, stencil: false, premultipliedAlpha: false, powerPreference: 'low-power' }) || + canvas.getContext('experimental-webgl'); + } catch (e) { gl = null; } + if (!gl) { root.classList.add('no-webgl'); return null; } + + gl.getExtension('OES_standard_derivatives'); + var vs = compile(gl, gl.VERTEX_SHADER, VERT); + var fs = compile(gl, gl.FRAGMENT_SHADER, FRAG); + if (!vs || !fs) { root.classList.add('no-webgl'); return null; } + var prog = gl.createProgram(); + gl.attachShader(prog, vs); + gl.attachShader(prog, fs); + gl.linkProgram(prog); + if (!gl.getProgramParameter(prog, gl.LINK_STATUS)) { root.classList.add('no-webgl'); return null; } + gl.useProgram(prog); + + var buf = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buf); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 3, -1, -1, 3]), gl.STATIC_DRAW); + var aPos = gl.getAttribLocation(prog, 'aPos'); + gl.enableVertexAttribArray(aPos); + gl.vertexAttribPointer(aPos, 2, gl.FLOAT, false, 0, 0); + + var uRes = gl.getUniformLocation(prog, 'uRes'); + var uTime = gl.getUniformLocation(prog, 'uTime'); + var uIntro = gl.getUniformLocation(prog, 'uIntro'); + var uCalm = gl.getUniformLocation(prog, 'uCalm'); + var uHeat = gl.getUniformLocation(prog, 'uHeat'); + + var reduce = !!opts.reduceMotion; + var finePointer = w.matchMedia('(hover: hover) and (pointer: fine)').matches; + var probe = opts.probe, probeVal = opts.probeVal, marker = opts.legendMarker; + var calmEl = opts.calm || null; + + var heatData = new Float32Array(MAX_HEAT * 4); + var calmRect = [-1, -1, -1, -1]; + var trail = []; + var quality = (w.devicePixelRatio || 1) > 1.5 ? 0.62 : 0.85; + var width = 0, height = 0, rect = null; + var running = false, visible = true, raf = 0; + var time = Math.random() * 40, last = 0, frame = 0; + var intro = reduce ? 1 : 0, introTarget = reduce ? 1 : 0; + var frameTimes = [], tuned = false; + + // Cursor in Feldkoordinaten: x ∈ [0, Seitenverhältnis], y ∈ [0, 1] (y nach oben) + var cur = { x: 0, y: 0, tx: 0, ty: 0, inside: false, lastMove: -1e9, heat: 0, clientX: 0, clientY: 0 }; + var auto = { heat: 0 }; + var lastEmit = 0; + + function measureCalm() { + if (!calmEl || !rect) return; + var r = calmEl.getBoundingClientRect(); + if (!r.width) { calmRect = [-1, -1, -1, -1]; return; } + var hgt = rect.height, pad = 18; + calmRect = [ + (r.left - pad - rect.left) / hgt, + 1 - (r.bottom + pad - rect.top) / hgt, + (r.right + pad - rect.left) / hgt, + 1 - (r.top - pad - rect.top) / hgt + ]; + } + + function resize() { + rect = canvas.getBoundingClientRect(); + var dpr = Math.min(w.devicePixelRatio || 1, 2); + var nw = Math.max(1, Math.round(rect.width * dpr * quality)); + var nh = Math.max(1, Math.round(rect.height * dpr * quality)); + if (nw !== width || nh !== height) { + width = canvas.width = nw; + height = canvas.height = nh; + gl.viewport(0, 0, width, height); + } + measureCalm(); + } + + function toField(clientX, clientY) { + return { x: (clientX - rect.left) / rect.height, y: 1 - (clientY - rect.top) / rect.height }; + } + + function emit(x, y, i, r) { + trail.unshift({ x: x, y: y, i: i, r: r }); + if (trail.length > MAX_HEAT - 2) trail.pop(); + } + + function onMove(e) { + if (e.pointerType && e.pointerType !== 'mouse') return; + rect = canvas.getBoundingClientRect(); + var f = toField(e.clientX, e.clientY); + cur.tx = f.x; cur.ty = f.y; + cur.clientX = e.clientX - rect.left; + cur.clientY = e.clientY - rect.top; + if (!cur.inside) { cur.x = f.x; cur.y = f.y; } + cur.inside = true; + cur.lastMove = performance.now(); + if (probe) probe.classList.add('is-on'); + } + function onLeave() { + cur.inside = false; + if (probe) probe.classList.remove('is-on'); + } + function onTouch(e) { + var t = e.touches && e.touches[0]; + if (!t) return; + rect = canvas.getBoundingClientRect(); + var f = toField(t.clientX, t.clientY); + emit(f.x, f.y, 0.85, 0.09); + } + + if (finePointer) { + hero.addEventListener('pointermove', onMove, { passive: true }); + hero.addEventListener('pointerleave', onLeave, { passive: true }); + } + hero.addEventListener('touchstart', onTouch, { passive: true }); + + function calmAt(px, py) { + var a = smoothstep(calmRect[0] - 0.08, calmRect[0] + 0.02, px) * smoothstep(calmRect[1] - 0.08, calmRect[1] + 0.02, py); + var b = (1 - smoothstep(calmRect[2] - 0.02, calmRect[2] + 0.08, px)) * (1 - smoothstep(calmRect[3] - 0.02, calmRect[3] + 0.08, py)); + return a * b; + } + + // Exakt dieselbe Rechnung wie im Shader – nur für einen Punkt + function fieldAt(px, py) { + var asp = width / height, t = time; + var sx = px * 1.35, sy = py * 1.35; + var qx = fbm(sx, sy + t * 0.05), qy = fbm(sx + 5.2, sy - t * 0.04); + var rx = fbm(sx + 2.4 * qx + 1.7 + t * 0.06, sy + 2.4 * qy + 9.2 + t * 0.06); + var ry = fbm(sx + 2.4 * qx + 8.3 - t * 0.05, sy + 2.4 * qy + 2.8 - t * 0.05); + var f = fbm(sx + 2.2 * rx, sy + 2.2 * ry); + var base = smoothstep(0.18, 0.86, f) * 0.46; + var zx = px - asp * 0.8, zy = py - 0.76; + base += 0.36 * Math.exp(-(zx * zx + zy * zy) / 0.11) * (0.8 + 0.2 * Math.sin(t * 0.45)); + var cx = px - asp * 0.16, cy = py - 0.12; + base -= 0.12 * Math.exp(-(cx * cx + cy * cy) / 0.2); + base *= 0.5 + 0.5 * smoothstep(0, 0.95, (px / asp) * 0.85 + py * 0.55); + var heat = 0; + for (var i = 0; i < MAX_HEAT; i++) { + var o = i * 4, dx = px - heatData[o], dy = py - heatData[o + 1]; + heat += heatData[o + 2] * Math.exp(-(dx * dx + dy * dy) / Math.max(heatData[o + 3] * heatData[o + 3], 0.0001)); + } + heat *= 1 - 0.62 * calmAt(px, py); + var v = Math.max(base, 0) + heat * 0.66; + v = 1 - Math.exp(-v * 1.35); + return v * intro; + } + + function readTemperature() { + if (!probeVal || !cur.inside) return; + var v = Math.max(0, Math.min(1, fieldAt(cur.tx, cur.ty))); + var temp = T_MIN + v * (T_MAX - T_MIN); + probeVal.textContent = temp.toFixed(1).replace('.', ',') + ' °C'; + if (marker) marker.style.left = (v * 100).toFixed(1) + '%'; + } + + function step(now) { + raf = 0; + if (!running) return; + var dt = last ? Math.min((now - last) / 1000, 0.05) : 0.016; + last = now; + if (!reduce) time += dt; + + // Auflösung automatisch an die Leistung anpassen + if (!tuned) { + frameTimes.push(dt); + if (frameTimes.length >= 80) { + var avg = frameTimes.reduce(function (a, b) { return a + b; }, 0) / frameTimes.length; + if (avg > 0.024 && quality > 0.38) { quality *= 0.75; resize(); frameTimes = []; } + else tuned = true; + } + } + + intro += (introTarget - intro) * (1 - Math.exp(-dt * 1.8)); + var asp = width / height; + + // Maus + var k = 1 - Math.exp(-dt * 9); + cur.x += (cur.tx - cur.x) * k; + cur.y += (cur.ty - cur.y) * k; + var idle = (now - cur.lastMove) > 3200; + cur.heat += ((cur.inside ? 1 : 0) - cur.heat) * (1 - Math.exp(-dt * 3)); + if (cur.inside && !idle && now - lastEmit > 55) { + emit(cur.x, cur.y, 0.42, 0.075); + lastEmit = now; + } + + // Autopilot: wandernde Wärmequelle oben rechts, solange niemand interagiert + var autoOn = (!cur.inside || idle) && !reduce; + auto.heat += ((autoOn ? 0.8 : 0) - auto.heat) * (1 - Math.exp(-dt * 1.2)); + var ax = asp * (0.7 + 0.16 * Math.sin(time * 0.21)) + 0.05 * Math.sin(time * 0.53); + var ay = 0.66 + 0.16 * Math.sin(time * 0.29 + 1.3); + if (autoOn && now - lastEmit > 140) { + emit(ax, ay, 0.3 * auto.heat, 0.09); + lastEmit = now; + } + + // Abkühlen & Ausbreiten + for (var i = 0; i < trail.length; i++) { + trail[i].i *= Math.exp(-dt * 0.85); + trail[i].r += dt * 0.032; + } + + heatData[0] = cur.x; heatData[1] = cur.y; heatData[2] = cur.heat * 0.8; heatData[3] = 0.095; + heatData[4] = ax; heatData[5] = ay; heatData[6] = auto.heat * 0.7; heatData[7] = 0.13; + for (var j = 0; j < MAX_HEAT - 2; j++) { + var o = (j + 2) * 4, tp = trail[j]; + if (tp) { heatData[o] = tp.x; heatData[o + 1] = tp.y; heatData[o + 2] = tp.i; heatData[o + 3] = tp.r; } + else { heatData[o + 2] = 0; heatData[o + 3] = 0.1; } + } + + gl.uniform2f(uRes, width, height); + gl.uniform1f(uTime, time); + gl.uniform1f(uIntro, intro); + gl.uniform4f(uCalm, calmRect[0], calmRect[1], calmRect[2], calmRect[3]); + gl.uniform4fv(uHeat, heatData); + gl.drawArrays(gl.TRIANGLES, 0, 3); + + frame++; + if (frame % 4 === 0) readTemperature(); + if (probe && cur.inside) { + probe.style.transform = 'translate3d(' + cur.clientX.toFixed(1) + 'px,' + cur.clientY.toFixed(1) + 'px,0)'; + } + + raf = w.requestAnimationFrame(step); + } + + function start() { + if (running || !visible || document.hidden) return; + running = true; + last = 0; + raf = w.requestAnimationFrame(step); + } + function stop() { + running = false; + if (raf) w.cancelAnimationFrame(raf); + raf = 0; + } + + resize(); + if ('ResizeObserver' in w) { + var ro = new ResizeObserver(function () { resize(); }); + ro.observe(canvas); + if (calmEl) ro.observe(calmEl); + } else { + w.addEventListener('resize', resize); + } + if (d().fonts && d().fonts.ready) d().fonts.ready.then(function () { resize(); }); + + if ('IntersectionObserver' in w) { + new IntersectionObserver(function (entries) { + visible = entries[0].isIntersecting; + if (visible) start(); else stop(); + }, { threshold: 0 }).observe(hero); + } + document.addEventListener('visibilitychange', function () { if (document.hidden) stop(); else start(); }); + canvas.addEventListener('webglcontextlost', function (e) { e.preventDefault(); stop(); root.classList.add('no-webgl'); }); + + start(); + + return { + heatUp: function () { introTarget = 1; }, + measure: function () { rect = canvas.getBoundingClientRect(); measureCalm(); }, + start: start, + stop: stop + }; + } + + function d() { return document; } + + w.OlzThermal = { init: init }; +})(window); diff --git a/assets/vendor/LICENSE-lenis.txt b/assets/vendor/LICENSE-lenis.txt new file mode 100644 index 0000000..7a85c84 --- /dev/null +++ b/assets/vendor/LICENSE-lenis.txt @@ -0,0 +1,9 @@ +The MIT License + +Copyright (c) 2024 darkroom.engineering + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/assets/vendor/LICENSES.md b/assets/vendor/LICENSES.md new file mode 100644 index 0000000..1ef6509 --- /dev/null +++ b/assets/vendor/LICENSES.md @@ -0,0 +1,10 @@ +# Eingebundene Bibliotheken + +Alle Bibliotheken werden lokal ausgeliefert (kein CDN, keine Datenübertragung an Dritte). + +| Datei | Bibliothek | Version | Lizenz | +|---|---|---|---| +| `gsap.min.js`, `ScrollTrigger.min.js`, `SplitText.min.js` | [GSAP](https://gsap.com) | 3.15.0 | GSAP Standard „No Charge“ License – kostenlos, auch kommerziell (https://gsap.com/standard-license) | +| `lenis.min.js` | [Lenis](https://github.com/darkroomengineering/lenis) | 1.3.26 | MIT (siehe `LICENSE-lenis.txt`) | + +Schriften in `assets/fonts/`: Instrument Sans & Instrument Serif – SIL Open Font License 1.1 (siehe `OFL-*.txt`). diff --git a/assets/vendor/ScrollTrigger.min.js b/assets/vendor/ScrollTrigger.min.js new file mode 100644 index 0000000..35d4ab7 --- /dev/null +++ b/assets/vendor/ScrollTrigger.min.js @@ -0,0 +1,11 @@ +/*! + * ScrollTrigger 3.15.0 + * https://gsap.com + * + * @license Copyright 2026, GreenSock. All rights reserved. + * Subject to the terms at https://gsap.com/standard-license. + * @author: Jack Doyle, jack@greensock.com + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function _defineProperties(e,t){for(var r=0;r=Math.abs(r)?t:r}function P(){(Ae=Se.core.globals().ScrollTrigger)&&Ae.core&&function _integrate(){var e=Ae.core,r=e.bridge||{},t=e._scrollers,n=e._proxies;t.push.apply(t,Ie),n.push.apply(n,Le),Ie=t,Le=n,o=function _bridge(e,t){return r[e](t)}}()}function Q(e){return Se=e||r(),!Te&&Se&&"undefined"!=typeof document&&document.body&&(Ce=window,ke=(Me=document).documentElement,Ee=Me.body,t=[Ce,Me,ke,Ee],Se.utils.clamp,Be=Se.core.context||function(){},Oe="onpointerenter"in Ee?"pointer":"mouse",Pe=k.isTouch=Ce.matchMedia&&Ce.matchMedia("(hover: none), (pointer: coarse)").matches?1:"ontouchstart"in Ce||0=i,n=Math.abs(t)>=i;T&&(r||n)&&T(se,e,t,me,ye),r&&(m&&0Math.abs(t)?"x":"y",oe=!0),"y"!==ae&&(me[2]+=e,se._vx.update(e,!0)),"x"!==ae&&(ye[2]+=t,se._vy.update(t,!0)),n?ee=ee||requestAnimationFrame(lf):lf()}function of(e){if(!jf(e,1)){var t=(e=N(e,s)).clientX,r=e.clientY,n=t-se.x,i=r-se.y,o=se.isDragging;se.x=t,se.y=r,(o||(n||i)&&(Math.abs(se.startX-t)>=a||Math.abs(se.startY-r)>=a))&&(re=re||(o?2:1),o||(se.isDragging=!0),nf(n,i))}}function rf(e){return e.touches&&1=e)return a[n];return a[n-1]}for(n=a.length,e+=r;n--;)if(a[n]<=e)return a[n];return a[0]}:function(e,t,r){void 0===r&&(r=.001);var n=o(e);return!t||Math.abs(n-e)r&&(n*=t/100),e=e.substr(0,r-1)),e=n+(e in U?U[e]*t:~e.indexOf("%")?parseFloat(e)*t/100:parseFloat(e)||0)}return e}function Eb(e,t,r,n,i,o,a,s){var l=i.startColor,c=i.endColor,u=i.fontSize,f=i.indent,d=i.fontWeight,p=Ue.createElement("div"),g=Ma(r)||"fixed"===z(r,"pinType"),h=-1!==e.indexOf("scroller"),v=g?He:"IFRAME"===r.tagName?r.contentDocument.body:r,b=-1!==e.indexOf("start"),m=b?l:c,y="border-color:"+m+";font-size:"+u+";color:"+m+";font-weight:"+d+";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";return y+="position:"+((h||s)&&g?"fixed;":"absolute;"),!h&&!s&&g||(y+=(n===Xe?I:Y)+":"+(o+parseFloat(f))+"px;"),a&&(y+="box-sizing:border-box;text-align:left;width:"+a.offsetWidth+"px;"),p._isStart=b,p.setAttribute("class","gsap-marker-"+e+(t?" marker-"+t:"")),p.style.cssText=y,p.innerText=t||0===t?e+"-"+t:e,v.children[0]?v.insertBefore(p,v.children[0]):v.appendChild(p),p._offset=p["offset"+n.op.d2],q(p,0,n,b),p}function Jb(){return 34He.clientWidth)||(Ie.cache++,v?R=R||requestAnimationFrame($):$(),st||V("scrollStart"),st=at())}function Lb(){y=Je.innerWidth,m=Je.innerHeight}function Mb(e){Ie.cache++,!0!==e&&(je||h||Ue.fullscreenElement||Ue.webkitFullscreenElement||b&&y===Je.innerWidth&&!(Math.abs(Je.innerHeight-m)>.25*Je.innerHeight))||c.restart(!0)}function Pb(){return yb(ne,"scrollEnd",Pb)||kt(!0)}function Sb(e){for(var t=0;tt,n=e._startClamp&&e.start>=t;(r||n)&&e.setPositions(n?t-1:e.start,r?Math.max(n?t:e.start+1,t):e.end,!0)}),_b(!1),et=0,r.forEach(function(e){return e&&e.render&&e.render(-1)}),Ie.forEach(function(e){Ua(e)&&(e.smooth&&requestAnimationFrame(function(){return e.target.style.scrollBehavior="smooth"}),e.rec&&e(e.rec))}),Vb(_,1),c.pause(),Mt++,$(rt=2),Tt.forEach(function(e){return Ua(e.vars.onRefresh)&&e.vars.onRefresh(e)}),rt=ne.isRefreshing=!1,V("refresh")}else xb(ne,"scrollEnd",Pb)},K=0,Et=1,$=function _updateAll(e){if(2===e||!rt&&!T){ne.isUpdating=!0,it&&it.update(0);var t=Tt.length,r=at(),n=50<=r-D,i=t&&Tt[0].scroll();if(Et=i=Ra(be,he)){if(oe&&Ae()&&!de)for(o=oe.parentNode;o&&o!==He;)o._pinOffset&&(B-=o._pinOffset,I-=o._pinOffset),o=o.parentNode}else i=nb(ae),s=he===Xe,a=Ae(),K=parseFloat(j(he.a))+w,!y&&1=I})},Te.update=function(e,t,r){if(!de||r||e){var n,i,o,a,s,l,c,u=!0===rt?re:Te.scroll(),f=e?0:(u-B)/q,d=f<0?0:1u+(u-D)/(at()-Ge)*E&&(d=.9999)),d!==p&&Te.enabled){if(a=(s=(n=Te.isActive=!!d&&d<1)!=(!!p&&p<1))||!!d!=!!p,Te.direction=p=Ra(be,he),fe)if(e||!n&&!l)qc(ae,G);else{var g=_t(ae,!0),h=u-B;qc(ae,He,g.top+(he===Xe?h:0)+xt,g.left+(he===Xe?0:h)+xt)}Pt(n||l?W:V),Z&&d<1&&n||b(K+(1!==d||l?0:$))}}else b(Ja(K+$*d));!ue||A.tween||je||ot||te.restart(!0),C&&(s||ce&&d&&(d<1||!tt))&&We(C.targets).forEach(function(e){return e.classList[n||ce?"add":"remove"](C.className)}),!T||ve||e||T(Te),a&&!je?(ve&&(c&&("complete"===o?O.pause().totalProgress(1):"reset"===o?O.restart(!0).pause():"restart"===o?O.restart(!0):O[o]()),T&&T(Te)),!s&&tt||(M&&s&&Ya(Te,M),xe[i]&&Ya(Te,xe[i]),ce&&(1===d?Te.kill(!1,1):xe[i]=0),s||xe[i=1===d?1:3]&&Ya(Te,xe[i])),pe&&!n&&Math.abs(Te.getVelocity())>(Va(pe)?pe:2500)&&(Xa(Te.callbackAnimation),ee?ee.progress(1):Xa(O,"reverse"===o?1:!d,1))):ve&&T&&!je&&T(Te)}if(x){var v=de?u/de.duration()*(de._caScrollDist||0):u;y(v+(X._isFlipped?1:0)),x(v)}S&&S(-u/de.duration()*(de._caScrollDist||0))}},Te.enable=function(e,t){Te.enabled||(Te.enabled=!0,xb(be,"resize",Mb),me||xb(be,"scroll",Kb),Ce&&xb(ScrollTrigger,"refreshInit",Ce),!1!==e&&(Te.progress=Oe=0,R=D=Ee=Ae()),!1!==t&&Te.refresh())},Te.getTween=function(e){return e&&A?A.tween:ee},Te.setPositions=function(e,t,r,n){if(de){var i=de.scrollTrigger,o=de.duration(),a=i.end-i.start;e=i.start+a*e/o,t=i.start+a*t/o}Te.refresh(!1,!1,{start:Ea(e,r&&!!Te._startClamp),end:Ea(t,r&&!!Te._endClamp)},n),Te.update()},Te.adjustPinSpacing=function(e){if(Q&&e){var t=Q.indexOf(he.d)+1;Q[t]=parseFloat(Q[t])+e+xt,Q[1]=parseFloat(Q[1])+e+xt,Pt(Q)}},Te.disable=function(e,t){if(!1!==e&&Te.revert(!0,!0),Te.enabled&&(Te.enabled=Te.isActive=!1,t||ee&&ee.pause(),re=0,n&&(n.uncache=1),Ce&&yb(ScrollTrigger,"refreshInit",Ce),te&&(te.pause(),A.tween&&A.tween.kill()&&(A.tween=0)),!me)){for(var r=Tt.length;r--;)if(Tt[r].scroller===be&&Tt[r]!==Te)return;yb(be,"resize",Mb),me||yb(be,"scroll",Kb)}},Te.kill=function(e,t){Te.disable(e,t),ee&&!t&&ee.kill(),a&&delete Ct[a];var r=Tt.indexOf(Te);0<=r&&Tt.splice(r,1),r===$e&&0o&&(b()>o?a.progress(1)&&b(o):a.resetTo("scrollY",o))}Wa(e)||(e={}),e.preventDefault=e.isNormalizer=e.allowClicks=!0,e.type||(e.type="wheel,touch"),e.debounce=!!e.debounce,e.id=e.id||"normalizer";var n,o,l,i,a,c,u,s,f=e.normalizeScrollX,t=e.momentum,r=e.allowNestedScroll,d=e.onRelease,p=J(e.target)||qe,g=Fe.core.globals().ScrollSmoother,h=g&&g.get(),v=E&&(e.content&&J(e.content)||h&&!1!==e.content&&!h.smooth()&&h.content()),b=L(p,Xe),m=L(p,Ne),y=1,x=(k.isTouch&&Je.visualViewport?Je.visualViewport.scale*Je.visualViewport.width:Je.outerWidth)/Je.innerWidth,_=0,w=Ua(t)?function(){return t(n)}:function(){return t||2.8},S=zc(p,e.type,!0,r),T=Ia,C=Ia;return v&&Fe.set(v,{y:"+=0"}),e.ignoreCheck=function(e){return E&&"touchmove"===e.type&&function ignoreDrag(){if(i){requestAnimationFrame(Jq);var e=Ja(n.deltaY/2),t=C(b.v-e);if(v&&t!==b.v+b.offset){b.offset=t-b.v;var r=Ja((parseFloat(v&&v._gsap.y)||0)-b.offset);v.style.transform="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, "+r+", 0, 1)",v._gsap.y=r+"px",b.cacheID=Ie.cache,$()}return!0}b.offset&&Nq(),i=!0}()||1.05=o||o-1<=r)&&Fe.to({},{onUpdate:Tq,duration:i})}else s.restart(!0);d&&d(e)},e.onWheel=function(){a._ts&&a.pause(),1e3K||Y.register(window.gsap),$=typeof Intl!="undefined"&&"Segmenter"in Intl?new Intl.Segmenter:0,I=e=>e?typeof e=="string"?I(document.querySelectorAll(e)):"length"in e?Array.from(e).reduce((t,i)=>(typeof i=="string"?t.push(...I(i)):t.push(i),t),[]):[e]:[],ee=e=>I(e).filter(t=>t&&t.nodeType===1),Q=[],U=function(){},de={add:e=>e()},pe=/\s+/g,te=new RegExp("\\p{RI}\\p{RI}|\\p{Emoji}(\\p{EMod}|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?(\\u{200D}\\p{Emoji}(\\p{EMod}|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?)*|.","gu"),J={left:0,top:0,width:0,height:0},ue=(e,t)=>{for(;++t{e.innerHTML=t,i?e.setAttribute("aria-label",i):e.removeAttribute("aria-label"),n?e.setAttribute("aria-hidden",n):e.removeAttribute("aria-hidden")},ne=(e,t)=>{if(t){let i=new Set(e.join("").match(t)||Q),n=e.length,a,c,l,o;if(i.size)for(;--n>-1;){c=e[n];for(l of i)if(l.startsWith(c)&&l.length>c.length){for(a=0,o=c;l.startsWith(o+=e[n+ ++a])&&o.lengthwindow.getComputedStyle(e).display==="inline"&&(e.style.display="inline-block"),M=(e,t,i)=>t.insertBefore(typeof e=="string"?document.createTextNode(e):e,i),X=(e,t,i)=>{let n=t[e+"sClass"]||"",{tag:a="div",aria:c="auto",propIndex:l=!1}=t,o=e==="line"?"block":"inline-block",d=n.indexOf("++")>-1,_=y=>{let m=document.createElement(a),E=i.length+1;return n&&(m.className=n+(d?" "+n+E:"")),l&&m.style.setProperty("--"+e,E+""),c!=="none"&&m.setAttribute("aria-hidden","true"),a!=="span"&&(m.style.position="relative",m.style.display=o),m.textContent=y,i.push(m),m};return d&&(n=n.replace("++","")),_.collection=i,_},fe=(e,t,i,n)=>{let a=X("line",i,n),c=window.getComputedStyle(e).textAlign||"left";return(l,o)=>{let d=a("");for(d.style.textAlign=c,e.insertBefore(d,t[l]);l{var y;let m=Array.from(e.childNodes),E=0,{wordDelimiter:R,reduceWhiteSpace:B=!0,prepareText:V}=t,G=e.getBoundingClientRect(),j=G,q=!B&&window.getComputedStyle(e).whiteSpace.substring(0,3)==="pre",C=0,b=i.collection,r,f,O,s,g,x,z,h,p,W,S,T,N,F,w,u,L,v;for(typeof R=="object"?(O=R.delimiter||R,f=R.replaceWith||""):f=R===""?"":R||" ",r=f!==" ";E-1?(x=b[b.length-1],x.appendChild(document.createTextNode(n?"":u))):(x=i(n?"":u),M(x,e,s),C&&p===1&&!z&&x.insertBefore(C,x.firstChild)),n)for(S=$?ne([...$.segment(u)].map(H=>H.segment),d):u.match(o)||Q,v=0;vj.top&&W.left<=j.left){for(T=e.cloneNode(),N=e.childNodes[0];N&&N!==x;)F=N,N=N.nextSibling,T.appendChild(F);e.parentNode.insertBefore(T,e),a&&le(T)}j=W}(p=g.length?" ":r&&u.slice(-1)===" "?" "+f:f,e,s)}e.removeChild(s),C=0}else s.nodeType===1&&(l&&l.indexOf(s)>-1?(b.indexOf(s.previousSibling)>-1&&b[b.length-1].appendChild(s),C=s):(se(s,t,i,n,a,c,l,o,d,!0),C=0),a&&le(s))};const re=class ae{constructor(t,i){this.isSplit=!1,he(),this.elements=ee(t),this.chars=[],this.words=[],this.lines=[],this.masks=[],this.vars=i,this.elements.forEach(l=>{var o;i.overwrite!==!1&&((o=l[Z])==null||o._data.orig.filter(({element:d})=>d===l).forEach(ie)),l[Z]=this}),this._split=()=>this.isSplit&&this.split(this.vars);let n=[],a,c=()=>{let l=n.length,o;for(;l--;){o=n[l];let d=o.element.offsetWidth;if(d!==o.width){o.width=d,this._split();return}}};this._data={orig:n,obs:typeof ResizeObserver!="undefined"&&new ResizeObserver(()=>{clearTimeout(a),a=setTimeout(c,200)})},U(this),this.split(i)}split(t){return(this._ctx||de).add(()=>{this.isSplit&&this.revert(),this.vars=t=t||this.vars||{};let{type:i="chars,words,lines",aria:n="auto",deepSlice:a=!0,smartWrap:c,onSplit:l,autoSplit:o=!1,specialChars:d,mask:_}=this.vars,y=i.indexOf("lines")>-1,m=i.indexOf("chars")>-1,E=i.indexOf("words")>-1,R=m&&!E&&!y,B=d&&("push"in d?new RegExp("(?:"+d.join("|")+")","gu"):d),V=B?new RegExp(B.source+"|"+te.source,"gu"):te,G=!!t.ignore&&ee(t.ignore),{orig:j,animTime:q,obs:C}=this._data,b;(m||E||y)&&(this.elements.forEach((r,f)=>{j[f]={element:r,html:r.innerHTML,ariaL:r.getAttribute("aria-label"),ariaH:r.getAttribute("aria-hidden")},n==="auto"?r.setAttribute("aria-label",(r.textContent||"").trim()):n==="hidden"&&r.setAttribute("aria-hidden","true");let O=[],s=[],g=[],x=m?X("char",t,O):null,z=X("word",t,s),h,p,W,S;if(se(r,t,z,x,R,a&&(y||R),G,V,B,!1),y){let T=I(r.childNodes),N=fe(r,T,t,g),F,w=[],u=0,L=T.map(P=>P.nodeType===1?P.getBoundingClientRect():J),v=J,H;for(h=0;hv.top&&H.left{var oe;return(oe=P.parentNode)==null?void 0:oe.removeChild(P)})}if(!E){for(h=0;h{let f=r.cloneNode();return r.replaceWith(f),f.appendChild(r),r.className&&(f.className=r.className.trim().split(" ").map(O=>O+"-mask").join(" ")),f.style.overflow="clip",f}))),this.isSplit=!0,D&&y&&o&&D.addEventListener("loadingdone",this._split),(b=l&&l(this))&&b.totalTime&&(this._data.anim=q?b.totalTime(q):b),y&&o&&this.elements.forEach((r,f)=>{j[f].width=r.offsetWidth,C&&C.observe(r)})}),this}kill(){let{obs:t}=this._data;t&&t.disconnect(),D==null||D.removeEventListener("loadingdone",this._split)}revert(){var t,i;if(this.isSplit){let{orig:n,anim:a}=this._data;this.kill(),n.forEach(ie),this.chars.length=this.words.length=this.lines.length=n.length=this.masks.length=0,this.isSplit=!1,a&&(this._data.animTime=a.totalTime(),a.revert()),(i=(t=this.vars).onRevert)==null||i.call(t,this)}return this}static create(t,i){return new ae(t,i)}static register(t){A=A||t||window.gsap,A&&(I=A.utils.toArray,U=A.core.context||U),!K&&window.innerWidth>0&&(D=document.fonts,K=!0)}};re.version="3.15.0";let Y=re;k.SplitText=Y,k.default=Y;if (typeof(window)==="undefined"||window!==k){Object.defineProperty(k,"__esModule",{value:!0})} else {delete k.default}}); diff --git a/assets/vendor/gsap.min.js b/assets/vendor/gsap.min.js new file mode 100644 index 0000000..3c73d76 --- /dev/null +++ b/assets/vendor/gsap.min.js @@ -0,0 +1,11 @@ +/*! + * GSAP 3.15.0 + * https://gsap.com + * + * @license Copyright 2026, GreenSock. All rights reserved. + * Subject to the terms at https://gsap.com/standard-license. + * @author: Jack Doyle, jack@greensock.com + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).window=t.window||{})}(this,function(e){"use strict";function _inheritsLoose(t,e){t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function r(t){return"string"==typeof t}function s(t){return"function"==typeof t}function t(t){return"number"==typeof t}function u(t){return void 0===t}function v(t){return"object"==typeof t}function w(t){return!1!==t}function x(){return"undefined"!=typeof window}function y(t){return s(t)||r(t)}function R(t){return(i=bt(t,ht))&&Fe}function S(t,e){return console.warn("Invalid property",t,"set to",e,"Missing plugin? gsap.registerPlugin()")}function T(t,e){return!e&&console.warn(t)}function U(t,e){return t&&(ht[t]=e)&&i&&(i[t]=e)||ht}function V(){return 0}function ga(t){var e,r,i=t[0];if(v(i)||s(i)||(t=[t]),!(e=(i._gsap||{}).harness)){for(r=yt.length;r--&&!yt[r].targetTest(i););e=yt[r]}for(r=t.length;r--;)t[r]&&(t[r]._gsap||(t[r]._gsap=new Xt(t[r],e)))||t.splice(r,1);return t}function ha(t){return t._gsap||ga(Pt(t))[0]._gsap}function ia(t,e,r){return(r=t[e])&&s(r)?t[e]():u(r)&&t.getAttribute&&t.getAttribute(e)||r}function ja(t,e){return(t=t.split(",")).forEach(e)||t}function ka(t){return Math.round(1e5*t)/1e5||0}function la(t){return Math.round(1e7*t)/1e7||0}function ma(t,e){var r=e.charAt(0),i=parseFloat(e.substr(2));return t=parseFloat(t),"+"===r?t+i:"-"===r?t-i:"*"===r?t*i:t/i}function na(t,e){for(var r=e.length,i=0;t.indexOf(e[i])<0&&++ia;)s=s._prev;return s?(e._next=s._next,s._next=e):(e._next=t[r],t[r]=e),e._next?e._next._prev=e:t[i]=e,e._prev=s,e.parent=e._dp=t,e}function Ba(t,e,r,i){void 0===r&&(r="_first"),void 0===i&&(i="_last");var n=e._prev,a=e._next;n?n._next=a:t[r]===e&&(t[r]=a),a?a._prev=n:t[i]===e&&(t[i]=n),e._next=e._prev=e.parent=null}function Ca(t,e){t.parent&&(!e||t.parent.autoRemoveChildren)&&t.parent.remove&&t.parent.remove(t),t._act=0}function Da(t,e){if(t&&(!e||e._end>t._dur||e._start<0))for(var r=t;r;)r._dirty=1,r=r.parent;return t}function Fa(t,e,r,i){return t._startAt&&(I?t._startAt.revert(ft):t.vars.immediateRender&&!t.vars.autoRevert||t._startAt.render(e,!0,i))}function Ha(t){return t._repeat?wt(t._tTime,t=t.duration()+t._rDelay)*t:0}function Ja(t,e){return(t-e._start)*e._ts+(0<=e._ts?0:e._dirty?e.totalDuration():e._tDur)}function Ka(t){return t._end=la(t._start+(t._tDur/Math.abs(t._ts||t._rts||q)||0))}function La(t,e){var r=t._dp;return r&&r.smoothChildTiming&&t._ts&&(t._start=la(r._time-(0q)&&e.render(r,!0)),Da(t,e)._dp&&t._initted&&t._time>=t._dur&&t._ts){if(t._dur(n=Math.abs(n))&&(a=i,o=n);return a}function wb(t){return Ca(t),t.scrollTrigger&&t.scrollTrigger.kill(!!I),t.progress()<1&&At(t,"onInterrupt"),t}function zb(t){if(t)if(t=!t.name&&t.default||t,x()||t.headless){var e=t.name,r=s(t),i=e&&!r&&t.init?function(){this._props=[]}:t,n={init:V,render:_e,add:$t,kill:Te,modifier:ve,rawVars:0},a={targetTest:0,get:0,getSetter:ue,aliases:{},register:0};if(Lt(),t!==i){if(mt[e])return;ta(i,ta(xa(t,n),a)),bt(i.prototype,bt(n,xa(t,a))),mt[i.prop=e]=i,t.targetTest&&(yt.push(i),dt[e]=1),e=("css"===e?"CSS":e.charAt(0).toUpperCase()+e.substr(1))+"Plugin"}U(e,i),t.register&&t.register(Fe,i,we)}else Dt.push(t)}function Cb(t,e,r){return(6*(t+=t<0?1:1>16,e>>8&zt,e&zt]:0:Rt.black;if(!p){if(","===e.substr(-1)&&(e=e.substr(0,e.length-1)),Rt[e])p=Rt[e];else if("#"===e.charAt(0)){if(e.length<6&&(e="#"+(n=e.charAt(1))+n+(a=e.charAt(2))+a+(s=e.charAt(3))+s+(5===e.length?e.charAt(4)+e.charAt(4):"")),9===e.length)return[(p=parseInt(e.substr(1,6),16))>>16,p>>8&zt,p&zt,parseInt(e.substr(7),16)/255];p=[(e=parseInt(e.substr(1),16))>>16,e>>8&zt,e&zt]}else if("hsl"===e.substr(0,3))if(p=d=e.match(rt),r){if(~e.indexOf("="))return p=e.match(it),i&&p.length<4&&(p[3]=1),p}else o=+p[0]%360/360,u=p[1]/100,n=2*(h=p[2]/100)-(a=h<=.5?h*(u+1):h+u-h*u),3=X?u.endTime(!1):t._dur;return r(e)&&(isNaN(e)||e in o)?(a=e.charAt(0),s="%"===e.substr(-1),n=e.indexOf("="),"<"===a||">"===a?(0<=n&&(e=e.replace(/=/,"")),("<"===a?u._start:u.endTime(0<=u._repeat))+(parseFloat(e.substr(1))||0)*(s?(n<0?u:i).totalDuration()/100:1)):n<0?(e in o||(o[e]=h),o[e]):(a=parseFloat(e.charAt(n-1)+e.substr(n+1)),s&&i&&(a=a/100*(K(i)?i[0]:i).totalDuration()),1=r&&te)return i;i=i._next}else for(i=t._last;i&&i._start>=r;){if("isPause"===i.data&&i._start=n._start)&&n._ts&&h!==n){if(n.parent!==this)return this.render(t,e,r);if(n.render(0=this.totalDuration()||!v&&_)&&(f!==this._start&&Math.abs(l)===Math.abs(this._ts)||this._lock||(!t&&g||!(v===m&&0=i&&(a instanceof te?e&&n.push(a):(r&&n.push(a),t&&n.push.apply(n,a.getChildren(!0,e,r)))),a=a._next;return n},e.getById=function getById(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},e.remove=function remove(t){return r(t)?this.removeLabel(t):s(t)?this.killTweensOf(t):(t.parent===this&&Ba(this,t),t===this._recent&&(this._recent=this._last),Da(this))},e.totalTime=function totalTime(t,e){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=la(It.time-(0r:!r||s.isActive())&&n.push(s):(i=s.getTweensOf(a,r)).length&&n.push.apply(n,i),s=s._next;return n},e.tweenTo=function tweenTo(t,e){e=e||{};var r,i=this,n=Ot(i,t),a=e.startAt,s=e.onStart,o=e.onStartParams,u=e.immediateRender,h=te.to(i,ta({ease:e.ease||"none",lazy:!1,immediateRender:!1,time:n,overwrite:"auto",duration:e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale())||q,onStart:function onStart(){if(i.pause(),!r){var t=e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale());h._dur!==t&&Ua(h,t,0,1).render(h._time,!0,!0),r=1}s&&s.apply(h,o||[])}},e));return u?h.render(0):h},e.tweenFromTo=function tweenFromTo(t,e,r){return this.tweenTo(e,ta({startAt:{time:Ot(this,t)}},r))},e.recent=function recent(){return this._recent},e.nextLabel=function nextLabel(t){return void 0===t&&(t=this._time),ub(this,Ot(this,t))},e.previousLabel=function previousLabel(t){return void 0===t&&(t=this._time),ub(this,Ot(this,t),1)},e.currentLabel=function currentLabel(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+q)},e.shiftChildren=function shiftChildren(t,e,r){void 0===r&&(r=0);var i,n=this._first,a=this.labels;for(t=la(t);n;)n._start>=r&&(n._start+=t,n._end+=t),n=n._next;if(e)for(i in a)a[i]>=r&&(a[i]+=t);return Da(this)},e.invalidate=function invalidate(t){var e=this._first;for(this._lock=0;e;)e.invalidate(t),e=e._next;return i.prototype.invalidate.call(this,t)},e.clear=function clear(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._dp&&(this._time=this._tTime=this._pTime=0),t&&(this.labels={}),Da(this)},e.totalDuration=function totalDuration(t){var e,r,i,n=0,a=this,s=a._last,o=X;if(arguments.length)return a.timeScale((a._repeat<0?a.duration():a.totalDuration())/(a.reversed()?-t:t));if(a._dirty){for(i=a.parent;s;)e=s._prev,s._dirty&&s.totalDuration(),o<(r=s._start)&&a._sort&&s._ts&&!a._lock?(a._lock=1,Na(a,s,r-s._delay,1)._lock=0):o=r,r<0&&s._ts&&(n-=r,(!i&&!a._dp||i&&i.smoothChildTiming)&&(a._start+=la(r/a._ts),a._time-=r,a._tTime-=r),a.shiftChildren(-r,!1,-Infinity),o=0),s._end>n&&s._ts&&(n=s._end),s=e;Ua(a,a===L&&a._time>n?a._time:n,1,1),a._dirty=0}return a._tDur},Timeline.updateRoot=function updateRoot(t){if(L._ts&&(qa(L,Ja(t,L)),f=It.frame),It.frame>=vt){vt+=Y.autoSleep||120;var e=L._first;if((!e||!e._ts)&&Y.autoSleep&&It._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||It.sleep()}}},Timeline}(qt);ta(Gt.prototype,{_lock:0,_hasPause:0,_forcing:0});function cc(t,e,i,n,a,o){var u,h,l,f;if(mt[t]&&!1!==(u=new mt[t]).init(a,u.rawVars?e[t]:function _processVars(t,e,i,n,a){if(s(t)&&(t=Qt(t,a,e,i,n)),!v(t)||t.style&&t.nodeType||K(t)||J(t))return r(t)?Qt(t,a,e,i,n):t;var o,u={};for(o in t)u[o]=Qt(t[o],a,e,i,n);return u}(e[t],n,a,o,i),i,n,o)&&(i._pt=h=new we(i._pt,a,t,0,1,u.render,u,0,u.priority),i!==c))for(l=i._ptLookup[i._targets.indexOf(a)],f=u._props.length;f--;)l[u._props[f]]=h;return u}function ic(t,r,e,i){var n,a,s=r.ease||i||"power1.inOut";if(K(r))a=e[t]||(e[t]=[]),r.forEach(function(t,e){return a.push({t:e/(r.length-1)*100,v:t,e:s})});else for(n in r)a=e[n]||(e[n]=[]),"ease"===n||a.push({t:parseFloat(t),v:r[n],e:s})}var Zt,Wt,$t=function _addPropTween(t,e,i,n,a,o,u,h,l,f){s(n)&&(n=n(a||0,t,o));var c,d=t[e],p="get"!==i?i:s(d)?l?t[e.indexOf("set")||!s(t["get"+e.substr(3)])?e:"get"+e.substr(3)](l):t[e]():d,_=s(d)?l?se:ae:ie;if(r(n)&&(~n.indexOf("random(")&&(n=rb(n)),"="===n.charAt(1)&&(!(c=ma(p,n)+(_a(p)||0))&&0!==c||(n=c))),!f||p!==n||Wt)return isNaN(p*n)||""===n?(d||e in t||S(e,n),function _addComplexStringPropTween(t,e,r,i,n,a,s){var o,u,h,l,f,c,d,p,_=new we(this._pt,t,e,0,1,pe,null,n),m=0,g=0;for(_.b=r,_.e=i,r+="",(d=~(i+="").indexOf("random("))&&(i=rb(i)),a&&(a(p=[r,i],t,e),r=p[0],i=p[1]),u=r.match(at)||[];o=at.exec(i);)l=o[0],f=i.substring(m,o.index),h?h=(h+1)%5:"rgba("===f.substr(-5)&&(h=1),l!==u[g++]&&(c=parseFloat(u[g-1])||0,_._pt={_next:_._pt,p:f||1===g?f:",",s:c,c:"="===l.charAt(1)?ma(c,l)-c:parseFloat(l)-c,m:h&&h<4?Math.round:0},m=at.lastIndex);return _.c=m")}),s.duration();else{for(l in u={},k)"ease"===l||"easeEach"===l||ic(l,k[l],u,k.easeEach);for(l in u)for(A=u[l].sort(function(t,e){return t.t-e.t}),o=R=0;o=t._tDur||e<0)&&t.ratio===u&&(u&&Ca(t,1),r||I||(At(t,u?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}else t._zTime||(t._zTime=e)}(this,t,e,r);return this},e.targets=function targets(){return this._targets},e.invalidate=function invalidate(t){return t&&this.vars.runBackwards||(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(t),E.prototype.invalidate.call(this,t)},e.resetTo=function resetTo(t,e,r,i,n){d||It.wake(),this._ts||this.play();var a,s=Math.min(this._dur,(this._dp._time-this._start)*this._ts);return this._initted||Ht(this,s),a=this._ease(s/this._dur),function _updatePropTweens(t,e,r,i,n,a,s,o){var u,h,l,f,c=(t._pt&&t._ptCache||(t._ptCache={}))[e];if(!c)for(c=t._ptCache[e]=[],l=t._ptLookup,f=t._targets.length;f--;){if((u=l[f][e])&&u.d&&u.d._pt)for(u=u.d._pt;u&&u.p!==e&&u.fp!==e;)u=u._next;if(!u)return Wt=1,t.vars[e]="+=0",Ht(t,s),Wt=0,o?T(e+" not eligible for reset. Try splitting into individual properties"):1;c.push(u)}for(f=c.length;f--;)(u=(h=c[f])._pt||h).s=!i&&0!==i||n?u.s+(i||0)+a*u.c:i,u.c=r-u.s,h.e&&(h.e=ka(r)+_a(h.e)),h.b&&(h.b=u.s+_a(h.b))}(this,t,e,r,i,a,s,n)?this.resetTo(t,e,r,i,1):(La(this,0),this.parent||Aa(this._dp,this,"_first","_last",this._dp._sort?"_start":0),this.render(0))},e.kill=function kill(t,e){if(void 0===e&&(e="all"),!(t||e&&"all"!==e))return this._lazy=this._pt=0,this.parent?wb(this):this.scrollTrigger&&this.scrollTrigger.kill(!!I),this;if(this.timeline){var i=this.timeline.totalDuration();return this.timeline.killTweensOf(t,e,Zt&&!0!==Zt.vars.overwrite)._first||wb(this),this.parent&&i!==this.timeline.totalDuration()&&Ua(this,this._dur*this.timeline._tDur/i,0,1),this}var n,a,s,o,u,h,l,f=this._targets,c=t?Pt(t):f,d=this._ptLookup,p=this._pt;if((!e||"all"===e)&&function _arraysMatch(t,e){for(var r=t.length,i=r===e.length;i&&r--&&t[r]===e[r];);return r<0}(f,c))return"all"===e&&(this._pt=0),wb(this);for(n=this._op=this._op||[],"all"!==e&&(r(e)&&(u={},ja(e,function(t){return u[t]=1}),e=u),e=function _addAliasesToVars(t,e){var r,i,n,a,s=t[0]?ha(t[0]).harness:0,o=s&&s.aliases;if(!o)return e;for(i in r=bt({},e),o)if(i in r)for(n=(a=o[i].split(",")).length;n--;)r[a[n]]=r[i];return r}(f,e)),l=f.length;l--;)if(~c.indexOf(f[l]))for(u in a=d[l],"all"===e?(n[l]=e,o=a,s={}):(s=n[l]=n[l]||{},o=e),o)(h=a&&a[u])&&("kill"in h.d&&!0!==h.d.kill(u)||Ba(this,h,"_pt"),delete a[u]),"all"!==s&&(s[u]=1);return this._initted&&!this._pt&&p&&wb(this),this},Tween.to=function to(t,e,r){return new Tween(t,e,r)},Tween.from=function from(t,e){return Ya(1,arguments)},Tween.delayedCall=function delayedCall(t,e,r,i){return new Tween(e,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:e,onReverseComplete:e,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:i})},Tween.fromTo=function fromTo(t,e,r){return Ya(2,arguments)},Tween.set=function set(t,e){return e.duration=0,e.repeatDelay||(e.repeat=0),new Tween(t,e)},Tween.killTweensOf=function killTweensOf(t,e,r){return L.killTweensOf(t,e,r)},Tween}(qt);ta(te.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),ja("staggerTo,staggerFrom,staggerFromTo",function(r){te[r]=function(){var t=new Gt,e=Ct.call(arguments,0);return e.splice("staggerFromTo"===r?5:4,0,0),t[r].apply(t,e)}});function qc(t,e,r){return t.setAttribute(e,r)}function yc(t,e,r,i){i.mSet(t,e,i.m.call(i.tween,r,i.mt),i)}var ie=function _setterPlain(t,e,r){return t[e]=r},ae=function _setterFunc(t,e,r){return t[e](r)},se=function _setterFuncWithParam(t,e,r,i){return t[e](i.fp,r)},ue=function _getSetter(t,e){return s(t[e])?ae:u(t[e])&&t.setAttribute?qc:ie},fe=function _renderPlain(t,e){return e.set(e.t,e.p,Math.round(1e6*(e.s+e.c*t))/1e6,e)},de=function _renderBoolean(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},pe=function _renderComplexString(t,e){var r=e._pt,i="";if(!t&&e.b)i=e.b;else if(1===t&&e.e)i=e.e;else{for(;r;)i=r.p+(r.m?r.m(r.s+r.c*t):Math.round(1e4*(r.s+r.c*t))/1e4)+i,r=r._next;i+=e.c}e.set(e.t,e.p,i,e)},_e=function _renderPropTweens(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},ve=function _addPluginModifier(t,e,r,i){for(var n,a=this._pt;a;)n=a._next,a.p===i&&a.modifier(t,e,r),a=n},Te=function _killPropTweensOf(t){for(var e,r,i=this._pt;i;)r=i._next,i.p===t&&!i.op||i.op===t?Ba(this,i,"_pt"):i.dep||(e=1),i=r;return!e},be=function _sortPropTweensByPriority(t){for(var e,r,i,n,a=t._pt;a;){for(e=a._next,r=i;r&&r.pr>a.pr;)r=r._next;(a._prev=r?r._prev:n)?a._prev._next=a:i=a,(a._next=r)?r._prev=a:n=a,a=e}t._pt=i},we=(PropTween.prototype.modifier=function modifier(t,e,r){this.mSet=this.mSet||this.set,this.set=yc,this.m=t,this.mt=r,this.tween=e},PropTween);function PropTween(t,e,r,i,n,a,s,o,u){this.t=e,this.s=i,this.c=n,this.p=r,this.r=a||fe,this.d=s||this,this.set=o||ie,this.pr=u||0,(this._next=t)&&(t._prev=this)}ja(Tt+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger,easeReverse",function(t){return dt[t]=1}),ht.TweenMax=ht.TweenLite=te,ht.TimelineLite=ht.TimelineMax=Gt,L=new Gt({sortChildren:!1,defaults:j,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),Y.stringFilter=Ib;function Gc(t){return(Oe[t]||Me).map(function(t){return t()})}function Hc(){var t=Date.now(),o=[];2=1;let i=n?1:this.easing(r);this.value=this.from+(this.to-this.from)*i}else this.lerp?(this.value=r(this.value,this.to,this.lerp*60,e),Math.round(this.value)===Math.round(this.to)&&(this.value=this.to,n=!0)):(this.value=this.to,n=!0);n&&this.stop(),this.onUpdate?.(this.value,n)}stop(){this.isRunning=!1}fromTo(e,t,{lerp:n,duration:r,easing:i,onStart:a,onUpdate:o}){this.from=this.value=e,this.to=t,this.lerp=n,this.duration=r,this.easing=i,this.currentTime=0,this.isRunning=!0,a?.(),this.onUpdate=o}};function o(e,t){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>{n=void 0,e.apply(this,r)},t)}}var s=class{width=0;height=0;scrollHeight=0;scrollWidth=0;debouncedResize;wrapperResizeObserver;contentResizeObserver;constructor(e,t,{autoResize:n=!0,debounce:r=250}={}){this.wrapper=e,this.content=t,n&&(this.debouncedResize=o(this.resize,r),this.wrapper instanceof Window?window.addEventListener(`resize`,this.debouncedResize):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),this.wrapper===window&&this.debouncedResize&&window.removeEventListener(`resize`,this.debouncedResize)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper instanceof Window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper instanceof Window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}},c=class{events={};emit(e,...t){let n=this.events[e]||[];for(let e=0,r=n.length;e{this.events[e]=this.events[e]?.filter(e=>t!==e)}}off(e,t){this.events[e]=this.events[e]?.filter(e=>t!==e)}destroy(){this.events={}}};let l={passive:!1};function u(e,t){return e===1?16.666666666666668:e===2?t:1}var d=class{touchStart={x:0,y:0};lastDelta={x:0,y:0};window={width:0,height:0};emitter=new c;constructor(e,t={wheelMultiplier:1,touchMultiplier:1}){this.element=e,this.options=t,window.addEventListener(`resize`,this.onWindowResize),this.onWindowResize(),this.element.addEventListener(`wheel`,this.onWheel,l),this.element.addEventListener(`touchstart`,this.onTouchStart,l),this.element.addEventListener(`touchmove`,this.onTouchMove,l),this.element.addEventListener(`touchend`,this.onTouchEnd,l)}on(e,t){return this.emitter.on(e,t)}destroy(){this.emitter.destroy(),window.removeEventListener(`resize`,this.onWindowResize),this.element.removeEventListener(`wheel`,this.onWheel,l),this.element.removeEventListener(`touchstart`,this.onTouchStart,l),this.element.removeEventListener(`touchmove`,this.onTouchMove,l),this.element.removeEventListener(`touchend`,this.onTouchEnd,l)}onTouchStart=e=>{let{clientX:t,clientY:n}=e.targetTouches?e.targetTouches[0]:e;this.touchStart.x=t,this.touchStart.y=n,this.lastDelta={x:0,y:0},this.emitter.emit(`scroll`,{deltaX:0,deltaY:0,event:e})};onTouchMove=e=>{let{clientX:t,clientY:n}=e.targetTouches?e.targetTouches[0]:e,r=-(t-this.touchStart.x)*this.options.touchMultiplier,i=-(n-this.touchStart.y)*this.options.touchMultiplier;this.touchStart.x=t,this.touchStart.y=n,this.lastDelta={x:r,y:i},this.emitter.emit(`scroll`,{deltaX:r,deltaY:i,event:e})};onTouchEnd=e=>{this.emitter.emit(`scroll`,{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:e})};onWheel=e=>{let{deltaX:t,deltaY:n,deltaMode:r}=e,i=u(r,this.window.width),a=u(r,this.window.height);t*=i,n*=a,t*=this.options.wheelMultiplier,n*=this.options.wheelMultiplier,this.emitter.emit(`scroll`,{deltaX:t,deltaY:n,event:e})};onWindowResize=()=>{this.window={width:window.innerWidth,height:window.innerHeight}}};let f=e=>Math.min(1,1.001-2**(-10*e));var p=class{_isScrolling=!1;_isStopped=!1;_isLocked=!1;_preventNextNativeScrollEvent=!1;_resetVelocityTimeout=null;_rafId=null;_isDraggingSelection=!1;reducedMotionMediaQuery=window.matchMedia(`(prefers-reduced-motion: reduce)`);isTouching;isIos;time=0;userData={};lastVelocity=0;velocity=0;direction=0;options;targetScroll;animatedScroll;animate=new a;emitter=new c;dimensions;virtualScroll;constructor({wrapper:t=window,content:n=document.documentElement,eventsTarget:r=t,smoothWheel:i=!0,syncTouch:a=!1,syncTouchLerp:o=.075,touchInertiaExponent:c=1.7,duration:l,easing:u,lerp:p=.1,infinite:m=!1,orientation:h=`vertical`,gestureOrientation:g=h===`horizontal`?`both`:`vertical`,touchMultiplier:_=1,wheelMultiplier:v=1,autoResize:y=!0,prevent:b,virtualScroll:x,overscroll:S=!0,autoRaf:C=!1,anchors:w=!1,autoToggle:T=!1,allowNestedScroll:E=!1,__experimental__naiveDimensions:D=!1,naiveDimensions:O=D,stopInertiaOnNavigate:k=!1,respectReducedMotion:A=!0}={}){window.lenisVersion=e,window.lenis||(window.lenis={}),window.lenis.version=e,h===`horizontal`&&(window.lenis.horizontal=!0),a===!0&&(window.lenis.touch=!0),this.isIos=/(iPad|iPhone|iPod)/g.test(navigator.userAgent),(!t||t===document.documentElement)&&(t=window),typeof l==`number`&&typeof u!=`function`?u=f:typeof u==`function`&&typeof l!=`number`&&(l=1),this.options={wrapper:t,content:n,eventsTarget:r,smoothWheel:i,syncTouch:a,syncTouchLerp:o,touchInertiaExponent:c,duration:l,easing:u,lerp:p,infinite:m,gestureOrientation:g,orientation:h,touchMultiplier:_,wheelMultiplier:v,autoResize:y,prevent:b,virtualScroll:x,overscroll:S,autoRaf:C,anchors:w,autoToggle:T,allowNestedScroll:E,naiveDimensions:O,stopInertiaOnNavigate:k,respectReducedMotion:A},this.dimensions=new s(t,n,{autoResize:y}),this.updateClassName(),this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener(`scroll`,this.onNativeScroll),this.options.wrapper.addEventListener(`scrollend`,this.onScrollEnd,{capture:!0}),(this.options.anchors||this.options.stopInertiaOnNavigate)&&this.options.wrapper.addEventListener(`click`,this.onClick),this.options.wrapper.addEventListener(`pointerdown`,this.onPointerDown),this.virtualScroll=new d(r,{touchMultiplier:_,wheelMultiplier:v}),this.virtualScroll.on(`scroll`,this.onVirtualScroll),this.options.autoToggle&&(this.checkOverflow(),this.rootElement.addEventListener(`transitionend`,this.onTransitionEnd)),this.options.autoRaf&&(this._rafId=requestAnimationFrame(this.raf))}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener(`scroll`,this.onNativeScroll),this.options.wrapper.removeEventListener(`scrollend`,this.onScrollEnd,{capture:!0}),this.options.wrapper.removeEventListener(`pointerdown`,this.onPointerDown),(this.options.anchors||this.options.stopInertiaOnNavigate)&&this.options.wrapper.removeEventListener(`click`,this.onClick),this.virtualScroll.destroy(),this.dimensions.destroy(),this.cleanUpClassName(),this._rafId&&cancelAnimationFrame(this._rafId)}on(e,t){return this.emitter.on(e,t)}off(e,t){return this.emitter.off(e,t)}onScrollEnd=e=>{e instanceof CustomEvent||(this.isScrolling===`smooth`||this.isScrolling===!1)&&e.stopPropagation()};dispatchScrollendEvent=()=>{this.options.wrapper.dispatchEvent(new CustomEvent(`scrollend`,{bubbles:this.options.wrapper===window,detail:{lenisScrollEnd:!0}}))};get overflow(){let e=this.isHorizontal?`overflow-x`:`overflow-y`;return getComputedStyle(this.rootElement)[e]}checkOverflow(){[`hidden`,`clip`].includes(this.overflow)?this.internalStop():this.internalStart()}onTransitionEnd=e=>{e.propertyName?.includes(`overflow`)&&e.target===this.rootElement&&this.checkOverflow()};setScroll(e){this.isHorizontal?this.options.wrapper.scrollTo({left:e,behavior:`instant`}):this.options.wrapper.scrollTo({top:e,behavior:`instant`})}onClick=e=>{let t=e.composedPath().filter(e=>e instanceof HTMLAnchorElement&&e.href).map(e=>new URL(e.href)),n=new URL(window.location.href);if(this.options.anchors){let e=t.find(e=>n.host===e.host&&n.pathname===e.pathname&&e.hash);if(e){let t=typeof this.options.anchors==`object`&&this.options.anchors?this.options.anchors:void 0,n=decodeURIComponent(e.hash);this.scrollTo(n,t);return}}if(this.options.stopInertiaOnNavigate&&t.some(e=>n.host===e.host&&n.pathname!==e.pathname)){this.reset();return}};onPointerDown=e=>{e.button===1&&this.reset()};isTouchOnSelectionHandle(e){let t=window.getSelection();if(!t||t.isCollapsed||t.rangeCount===0)return!1;let n=e.targetTouches[0]??e.changedTouches[0];if(!n)return!1;let r=t.getRangeAt(0).getClientRects();if(r.length===0)return!1;let i=r[0],a=r[r.length-1],o=Math.hypot(n.clientX-i.left,n.clientY-i.top)<=40,s=Math.hypot(n.clientX-a.right,n.clientY-a.bottom)<=40;return o||s}onVirtualScroll=e=>{if(typeof this.options.virtualScroll==`function`&&this.options.virtualScroll(e)===!1)return;let{deltaX:t,deltaY:n,event:r}=e;if(this.emitter.emit(`virtual-scroll`,{deltaX:t,deltaY:n,event:r}),r.ctrlKey||r.lenisStopPropagation)return;let i=r.type.includes(`touch`),a=r.type.includes(`wheel`);if(i&&this.isIos&&(r.type===`touchstart`&&(this._isDraggingSelection=this.isTouchOnSelectionHandle(r)),this._isDraggingSelection)){r.type===`touchend`&&(this._isDraggingSelection=!1);return}this.isTouching=r.type===`touchstart`||r.type===`touchmove`;let o=t===0&&n===0;if(this.options.syncTouch&&i&&r.type===`touchstart`&&o&&!this.isStopped&&!this.isLocked){this.reset();return}let s=this.options.gestureOrientation===`vertical`&&n===0||this.options.gestureOrientation===`horizontal`&&t===0;if(o||s)return;let c=r.composedPath();c=c.slice(0,c.indexOf(this.rootElement));let l=this.options.prevent,u=Math.abs(t)>=Math.abs(n)?`horizontal`:`vertical`;if(c.find(e=>e instanceof HTMLElement&&(typeof l==`function`&&l?.(e)||e.hasAttribute?.(`data-lenis-prevent`)||u===`vertical`&&e.hasAttribute?.(`data-lenis-prevent-vertical`)||u===`horizontal`&&e.hasAttribute?.(`data-lenis-prevent-horizontal`)||i&&e.hasAttribute?.(`data-lenis-prevent-touch`)||a&&e.hasAttribute?.(`data-lenis-prevent-wheel`)||this.options.allowNestedScroll&&this.hasNestedScroll(e,{deltaX:t,deltaY:n}))))return;if(this.isStopped||this.isLocked){r.cancelable&&r.preventDefault();return}if(!(this.options.syncTouch&&i||this.options.smoothWheel&&a)){this.isScrolling=`native`,this.animate.stop(),r.lenisStopPropagation=!0;return}let d=n;this.options.gestureOrientation===`both`?d=Math.abs(n)>Math.abs(t)?n:t:this.options.gestureOrientation===`horizontal`&&(d=t),(!this.options.overscroll||this.options.infinite||this.options.wrapper!==window&&this.limit>0&&(this.animatedScroll>0&&this.animatedScroll0||this.animatedScroll===this.limit&&n<0))&&(r.lenisStopPropagation=!0),r.cancelable&&r.preventDefault();let f=i&&this.options.syncTouch,p=i&&r.type===`touchend`;p&&(d=Math.sign(d)*Math.abs(this.velocity)**this.options.touchInertiaExponent),this.scrollTo(this.targetScroll+d,{programmatic:!1,...f?{lerp:p?this.options.syncTouchLerp:1}:{lerp:this.options.lerp,duration:this.options.duration,easing:this.options.easing}})};resize(){this.dimensions.resize(),this.animatedScroll=this.targetScroll=this.actualScroll,this.emit()}emit(){this.emitter.emit(`scroll`,this)}onNativeScroll=()=>{if(this._resetVelocityTimeout!==null&&(clearTimeout(this._resetVelocityTimeout),this._resetVelocityTimeout=null),this._preventNextNativeScrollEvent){this._preventNextNativeScrollEvent=!1;return}if(this.isScrolling===!1||this.isScrolling===`native`){let e=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity,this.velocity=this.animatedScroll-e,this.direction=Math.sign(this.animatedScroll-e),this.isStopped||(this.isScrolling=`native`),this.emit(),this.velocity!==0&&(this._resetVelocityTimeout=setTimeout(()=>{this.lastVelocity=this.velocity,this.velocity=0,this.isScrolling=!1,this.emit()},400))}};reset(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity=0,this.animate.stop()}start(){if(this.isStopped){if(this.options.autoToggle){this.rootElement.style.removeProperty(`overflow`);return}this.internalStart()}}internalStart(){this.isStopped&&(this.reset(),this.isStopped=!1,this.emit())}stop(){if(!this.isStopped){if(this.options.autoToggle){this.rootElement.style.setProperty(`overflow`,`clip`);return}this.internalStop()}}internalStop(){this.isStopped||(this.reset(),this.isStopped=!0,this.emit())}raf=e=>{let t=e-(this.time||e);this.time=e,this.animate.advance(t*.001),this.options.autoRaf&&(this._rafId=requestAnimationFrame(this.raf))};scrollTo(e,{offset:n=0,immediate:r=!1,lock:i=!1,programmatic:a=!0,lerp:o=a?this.options.lerp:void 0,duration:s=a?this.options.duration:void 0,easing:c=a?this.options.easing:void 0,onStart:l,onComplete:u,force:d=!1,userData:p}={}){if(this.prefersReducedMotion&&(a?r=!0:(o=1,s=void 0,c=void 0)),(this.isStopped||this.isLocked)&&!d)return;let m=e,h=n;if(typeof m==`string`&&[`top`,`left`,`start`,`#`].includes(m))m=0;else if(typeof m==`string`&&[`bottom`,`right`,`end`].includes(m))m=this.limit;else{let e=null;if(typeof m==`string`?(e=m.startsWith(`#`)?document.getElementById(m.slice(1)):document.querySelector(m),e||(m===`#top`?m=0:console.warn(`Lenis: Target not found`,m))):m instanceof HTMLElement&&m?.nodeType&&(e=m),e){if(this.options.wrapper!==window){let e=this.rootElement.getBoundingClientRect();h-=this.isHorizontal?e.left:e.top}let t=e.getBoundingClientRect(),n=getComputedStyle(e),r=this.isHorizontal?Number.parseFloat(n.scrollMarginLeft):Number.parseFloat(n.scrollMarginTop),i=getComputedStyle(this.rootElement),a=this.isHorizontal?Number.parseFloat(i.scrollPaddingLeft):Number.parseFloat(i.scrollPaddingTop);m=(this.isHorizontal?t.left:t.top)+this.animatedScroll-(Number.isNaN(r)?0:r)-(Number.isNaN(a)?0:a)}}if(typeof m==`number`){if(m+=h,this.options.infinite){if(a){this.targetScroll=this.animatedScroll=this.scroll;let e=m-this.animatedScroll;e>this.limit/2?m-=this.limit:e<-this.limit/2&&(m+=this.limit)}}else m=t(0,m,this.limit);if(m===this.targetScroll){l?.(this),u?.(this);return}if(this.userData=p??{},r){this.animatedScroll=this.targetScroll=m,this.setScroll(this.scroll),this.reset(),this.preventNextNativeScrollEvent(),this.emit(),u?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()});return}a||(this.targetScroll=m),typeof s==`number`&&typeof c!=`function`?c=f:typeof c==`function`&&typeof s!=`number`&&(s=1),this.animate.fromTo(this.animatedScroll,m,{duration:s,easing:c,lerp:o,onStart:()=>{i&&(this.isLocked=!0),this.isScrolling=`smooth`,l?.(this)},onUpdate:(e,t)=>{this.isScrolling=`smooth`,this.lastVelocity=this.velocity,this.velocity=e-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=e,this.setScroll(this.scroll),a&&(this.targetScroll=e),t||this.emit(),t&&(this.reset(),this.emit(),u?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()}),this.preventNextNativeScrollEvent())}})}}preventNextNativeScrollEvent(){this._preventNextNativeScrollEvent=!0,requestAnimationFrame(()=>{this._preventNextNativeScrollEvent=!1})}hasNestedScroll(e,{deltaX:t,deltaY:n}){let r=Date.now();e._lenis||={};let i=e._lenis,a,o,s,c,l,u,d,f,p,m;if(r-(i.time??0)>2e3){i.time=Date.now();let t=window.getComputedStyle(e);if(i.computedStyle=t,a=[`auto`,`overlay`,`scroll`].includes(t.overflowX),o=[`auto`,`overlay`,`scroll`].includes(t.overflowY),l=[`auto`].includes(t.overscrollBehaviorX),u=[`auto`].includes(t.overscrollBehaviorY),i.hasOverflowX=a,i.hasOverflowY=o,!(a||o))return!1;d=e.scrollWidth,f=e.scrollHeight,p=e.clientWidth,m=e.clientHeight,s=d>p,c=f>m,i.isScrollableX=s,i.isScrollableY=c,i.scrollWidth=d,i.scrollHeight=f,i.clientWidth=p,i.clientHeight=m,i.hasOverscrollBehaviorX=l,i.hasOverscrollBehaviorY=u}else s=i.isScrollableX,c=i.isScrollableY,a=i.hasOverflowX,o=i.hasOverflowY,d=i.scrollWidth,f=i.scrollHeight,p=i.clientWidth,m=i.clientHeight,l=i.hasOverscrollBehaviorX,u=i.hasOverscrollBehaviorY;if(!(a&&s||o&&c))return!1;let h=Math.abs(t)>=Math.abs(n)?`horizontal`:`vertical`,g,_,v,y,b,x;if(h===`horizontal`)g=Math.round(e.scrollLeft),_=d-p,v=t,y=a,b=s,x=l;else if(h===`vertical`)g=Math.round(e.scrollTop),_=f-m,v=n,y=o,b=c,x=u;else return!1;return!x&&(g>=_||g<=0)?!0:(v>0?g<_:g>0)&&y&&b}get rootElement(){return this.options.wrapper===window?document.documentElement:this.options.wrapper}get limit(){return this.options.naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?`x`:`y`]}get isHorizontal(){return this.options.orientation===`horizontal`}get actualScroll(){let e=this.options.wrapper;return this.isHorizontal?e.scrollX??e.scrollLeft:e.scrollY??e.scrollTop}get scroll(){return this.options.infinite?i(this.animatedScroll,this.limit):this.animatedScroll}get progress(){return this.limit===0?1:this.scroll/this.limit}get isScrolling(){return this._isScrolling}set isScrolling(e){this._isScrolling!==e&&(this._isScrolling=e,this.updateClassName())}get isStopped(){return this._isStopped}set isStopped(e){this._isStopped!==e&&(this._isStopped=e,this.updateClassName())}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked!==e&&(this._isLocked=e,this.updateClassName())}get isSmooth(){return this.isScrolling===`smooth`}get prefersReducedMotion(){return this.options.respectReducedMotion&&this.reducedMotionMediaQuery.matches}get className(){let e=`lenis`;return this.options.autoToggle&&(e+=` lenis-autoToggle`),this.isStopped&&(e+=` lenis-stopped`),this.isLocked&&(e+=` lenis-locked`),this.isScrolling&&(e+=` lenis-scrolling`),this.isScrolling===`smooth`&&(e+=` lenis-smooth`),e}updateClassName(){this.cleanUpClassName(),this.className.split(` `).forEach(e=>{this.rootElement.classList.add(e)})}cleanUpClassName(){for(let e of Array.from(this.rootElement.classList))(e===`lenis`||e.startsWith(`lenis-`))&&this.rootElement.classList.remove(e)}};globalThis.Lenis=p,globalThis.Lenis.prototype=p.prototype})(); +//# sourceMappingURL=lenis.min.js.map \ No newline at end of file diff --git a/datenschutz.html b/datenschutz.html new file mode 100644 index 0000000..63957a0 --- /dev/null +++ b/datenschutz.html @@ -0,0 +1,214 @@ + + + + + + Datenschutz – Olzinger Haustechnik + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Startseite / Rechtliches

    +

    Datenschutz­erklärung

    +
    +
    + + +
    + + + + diff --git a/impressum.html b/impressum.html new file mode 100644 index 0000000..94a2db5 --- /dev/null +++ b/impressum.html @@ -0,0 +1,201 @@ + + + + + + Impressum – Olzinger Haustechnik + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    Startseite / Rechtliches

    +

    Impressum

    +
    +
    + + +
    + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..de732f2 --- /dev/null +++ b/index.html @@ -0,0 +1,1315 @@ + + + + + + Olzinger Haustechnik – Heizung, Sanitär, Lüftung & Wärmepumpen in Ergolding bei Landshut + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + +
    +

    Haustechnik aus Ergolding – seit 1985

    +

    + Olzinger Haustechnik: + WärmeHeizung & Regenerativ + WasserSanitär & Bad + LuftLüftung +

    +
    +

    Haustechnik, die man nicht sieht – aber jeden Tag spürt. Wir planen, installieren und warten Heizung, Sanitär, Lüftung und regenerative Energiesysteme in Ergolding, Landshut und der Region.

    + +
    +
    + +
    +

    Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr

    + + + Entdecken + + +
    +
    + + + + + +
    +
    +

    Olzinger Haustechnik

    +

    + Seit 1985 sorgen wir in Ergolding und rund um Landshut für ein Zuhause, in dem einfach alles stimmt: wohlige Wärme, frisches Wasser und gute Luft. Wir planen, bauen und betreuen Haustechnik, die zuverlässig läuft, Energie spart und Ihr Haus fit für die Zukunft macht. +

    +
    + +

    Ein Ansprechpartner für alle Gewerke – von der ersten Beratung bis zur jährlichen Wartung.

    + Mehr über uns +
    +
    +
    + + +
    +
    +
    +
    +

    01Leistungen

    +

    Alles für Ihr Haus. Aus einer Hand.

    +
    +

    Ob neue Wärmepumpe, modernes Bad oder frische Luft ohne Wärmeverlust: Wir verbinden alle Gewerke der Haustechnik – sauber geplant, fachgerecht installiert und langfristig betreut.

    +
    + +
    + + +
    +
    +
    +
    01Regenerative Heiztechnik
    +

    Energie aus Sonne, Luft, Erde und Holz.

    +

    Mit Wärmepumpe, Pelletheizung oder Solarthermie heizen Sie unabhängig von Öl und Gas – klimafreundlich und zukunftssicher. Wir finden das System, das zu Ihrem Haus passt, und begleiten Sie durch die Förderung.

    +
      +
    • Luft- & Sole-Wärmepumpen
    • +
    • Pelletheizungen
    • +
    • Solarthermie
    • +
    • Hybridsysteme & Pufferspeicher
    • +
    +
    + Beratung anfragen + Mit Förderberatung +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    02Heizung
    +

    Wärme, die effizient arbeitet.

    +

    Vom Kesseltausch bis zur kompletten Heizungsmodernisierung: Moderne Brennwerttechnik, Flächenheizungen und eine optimal eingestellte Anlage senken Ihre Energiekosten spürbar.

    +
      +
    • Gas- & Öl-Brennwerttechnik
    • +
    • Heizungsmodernisierung
    • +
    • Fußboden- & Flächenheizung
    • +
    • Hydraulischer Abgleich
    • +
    +
    + Beratung anfragen + Vom Kesseltausch bis zum Komplettsystem +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    03Sanitär & Bad
    +

    Bäder, in denen man gerne ankommt.

    +

    Ob Komplettsanierung, barrierefreies Bad oder neue Trinkwasserinstallation – wir planen und bauen Bäder, die schön aussehen und über Jahrzehnte zuverlässig funktionieren.

    +
      +
    • Komplette Badsanierung
    • +
    • Barrierefreie & bodengleiche Duschen
    • +
    • Trinkwasserinstallation
    • +
    • Warmwasserbereitung
    • +
    +
    + Beratung anfragen + Planung bis Fliese – koordiniert +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    04Lüftung
    +

    Frische Luft. Ohne Wärmeverlust.

    +

    Kontrollierte Wohnraumlüftung tauscht verbrauchte gegen frische Luft – und holt sich dabei die Wärme zurück. Für ein gesundes Raumklima, weniger Feuchtigkeit und spürbar weniger Heizenergie.

    +
      +
    • Zentrale Wohnraumlüftung
    • +
    • Dezentrale Lüftungsgeräte
    • +
    • Wärmerückgewinnung
    • +
    • Filterwechsel & Wartung
    • +
    +
    + Beratung anfragen + Für Neubau & Sanierung +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    05Kundendienst & Wartung
    +

    Damit alles läuft. Jahr für Jahr.

    +

    Regelmäßige Wartung verlängert die Lebensdauer Ihrer Anlage, hält sie effizient und beugt teuren Ausfällen vor. Und wenn doch einmal etwas klemmt, ist unser Kundendienst für Sie da.

    +
      +
    • Heizungs- & Anlagenwartung
    • +
    • Störungsbehebung & Reparatur
    • +
    • Ersatzteile & Service
    • +
    • Beratung zur Modernisierung
    • +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +

    02Energie-Haus

    +

    Ein Haus. Alles verbunden.

    +
    +

    Moderne Haustechnik ist Teamarbeit. Wählen Sie eine Komponente und sehen Sie, wie Wärmepumpe, Solarthermie, Speicher, Flächenheizung, Bad und Lüftung zusammenspielen.

    +
    + +
    +
    + + Energie-Haus: Schnitt durch ein Einfamilienhaus + Wärmepumpe, Solarthermie, Pufferspeicher, Fußbodenheizung, Bad mit Warmwasser und kontrollierte Wohnraumlüftung arbeiten zusammen. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bad + Schlafen + Küche + Wohnen + Technik + Dachboden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + + + + +
    + +
    +
    +

    Regenerative Heiztechnik

    +

    Wärmepumpe

    +

    Holt Wärme aus der Umgebungsluft – selbst an frostigen Tagen. Aus einer Kilowattstunde Strom werden so mehrere Kilowattstunden Heizwärme.

    +
      +
    • Nutzt kostenlose Umweltwärme
    • +
    • Heizt im Winter, kühlt auf Wunsch im Sommer
    • +
    • Ideal mit Fußbodenheizung
    • +
    + Zur Leistung +
    + + + + + +
    + +
    +
    +
    +
    + + +
    +
    +
    +

    03Heizungs-Finder

    +

    Welche Heizung passt zu Ihrem Haus?

    +

    Vier kurze Fragen, eine erste Orientierung. Unverbindlich – die genaue Planung machen wir gemeinsam bei Ihnen vor Ort.

    +

    Kein Login, keine Daten­speicherung

    +
    + +
    +
    + Frage 1 von 4 + +
    + +
    +
    + Um welches Gebäude geht es? +
    + + + +
    +
    + + + + + + + + +
    + +
    + + +
    +
    +
    +
    + + +
    +
    +
    +

    04Ablauf

    +

    Vom ersten Anruf bis zur warmen Dusche.

    +

    Klare Schritte, feste Ansprechpartner und ein Team, das hält, was es verspricht.

    +
    + +
    + +
      +
    1. + +

      Anfrage

      +

      Sie rufen an, schreiben uns oder nutzen das Formular. Wir melden uns und vereinbaren einen Termin, der Ihnen passt.

      +
    2. +
    3. + +

      Beratung vor Ort

      +

      Wir sehen uns Ihr Haus an, hören zu und zeigen ehrlich, welche Lösung sinnvoll ist – und welche nicht.

      +
    4. +
    5. + +

      Planung & Angebot

      +

      Sie erhalten ein transparentes Angebot – auf Wunsch mit Hinweisen zu passenden Förderprogrammen.

      +
    6. +
    7. + +

      Montage & Service

      +

      Unser Team installiert sauber und termintreu. Danach bleiben wir Ihr Ansprechpartner für Wartung und Kundendienst.

      +
    8. +
    +
    +
    +
    + + +
    +
    +
    +
    +

    05Über uns

    +

    Seit 1985 in Ergolding. Und kein bisschen eingerostet.

    +
    +

    Was 1985 als kleiner Betrieb begann, ist heute ein eingespieltes Team aus rund 25 Fachleuten. Geblieben ist unser Anspruch: ehrliche Beratung, saubere Arbeit und Lösungen, die lange halten.

    +
    + +
      +
    • 1985gegründet in Ergolding
    • +
    • 41Jahre Erfahrung
    • +
    • ≈25Mitarbeitende
    • +
    • 4Gewerke unter einem Dach
    • +
    + +
    + +
      +
    1. + 1985 +

      Die Gründung

      +

      Richard Olzinger macht sich nach der Trennung von der Firma Gleisberg selbstständig und gründet Olzinger Haustechnik in Ergolding.

      +
    2. +
    3. + 1994 +

      Neue Partner

      +

      Arno Geier und Franz Ramsauer steigen als Gesellschafter ein und bringen zusätzliches Know-how in den Betrieb.

      +
    4. +
    5. + 2008 +

      Staffelübergabe

      +

      Richard Olzinger geht in den Ruhestand und übergibt seine Anteile an Robert Straub, den kaufmännischen Leiter des Betriebs.

      +
    6. +
    7. + 2014 +

      Gemeinsam an der Spitze

      +

      Arno Geier übergibt seine Anteile an Franz Ramsauer und Robert Straub, die das Unternehmen seitdem gemeinsam führen.

      +
    8. +
    9. + Heute +

      Bereit für die Energiewende

      +

      Mit rund 25 Mitarbeitenden und einem Schwerpunkt auf regenerativer Heiztechnik bringen wir Wärmepumpe, Solarthermie und Co. in die Häuser der Region.

      +
    10. +
    +
    + +
    +

    Geschäftsführung

    +
    +
    + +
    +

    Franz Ramsauer

    +

    Geschäftsführer

    +

    Gesellschafter seit 1994

    +
    +
    +
    + +
    +

    Robert Straub

    +

    Geschäftsführer · Kaufmännische Leitung

    +

    Gesellschafter seit 2008

    +
    +
    +
    + +
    +

    Unser Team

    +

    Rund 25 Fachleute aus der Region

    +

    Planung · Montage · Kundendienst · Büro

    +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    +

    06Karriere

    +

    Hände, die anpacken. Köpfe, die mitdenken.

    +

    Haustechnik ist ein Beruf mit Zukunft – gerade jetzt, wo Wärmepumpe & Co. die Energiewende direkt ins Haus bringen. Wir bilden aus und freuen uns über Verstärkung.

    +
      +
    • Regional verwurzelt
    • +
    • Zukunftsberuf Energiewende
    • +
    • Eingespieltes Team
    • +
    • Moderne Technik
    • +
    +
    +
    +
    +
    + + Ausbildung · Start im September +
    +

    Anlagenmechaniker/in für Sanitär-, Heizungs- und Klimatechnik (m/w/d)

    +

    3,5 Jahre, die sich lohnen: Du lernst Wärmepumpen, Heizungen, Bäder und Lüftungsanlagen von Grund auf kennen – mitten im Team und mit echten Projekten.

    + Jetzt bewerben +
    +
    +
    + + Fachkräfte · Initiativbewerbung +
    +

    Anlagenmechaniker, Monteure & Kundendienst (m/w/d)

    +

    Du kennst dich mit Heizung, Sanitär oder Lüftung aus und suchst ein Team, in dem gute Arbeit zählt? Dann melde dich – wir freuen uns auf deine Initiativbewerbung.

    + Initiativ bewerben +
    +
    +
    +
    + + +
    +
    +
    +

    07Kontakt

    +

    Lassen Sie uns über Ihr Projekt sprechen.

    +

    Rufen Sie uns an, schreiben Sie uns oder nutzen Sie das Formular – wir melden uns schnellstmöglich bei Ihnen.

    + + + +
    +
    +

    Öffnungszeiten

    +

    Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr

    +
    +
    +
    Montag – Donnerstag
    7:00 – 12:00 · 13:00 – 16:30
    +
    Freitag
    7:00 – 11:30
    +
    Samstag & Sonntag
    geschlossen
    +
    +
    +
    + +
    +
    + Worum geht es? +
    + + + + + + + +
    +
    + +
    +
    + + +

    Bitte geben Sie Ihren Namen an.

    +
    +
    + + +

    Bitte geben Sie eine gültige E-Mail-Adresse an.

    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + + +

    Bitte schreiben Sie uns kurz, worum es geht.

    +
    + + + + +
    + +

    Bitte stimmen Sie der Datenschutzerklärung zu.

    +
    + +
    + +

    * Pflichtfelder

    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/kontakt.php b/kontakt.php new file mode 100644 index 0000000..9958f9a --- /dev/null +++ b/kontakt.php @@ -0,0 +1,117 @@ + false, 'error' => 'method_not_allowed']); +} + +// Honeypot: echte Besucher sehen dieses Feld nicht. +if (field('website', 200) !== '') { + respond(200, ['ok' => true]); +} + +// Zeitfalle: Bots senden Formulare meist sofort ab. +$started = (int) ($_POST['ts'] ?? 0); +if ($started > 0 && (microtime(true) * 1000 - $started) < MIN_SECONDS * 1000) { + respond(200, ['ok' => true]); +} + +$name = single_line(field('name', 120)); +$email = single_line(field('email', 200)); +$phone = single_line(field('phone', 60)); +$place = single_line(field('place', 120)); +$topic = single_line(field('topic', 120)); +$message = field('message', 5000); +$privacy = !empty($_POST['privacy']); + +$errors = []; +if ($name === '') { + $errors[] = 'name'; +} +if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { + $errors[] = 'email'; +} +if ((function_exists('mb_strlen') ? mb_strlen($message, 'UTF-8') : strlen($message)) < 5) { + $errors[] = 'message'; +} +if (!$privacy) { + $errors[] = 'privacy'; +} +if ($errors) { + respond(422, ['ok' => false, 'errors' => $errors]); +} + +$subject = 'Anfrage über olzinger.de' . ($topic !== '' ? ' – ' . $topic : ''); +$body = implode("\n", [ + 'Neue Anfrage über das Kontaktformular auf olzinger.de', + '', + 'Anliegen: ' . ($topic !== '' ? $topic : '–'), + 'Name: ' . $name, + 'E-Mail: ' . $email, + 'Telefon: ' . ($phone !== '' ? $phone : '–'), + 'PLZ / Ort: ' . ($place !== '' ? $place : '–'), + '', + 'Nachricht:', + $message, + '', + '—', + 'Gesendet am ' . date('d.m.Y') . ' um ' . date('H:i') . ' Uhr', +]); + +$headers = implode("\r\n", [ + 'From: Website Olzinger <' . SENDER . '>', + 'Reply-To: ' . $email, + 'MIME-Version: 1.0', + 'Content-Type: text/plain; charset=UTF-8', + 'Content-Transfer-Encoding: 8bit', + 'X-Mailer: olzinger.de', +]); + +$encodedSubject = '=?UTF-8?B?' . base64_encode($subject) . '?='; +$sent = @mail(RECIPIENT, $encodedSubject, $body, $headers, '-f' . SENDER); + +respond($sent ? 200 : 500, ['ok' => (bool) $sent]); diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..7d0470b --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://www.olzinger.de/sitemap.xml diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 0000000..8fcf17e --- /dev/null +++ b/site.webmanifest @@ -0,0 +1,12 @@ +{ + "name": "Olzinger Haustechnik", + "short_name": "Olzinger", + "icons": [ + { "src": "assets/img/favicon.svg", "sizes": "any", "type": "image/svg+xml" }, + { "src": "assets/img/apple-touch-icon.png", "sizes": "180x180", "type": "image/png" } + ], + "theme_color": "#0B151E", + "background_color": "#F3EFE8", + "display": "browser", + "lang": "de" +} diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..3c35ccd --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,19 @@ + + + + https://www.olzinger.de/ + 2026-10-03 + monthly + 1.0 + + + https://www.olzinger.de/impressum.html + 2026-10-03 + 0.2 + + + https://www.olzinger.de/datenschutz.html + 2026-10-03 + 0.2 + + diff --git a/tools/og-template.html b/tools/og-template.html new file mode 100644 index 0000000..f2042f2 --- /dev/null +++ b/tools/og-template.html @@ -0,0 +1,46 @@ + + + + + +OG-Vorlage + + + + +
    + + +

    + Wärme + Wasser + Luft +

    +

    Heizung · Sanitär · Lüftung · Regenerativ – Ergolding bei Landshut, seit 1985

    +

    olzinger.de

    +
    + + + +