/* Andy SHK - Ergaenzungen zum Elementor-Design.
   Erzeugt von elementor/andy_css.py, nicht von Hand bearbeiten. */

:root{
  --ink:#0E2B29;         /* Tiefes Tannengrün-Schwarz */
  --ink-2:#123A36;
  --green:#1A9D59;       /* Logo-Grün, direkt aus assets/logo.png ausgelesen */
  --green-d:#157543;     /* dunklere Stufe derselben Farbe, für Text auf Hell */
  --green-l:#1FB266;     /* hellere Stufe derselben Farbe, für Text auf Dunkel */
  --amber:#E0853A;
  --paper:#F4F8F5;
  --card:#ffffff;
  --line:#E2EAE7;
  --muted:#5D716D;
  --text:#16302C;
  --shadow:0 24px 60px rgba(14,43,41,.12);
  --shadow-lg:0 44px 90px rgba(14,43,41,.28);
  --r:20px;
  --maxw:1200px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---- Schriften lokal ausliefern (kein Google-Hotlink, DSGVO) ---- */
@font-face{font-family:'Space Grotesk';src:url('assets/fonts/SpaceGrotesk-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:'Space Grotesk';src:url('assets/fonts/SpaceGrotesk-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}
@font-face{font-family:'Inter';src:url('assets/fonts/Inter-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Inter';src:url('assets/fonts/Inter-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap;}
/* Die Vorschau-Bloecke der Werkzeuge nennen die Schriften 'SG' und 'IN'. Dieselben
   Dateien unter diesen Namen registrieren, statt den uebernommenen Block umzuschreiben. */
@font-face{font-family:'SG';src:url('assets/fonts/SpaceGrotesk-700.woff2') format('woff2');font-weight:700;font-display:swap;}
@font-face{font-family:'SG';src:url('assets/fonts/SpaceGrotesk-500.woff2') format('woff2');font-weight:500;font-display:swap;}
@font-face{font-family:'IN';src:url('assets/fonts/Inter-400.woff2') format('woff2');font-weight:400;font-display:swap;}
@font-face{font-family:'IN';src:url('assets/fonts/Inter-600.woff2') format('woff2');font-weight:600;font-display:swap;}
.finder,.calc{font-family:'Inter',-apple-system,Segoe UI,Roboto,sans-serif;}
/* Hello Elementor setzt kein border-box auf Buttons, die Vorschau schon. Ohne das
   ragen die Antwort-Buttons des Heizungs-Checks am Handy 11 px ueber den Rand. */
.finder,.finder *,.calc,.calc *{box-sizing:border-box;}
.finder h3,.finder h4,.calc h3,.calc h4{font-family:'Space Grotesk',sans-serif;font-weight:700;color:var(--ink);}

/* ---- Linkfarbe: Hello Elementor faerbt Links standardmaessig rosa (#cc3366).
   Das faellt vor allem in Impressum und Datenschutz auf. ---- */
.elementor-widget-text-editor a,.elementor-widget-heading a,.andy-marken a{color:var(--green-d);text-decoration:underline;text-underline-offset:2px;}
.elementor-widget-text-editor a:hover,.elementor-widget-heading a:hover{color:var(--green);}
footer .elementor-widget-text-editor a,footer .elementor-widget-heading a{color:#9FBCB2;text-decoration:none;}
footer .elementor-widget-text-editor a:hover{color:var(--green-l);}

/* ---- Weisse Flaeche der Kopfzeile ----
   Den Hintergrund setzt Elementor selbst (fremde Hintergruende nimmt es auf
   seinen Containern nicht an). Groesse und Deckkraft steuern wir hier. */
.andy-header{position:relative;}
.andy-headerflaeche{position:absolute !important;top:0;left:50%;transform:translateX(-50%);width:100vw;height:100%;min-height:100%;padding:0 !important;opacity:0;pointer-events:none;transition:opacity .3s;z-index:0;}
.andy-headerflaeche > *{display:none;}
.andy-header > .e-con-inner{position:relative;z-index:1;}

/* ---- Gruenes Wort in der Hero-Headline ---- */
.andy-gruen{color:var(--green-l);}

/* ---- Leitspruch unter der Headline: gruener Strich davor ---- */
.andy-claim .elementor-heading-title{display:inline-flex;align-items:center;gap:13px;}
.andy-claim .elementor-heading-title::before{content:"";flex:0 0 auto;width:28px;height:2px;border-radius:2px;background:var(--green-l);}

/* ---- Marken-Satz und Leitspruch auf den Leistungsseiten ---- */
.andy-marken{border-left:3px solid var(--green-l);padding-left:15px;}
.andy-marken b{font-family:'Space Grotesk',sans-serif;font-weight:500;color:var(--ink);}
.andy-spruch .elementor-heading-title{border-left:3px solid var(--green);padding-left:18px;display:block;}

/* ---- Leistungskarten: feste Bildhoehe wie in der Vorschau ----
   !important, weil Elementors eigenes Bild-CSS gleich spezifisch ist und spaeter laedt. */
.andy-kartenbild,.andy-kartenbild .elementor-widget-container{width:100% !important;max-width:none !important;}
/* Elementor setzt den Bildlink auf inline-block, dann schrumpft das Bild auf seine
   natuerliche Breite. Der Link muss ein Block ueber die volle Breite sein. */
.andy-kartenbild a{display:block !important;width:100%;}
.andy-kartenbild img{width:100% !important;height:auto !important;aspect-ratio:16/9;object-fit:cover;display:block;}
.andy-karte-breit .andy-kartenbild,.andy-karte-breit .andy-kartenbild .elementor-widget-container,.andy-karte-breit .andy-kartenbild figure{height:100%;}
.andy-karte-breit .andy-kartenbild img{height:100% !important;aspect-ratio:auto;min-height:320px;}
@media(max-width:960px){ .andy-karte-breit .andy-kartenbild img{height:auto !important;aspect-ratio:16/9;min-height:0;} }

/* ---- Schild am Bild (Foerderung, Meisterbetrieb): liegt wie im Entwurf
   ueberlappend am unteren Bildrand, nicht darunter. ---- */
.andy-splitmedien{position:relative;}
.andy-badge{position:absolute !important;left:20px !important;right:auto !important;top:auto !important;bottom:-26px !important;
  width:auto !important;max-width:calc(100% - 40px) !important;height:auto !important;min-height:0 !important;align-self:flex-start !important;
  z-index:3;background:#fff;border-radius:16px;padding:14px 18px !important;box-shadow:0 18px 40px rgba(14,43,41,.18);}
.andy-badge > .e-con-inner{width:auto;}
@media(max-width:767px){
  .andy-splitmedien{margin-bottom:30px;}
  .andy-badge{left:12px !important;bottom:-22px !important;}
}

/* ---- Mosaik-Galerie: Raster kommt von hier, Bilder und Videos bleiben Widgets ---- */
.e-con.andy-gal{display:grid !important;grid-template-columns:repeat(4,1fr);grid-auto-rows:210px;gap:16px;}
.e-con.andy-gal > .elementor-element{width:auto !important;max-width:none !important;min-height:0;}
/* Zwischen figure und img liegt Elementors Lightbox-Link, deshalb fuellt das Bild die
   Kachel ueber absolute Positionierung statt ueber Hoehenvererbung. */
.andy-kachel{position:relative;overflow:hidden;border-radius:16px;background:var(--ink);}
.andy-kachel .elementor-widget-container,.andy-kachel figure,.andy-kachel figure>a{position:static;height:100%;margin:0;display:block;}
.andy-kachel img{position:absolute;inset:0;width:100% !important;height:100% !important;max-width:none !important;object-fit:cover;display:block;transition:transform .5s var(--ease);}
.andy-kachel:hover img{transform:scale(1.06);}
.andy-kachel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(10,30,28,.55));opacity:.65;pointer-events:none;}
.andy-kachel figcaption{position:absolute;left:15px;bottom:13px;z-index:2;color:#fff;margin:0;padding:0;text-align:left;font-style:normal;}
.andy-kachel.big{grid-column:span 2;grid-row:span 2;}
.andy-kachel.tall{grid-row:span 2;}
.andy-kachel.wide{grid-column:span 2;}
.andy-videokachel{position:relative;overflow:hidden;border-radius:16px;background:var(--ink);padding:0 !important;}
.andy-videokachel .elementor-widget-video,.andy-videokachel .elementor-widget-container,.andy-videokachel .elementor-wrapper,.andy-videokachel .elementor-fit-aspect-ratio{height:100%;padding:0 !important;margin:0;}
.andy-videokachel .elementor-widget-video{position:absolute;inset:0;width:100% !important;max-width:none !important;}
.andy-videokachel .elementor-wrapper,.andy-videokachel .e-hosted-video{position:absolute !important;inset:0;width:100% !important;max-width:100% !important;height:100% !important;padding:0 !important;}
.andy-videokachel video{width:100%;height:100%;object-fit:cover;display:block;}
.andy-videokachel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(10,30,28,.55));opacity:.65;pointer-events:none;}
@media(max-width:960px){
  .e-con.andy-gal{grid-template-columns:repeat(2,1fr);grid-auto-rows:170px;gap:14px;}
  .andy-kachel.big{grid-column:span 2;grid-row:span 1;}
  .andy-kachel.wide{grid-column:span 2;}
}

/* ---- Kopfzeile: transparent oben, weiss nach dem Scrollen ----
   Bewusst OHNE ::before: Elementor belegt dieses Pseudoelement am Header
   bereits selbst als Clearfix, das ueberschreibt sonst unsere Deckkraft.
   Auch ohne backdrop-filter, damit der Header kein Bezugsrahmen fuer das
   fixierte Menue-Panel wird. */
body:not(.elementor-editor-active) header.elementor-location-header{position:fixed;top:0;left:0;right:0;z-index:100;}
/* Flaeche und Textfarben der Kopfzeile setzt andy.js direkt am <header>.
   Der innere Elementor-Container nimmt keine fremden Hintergruende an, auch
   nicht per Inline-Stil mit !important. */
header.andy-scrolled .elementor-nav-menu a.elementor-item,header.andy-scrolled .andy-tel a,header.andy-scrolled .andy-tel .elementor-button-text{color:var(--ink) !important;}
header.andy-scrolled .elementor-menu-toggle{color:var(--ink) !important;}
@media(max-width:960px){ .andy-tel{display:none !important;} }

/* ---- Sicherung gegen seitliches Ueberlaufen auf kleinen Bildschirmen ---- */
@media(max-width:767px){
  .elementor-element.elementor-widget__width-initial{max-width:100% !important;}
  .e-con,.e-con-inner{max-width:100%;}
  .andy-header .elementor-button{padding:12px 18px !important;font-size:14px !important;}
}

/* ---- Formular: Leitungsfrage nur bei Wasserenthaertung ---- */
/* Elementor haengt an jede Feldgruppe elementor-field-group-<id>, das ist verlaesslicher
   als die frei vergebene CSS-Klasse, die am <select> statt am Wrapper landet. */
.elementor-field-group-leitungen{display:none !important;}
.elementor-field-group-leitungen.andy-sichtbar{display:flex !important;}

/* ============================================================
   HEIZUNGS-CHECK (unveraendert aus der Vorschau)
   ============================================================ */
/* ============================================================
   HEIZUNGSFINDER (Quiz / Gamification)
   ============================================================ */
.finder{background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden;max-width:760px;margin:0 auto;}
.finder-top{background:linear-gradient(120deg,var(--ink),var(--ink-2));color:#fff;padding:26px 32px;display:flex;align-items:center;gap:16px;}
.finder-top .fic{width:48px;height:48px;border-radius:13px;background:rgba(35,199,115,.16);color:var(--green-l);display:grid;place-items:center;flex:0 0 auto;}
.finder-top .fic svg{width:26px;height:26px;}
.finder-top h3{color:#fff;font-size:21px;}
.finder-top p{color:#a9c6bd;font-size:14px;margin-top:2px;}
.progress{height:5px;background:#e7efeb;}
.progress .bar{height:100%;width:0;background:linear-gradient(90deg,var(--green),var(--green-l));transition:width .4s var(--ease);}
.finder-body{padding:34px 32px 36px;}
.qstep{display:none;}
.qstep.on{display:block;animation:fadein .35s var(--ease);}
@keyframes fadein{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.qcount{font-family:'SG';font-weight:700;font-size:13px;color:var(--green-d);letter-spacing:.1em;text-transform:uppercase;}
.qstep h4{font-size:23px;margin:8px 0 22px;color:var(--ink);}
.opts{display:grid;gap:12px;}
.opt{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:#fff;border:1.6px solid #dce6e2;border-radius:14px;padding:16px 18px;cursor:pointer;font-size:16px;font-family:'IN';color:var(--text);transition:border-color .18s,background .18s,transform .12s;}
.opt:hover{border-color:var(--green);background:#f4fbf7;transform:translateX(3px);}
.opt .oic{width:40px;height:40px;border-radius:10px;background:#eef7f2;color:var(--green-d);display:grid;place-items:center;flex:0 0 auto;transition:background .18s,color .18s;}
.opt:hover .oic{background:var(--green);color:#fff;}
.opt .oic svg{width:21px;height:21px;}
.opt b{font-family:'SG';font-weight:500;}
.opt span{display:block;font-size:13px;color:var(--muted);}
.qnav{margin-top:22px;display:flex;justify-content:space-between;align-items:center;}
.qback{background:none;border:none;color:var(--muted);font-family:'SG';font-weight:500;font-size:14.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}
.qback:hover{color:var(--ink);}
.qback svg{width:16px;height:16px;}
/* Result */
.qresult{display:none;text-align:center;padding:6px 4px 4px;}
.qresult.on{display:block;animation:fadein .4s var(--ease);}
.qresult .rico{width:76px;height:76px;border-radius:20px;background:linear-gradient(135deg,var(--green),var(--green-d));color:#fff;display:grid;place-items:center;margin:0 auto 18px;box-shadow:0 18px 40px rgba(26,157,89,.35);}
.qresult .rico svg{width:38px;height:38px;}
.qresult .rkicker{font-family:'SG';font-weight:700;color:var(--green-d);font-size:13px;letter-spacing:.12em;text-transform:uppercase;}
.qresult h4{font-size:27px;margin:8px 0 12px;}
.qresult p{color:var(--muted);font-size:16.5px;max-width:460px;margin:0 auto 24px;}
.qresult .rbtns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

/* ============================================================
   KALK-RECHNER (unveraendert aus der Vorschau)
   ============================================================ */
/* ============================================================
   KALK-RECHNER (Wasserenthärtung)
   ============================================================ */
.calc{background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden;max-width:900px;margin:0 auto;}
.calc-top{background:linear-gradient(120deg,var(--ink),var(--ink-2));color:#fff;padding:26px 32px;display:flex;align-items:center;gap:16px;}
.calc-top .fic{width:48px;height:48px;border-radius:13px;background:rgba(35,199,115,.16);color:var(--green-l);display:grid;place-items:center;flex:0 0 auto;}
.calc-top .fic svg{width:26px;height:26px;}
.calc-top h3{color:#fff;font-size:21px;}
.calc-top p{color:#a9c6bd;font-size:14px;margin-top:2px;}
.calc-body{display:grid;grid-template-columns:1.15fr .85fr;gap:34px;padding:34px 32px 30px;align-items:start;}
.calc-controls{align-self:center;}
.crow{margin-bottom:30px;}
.crow:last-child{margin-bottom:0;}
.crow label{font-family:'SG';font-weight:500;font-size:15px;color:var(--ink);display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;}
.crow label b{font-family:'SG';font-weight:700;font-size:20px;color:var(--green-d);}
.crow input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:8px;padding:0;border:none;border-radius:999px;background:linear-gradient(90deg,var(--green-l),var(--green) 55%,var(--amber));cursor:pointer;}
.crow input[type=range]:focus-visible{outline:3px solid var(--green);outline-offset:6px;}
.crow input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;border:3px solid var(--green-d);box-shadow:0 6px 16px rgba(14,43,41,.25);cursor:grab;}
.crow input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--green-d);box-shadow:0 6px 16px rgba(14,43,41,.25);cursor:grab;}
.cscale{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);margin-top:9px;font-family:'SG';font-weight:500;}
.chint{display:block;font-size:13px;color:var(--muted);line-height:1.5;margin-top:12px;}
.calc-out{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:28px 26px;text-align:center;}
.ckicker{font-family:'SG';font-weight:700;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--green-d);}
.cnum{font-family:'SG';font-weight:700;font-size:64px;line-height:1;color:var(--ink);margin:10px 0 14px;display:flex;align-items:baseline;justify-content:center;gap:8px;}
.cnum small{font-size:24px;color:var(--muted);font-weight:500;}
.calc-out p{color:var(--muted);font-size:15px;margin-bottom:20px;min-height:72px;}
.calc-out .btn{width:100%;justify-content:center;}
.calc-foot{border-top:1px solid var(--line);padding:16px 32px 20px;font-size:12.5px;color:var(--muted);text-align:center;}
@media(max-width:860px){
  .calc-body{grid-template-columns:1fr;gap:26px;padding:28px 22px 26px;}
  .calc-out p{min-height:0;}
  .cnum{font-size:54px;}
}

/* Buttons innerhalb der beiden Werkzeuge. Hello Elementor und das Kit faerben
   jedes <button> gruen, deshalb hier mit hoeherer Spezifitaet zuruecksetzen. */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:'SG';font-weight:700;font-size:16px;padding:15px 28px;border-radius:999px;cursor:pointer;border:none;transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s;white-space:nowrap;}
.btn svg{width:18px;height:18px;}
.btn-green{background:var(--green);color:#fff;box-shadow:0 14px 30px rgba(26,157,89,.30);}
.btn-green:hover{transform:translateY(-3px);box-shadow:0 22px 44px rgba(26,157,89,.42);}
.btn-white{background:#fff;color:var(--green-d);box-shadow:0 14px 30px rgba(0,0,0,.14);}
.btn-white:hover{transform:translateY(-3px);}
.btn-ghost{background:transparent;color:var(--ink);border:1.6px solid #cdd8d4;}
.btn-ghost:hover{border-color:var(--green);color:var(--green-d);transform:translateY(-2px);}
.btn-ghost-w{background:rgba(255,255,255,.08);color:#fff;border:1.6px solid rgba(255,255,255,.55);backdrop-filter:blur(4px);}
.btn-ghost-w:hover{background:rgba(255,255,255,.16);transform:translateY(-2px);}
.btn-lg{padding:18px 34px;font-size:17px;}
.finder button.opt,.calc button.opt{background:#fff;color:var(--text);border:1.6px solid #dce6e2;border-radius:14px;padding:16px 18px;font-size:16px;font-weight:400;line-height:1.4;text-align:left;box-shadow:none;}
.finder button.opt:hover{background:#f4fbf7;border-color:var(--green);color:var(--text);}
.finder button.qback{background:none;border:none;color:var(--muted);padding:0;box-shadow:none;font-size:14.5px;}
.finder button.qback:hover{color:var(--ink);background:none;}
.finder .btn,.calc .btn,.finder a.btn,.calc a.btn{display:inline-flex;}
@keyframes fadein{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
