/* Quellgrad Wärmepumpen – fiktive Demo. Eigene Gestaltung. */
@font-face{font-family:"Plex";src:url(/fonts/plex-var.woff2) format("woff2");font-weight:400 700;font-stretch:85% 100%;font-display:swap}
@font-face{font-family:"JBMono";src:url(/fonts/mono-var.woff2) format("woff2");font-weight:400 700;font-display:swap}
:root{
  --bg:#101417;--bg2:#151a1e;--panel:#1a2026;--line:#2b343c;--line2:#3a4651;
  --tx:#e8ecef;--tx2:#a9b4be;--cold:#5cd3f0;--warm:#ff9b3d;--hot:#ff6b3d;--ok:#7ee0a1;
  --sans:"Plex",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"JBMono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
body{margin:0;background:var(--bg);color:var(--tx);font:400 1.0625rem/1.65 var(--sans);overflow-x:clip}
svg{display:block;max-width:100%}
a{color:var(--cold);text-underline-offset:.2em}
a:hover{color:#9be6f8}
:focus-visible{outline:2px solid var(--warm);outline-offset:3px}
[id]{scroll-margin-top:76px}
.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;z-index:99;background:var(--warm);color:#140b04;padding:10px 14px;font-weight:700}
.skip:focus{top:12px}
.shell{width:min(100% - 40px,1200px);margin-inline:auto}
.narrow{width:min(100% - 40px,880px)}
.mono{font-family:var(--mono);font-feature-settings:"zero" 0}
.small{font-size:.82rem}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.1;font-weight:600;letter-spacing:-.015em}
h2{font-size:clamp(1.9rem,1.3rem + 2.2vw,3rem);font-stretch:88%}
h3{font-size:1.2rem}
h4{font-size:1rem;margin-top:1.2rem}
.h-s{font-size:1.5rem}
p{margin:0 0 1em}
.kicker{font:500 .8rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--tx2);display:flex;gap:.8rem;align-items:center;flex-wrap:wrap}
.kicker .mono{color:var(--bg);background:var(--cold);padding:.15em .45em}
.tag{font:600 .72rem var(--mono);color:#140b04;background:var(--warm);padding:.2em .5em;letter-spacing:.08em}
.note{font-size:.9rem;color:var(--tx2)}

.demo{background:#2a1d10;border-bottom:1px solid #6b4a24;color:#ffd8ad;font-size:.88rem;text-align:center;padding:.5rem 20px}
.demo p{margin:0}
.demo b{color:#fff}
.top{position:sticky;top:0;z-index:40;background:rgb(16 20 23/.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top-row{display:flex;align-items:center;gap:1rem;min-height:64px}
.logo{display:flex;align-items:center;gap:.6rem;color:var(--tx);text-decoration:none;font-weight:700;font-size:1.15rem;min-height:44px}
.logo svg{width:34px;height:34px}
.logo em{font-style:normal;font-weight:400;color:var(--tx2);font-stretch:85%}
.menu{margin-left:auto}
.menu ul{display:flex;list-style:none;margin:0;padding:0;gap:.2rem}
.menu a{display:flex;align-items:center;min-height:44px;padding:0 .8rem;color:var(--tx);text-decoration:none;font-weight:500;border-bottom:2px solid transparent}
.menu a:hover{border-bottom-color:var(--cold);color:var(--tx)}
.menu-btn{display:none}
.cta{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;padding:.7rem 1.2rem;font:600 1rem/1.15 var(--sans);text-decoration:none;cursor:pointer;border:1px solid transparent;border-radius:4px;transition:background-color .15s,border-color .15s}
.cta-warm{background:var(--warm);color:#140b04}
.cta-warm:hover{background:#ffb565;color:#140b04}
.cta-ghost{background:transparent;color:var(--tx);border-color:var(--line2)}
.cta-ghost:hover{border-color:var(--tx);color:var(--tx)}
.cta[aria-pressed=true]{border-color:var(--warm);color:var(--warm)}
.top-cta{min-height:44px;padding:.5rem 1rem}

.hero{padding:clamp(2rem,5vw,4rem) 0 clamp(3rem,6vw,5rem);border-bottom:1px solid var(--line)}
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,4rem);align-items:center}
.hero h1{font-size:clamp(2.4rem,1.4rem + 4vw,4.4rem);font-stretch:85%;font-weight:600;line-height:1.02;margin:.8rem 0 .6em}
.hero h1 span{color:var(--warm);font-weight:500}
.lead{font-size:clamp(1.05rem,1rem + .3vw,1.2rem);color:#cfd6dc;max-width:36em}
.hero-cta{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.6rem 0 2rem}
.hero-stats{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0;border-top:1px solid var(--line);max-width:34em}
.hero-stats div{padding:1rem 1rem 0 0}
.hero-stats div+div{border-left:1px solid var(--line);padding-left:1rem}
.hero-stats dt{font-size:.82rem;color:var(--tx2)}
.hero-stats dd{margin:0}
.hero-stats dd .mono{font-size:1.6rem;font-weight:600;color:var(--tx)}
.hero-stats .src{font:400 .75rem var(--mono);color:var(--tx2)}
.hero-fig{margin:0;border:1px solid var(--line);background:var(--bg2)}
.hero-fig figcaption{font:400 .75rem var(--mono);color:var(--tx2);padding:.5rem .8rem;border-top:1px solid var(--line)}
.house .lbl text{font:500 13px var(--mono);fill:#a9b4be}
.house .k{font:500 12px var(--mono);fill:#a9b4be;text-transform:uppercase;letter-spacing:.1em}
.house .v{font:600 20px var(--mono);fill:#ff9b3d}
.house .v.cold{fill:#5cd3f0}
.house .pipe-run{animation:run 1.2s linear 3}
@keyframes run{to{stroke-dashoffset:-48}}
.house .fan{transform-origin:96px 419px;animation:spin 1.2s linear 3}
@keyframes spin{to{transform:rotate(360deg)}}
.house .floor{animation:warmup 2.4s ease-out both}
@keyframes warmup{from{opacity:.1}}

.sect{padding:clamp(3.5rem,8vw,6.5rem) 0;border-bottom:1px solid var(--line)}
.sect-alt{background:var(--bg2)}
.sect-head{max-width:48em;margin-bottom:2.4rem}
.sect-head p:not(.kicker){color:#cfd6dc}

/* Kreislauf */
.cycle{display:grid;grid-template-columns:1.1fr .9fr;gap:2rem;align-items:start}
.cycle-fig{border:1px solid var(--line);background:var(--bg) repeating-linear-gradient(0deg,transparent 0 23px,#161c21 23px 24px),var(--bg);padding:1rem}
.zone-cold{fill:rgb(92 211 240/.08);stroke:rgb(92 211 240/.4)}
.zone-warm{fill:rgb(255 155 61/.08);stroke:rgb(255 155 61/.4)}
.cycle-fig .z{font:500 13px var(--mono);fill:#a9b4be;text-transform:uppercase;letter-spacing:.1em}
.loop{fill:none;stroke-width:8;stroke-linecap:round}
.lo-1{stroke:#5cd3f0}.lo-2{stroke:#ffb35c}.lo-3{stroke:#ff6b3d}.lo-4{stroke:#5f8fa0}
.loop-run{fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:4 22;opacity:.0;transition:opacity .3s}
.cycle.playing .loop-run{opacity:.85;animation:run 1.2s linear infinite}
.st rect,.st circle{fill:#1a2026;stroke:#3a4651;stroke-width:2;transition:stroke .3s,fill .3s}
.st text{font:600 14px var(--sans);fill:#a9b4be;transition:fill .3s;paint-order:stroke;stroke:#101417;stroke-width:5px;stroke-linejoin:round}
.st .fins,.st .sym{fill:none;stroke:#3a4651;stroke-width:2;transition:stroke .3s}
.st.on rect,.st.on circle{stroke:var(--warm);fill:#2a1d10}
.st.on text{fill:#fff}
.st.on .fins,.st.on .sym{stroke:var(--warm)}
.hx-cold path{stroke:#5cd3f0;stroke-width:2}
.hx-warm path{stroke:#ff9b3d;stroke-width:2}
.pts .pt{font:400 12px var(--mono);fill:#8b98a5;paint-order:stroke;stroke:#101417;stroke-width:4px}
.cycle-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem}
.ct{min-height:52px;text-align:left;padding:.6rem .8rem;border:1px solid var(--line2);background:var(--panel);color:var(--tx);font:600 .98rem var(--sans);border-radius:4px;cursor:pointer}
.ct:hover{border-color:var(--tx2)}
.ct .mono{color:var(--tx2);margin-right:.35rem}
.ct[aria-pressed=true]{border-color:var(--warm);background:#2a1d10}
.ct[aria-pressed=true] .mono{color:var(--warm)}
.cycle-panels{border:1px solid var(--line);background:var(--panel);padding:1.3rem;min-height:12rem}
.js .cp{display:none}
.js .cp.on{display:block;animation:fadein .35s ease}
.no-js .cp+.cp{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}
.cp p{margin:0;color:#cfd6dc}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}}
.cycle-play{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center;margin-top:1rem}
.cycle-play .small{color:var(--tx2)}
.no-js .cycle-play,.no-js .cycle-tabs{display:none}

.vl{display:grid;grid-template-columns:1.2fr .8fr;gap:2rem;margin-top:3rem;border:1px solid var(--line);padding:clamp(1.2rem,3vw,2rem);background:var(--panel)}
.field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}
.field label{font-weight:600}
.field output{color:var(--warm);font-weight:600}
input[type=range]{width:100%;accent-color:var(--warm);min-height:44px}
.vl-verdict{font-weight:600;color:var(--ok);border-left:3px solid currentColor;padding-left:.8rem}
.vl-verdict.warn{color:var(--warm)}
.vl-gauge{display:grid;grid-template-columns:72px 1fr;gap:1.2rem;align-items:stretch}
.thermo{position:relative;border:1px solid var(--line2);background:linear-gradient(to top,#12303a,#1a2026);min-height:260px;border-radius:36px;overflow:hidden}
.t-fill{position:absolute;left:0;right:0;bottom:0;height:50%;background:linear-gradient(to top,#5cd3f0,#ffb35c 60%,#ff6b3d);transition:height .3s ease}
.t-mark{position:absolute;left:4px;right:4px;font:500 10px var(--mono);text-align:center;color:#fff;border-top:1px dashed #fff;padding-top:2px;text-shadow:0 1px 2px #000}
.t55{bottom:77%}
.t-out{bottom:3%;border-top:0}
.gauge-read p{margin:0}
.g-k{font-size:.75rem;color:var(--tx2);text-transform:uppercase;letter-spacing:.1em;margin-top:.8rem!important}
.g-v{font-size:2rem;font-weight:600;line-height:1.2}
.g-v.warm{color:var(--warm)}
.g-cap{font-size:.82rem;color:var(--tx2);margin-top:.6rem!important}

/* Eignungscheck */
.check{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.q{border:1px solid var(--line);background:var(--panel);padding:1.1rem 1.1rem .7rem;margin:0;min-width:0}
.q legend{font-weight:600;padding:0 .3rem;float:left;width:100%;margin-bottom:.6rem}
.q legend .mono{color:var(--cold);margin-right:.4rem}
.q-hint{clear:both;font-size:.85rem;color:var(--tx2);margin:0 0 .4rem}
.q label{clear:both;display:flex;gap:.6rem;align-items:flex-start;padding:.5rem .4rem;min-height:44px;cursor:pointer;border-radius:3px;line-height:1.35}
.q label:hover{background:#222a31}
.q label:has(input:checked){background:#1d2c33;box-shadow:inset 3px 0 0 var(--cold)}
input[type=radio],input[type=checkbox]{width:24px;height:24px;margin:0;flex:none;accent-color:var(--warm)}
.check-act{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:1rem;align-items:center}
.err{color:#ffb08a;font-weight:600;margin:0;font-size:.95rem}
.verdict{grid-column:1/-1;border:1px solid var(--warm);background:#1e1712;padding:clamp(1.2rem,3vw,2rem)}
.v-k{font-size:.78rem;color:var(--tx2);text-transform:uppercase;letter-spacing:.12em;margin-bottom:.4rem}
.verdict h3{font-size:1.6rem;font-stretch:88%}
.v-meter{height:10px;background:#2b343c;margin:.4rem 0 1rem;position:relative}
.v-meter i{position:absolute;inset:0 auto 0 0;width:0;background:linear-gradient(90deg,#ff6b3d,#ffb35c,#7ee0a1);transition:width .6s ease}
.verdict ul{padding-left:1.2rem;color:#cfd6dc}
.verdict li{margin:.3rem 0}

/* Leistungen */
.spec{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.spec li{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.4rem}
.spec .n{display:inline-block;color:var(--warm);font-size:.85rem;margin-bottom:.8rem;border:1px solid var(--warm);padding:.1em .45em}
.spec p{margin:0;color:#cfd6dc}

/* Fälle */
.cases{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.case{border:1px solid var(--line);background:var(--panel);padding:1.3rem;position:relative}
.case::before{content:"FIKTIV";position:absolute;top:0;right:0;font:600 .68rem var(--mono);letter-spacing:.1em;background:var(--warm);color:#140b04;padding:.25em .5em}
.c-k{font-size:.8rem;color:var(--cold);margin-bottom:.6rem}
.case dl{margin:0}
.case dt{font:500 .75rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--tx2);margin-top:.8rem}
.case dd{margin:.2rem 0 0;color:#cfd6dc}

/* Ablauf */
.flow{list-style:none;margin:0 0 2.5rem;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));counter-reset:f}
.flow li{counter-increment:f;padding:2.6rem .9rem 0 0;position:relative;border-top:2px solid var(--line2)}
.flow li::before{content:counter(f,decimal-leading-zero);position:absolute;top:-13px;left:0;font:600 .8rem var(--mono);background:var(--bg);color:var(--warm);border:1px solid var(--warm);padding:.1em .4em}
.flow b{display:block;margin-bottom:.3rem}
.flow span{font-size:.93rem;color:#cfd6dc;display:block}
.foerder{border:1px solid var(--cold);background:#0f2128;padding:clamp(1.2rem,3vw,2rem)}
.foerder p{color:#cfd6dc;max-width:70em}
.foerder p:last-child{margin:0}

/* FAQ */
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;min-height:52px;padding:1rem 2.5rem 1rem 0;position:relative;font-weight:600;font-size:1.1rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:.4rem;top:50%;translate:0 -50%;font:500 1.6rem var(--mono);color:var(--warm);transition:rotate .2s}
.faq details[open] summary::after{rotate:45deg}
.faq p{color:#cfd6dc;margin:0 0 1.2rem;max-width:62em}

/* Kontakt */
.kontakt{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}
.demo-box{border:1px dashed var(--warm);background:#1e1712;padding:1rem;font-size:.95rem}
.k-data{margin:1.5rem 0 0}
.k-data div{border-top:1px solid var(--line);padding:.7rem 0}
.k-data dt{font:500 .75rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--tx2)}
.k-data dd{margin:0}
.kform{border:1px solid var(--line);background:var(--panel);padding:clamp(1.2rem,3vw,2rem)}
input:not([type]),input[type=email],select,textarea{width:100%;font:inherit;color:var(--tx);background:var(--bg);border:1px solid #66737f;border-radius:4px;padding:.7rem .8rem;min-height:48px}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--tx) 50%),linear-gradient(135deg,var(--tx) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:2.5rem}
textarea::placeholder{color:#8b98a5}
[aria-invalid=true]{border-color:#ffb08a!important}
.chk{display:flex;gap:.6rem;align-items:flex-start;min-height:44px;padding:.4rem 0;cursor:pointer}
.chk small{color:var(--tx2)}
.chk:has(input:disabled){cursor:not-allowed;color:var(--tx2)}
.kform .cta{margin-top:.6rem}
.kres{margin-top:1.4rem;border-top:1px solid var(--line);padding-top:1.2rem}
.kres textarea{font:400 .88rem/1.5 var(--mono);margin-top:.4rem}
.kres-act{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-top:.8rem}
.ok{color:var(--ok);font-weight:600}
.src-list{padding-left:1.1rem}
.src-list li{margin:.45rem 0}
.foot{padding:2.5rem 0;font-size:.95rem;color:var(--tx2)}
.foot-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem 2rem;align-items:center}
.foot-row p{margin:0;max-width:44em}
.foot-row ul{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;list-style:none;margin:0;padding:0}
.foot-row a{display:inline-flex;min-height:44px;align-items:center}
.legal{padding:3rem 0 5rem}
.legal h1{font-size:clamp(2rem,1.5rem + 2vw,3rem);font-stretch:88%}
.legal h2{font-size:1.4rem;margin-top:2rem}
.ph{background:#2a1d10;border:1px dashed var(--warm);padding:0 .3em}

@media (max-width:1080px){
  .flow{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:2.2rem}
  .check{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:900px){
  .hero-grid,.cycle,.vl,.kontakt{grid-template-columns:1fr}
  .spec,.cases{grid-template-columns:1fr 1fr}
  .menu-btn{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--line2);border-radius:4px;background:transparent;color:var(--tx);cursor:pointer;order:3}
  .menu-btn svg{width:24px;height:24px}
  .top-cta{margin-left:auto}
  .menu{position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:1px solid var(--line);padding:.4rem 20px 1rem;display:none}
  .menu.open{display:block}
  .menu ul{flex-direction:column}
  .no-js .menu{display:block;position:static;padding:0}
  .no-js .menu-btn{display:none}
}
@media (max-width:620px){
  .check,.spec,.cases{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr;row-gap:0}
  .flow li{border-top:0;border-left:2px solid var(--line2);padding:0 0 1.5rem 2rem;margin-left:1rem}
  .flow li::before{top:0;left:0;translate:-50% 0}
  .hero-stats{grid-template-columns:1fr}
  .hero-stats div+div{border-left:0;border-top:1px solid var(--line);padding-left:0;margin-top:1rem}
  .logo em{display:none}
  .hero-cta .cta{flex:1 1 100%}
  .cycle-tabs{grid-template-columns:1fr 1fr}
  .vl-gauge{grid-template-columns:60px 1fr}
}
.q[data-miss]{border-color:#ffb08a}
