.ent-wpsr{--bg:#f4f6f3;--card:#fff;--text:#20251f;--muted:#687068;--line:#d8ded6;--primary:#08756d;--soft:#e7f2ef;--warn:#fff2dd}.ent-wpsr[data-theme=dark]{--bg:#151816;--card:#1d211e;--text:#edf1ed;--muted:#aab2aa;--line:#394039;--primary:#61b9ae;--soft:#263a36;--warn:#493923}.ent-wpsr *{box-sizing:border-box}.ent-wpsr{width:100%;max-width:none;margin:0;font:16px/1.5 system-ui,sans-serif;background:var(--bg);color:var(--text)}.ent-wpsr a{color:var(--primary)}.ent-wpsr .app{width:100%;max-width:1900px;margin:0 auto;padding:24px 32px;display:grid;grid-template-columns:minmax(380px,560px) minmax(0,1fr);gap:32px}.ent-wpsr .card,.ent-wpsr fieldset{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px}.ent-wpsr .input-card{align-self:start}.ent-wpsr .app-header{display:flex;justify-content:space-between;gap:16px}.ent-wpsr h1{margin:0;font-size:clamp(1.8rem,4vw,2.7rem)}.ent-wpsr h2{margin-top:0}.ent-wpsr h3{margin:4px 0 8px}.ent-wpsr p{color:var(--muted)}.ent-wpsr form,.ent-wpsr .results{display:grid;gap:16px}.ent-wpsr fieldset{display:grid;gap:12px}.ent-wpsr legend{font-weight:800;color:var(--primary);padding:0 8px}.ent-wpsr .grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ent-wpsr label{display:grid;gap:6px;font-weight:650}.ent-wpsr label small{font-weight:400;color:var(--muted)}.ent-wpsr input,.ent-wpsr select,.ent-wpsr button{font:inherit}.ent-wpsr input,.ent-wpsr select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--text)}.ent-wpsr input[type=range]{padding:0}.ent-wpsr .check{display:flex;align-items:center;gap:10px}.ent-wpsr .check input{width:auto}.ent-wpsr .primary,.ent-wpsr .icon{border:0;border-radius:10px;cursor:pointer}.ent-wpsr .primary{padding:14px;background:var(--primary);color:white;font-weight:800}.ent-wpsr .icon{width:44px;height:44px}.ent-wpsr .hint,.ent-wpsr .scale,.ent-wpsr .chart-help{font-size:.84rem;color:var(--muted)}.ent-wpsr .scale{display:flex;justify-content:space-between}.ent-wpsr .hidden{display:none!important}.ent-wpsr .advanced{display:none!important}.ent-wpsr.detailed .advanced{display:grid!important}.ent-wpsr .mode-switch{margin:18px 0;padding:14px;border-radius:12px;background:var(--soft);display:grid;grid-template-columns:auto auto auto;align-items:center;justify-content:start;gap:10px}.ent-wpsr .mode-switch p{grid-column:1/-1;margin:0}.ent-wpsr .switch{position:relative;width:48px;height:26px;display:block}.ent-wpsr .switch input{opacity:0;width:0;height:0}.ent-wpsr .slider{position:absolute;inset:0;border-radius:20px;background:#9aa49d;cursor:pointer}.ent-wpsr .slider:before{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:white;transition:.2s}.ent-wpsr .switch input:checked+.slider:before{transform:translateX(22px)}.ent-wpsr .mini-chart{height:300px}.ent-wpsr .metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.ent-wpsr .metric{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}.ent-wpsr .metric strong{display:block;font-size:1.55rem}.ent-wpsr .metric span{color:var(--muted);font-size:.82rem}.ent-wpsr .row{display:grid;grid-template-columns:1.2fr .7fr 1.8fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.ent-wpsr .row strong{text-align:right}.ent-wpsr .result-group{border:1px solid var(--line);border-radius:12px;padding:14px;margin:14px 0;background:color-mix(in srgb,var(--card) 94%,var(--soft))}.ent-wpsr .result-group h3{color:var(--primary)}.ent-wpsr .notice{padding:14px;border-radius:10px;background:var(--soft);color:var(--text)}.ent-wpsr .notice.warn{background:var(--warn)}.ent-wpsr .chart-box{position:relative;height:360px}.ent-wpsr .chart-box-large{height:430px}.ent-wpsr .cash-inputs{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;margin:14px 0}.ent-wpsr .day-stats{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;color:var(--muted);font-size:.9rem}.ent-wpsr details{border-top:1px solid var(--line);padding:10px 0}.ent-wpsr summary{font-weight:700;cursor:pointer}.ent-wpsr .cop-points{border-top:1px solid var(--line);padding-top:12px}
@media(max-width:1100px){.ent-wpsr .app{grid-template-columns:1fr}.ent-wpsr .metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.ent-wpsr .app{padding:12px}.ent-wpsr .grid2,.ent-wpsr .row,.ent-wpsr .cash-inputs{grid-template-columns:1fr}.ent-wpsr .row strong{text-align:left}.ent-wpsr .metrics{grid-template-columns:1fr}.ent-wpsr .chart-box-large{height:360px}}
.ent-wpsr .simple-only{display:grid}.ent-wpsr.detailed .simple-only{display:none!important}.ent-wpsr .cop-presets{border-top:1px solid var(--line);padding-top:12px}.ent-wpsr .cop-key-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ent-wpsr .cop-key-card,.ent-wpsr .cop-detail-block{border:1px solid var(--line);border-radius:12px;padding:12px;background:color-mix(in srgb,var(--card) 95%,var(--soft))}.ent-wpsr .cop-key-card strong,.ent-wpsr .cop-detail-block h4{display:block;margin:0 0 8px;color:var(--primary)}.ent-wpsr .cop-key-card div{display:grid;gap:4px;font-size:.86rem;color:var(--muted)}.ent-wpsr .cop-key-card span{display:flex;justify-content:space-between;gap:10px}.ent-wpsr .cop-key-card b{color:var(--text)}.ent-wpsr .cop-detail-block{margin-top:10px}.ent-wpsr .cop-detail-block h4{font-size:1rem}@media(max-width:760px){.ent-wpsr .cop-key-grid{grid-template-columns:1fr}}
.ent-wpsr .cop-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ent-wpsr .cop-detail-grid .cop-detail-block{margin-top:0}.ent-wpsr .model-notes{margin-top:4px}@media(max-width:760px){.ent-wpsr .cop-detail-grid{grid-template-columns:1fr}}
.ent-wpsr .cop-key-grid.single{grid-template-columns:1fr}.ent-wpsr .preset-info{display:grid;gap:4px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.ent-wpsr .preset-info strong{color:var(--primary)}.ent-wpsr .preset-info span,.ent-wpsr .preset-info small{color:var(--muted)}.ent-wpsr .cop-key-card span small{display:block;margin-right:auto}
.ent-wpsr .calculated-value{display:grid;align-content:center;gap:3px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.ent-wpsr .calculated-value span{font-size:.82rem;color:var(--muted)}
.ent-wpsr .calculated-value strong{font-size:1.08rem;color:var(--text)}
.ent-wpsr .cop-preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ent-wpsr .cop-preset-panel{display:grid;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px;background:color-mix(in srgb,var(--card) 95%,var(--soft))}
.ent-wpsr .cop-preset-panel h4{margin:0;color:var(--primary)}
.ent-wpsr .cop-detail-block{display:grid;gap:10px}
@media(max-width:760px){.ent-wpsr .cop-preset-grid{grid-template-columns:1fr}}

.ent-wpsr .full-span{grid-column:1/-1}
.ent-wpsr .heat-section-heading{grid-column:1/-1;display:flex;align-items:center;gap:12px;margin-top:6px;color:var(--primary);font-weight:800}
.ent-wpsr .heat-section-heading::after{content:"";height:1px;flex:1;background:var(--line)}
.ent-wpsr .heat-section-heading span{white-space:nowrap}


/* Kompakte, gleichmäßige Eingabefelder */
.ent-wpsr input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),.ent-wpsr select,.ent-wpsr button.primary,.ent-wpsr button.secondary{
  min-height:46px;
}

.ent-wpsr .grid2,.ent-wpsr .cash-inputs,.ent-wpsr .cop-preset-grid,.ent-wpsr .cop-detail-grid{
  align-items:start;
}

/* Auf größeren Displays erhalten benachbarte Feldtitel denselben kompakten
   Platz. Dadurch beginnen die Eingaben auf gleicher Höhe, ohne große
   Leerflächen unter den Feldern zu erzeugen. */
.ent-wpsr .grid2 > label:not(.check):not(.switch):not(:has(input[type="range"])),.ent-wpsr .cash-inputs > label,.ent-wpsr .cop-preset-panel > label,.ent-wpsr .cop-detail-block > label{
  display:grid;
  grid-template-rows:minmax(2.45em,auto) 46px auto;
  align-content:start;
  gap:4px;
  min-width:0;
}

.ent-wpsr .grid2 > label.full-span{
  grid-template-rows:auto 46px auto;
}

.ent-wpsr .grid2 > label:not(.check):not(.switch):not(:has(input[type="range"])) > input,.ent-wpsr .grid2 > label:not(.check):not(.switch):not(:has(input[type="range"])) > select,.ent-wpsr .cash-inputs > label > input,.ent-wpsr .cash-inputs > label > select,.ent-wpsr .cop-preset-panel > label > input,.ent-wpsr .cop-preset-panel > label > select,.ent-wpsr .cop-detail-block > label > input,.ent-wpsr .cop-detail-block > label > select{
  height:46px;
  min-height:46px;
}

.ent-wpsr .grid2 > label small,.ent-wpsr .cash-inputs > label small,.ent-wpsr .cop-preset-panel > label small,.ent-wpsr .cop-detail-block > label small{
  margin-top:2px;
  padding:0;
}

.ent-wpsr .calculated-value{
  min-height:calc(2.45em + 50px);
}

/* Abschnittsabstände: wenig Abstand zur zugehörigen Eingabe, ungefähr eine
   Zeilenhöhe zum vorherigen Abschnitt. */
.ent-wpsr .heat-demand-grid{
  row-gap:8px;
}

.ent-wpsr .heat-section-heading{
  margin:1.5em 0 -2px;
  line-height:1.35;
}

.ent-wpsr .heat-section-heading-first{
  margin-top:0;
}

@media(max-width:760px){
  .ent-wpsr .grid2 > label:not(.check):not(.switch):not(:has(input[type="range"])),.ent-wpsr .cash-inputs > label,.ent-wpsr .cop-preset-panel > label,.ent-wpsr .cop-detail-block > label{
    grid-template-rows:auto 46px auto;
  }

  .ent-wpsr .calculated-value{min-height:0}
  .ent-wpsr .heat-section-heading{margin-top:1.25em}
  .ent-wpsr .heat-section-heading-first{margin-top:0}
}

/* v12: Parameterbereiche bleiben möglichst zweispaltig. Erst bei wirklich
   schmalen Viewports werden sie einspaltig. */
.ent-wpsr .grid2,.ent-wpsr .cop-preset-grid,.ent-wpsr .cop-detail-grid,.ent-wpsr .cash-inputs{
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.ent-wpsr .cash-inputs{
  margin:14px 0;
}

/* Volle Breite nur für bewusst hervorgehobene Auswahlfelder und Überschriften. */
.ent-wpsr .grid2 > .full-span,.ent-wpsr .grid2 > .heat-section-heading{
  grid-column:1 / -1;
}

@media(max-width:620px){
  .ent-wpsr .grid2,.ent-wpsr .cop-preset-grid,.ent-wpsr .cop-detail-grid,.ent-wpsr .cash-inputs,.ent-wpsr .row{
    grid-template-columns:1fr;
  }
}

/* v13: Ergebnisfelder passen ihre Spaltenzahl an den verfügbaren Platz an.
   Bei ausreichender Breite werden mindestens zwei Spalten dargestellt; lange
   Bezeichnungen dürfen umbrechen und bleiben innerhalb der Karten. */
.ent-wpsr .metrics{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));
}
.ent-wpsr .metric{
  min-width:0;
  overflow-wrap:anywhere;
}
.ent-wpsr .metric strong{
  line-height:1.15;
  overflow-wrap:anywhere;
}
.ent-wpsr .metric span{
  display:block;
  line-height:1.3;
  overflow-wrap:anywhere;
}

/* COP-Keywerte möglichst nebeneinander, aber nur wenn jeder Block genügend
   Platz für seine Texte behält. */
.ent-wpsr .cop-key-grid{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
}
.ent-wpsr .cop-key-card{
  min-width:0;
  overflow-wrap:anywhere;
}
.ent-wpsr .cop-key-card span{
  flex-wrap:wrap;
}

.ent-wpsr .cashflow-comparison{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));
  gap:14px;
  margin-top:18px;
}
.ent-wpsr .comparison-card{
  min-width:0;
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px;
  background:color-mix(in srgb,var(--card) 94%,var(--soft));
}
.ent-wpsr .comparison-card h3{
  margin:0 0 8px;
  color:var(--primary);
}
.ent-wpsr .comparison-card .row{
  grid-template-columns:minmax(0,1.25fr) auto;
}
.ent-wpsr .comparison-card .row small{
  grid-column:1/-1;
}

@media(max-width:430px){
  .ent-wpsr .metrics{grid-template-columns:1fr;}
}

/* Der Einfach-/Detailliert-Schalter betrifft ausschließlich die COP-Kennlinien. */
.ent-wpsr .cop-mode-switch{
  margin:14px 0 4px;
}


/* v1.0.2: Desktop-Full-Width-Breakout.
   WordPress-Themes und Elementor begrenzen den Inhaltsbereich häufig auf etwa
   1140–1280 px. Der Rechner wird auf großen Bildschirmen aus diesem
   Elterncontainer heraus zentriert und kann bis zu 1900 px breit werden. */
@media (min-width:1101px){
  .ent-wpsr{
    position:relative;
    left:50%;
    width:min(1900px,calc(100vw - 32px))!important;
    max-width:none!important;
    margin-left:0!important;
    margin-right:0!important;
    transform:translateX(-50%);
    overflow:visible;
  }
  .ent-wpsr .app{
    width:100%!important;
    max-width:1900px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
}

/* Auf Tablet und Smartphone bleibt der Rechner im normalen Seitenfluss. */
@media (max-width:1100px){
  .ent-wpsr{
    position:static;
    left:auto;
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    transform:none;
  }
}


/* v1.0.3: COP-Bedienung und robuste Smartphone-Darstellung. */
.ent-wpsr .cop-selection-heading{
  border-top:1px solid var(--line);
  padding-top:12px;
}
.ent-wpsr .cop-selection-heading > h3{
  margin:4px 0 8px;
}
.ent-wpsr .cop-presets{
  border-top:0;
  padding-top:0;
}
.ent-wpsr .cop-key-card span{
  align-items:baseline;
}
.ent-wpsr .cop-key-card span b{
  white-space:nowrap;
}

/* Jede innere Grid-Komponente darf auf kleinen Viewports tatsächlich
   schrumpfen. Dadurch entsteht kein horizontaler Überstand durch lange Texte,
   Canvas-Elemente, Fieldsets oder WordPress-Theme-Regeln. */
.ent-wpsr,
.ent-wpsr .app,
.ent-wpsr .input-card,
.ent-wpsr .results,
.ent-wpsr .card,
.ent-wpsr fieldset,
.ent-wpsr form,
.ent-wpsr .grid2,
.ent-wpsr .cop-preset-grid,
.ent-wpsr .cop-detail-grid,
.ent-wpsr .cop-key-grid,
.ent-wpsr .metrics,
.ent-wpsr .cash-inputs,
.ent-wpsr .chart-box,
.ent-wpsr .mini-chart{
  min-width:0;
  max-width:100%;
}
.ent-wpsr canvas{
  display:block;
  max-width:100%!important;
}

@media (max-width:620px){
  .ent-wpsr{
    width:100%!important;
    max-width:100%!important;
    overflow-x:hidden;
  }
  .ent-wpsr .app{
    width:100%!important;
    max-width:100%!important;
    padding:8px!important;
    gap:10px;
  }
  .ent-wpsr .card,
  .ent-wpsr fieldset{
    width:100%;
    max-width:100%;
    padding:14px;
  }
  .ent-wpsr .app-header{
    min-width:0;
  }
  .ent-wpsr .app-header > div{
    min-width:0;
  }
  .ent-wpsr h1,
  .ent-wpsr h2,
  .ent-wpsr h3,
  .ent-wpsr h4,
  .ent-wpsr p,
  .ent-wpsr label,
  .ent-wpsr small,
  .ent-wpsr span{
    overflow-wrap:anywhere;
    word-break:normal;
  }
  .ent-wpsr input,
  .ent-wpsr select,
  .ent-wpsr button{
    min-width:0;
    max-width:100%;
  }
  .ent-wpsr .mode-switch{
    width:100%;
    grid-template-columns:auto 48px minmax(0,1fr);
    padding:12px;
  }
  .ent-wpsr .chart-box,
  .ent-wpsr .mini-chart{
    width:100%;
    overflow:hidden;
  }
}
