@font-face{font-family:"Source Sans 3";src:url(fonts/source-sans-3.woff2) format("woff2");font-weight:200 900;font-display:swap}
:root{--schwarz:#1C2840;--gruen:#2F8F5B;--text:#2C3548;--grau:#77777B;--hellgrau:#B9B9BD;--grund:#FFFFFF;--nebel:#F3F3F2;--linie:#E2E2E0;--linie-d:rgba(255,255,255,.18);--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
html{scroll-behavior:smooth;scroll-padding-top:74px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--grund);color:var(--text);font:400 15.5px/1.65 Verdana,Geneva,"DejaVu Sans",sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,p,ul,ol,figure{margin:0;padding:0}
ul,ol{list-style:none}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
em{font-style:normal;font-weight:400}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;text-align:left}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
::selection{background:var(--schwarz);color:#fff}

/* Kopf */
.kopf{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.72);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);transition:box-shadow .3s,transform .45s var(--ease)}
.kopf.weg{transform:translateY(-100%)}
.kopf.schatten{box-shadow:0 1px 0 var(--linie)}
.kopf-in{max-width:1240px;margin:0 auto;padding:0 32px;height:60px;display:flex;align-items:center}
.logo{display:flex;align-items:center;gap:14px;padding:6px 0;line-height:1}
.logo-text{display:block;padding-left:14px;border-left:1px solid var(--linie);animation:hoch 1s var(--ease) both .9s}
.logo-text b{display:block;font-weight:700;font-size:14.5px;color:var(--schwarz);letter-spacing:.01em}
.logo-text span{display:block;font-weight:500;font-size:14px;color:var(--text);margin-top:3px}
.logo-text small{display:block;font-size:11px;color:var(--grau);margin-top:5px;letter-spacing:.03em}
.logo-svg{display:block;flex:none;height:30px;width:auto;fill:var(--schwarz);overflow:visible;transform-origin:left center;transition:transform .6s var(--ease)}
.kopf.schatten .logo-svg{transform:scale(.84)}
.logo-svg path{transform-box:fill-box;transform-origin:center bottom;translate:0 calc(var(--schub,0) * 1px);transition:translate .7s var(--ease);animation:logo-hoch 1.1s cubic-bezier(.2,1.5,.35,1) both;animation-delay:calc(.15s + var(--n) * 120ms)}
.logo-svg path.klein{animation-name:logo-seite;animation-timing-function:var(--ease)}
@keyframes logo-hoch{from{opacity:0;transform:translateY(140%) rotate(-16deg) scale(.5)}60%{opacity:1}to{opacity:1;transform:none}}
@keyframes logo-seite{from{opacity:0;transform:translateX(260%)}to{opacity:1;transform:none}}
.logo:hover .logo-svg path{translate:0 -16%;transition-delay:calc(var(--n) * 45ms)}
.nav{display:flex;align-items:center;gap:34px;font-weight:700;font-size:14.5px;color:var(--schwarz);margin-left:auto}
.nav a{position:relative;padding:8px 0}
.nav a:not(.nav-cta)::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1.5px;background:var(--schwarz);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.nav a:hover::after{transform:scaleX(1);transform-origin:left}
.nav-cta{padding:8px 20px!important;border-radius:999px;background:var(--schwarz);color:#fff;box-shadow:inset 0 0 0 1.5px var(--schwarz);transition:background .35s,color .35s}
.nav-cta:hover{background:#fff;color:var(--schwarz)}
.menue-knopf{display:none;margin-left:auto;width:44px;height:44px;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.menue-knopf span{width:22px;height:2px;border-radius:2px;background:var(--schwarz);transition:transform .3s,opacity .3s}

/* Start: Foto als Hintergrund, schwarz-weiß */
.held{position:relative;min-height:min(82vh,740px);display:flex;align-items:center;overflow:hidden;background:var(--schwarz)}
.held-bild{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;will-change:transform;transform:translate3d(0,var(--py,0px),0);animation:zoom 9s var(--ease) both}
@keyframes zoom{from{scale:1.06}to{scale:1}}
.held::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(24,35,58,.9) 0%,rgba(24,35,58,.68) 50%,rgba(24,35,58,.42) 100%)}
.held-text{position:relative;z-index:2;width:100%;max-width:1240px;margin:0 auto;padding:clamp(56px,9vh,96px) 32px;color:#fff}
.held-text>*{max-width:640px}
.label{display:flex;align-items:center;gap:12px;font-weight:600;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--grau);margin-bottom:16px}
.label i{width:30px;height:1px;background:currentColor}
.held .label{color:var(--hellgrau)}
.label.ohne-gross{text-transform:none;letter-spacing:.1em;font-size:15px}
h1{font-size:clamp(30px,4.1vw,56px);font-weight:700;line-height:1.12}
h1 .w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.08em}
h1 .w>span{display:inline-block;transform:translateY(110%);animation:wort 1s var(--ease) forwards;animation-delay:calc(.15s + var(--n)*90ms)}
@keyframes wort{to{transform:none}}
.lead{font-size:clamp(15.5px,1.3vw,17.5px);margin-top:24px;max-width:50ch;color:#DADADC;animation:hoch 1s var(--ease) both .6s}
.knoepfe{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px;animation:hoch 1s var(--ease) both .75s}
@keyframes hoch{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.btn{display:inline-flex;align-items:center;padding:9px 20px;border-radius:999px;font-size:14px;font-weight:600;background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.6);transition:background-color .3s var(--ease),color .3s var(--ease),box-shadow .3s var(--ease)}
.btn:hover{background:#fff;color:var(--schwarz);box-shadow:inset 0 0 0 1.5px #fff}

.held-logo{position:absolute;z-index:2;right:max(32px,calc((100vw - 1240px)/2 + 32px));top:50%;translate:0 -50%;width:min(430px,32vw);animation:schweb 7s ease-in-out infinite 2.2s}
.logo-svg.gross-logo{height:auto;width:100%;fill:#fff}
.kopf.schatten .logo-svg.gross-logo{transform:none}
.gross-logo path{animation-duration:1.4s;animation-delay:calc(.5s + var(--n) * 150ms)}
@keyframes schweb{50%{translate:0 calc(-50% - 10px)}}
/* Laufband: zwei feine Reihen, gegenläufig, viel Luft */
.laufband{padding:clamp(48px,8vh,84px) 0 clamp(12px,2vh,24px);overflow:hidden;display:grid;gap:14px}
.lb-reihe{display:flex;width:max-content;will-change:transform;backface-visibility:hidden}
.lb-reihe span{display:inline-flex;align-items:center;gap:clamp(30px,3.4vw,52px);padding-left:clamp(30px,3.4vw,52px);font-size:clamp(15px,1.35vw,19px);font-weight:400;letter-spacing:.04em;line-height:1.4;color:#9B9B9F;white-space:nowrap}
.lb-reihe span::after{content:"";width:4px;height:4px;border-radius:50%;background:#C9C9CC;flex:none}
.lb-reihe.zwei span{font-weight:300;color:#C2C2C6}

/* Abschnitte */
.teil{max-width:1240px;margin:0 auto;padding:clamp(64px,10vh,116px) 32px}
h2{font-size:clamp(23px,2.7vw,37px);font-weight:700;line-height:1.18;color:var(--schwarz);max-width:21ch}
h3{font-size:17.5px;font-weight:700;line-height:1.3;color:var(--schwarz)}
.kopfzeile{margin-bottom:clamp(38px,6vh,62px)}
.auf{opacity:0;transform:translate3d(0,24px,0);transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.22,.8,.2,1);transition-delay:var(--v,0s)}
.auf.da{opacity:1;transform:none}
.dunkel{background:var(--schwarz);color:#D6D6D8}
.dunkel h2,.dunkel h3{color:#fff}
.dunkel .label{color:var(--hellgrau)}
.nebel{background:var(--nebel)}

/* Vorteile: gleiche Linienzeichnung wie das Haus – Linie zieht sich, Punkt pulsiert, Bild zeichnet sich */
.vorteile{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,56px)}
.vorteile li{position:relative;padding-top:34px;text-align:center}
.vorteile .v-bild{margin-inline:auto}
.vorteile p{max-width:34ch;margin-inline:auto}
.vorteile li::before,.vorteile li::after{content:"";position:absolute;left:0;top:0;height:1.5px;width:100%;background:var(--linie)}
/* Ablauf je Punkt: erscheinen -> nach rechts wischen (Linie zieht mit) -> grüner Haken. Nacheinander: --s */
.vorteile li{--s:0s}
.vorteile li:nth-child(2){--v:.15s;--s:1.75s}.vorteile li:nth-child(3){--v:.3s;--s:3.5s}
.vorteile li::after{background:var(--schwarz);transform:scaleX(0);transform-origin:left;transition:transform 1.4s cubic-bezier(.45,0,.2,1);transition-delay:calc(var(--s) + .45s)}
.vorteile li.da::after{transform:scaleX(1)}
.v-punkt{position:absolute;z-index:1;left:0;top:-9px;width:20px;height:20px;border-radius:50%;color:var(--schwarz);background:#fff;box-shadow:inset 0 0 0 1.5px currentColor;scale:0;
  transition:scale .5s cubic-bezier(.2,1.25,.4,1) var(--s),left 1.4s cubic-bezier(.45,0,.2,1) calc(var(--s) + .45s),background .35s ease calc(var(--s) + 1.85s),color .35s ease calc(var(--s) + 1.85s)}
.vorteile li.da .v-punkt{scale:1;left:calc(100% - 20px);background:var(--gruen);color:var(--gruen)}
.v-punkt::before{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--schwarz);transition:opacity .25s ease calc(var(--s) + 1.8s)}
.vorteile li.da .v-punkt::before{opacity:0}
.v-punkt::after{content:"";position:absolute;inset:-1px;border-radius:50%;box-shadow:0 0 0 1.5px currentColor;opacity:0;animation:puls 2.6s ease-out infinite}
.v-punkt svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.v-punkt svg path{stroke-dasharray:1 2;stroke-dashoffset:1.06;transition:stroke-dashoffset .45s ease calc(var(--s) + 2s)}
.vorteile li.da .v-punkt svg path{stroke-dashoffset:0}
.v-bild{display:block;width:132px;height:88px;margin-bottom:14px;fill:none;stroke:var(--schwarz);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.v-bild .gruen{stroke:var(--gruen)}
.v-bild *{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.5s cubic-bezier(.45,0,.2,1);transition-delay:calc(var(--s) + .45s)}
.vorteile li.da .v-bild *{stroke-dashoffset:0}
.v-zahl{display:block;font-size:clamp(24px,2.3vw,32px);font-weight:700;letter-spacing:-.01em;line-height:1.15;color:var(--schwarz);margin-bottom:8px}
.vorteile h3{font-size:16px;font-weight:400;color:var(--schwarz);margin:0}
.vorteile .v-bild{margin-bottom:20px}
.vorteile p{margin-top:10px;font-size:15px;line-height:1.6;color:var(--grau)}

/* Leistungen: Reiter als Text, Leistungen als Kacheln */
.reiter{display:flex;flex-wrap:wrap;gap:10px 40px;border-bottom:1px solid var(--linie);margin-bottom:clamp(36px,5.5vh,56px)}
.reiter button{position:relative;padding:0 0 16px;font-size:clamp(15.5px,1.55vw,20px);font-weight:700;color:#A3A3A7;transition:color .4s}
.reiter button::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--schwarz);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}
.reiter button:hover{color:var(--text)}
.reiter button.aktiv{color:var(--schwarz)}
.reiter button.aktiv::after{transform:scaleX(1)}
/* Leistungen am gezeichneten Haus: Punkt anklicken, rechts steht die Leistung */
.h-buehne{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(34px,5.5vw,88px);align-items:center;padding-bottom:10px}
.h-bild{position:relative}
.haus{display:block;width:100%;height:auto;fill:none;stroke:var(--schwarz);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.haus .leicht{stroke:var(--schwarz)}
.haus g{stroke:#8792A8;transition:stroke .45s,stroke-width .45s}
.haus g.aktiv{stroke:var(--schwarz);stroke-width:2.4}
/* Autos fahren ein: oben der Transporter von links, unten das Auto über die Rampe in die Tiefgarage */
.haus g.auto-tg{stroke:inherit;stroke-width:inherit;opacity:1;transition:none;transform-box:fill-box;transform-origin:center;transform:translate(330px,-52px);visibility:hidden}
.h-buehne.da .haus g.auto-tg{visibility:visible;animation:tg-rein 3.6s cubic-bezier(.4,0,.25,1) 2.1s both}
@keyframes tg-rein{
  0%{transform:translate(336px,-52px) rotate(0deg);opacity:0}
  8%{transform:translate(316px,-50px) rotate(-12deg);opacity:1}
  16%{transform:translate(298px,-51px) rotate(-37deg)}
  40%{transform:translate(252px,-17px) rotate(-37deg)}
  50%{transform:translate(226px,0px) rotate(0deg)}
  100%{transform:translate(0px,0px) rotate(0deg);opacity:1}
}
.haus g.auto-oben{transform:translateX(-150px);transition:opacity .5s ease 1.9s,stroke .45s,stroke-width .45s,transform 2.6s cubic-bezier(.2,.75,.2,1) 1.9s}
.h-buehne.da .haus g.auto-oben{transform:none}
/* Reiter Gebäudemodernisierung: eigenes Bild – Baustelle mit kaputtem Haus -> Staubwolken (es wird gearbeitet) -> saniertes Haus */
.haus-mod{display:none}
.h-bild.mod .haus-haupt{display:none}
.h-bild.mod .haus-mod{display:block}
.haus.haus-mod g.alt{stroke:#7B7368}
.haus.haus-mod g.alt path{stroke-dasharray:1 2;stroke-dashoffset:1.04}
.haus-mod .warn{stroke:#C99A00;fill:rgba(246,207,43,.35)}
.haus.haus-mod g.neu{stroke:var(--schwarz);opacity:0}
.haus-mod .gruen{stroke:var(--gruen)}
.haus-mod circle.gruen{fill:rgba(47,143,91,.16)}
.haus-mod .pv{fill:rgba(125,185,232,.3)}
.haus-mod .sonne{stroke:#E0A800}
.haus-mod circle.sonne{fill:rgba(255,210,31,.35)}
.haus-mod .puff{fill:#ECE8DF;stroke:#8E877B;stroke-width:.8;transform-box:fill-box;transform-origin:center;opacity:0}
.haus-mod .schlag{stroke:#C99A00;stroke-width:1.6;opacity:0}
.haus-mod .funkel{fill:#FFD21F;stroke:#E0A800;stroke-width:.8;transform-box:fill-box;transform-origin:center;opacity:0}
.haus.haus-mod.lauf g.alt{animation:m-alt 5.6s linear both}
.haus.haus-mod.lauf g.alt path{animation:zeichne .85s cubic-bezier(.45,0,.2,1) forwards}
.haus.haus-mod.lauf g.alt path:nth-child(n+3){animation-delay:.1s}
.haus.haus-mod.lauf g.alt path:nth-child(n+6){animation-delay:.22s}
.haus.haus-mod.lauf g.alt path:nth-child(n+10){animation-delay:.35s}
.haus.haus-mod.lauf g.neu{animation:m-neu 5.6s linear both}
.haus-mod.lauf .puff{animation:m-wolke 5.6s cubic-bezier(.4,0,.3,1) both;animation-delay:calc(var(--n) * 35ms)}
.haus-mod.lauf .schlag{animation:m-schlag 5.6s linear both;animation-delay:calc(var(--n) * 120ms)}
.haus-mod.lauf .funkel{animation:m-funkel 5.6s cubic-bezier(.2,1.3,.4,1) both;animation-delay:calc(var(--n) * 110ms)}
/* Wolken kommen jetzt schon nach gut einer Sekunde */
@keyframes m-alt{0%,48%{opacity:1}54%,100%{opacity:0}}
@keyframes m-neu{0%,48%{opacity:0}54%,100%{opacity:1}}
@keyframes m-wolke{0%,21%{opacity:0;transform:scale(.15)}29%{opacity:1;transform:scale(1.06)}36%{opacity:1;transform:scale(.9) rotate(-4deg)}43%{opacity:1;transform:scale(1.1) rotate(3deg)}50%{opacity:1;transform:scale(.93) rotate(-3deg)}57%{opacity:1;transform:scale(1.08) rotate(2deg)}64%{opacity:1;transform:scale(1)}80%,100%{opacity:0;transform:scale(1.8)}}
@keyframes m-schlag{0%,31%{opacity:0}34%{opacity:1}38%{opacity:0}43%{opacity:1}47%{opacity:0}52%{opacity:1}56%,100%{opacity:0}}
@keyframes m-funkel{0%,76%{opacity:0;transform:scale(.2) rotate(-40deg)}88%{opacity:1;transform:scale(1.3) rotate(0deg)}100%{opacity:1;transform:scale(1) rotate(0deg)}}
.h-punkt.spaet{opacity:0!important;scale:.5!important;pointer-events:none}
.h-bild[data-art=mod] .h-punkt,.h-bild.mod .h-punkt{transition-delay:calc(var(--i,0) * 70ms),calc(var(--i,0) * 70ms),0s}
/* Kleine Geschichte im Haus (26 s Runde, Beginn 6,5 s nach dem Aufbau):
   Blitz schlägt in den Blitzableiter ein -> Strom läuft nach unten -> Schaltschrank raucht -> Monteur rennt her, repariert, rennt weg -> alles wie neu */
.haus g.sz{opacity:1;stroke:inherit;stroke-width:inherit;transition:none}
.haus g.szene{stroke:var(--schwarz);visibility:hidden}
.h-buehne.da .haus g.szene{visibility:visible}
.haus .himmelblitz{fill:#FFD21F;stroke:var(--schwarz);stroke-width:1.2;opacity:0;transform-box:fill-box;transform-origin:50% 0%}
.haus .leiter{stroke:#8792A8;stroke-width:1.3}
.haus .strom{stroke:#FFD21F;stroke-width:3.4;stroke-dasharray:1 2;stroke-dashoffset:1.04;opacity:0}
.haus .rauch{opacity:0}
.haus .rauch circle{stroke:none;fill:#565C6B;transform-box:fill-box;transform-origin:center}
.haus .funken{opacity:0;stroke:#F2B400;stroke-width:1.6}
.haus .ok{opacity:0;transform-box:fill-box;transform-origin:center}
.haus .ok circle{fill:var(--gruen);stroke:var(--gruen)}
.haus .ok path{stroke:#fff;stroke-width:1.8}
.haus .mann{opacity:0;stroke-width:1.7;transform:translate(668px,400px)}
.haus .arm{transform-origin:0px -18px}
.haus .bein-lauf path{transform-origin:0px -10px}
.haus .bein-steh{opacity:0}
.h-buehne.da .himmelblitz{animation:s-himmel 14s linear 4s infinite backwards}
.h-buehne.da .strom{animation:s-strom 14s linear 4s infinite backwards}
.h-buehne.da .rauch{animation:s-rauch 14s linear 4s infinite backwards}
.h-buehne.da .rauch circle{animation:s-qualm 1.7s ease-out infinite}
.h-buehne.da .rauch circle:nth-child(2){animation-delay:.55s}
.h-buehne.da .rauch circle:nth-child(3){animation-delay:1.1s}
.h-buehne.da .rauch circle:nth-child(4){animation-delay:.25s}
.h-buehne.da .funken{animation:s-funken 14s linear 4s infinite backwards}
.h-buehne.da .funken path{animation:s-blink .32s ease-in-out infinite alternate}
.h-buehne.da .ok{animation:s-ok 14s linear 4s infinite backwards}
.h-buehne.da .mann{animation:s-mann 14s linear 4s infinite backwards}
.h-buehne.da .mann-in{animation:s-huepf .34s ease-in-out infinite alternate}
.h-buehne.da .arm{animation:s-arm .34s ease-in-out infinite alternate}
.h-buehne.da .bein-lauf{animation:s-lauf 14s linear 4s infinite backwards}
.h-buehne.da .bein-lauf .b1{animation:s-bein .34s ease-in-out infinite alternate}
.h-buehne.da .bein-lauf .b2{animation:s-bein .34s ease-in-out infinite alternate-reverse}
.h-buehne.da .bein-steh{animation:s-steh 14s linear 4s infinite backwards}
.h-buehne.da .haus .blitz{animation:s-kaputt 14s linear 4s infinite backwards}
.h-buehne.da .haus g[data-k=betreiber]{animation:s-ruck 14s linear 4s infinite backwards}
/* Blitz zeichnet sich von oben nach unten und klingt weich ab – kein Flackern */
@keyframes s-himmel{0%{opacity:1;transform:scaleY(0);animation-timing-function:cubic-bezier(.5,0,.8,.5)}1.86%{opacity:1;transform:scaleY(1)}8.36%{opacity:1;transform:scaleY(1);animation-timing-function:ease-out}14.86%{opacity:0;transform:scaleY(1)}100%{opacity:0;transform:scaleY(1)}}
/* Strom: die Leitung leuchtet gleichmäßig von oben nach unten auf, dann blendet sie aus */
@keyframes s-strom{0%,1.67%{opacity:1;stroke-dashoffset:1.04}1.86%{opacity:1;stroke-dashoffset:1.04;animation-timing-function:cubic-bezier(.3,0,.5,1)}13%{opacity:1;stroke-dashoffset:0}15.97%{opacity:1;stroke-dashoffset:0;animation-timing-function:ease-out}21.36%,100%{opacity:0;stroke-dashoffset:0}}
@keyframes s-kaputt{0%,12.81%{fill:#FFD21F}13.37%{fill:#fff}14.67%{fill:#FFD21F}15.79%{fill:#fff}17.46%,46.29%{fill:#5A6070}46.91%,100%{fill:#FFD21F}}
@keyframes s-ruck{0%,13%{transform:none}13.56%{transform:translateX(-2px)}14.3%{transform:translateX(2px)}15.04%{transform:translateX(-1.5px)}15.79%{transform:translateX(1.5px)}16.53%,100%{transform:none}}
@keyframes s-rauch{0%,13.74%{opacity:0}16.71%,45.14%{opacity:1}46.68%,100%{opacity:0}}
@keyframes s-qualm{from{opacity:.9;transform:translateY(0) scale(.55)}to{opacity:0;transform:translateY(-38px) scale(1.9)}}
@keyframes s-mann{0%,18.94%{transform:translate(690px,400px);opacity:0}20.8%{transform:translate(680px,400px);opacity:1;animation-timing-function:linear}26.74%{transform:translate(600px,400px);opacity:1;animation-timing-function:linear}33.8%{transform:translate(527px,455px);opacity:1;animation-timing-function:ease-out}35.66%,47.06%{transform:translate(514px,458px);opacity:1;animation-timing-function:ease-in}48.92%{transform:translate(527px,455px);opacity:1;animation-timing-function:linear}55.98%{transform:translate(600px,400px);opacity:1;animation-timing-function:linear}61.92%{transform:translate(680px,400px);opacity:1}63.78%,100%{transform:translate(690px,400px);opacity:0}}
@keyframes s-huepf{from{transform:translateY(0)}to{transform:translateY(-1px)}}
@keyframes s-arm{from{transform:rotate(-16deg)}to{transform:rotate(18deg)}}
@keyframes s-bein{from{transform:rotate(-30deg)}to{transform:rotate(30deg)}}
@keyframes s-lauf{0%,35.47%{opacity:1}35.66%,47.06%{opacity:0}47.25%,100%{opacity:1}}
@keyframes s-steh{0%,35.47%{opacity:0}35.66%,47.06%{opacity:1}47.25%,100%{opacity:0}}
@keyframes s-funken{0%,35.81%{opacity:0}35.97%,45.98%{opacity:1}46.29%,100%{opacity:0}}
@keyframes s-blink{from{opacity:1}to{opacity:.25}}
@keyframes s-ok{0%,46.6%{opacity:0;transform:scale(.2)}47.81%{opacity:1;transform:scale(1.25)}49.29%,60.06%{opacity:1;transform:scale(1)}61.92%,100%{opacity:0;transform:scale(.2)}}
.haus .wolke{stroke:#7DB9E8;fill:rgba(125,185,232,.22)}
/* Tonnen gelb und braun, Blitz gelb mit schwarzem Rand */
.haus .t-gelb{stroke:#C99A00;fill:#F6CF2B}
.haus .t-braun{stroke:#6B4423;fill:#9A6A3C}
.haus .blitz{stroke:#111;stroke-width:1.2;fill:#FFD21F}
/* Bäume und Hecke grün */
.haus g[data-k=gruen],.haus g[data-k=galabau] :is(circle,path:nth-of-type(2)){stroke:var(--gruen)}
.haus g[data-k=gruen] circle,.haus g[data-k=galabau] circle{fill:rgba(47,143,91,.16)}
.haus g[data-k=gruen].aktiv{stroke:#1F7A49}
.haus>:is(path,circle){stroke-dasharray:var(--l,1000);stroke-dashoffset:var(--l,1000);transition:stroke-dashoffset 1.8s cubic-bezier(.45,0,.2,1);transition-delay:calc(var(--i,0) * 90ms)}
.h-buehne.da .haus>:is(path,circle){stroke-dashoffset:0}
.haus g{opacity:0;transition:opacity .9s ease,stroke .45s,stroke-width .45s;transition-delay:calc(.7s + var(--i,0) * 70ms),0s,0s}
.h-buehne.da .haus g{opacity:1}
.h-punkte{position:absolute;inset:0}
.h-punkt{position:absolute;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1.5px var(--schwarz);opacity:0;scale:.5;transition:opacity .6s ease,scale .7s cubic-bezier(.2,1.25,.4,1),background .35s;transition-delay:calc(1.5s + var(--i,0) * 70ms),calc(1.5s + var(--i,0) * 70ms),0s}
.h-buehne.da .h-punkt{opacity:1;scale:1}
.h-punkt.aus{display:none}
.h-punkt::before{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--schwarz);transition:background .35s,inset .35s}
.h-punkt::after{content:"";position:absolute;inset:-1px;border-radius:50%;box-shadow:0 0 0 1.5px var(--schwarz);opacity:0;will-change:transform,opacity;animation:puls 2.8s cubic-bezier(.2,.6,.3,1) infinite;animation-delay:calc(var(--i,0) * .3s)}
@keyframes puls{0%{opacity:.38;transform:scale(1)}100%{opacity:0;transform:scale(var(--weit,2))}}
.h-punkt:hover{scale:1.18}
.h-punkt.aktiv{background:var(--schwarz);scale:1.3}
.h-punkt.aktiv::before{background:#fff;inset:7px}
.h-punkt.aktiv::after{animation-duration:1.5s}
.h-detail{min-height:230px}
.h-detail .k-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:#fff;box-shadow:0 10px 26px rgba(28,40,64,.1);margin-bottom:20px}
.h-detail .k-icon svg{width:30px;height:30px;fill:none;stroke:var(--schwarz);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.h-detail .k-icon svg *{stroke-dasharray:1;stroke-dashoffset:1;animation:zeichne .75s ease-out forwards .05s}
@keyframes zeichne{to{stroke-dashoffset:0}}
@keyframes k-text{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
.h-detail h3{font-size:clamp(20px,2.1vw,28px);font-weight:700;line-height:1.2}
.h-detail p{margin-top:10px;font-size:16px;color:var(--text);max-width:36ch}
.h-detail :is(.k-icon,h3,p){transition:opacity .14s ease}
.h-detail.raus :is(.k-icon,h3,p){opacity:0}
@keyframes k-weich{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
.h-detail.neu .k-icon{animation:k-weich .4s ease-out both}
.h-detail.neu h3{animation:k-weich .42s ease-out both .03s}
.h-detail.neu p{animation:k-weich .42s ease-out both .08s}
.h-liste{display:flex;flex-wrap:wrap;gap:11px 28px;margin-top:30px}
.h-liste li.aus{display:none}
.h-wahl{position:relative;display:inline-flex;align-items:center;gap:8px;padding:5px 0;font-size:14.5px;color:var(--grau);transition:color .3s}
.h-wahl::after{content:"";position:absolute;left:0;right:0;bottom:1px;height:1.5px;background:var(--schwarz);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.h-wahl:hover{color:var(--schwarz)}
.h-wahl.aktiv{color:var(--schwarz);font-weight:600}
.h-wahl.aktiv::after{transform:scaleX(1)}
.l-icon{display:none}

/* Praxis: Zeichnung statt Foto – Gebäude im Science Park II zeichnet sich, Standort-Pin fällt, Auto fährt vor, Liste hakt sich ab */
.block{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(28px,5vw,76px);align-items:center}
.sp-bild.auf{opacity:1;transform:none;order:2}
.sp{display:block;width:100%;height:auto;fill:none;stroke:var(--schwarz);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.sp>:is(path,circle)[pathLength]{stroke-dasharray:1 2;stroke-dashoffset:1.03;transition:stroke-dashoffset 1.5s cubic-bezier(.45,0,.2,1);transition-delay:calc(var(--i,0) * 70ms)}
.sp-bild.da .sp>:is(path,circle)[pathLength]{stroke-dashoffset:0}
.sp .fein{stroke:#8792A8;stroke-width:1.1}
.sp .gruen{stroke:var(--gruen)}
.sp circle.gruen{fill:rgba(47,143,91,.16)}
.sp .wolke{stroke:#7DB9E8;fill:rgba(125,185,232,.22);animation:sp-wolke 16s ease-in-out infinite alternate}
.sp .wolke.w2{animation-duration:22s;animation-direction:alternate-reverse}
@keyframes sp-wolke{from{transform:translateX(-14px)}to{transform:translateX(22px)}}
.sp-auto{transform:translateX(170px);opacity:0;transition:transform 2.6s cubic-bezier(.2,.75,.2,1) 2.2s,opacity .4s ease 2.2s}
.sp-bild.da .sp-auto{transform:none;opacity:1}
.sp-pin{stroke:var(--gruen);stroke-width:2;fill:rgba(47,143,91,.16);transform:translateY(-70px);opacity:0;transition:transform .8s cubic-bezier(.3,1.5,.5,1) 2.9s,opacity .3s ease 2.9s}
.sp-bild.da .sp-pin{transform:none;opacity:1;animation:pin-wipp 1.3s ease-in-out 3.8s infinite alternate}
@keyframes pin-wipp{from{translate:0 0}to{translate:0 -7px}}
.sp-ring{stroke:var(--gruen);transform-box:fill-box;transform-origin:center;opacity:0}
.sp-bild.da .sp-ring{animation:puls 2.6s ease-out 3.6s infinite}
.sp-schild{opacity:0;transform:translateX(-12px);transition:opacity .6s ease 3.4s,transform .6s var(--ease) 3.4s}
.sp-bild.da .sp-schild{opacity:1;transform:none}
.sp-schild path{fill:var(--schwarz);stroke:none}
.sp-schild text{fill:#fff;stroke:none;font:700 13px Verdana,Geneva,"DejaVu Sans",sans-serif;letter-spacing:.04em}
.block-text p:not(.label){margin-top:18px}
.haken{margin-top:24px}
.haken li{position:relative;padding:9px 0 9px 32px;font-weight:600;color:var(--schwarz)}
.haken li::before{content:none}
.haken li::after{content:"";position:absolute;left:4px;top:16px;width:12px;height:6px;border-left:2px solid var(--schwarz);border-bottom:2px solid var(--schwarz);transform:rotate(-45deg) scale(0);transition:transform .45s cubic-bezier(.2,1.4,.4,1)}
.haken li.an::after{transform:rotate(-45deg) scale(1)}

/* Ablauf */
.schritte{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;position:relative}
.schritte::before,.schritte::after{content:"";position:absolute;left:0;right:0;top:27px;height:1.5px;background:#D4D4D2}
.schritte::after{background:var(--gruen);transform-origin:left;transform:scaleX(var(--fuell,0));transition:transform .5s cubic-bezier(.45,0,.2,1)}
.schritte li{position:relative;z-index:1}
.schritte li:nth-child(2){--v:.1s}.schritte li:nth-child(3){--v:.2s}.schritte li:nth-child(4){--v:.3s}
/* Kreis: erst leer, dann erscheint die Zahl, dann wird daraus ein grüner Haken (bleibt) */
.schritte span{position:relative;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--nebel);color:#fff;box-shadow:inset 0 0 0 1.5px #B9C0CE;font-weight:600;font-size:20px;margin-bottom:18px;transition:background .45s,box-shadow .45s,scale .5s cubic-bezier(.2,1.4,.4,1)}
.schritte span b{font-weight:600;opacity:0;scale:.3;transition:opacity .35s,scale .5s cubic-bezier(.2,1.4,.4,1)}
.schritte span svg{position:absolute;inset:0;width:100%;height:100%;padding:14px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* Haken erst zeigen, wenn er dran ist – sonst bleibt vom Strichanfang ein kleiner Punkt neben der Zahl stehen */
.schritte span svg{opacity:0;transition:opacity .2s ease}
.schritte li.fertig span svg{opacity:1}
.schritte span svg path{stroke-dasharray:1 2;stroke-dashoffset:1.06;transition:stroke-dashoffset .5s ease .15s}
.schritte li.zahl span{background:var(--schwarz);box-shadow:inset 0 0 0 1.5px var(--schwarz);scale:1.08}
.schritte li.zahl span b{opacity:1;scale:1}
.schritte li.fertig span{background:var(--gruen);box-shadow:inset 0 0 0 1.5px var(--gruen);scale:1}
.schritte li.fertig span b{opacity:0;scale:.3}
.schritte li.fertig span svg path{stroke-dashoffset:0}
.schritte p{margin-top:6px;font-size:14.5px;color:var(--grau)}

/* Kontakt: gleiche Linienwelt wie der Rest – Zeilen mit Linie, die sich zieht, Symbole zeichnen sich, unten eine Stadtlinie */
.kontakt{display:grid;grid-template-columns:1.2fr auto;justify-content:space-between;gap:clamp(30px,6vw,96px);align-items:start;padding-top:clamp(56px,9vh,96px);padding-bottom:clamp(28px,5vh,52px)}
.riesig{font-size:clamp(25px,3vw,40px);font-weight:700;line-height:1.12;max-width:none}
.riesig em{color:#C5CCDA}
.k-lead{max-width:40ch;margin-top:16px;color:#B6BCCB;font-size:15.5px}
/* Zertifikats-Hinweis im Kontaktbereich */
.iso{display:flex;align-items:center;gap:16px;margin-top:34px}
.iso svg{flex:none;width:66px;height:66px;fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.iso svg .fein{stroke:rgba(255,255,255,.45);stroke-width:1}
.iso svg *{stroke-dasharray:1 2;stroke-dashoffset:1.03;transition:stroke-dashoffset 1.4s cubic-bezier(.45,0,.2,1) .4s}
.iso svg path{stroke-width:2.4;transition-delay:1.2s}
.iso.da svg *{stroke-dashoffset:0}
.iso span{display:flex;flex-direction:column;gap:3px}
.iso b{font-size:17px;color:#fff;letter-spacing:.02em}
.iso small{font-size:13.5px;line-height:1.5;color:#B6BCCB}
.k-liste li{position:relative;display:grid;grid-template-columns:44px 1fr;column-gap:16px;align-items:center;padding:11px 0;--s:0s}
/* Telefon-Zeile oben bündig mit der Überschrift links */
.k-liste li:first-child{padding-top:0}
.k-liste li:nth-child(2){--v:.12s;--s:.35s}.k-liste li:nth-child(3){--v:.24s;--s:.7s}
.k-bild{grid-row:span 2;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35);transition:background .4s,box-shadow .4s,transform .5s var(--ease)}
.k-bild svg{width:20px;height:20px;fill:none;stroke:#fff;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:stroke .4s}
.k-bild svg *{stroke-dasharray:1 2;stroke-dashoffset:1.04;transition:stroke-dashoffset 1.3s cubic-bezier(.45,0,.2,1) calc(var(--s) + .35s)}
.k-liste li.da .k-bild svg *{stroke-dashoffset:0}
/* ganze Zeile klickbar: der Link spannt sich über Symbol, Beschriftung und Wert */
.k-liste li{cursor:pointer}
.k-liste b a{color:inherit;text-decoration:none}
.k-liste b a::after{content:"";position:absolute;inset:0}
.k-was{align-self:end;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#8E97AB}
.k-liste b{align-self:start;font-size:clamp(15.5px,1.3vw,17.5px);font-weight:400;color:#fff;transition:transform .5s var(--ease)}
@media (hover:hover){
  .k-liste li:hover .k-bild{background:#fff;box-shadow:inset 0 0 0 1.5px #fff;transform:scale(1.06)}
  .k-liste li:hover .k-bild svg{stroke:var(--schwarz)}
}
.k-stadt{display:block;width:100%;max-width:1240px;aspect-ratio:1200/124;height:auto;margin:0 auto;padding:0 32px;fill:none;stroke:rgba(255,255,255,.4);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;overflow:hidden}
.k-stadt.auf{opacity:1;transform:none}
.k-stadt path{vector-effect:non-scaling-stroke;stroke-dasharray:1 2;stroke-dashoffset:1.02;transition:stroke-dashoffset 3.6s cubic-bezier(.45,0,.2,1) .2s}
.k-stadt.da path{stroke-dashoffset:0}

/* Fuß */
.fuss{background:var(--schwarz);color:#8B8B8F;font-size:14.5px;padding:0 32px 44px}
.fuss>*{max-width:1176px;margin-left:auto;margin-right:auto}
.fuss-zeile{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;padding-top:26px}
.fuss-zeile img{filter:brightness(0) invert(1)}
.fuss-zeile span:last-child{margin-left:auto}
.vorschau{margin-top:12px}
.fuss details{margin-top:8px}
.fuss summary{cursor:pointer}
.fuss details ul,.fuss details p{margin-top:6px}
.fuss a{text-decoration:underline;text-underline-offset:3px}

@media (max-width:980px){
  .kopf-in{padding:0 18px;height:56px}
  .logo{gap:10px}
  .logo-text{padding-left:10px}
  .logo-text b{font-size:14px}
  .logo-text span{font-size:12.5px}
  .logo-text small{display:none}
  .logo-svg{height:28px}
  .menue-knopf{display:flex}
  .nav{position:absolute;left:0;right:0;top:56px;flex-direction:column;align-items:stretch;gap:0;background:#fff;padding:6px 18px 18px;box-shadow:0 20px 30px rgba(0,0,0,.14);display:none}
  .nav.offen{display:flex}
  .nav a{padding:13px 0;border-bottom:1px solid var(--linie)}
  .nav-cta{margin:14px 0 0;text-align:center}
  .menue-knopf[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .menue-knopf[aria-expanded=true] span:nth-child(2){opacity:0}
  .menue-knopf[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  html{scroll-padding-top:66px}
  .held{min-height:0}
  .held{flex-direction:column;align-items:stretch}
  .held-logo{position:relative;right:auto;top:auto;translate:none;order:-1;width:190px;margin:54px 18px 0;animation:none}
  .held-text{padding:34px 18px 72px}
  .h-buehne{grid-template-columns:1fr;gap:26px}
  /* Punkte am Haus kleiner, damit sie auf dem schmalen Bild nicht ineinanderlaufen */
  .h-punkt{width:15px;height:15px;margin:-7.5px 0 0 -7.5px;--weit:1.5}
  .h-punkt::before{inset:4.5px}
  .h-punkt.aktiv{scale:1.25}
  .h-punkt.aktiv::before{inset:5px}
  .h-wahl{padding:9px 0;font-size:15px}
  .h-detail{min-height:176px}
  .h-detail .k-icon{width:54px;height:54px;margin-bottom:14px}
  .h-liste{gap:2px 20px;margin-top:20px}
  .held::after{background:rgba(24,35,58,.78)}
  .teil{padding:60px 18px}
  .vorteile,.block{grid-template-columns:1fr}
  .kontakt{grid-template-columns:1fr;gap:26px}
  .k-liste li:nth-child(n){--s:0s}
  .k-stadt{padding:0;aspect-ratio:auto;height:104px}
  .vorteile{gap:44px}
  .vorteile li:nth-child(n){--s:0s}
  /* Reiter untereinander, jeder mit eigener Linie, gut antippbar */
  .reiter{flex-direction:column;gap:0;border-bottom:0;margin-bottom:26px}
  .reiter button{padding:14px 0;font-size:16.5px;border-bottom:1px solid var(--linie)}
  .reiter button::after{bottom:-1px}
  .schritte{grid-template-columns:1fr 1fr;gap:30px 16px}
  .schritte::before,.schritte::after{display:none}
  .fuss{padding:0 18px 40px}
  .fuss-zeile span:last-child{margin-left:0}
}
@media (prefers-reduced-motion:reduce){
  .haus>:is(path,circle),.h-detail .k-icon svg *{stroke-dashoffset:0;transition:none}
  .sp>:is(path,circle)[pathLength]{stroke-dashoffset:0;transition:none}
  .sp-auto,.sp-pin,.sp-schild{opacity:1;transform:none;transition:none}
  .sp-bild.da .sp-pin{animation:none}
  .haken li::after{transform:rotate(-45deg) scale(1)}
  .v-bild *{stroke-dashoffset:0;transition:none}
  .k-bild svg *,.k-stadt path{stroke-dashoffset:0;transition:none}
  .iso svg *{stroke-dashoffset:0;transition:none}
  .v-punkt,.v-punkt::before,.v-punkt svg path,.vorteile li::after{transition:none}
  .haus g{opacity:1;transition:none}
  .haus g.auto-tg,.haus g.auto-oben{transform:none;visibility:visible;animation:none}
  .haus g.szene{display:none}
  .haus.haus-mod g.alt,.haus-mod .wolken{display:none}
  .haus.haus-mod g.neu{opacity:1}
  .h-punkt{opacity:1;scale:1;transition:none}
  *{animation:none!important}
  .auf{opacity:1;transform:none;transition:none}
  h1 .w>span{transform:none}
  .block-bild.auf img{clip-path:none}
  html{scroll-behavior:auto}
}
