/* Kölsch Elektro – demo enhancements / September 2026 */

/* Footer social icons */
.site-footer__social-link{display:flex!important;align-items:center;gap:9px}.site-footer__social-link::before{content:"";width:18px;height:18px;flex:0 0 18px;background:center/contain no-repeat}.site-footer__social-link--instagram::before,.site-footer a[href*="instagram.com"]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.8'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Ccircle cx='17.4' cy='6.6' r='1' fill='%23ffffff' stroke='none'/%3E%3C/svg%3E")}.site-footer__social-link--facebook::before,.site-footer a[href*="facebook.com"]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M13.8 21v-8h2.8l.4-3h-3.2V8.1c0-.87.25-1.46 1.58-1.46H17V4a22 22 0 0 0-2.35-.12c-2.33 0-3.92 1.42-3.92 4.03V10H8v3h2.73v8h3.07Z'/%3E%3C/svg%3E")}
.mobile-nav__subitem{padding-left:20px!important;font-size:.92em!important;opacity:.88}.nav-popover__links>a[data-ke-calculator-link]{border-color:rgba(217,30,37,.28);background:rgba(217,30,37,.035)}
.legal-document a{word-break:break-word}.legal-document small{color:#817976}

/* Full Neubau/Sanierung calculator */
.ke-project-calc{margin:0 auto 46px;max-width:1180px;border:1px solid #ded8d5;border-radius:28px;background:#fff;box-shadow:0 28px 70px rgba(25,23,23,.10);overflow:hidden;position:relative}
.ke-project-calc:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,#d91e25 0 72%,#191717 72%)}
.ke-project-calc__top{display:grid;grid-template-columns:1fr auto;gap:34px;align-items:end;padding:34px 38px 28px;border-bottom:1px solid #ece8e6;background:linear-gradient(135deg,#fff 0%,#fbf9f8 100%)}
.ke-project-calc__kicker{display:block;margin-bottom:7px;color:#d91e25;font-size:11px;font-weight:900;letter-spacing:.13em}
.ke-project-calc__top h2{margin:0;font-size:clamp(27px,3vw,39px);letter-spacing:-.035em;line-height:1.05}.ke-project-calc__top p{max-width:720px;margin:10px 0 0;color:#6d6867;line-height:1.55}
.ke-project-calc__top-price{text-align:right}.ke-project-calc__top-price>small{display:block;color:#6d6867;font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.ke-project-calc__top-price>strong{display:flex;align-items:baseline;gap:8px;white-space:nowrap;font-size:23px;letter-spacing:-.03em}.ke-project-calc__top-price i{color:#8d8784;font-size:12px;font-style:normal;font-weight:700}.ke-project-calc__top-price em{display:block;color:#8d8784;font-size:11px;font-style:normal}
.ke-project-calc__progress-wrap{padding:18px 38px 22px;background:#fff}.ke-project-calc__progress-label{display:flex;justify-content:space-between;gap:16px;margin-bottom:9px;color:#6d6867;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.ke-project-calc__progress{height:6px;border-radius:999px;background:#e6e1de;overflow:hidden}.ke-project-calc__progress i{display:block;width:14.2857%;height:100%;border-radius:inherit;background:#d91e25;transition:width .25s ease}
.ke-project-calc__dots{display:grid;grid-template-columns:repeat(7,1fr);margin-top:10px}.ke-project-calc__dots span{justify-self:center;display:grid;place-items:center;width:22px;height:22px;border:1px solid #ddd8d5;border-radius:50%;background:#fff;color:#8d8784;font-size:9px;font-weight:900;transition:.2s}.ke-project-calc__dots span:first-child{justify-self:start}.ke-project-calc__dots span:last-child{justify-self:end}.ke-project-calc__dots .is-active{border-color:#d91e25;background:#d91e25;color:#fff;transform:scale(1.08)}.ke-project-calc__dots .is-done{border-color:#191717;background:#191717;color:#fff}
.ke-project-calc__grid{display:grid;grid-template-columns:minmax(0,1.58fr) minmax(310px,.72fr);border-top:1px solid #ece8e6}.ke-project-calc__question{min-width:0;padding:38px}.ke-project-calc__question>div[data-calc-step]>h3{margin:2px 0 8px;font-size:clamp(26px,3vw,36px);letter-spacing:-.03em;line-height:1.1}.ke-project-calc__question>div[data-calc-step]>p{max-width:720px;margin:0 0 26px;color:#6d6867;line-height:1.6}.ke-project-calc__step-no{display:block;color:#d91e25;font-size:11px;font-weight:900;letter-spacing:.14em}
.ke-choice-grid{display:grid;gap:12px}.ke-choice-grid--2{grid-template-columns:repeat(2,1fr)}.ke-choice-grid--3{grid-template-columns:repeat(3,1fr)}.ke-choice-grid--4{grid-template-columns:repeat(2,1fr)}.ke-choice-grid button{position:relative;display:flex;min-width:0;min-height:116px;flex-direction:column;align-items:flex-start;gap:4px;padding:19px;border:1px solid #ddd8d5;border-radius:16px;background:#fff;text-align:left;cursor:pointer;transition:border-color .16s,box-shadow .16s,transform .16s,background .16s}.ke-choice-grid button:hover{border-color:#bdb4b0;transform:translateY(-2px);box-shadow:0 12px 24px rgba(25,23,23,.06)}.ke-choice-grid button.active{border-color:#d91e25;background:#fff8f8;box-shadow:0 0 0 2px rgba(217,30,37,.09)}.ke-choice-grid button.active:after{content:"✓";position:absolute;top:12px;right:12px;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#d91e25;color:#fff;font-size:12px;font-weight:900}.ke-choice-icon{display:grid;place-items:center;min-width:34px;height:29px;margin-bottom:6px;padding:0 8px;border-radius:8px;background:#f3efed;color:#191717;font-size:10px;font-weight:900;letter-spacing:.03em}.ke-choice-grid button.active .ke-choice-icon{background:#d91e25;color:#fff}.ke-choice-grid strong{font-size:16px}.ke-choice-grid small{color:#6d6867;line-height:1.45}.ke-tier{margin-bottom:7px;color:#8d8784;font-size:9px;font-weight:900;letter-spacing:.11em}.ke-choice--recommended .ke-tier{color:#d91e25}
.ke-area-control{padding:28px;border:1px solid #e4dedb;border-radius:18px;background:#f7f4f3}.ke-area-control>div:first-child{display:flex;justify-content:space-between;align-items:end;margin-bottom:24px}.ke-area-control>div:first-child small{color:#6d6867;font-weight:800}.ke-area-control>div:first-child strong{font-size:34px;letter-spacing:-.04em}.ke-area-control input{width:100%;accent-color:#d91e25}.ke-area-control__scale{display:flex;justify-content:space-between;margin-top:9px;color:#8d8784;font-size:10px;font-weight:700}
.ke-check-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.ke-check-grid label{display:flex;min-width:0;align-items:center;gap:13px;padding:16px 17px;border:1px solid #ddd8d5;border-radius:14px;background:#fff;cursor:pointer;transition:.16s}.ke-check-grid label:hover{border-color:#bdb4b0}.ke-check-grid label:has(input:checked){border-color:#d91e25;background:#fff8f8;box-shadow:0 0 0 1px rgba(217,30,37,.06)}.ke-check-grid input{width:19px;height:19px;flex:0 0 19px;accent-color:#d91e25}.ke-check-grid span{display:flex;min-width:0;flex-direction:column}.ke-check-grid strong{font-size:14px}.ke-check-grid small{color:#6d6867;font-size:11px;line-height:1.35}.ke-check-grid__wide{grid-column:1/-1}
.ke-project-calc__actions{display:flex;justify-content:space-between;gap:12px;margin-top:32px;padding-top:24px;border-top:1px solid #ece8e6}.ke-project-calc__actions [data-action="next"]{margin-left:auto}
.ke-project-calc__live{position:relative;padding:36px 30px;background:#191717;color:#fff}.ke-project-calc__live:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 90% 0%,rgba(217,30,37,.23),transparent 36%);pointer-events:none}.ke-project-calc__live>*{position:relative}.ke-project-calc__live-label{display:inline-flex;margin-bottom:25px;padding:7px 9px;border:1px solid rgba(255,255,255,.16);border-radius:8px;color:#f08a8e;font-size:9px;font-weight:900;letter-spacing:.13em}.ke-project-calc__live>small{display:block;color:#bdb7b4;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.ke-project-calc__live-price{display:flex;flex-direction:column;margin:8px 0 3px;font-size:clamp(30px,3.1vw,42px);line-height:1;letter-spacing:-.04em}.ke-project-calc__live-price i{margin:5px 0;color:#7e7774;font-size:12px;font-style:normal;letter-spacing:0}.ke-project-calc__live>p{margin:10px 0 23px;color:#d7d2cf;font-size:12px}.ke-project-calc__breakdown{border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12);padding:12px 0}.ke-project-calc__breakdown>div{display:flex;justify-content:space-between;gap:14px;padding:7px 0;color:#cfc8c5;font-size:11px}.ke-project-calc__breakdown strong{color:#fff}.ke-project-calc__live-note{display:flex;gap:10px;align-items:flex-start;margin:18px 0;color:#f2efed;font-size:12px;line-height:1.45}.ke-project-calc__live-note b{display:grid;place-items:center;width:20px;height:20px;flex:0 0 20px;border-radius:50%;background:#d91e25}.ke-project-calc__fineprint{color:#8f8884!important;line-height:1.5}
.ke-final-result{margin:22px 0;padding:27px;border-radius:18px;background:#191717;color:#fff}.ke-final-result>small{display:block;color:#f08a8e;font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.ke-final-result>strong{display:flex;flex-wrap:wrap;align-items:baseline;gap:9px;margin:8px 0;font-size:clamp(31px,5vw,46px);letter-spacing:-.04em}.ke-final-result i{color:#8e8784;font-size:12px;font-style:normal;letter-spacing:0}.ke-final-result em{color:#d3cdca;font-size:12px;font-style:normal}.ke-calc-disclaimer{max-width:720px!important;margin:15px 0 0!important;color:#817976!important;font-size:11px;line-height:1.55!important}
.ke-calc--flash .ke-project-calc__top-price>strong,.ke-calc--flash .ke-project-calc__live-price,.ke-calc--flash .ke-final-result>strong{animation:ke-price-pop .24s ease-out}@keyframes ke-price-pop{0%{opacity:.55;transform:translateY(3px)}100%{opacity:1;transform:translateY(0)}}

/* Home quick calculator */
.ke-quick-calc{border:1px solid #ddd8d5;border-radius:22px;background:#fff;padding:24px;box-shadow:0 18px 45px rgba(25,23,23,.08)}.ke-quick-calc__head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ece8e6}.ke-quick-calc__head span{color:#d91e25;font-size:9px;font-weight:900;letter-spacing:.12em}.ke-quick-calc__head strong{font-size:15px}.ke-quick-row{margin:18px 0}.ke-quick-row>label{display:flex;justify-content:space-between;gap:15px;margin-bottom:9px;color:#6d6867;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.ke-quick-row>label strong{color:#191717;font-size:14px;letter-spacing:0;text-transform:none}.ke-quick-row>input{width:100%;accent-color:#d91e25}.ke-quick-segment{display:grid;grid-template-columns:1fr 1fr;gap:7px}.ke-quick-segment button{padding:11px 12px;border:1px solid #ddd8d5;border-radius:10px;background:#fff;cursor:pointer;font-weight:800}.ke-quick-segment button.active{border-color:#d91e25;background:#fff5f5;color:#b5161d}.ke-quick-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.ke-quick-levels button{position:relative;display:flex;min-height:73px;flex-direction:column;align-items:flex-start;justify-content:center;padding:10px;border:1px solid #ddd8d5;border-radius:11px;background:#fff;text-align:left;cursor:pointer}.ke-quick-levels button.active{border-color:#d91e25;background:#fff5f5;box-shadow:0 0 0 1px rgba(217,30,37,.08)}.ke-quick-levels span{position:absolute;top:-8px;left:7px;padding:2px 5px;border-radius:4px;background:#d91e25;color:#fff;font-size:7px;font-weight:900;text-transform:uppercase}.ke-quick-levels strong{font-size:12px}.ke-quick-levels small{color:#6d6867;font-size:9px}.ke-quick-result{margin:21px 0 15px;padding:18px;border-radius:14px;background:#191717;color:#fff}.ke-quick-result small{display:block;color:#bdb7b4;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.ke-quick-result strong{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;margin:4px 0;font-size:clamp(23px,3vw,31px);letter-spacing:-.035em}.ke-quick-result i{color:#88817e;font-size:10px;font-style:normal}.ke-quick-result em{display:block;color:#9e9794;font-size:9px;font-style:normal}.ke-quick-calc>.button{width:100%;text-align:center;justify-content:center}.ke-quick--flash .ke-quick-result strong{animation:ke-price-pop .24s ease-out}

/* Price calculator page */
.ke-secondary-calc-heading{margin:66px 0 24px;padding-top:42px;border-top:1px solid #ddd8d5}.ke-secondary-calc-heading>span{color:#d91e25;font-size:10px;font-weight:900;letter-spacing:.13em}.ke-secondary-calc-heading h2{margin:5px 0 7px;font-size:clamp(26px,3vw,36px);letter-spacing:-.03em}.ke-secondary-calc-heading p{margin:0;color:#6d6867}

/* Clean route card: no embedded Google map */
.map-card.ke-route-only{display:block!important;max-width:860px}.map-card.ke-route-only .map-card__content{min-height:auto;padding:38px 42px}.map-card.ke-route-only .map-card__content p{max-width:630px}

/* WhatsApp contact widget. */
.whatsapp-assist{display:none!important}.ke-wa-widget{position:fixed;right:24px;bottom:24px;z-index:230}.ke-wa-launcher{position:relative;display:grid;place-items:center;width:62px;height:62px;border:3px solid #fff;border-radius:50%;background:#239f40;color:#fff;cursor:pointer;box-shadow:0 18px 44px rgba(25,23,23,.28);animation:ke-wa-float 3.2s ease-in-out infinite}.ke-wa-launcher:before{content:"";position:absolute;inset:-8px;border:2px solid rgba(35,159,64,.28);border-radius:50%;animation:ke-wa-ring 3.2s ease-out infinite}.ke-wa-launcher:after{content:"";position:absolute;right:1px;top:1px;width:11px;height:11px;border:2px solid #fff;border-radius:50%;background:#d91e25}.ke-wa-launcher svg{width:28px;height:28px}.ke-wa-panel{position:absolute;right:0;bottom:76px;width:326px;border:1px solid rgba(25,23,23,.10);border-radius:20px;background:#fff;overflow:hidden;box-shadow:0 26px 70px rgba(25,23,23,.24);transform-origin:bottom right;animation:ke-wa-open .18s ease-out}.ke-wa-panel[hidden]{display:none}.ke-wa-panel:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,#239f40 0 33.33%,#fff 33.33% 66.66%,#d91e25 66.66%)}.ke-wa-panel__head{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:19px 17px 15px;background:#1e2925;color:#fff}.ke-wa-panel__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#239f40}.ke-wa-panel__head span:nth-child(2){display:flex;flex-direction:column}.ke-wa-panel__head strong{font-size:14px}.ke-wa-panel__head small{color:rgba(255,255,255,.6);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.1em}.ke-wa-close{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:50%;background:transparent;color:#fff;cursor:pointer;font-size:22px}.ke-wa-close:hover{background:rgba(255,255,255,.1)}.ke-wa-panel__body{padding:17px}.ke-wa-panel__body p{margin:0 0 13px;padding:12px 13px;border-radius:4px 12px 12px;background:#f4f2f1;font-size:13px;line-height:1.5}.ke-wa-panel__body>a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:49px;border-radius:11px;background:#239f40;color:#fff;font-weight:900}.ke-wa-panel__body>a:hover{background:#197d34}.ke-wa-panel__body small{display:block;margin-top:9px;text-align:center;color:#817976;font-size:9px}@keyframes ke-wa-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes ke-wa-ring{0%,45%{opacity:0;transform:scale(.88)}58%{opacity:.7}100%{opacity:0;transform:scale(1.27)}}@keyframes ke-wa-open{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}

@media(max-width:960px){.ke-project-calc__top{grid-template-columns:1fr}.ke-project-calc__top-price{text-align:left}.ke-project-calc__grid{grid-template-columns:1fr}.ke-project-calc__live{display:none}.ke-choice-grid--3{grid-template-columns:1fr}.ke-choice-grid--4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.ke-project-calc{border-radius:20px}.ke-project-calc__top,.ke-project-calc__progress-wrap,.ke-project-calc__question{padding-left:18px;padding-right:18px}.ke-project-calc__top{padding-top:27px}.ke-project-calc__top-price>strong{font-size:20px}.ke-project-calc__progress-wrap{padding-top:14px;padding-bottom:17px}.ke-project-calc__dots{display:none}.ke-project-calc__question{padding-top:27px;padding-bottom:27px}.ke-choice-grid--2,.ke-choice-grid--4,.ke-check-grid{grid-template-columns:1fr}.ke-check-grid__wide{grid-column:auto}.ke-project-calc__actions{flex-direction:column-reverse}.ke-project-calc__actions .button{width:100%;margin:0!important}.ke-final-result>strong{flex-direction:column;align-items:flex-start;gap:2px}.ke-quick-levels{grid-template-columns:1fr}.ke-quick-levels button{min-height:60px}.ke-wa-widget{display:none}.map-card.ke-route-only .map-card__content{padding:28px 22px}}
@media(prefers-reduced-motion:reduce){.ke-wa-launcher,.ke-wa-launcher:before,.ke-calc--flash .ke-project-calc__top-price>strong,.ke-calc--flash .ke-project-calc__live-price,.ke-calc--flash .ke-final-result>strong,.ke-quick--flash .ke-quick-result strong{animation:none!important}.ke-project-calc__progress i{transition:none}}

/* ===== Premium calculator suite v3 ===== */
.ke-project-calc-v3{position:relative;max-width:1190px;margin:0 auto 48px;border:1px solid #ded8d5;border-radius:28px;background:#fff;box-shadow:0 28px 80px rgba(24,22,22,.12);overflow:hidden}
.ke-project-calc-v3:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,#df2028 0 68%,#1b1919 68%)}
.ke-pc3__top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:34px;align-items:end;padding:38px 40px 30px;background:linear-gradient(135deg,#fff 0%,#fbf9f8 100%);border-bottom:1px solid #ebe7e5}
.ke-pc3__kicker{display:block;margin-bottom:8px;color:#d91e25;font-size:10px;font-weight:900;letter-spacing:.15em}.ke-pc3__top h2{margin:0;font-size:clamp(29px,3.2vw,42px);line-height:1.02;letter-spacing:-.045em}.ke-pc3__top p{max-width:760px;margin:11px 0 0;color:#6c6663;line-height:1.6}.ke-pc3__top-price{text-align:right;min-width:270px}.ke-pc3__top-price small{display:block;color:#7b7470;font-size:9px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.ke-pc3__top-price strong{display:flex;justify-content:flex-end;align-items:baseline;gap:8px;margin:5px 0 2px;font-size:24px;letter-spacing:-.035em;white-space:nowrap}.ke-pc3__top-price i{font-size:11px;font-style:normal;color:#8d8582}.ke-pc3__top-price em{display:block;color:#8d8582;font-size:10px;font-style:normal}
.ke-pc3__progress-wrap{padding:18px 40px 21px;background:#fff}.ke-pc3__progress-label{display:flex;justify-content:space-between;margin-bottom:9px;color:#6c6663;font-size:9px;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.ke-pc3__progress{height:6px;border-radius:999px;background:#e6e1de;overflow:hidden}.ke-pc3__progress i{display:block;width:14.2857%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#d91e25,#ef3139);transition:width .24s ease}.ke-pc3__dots{display:grid;grid-template-columns:repeat(7,1fr);margin-top:10px}.ke-pc3__dots span{justify-self:center;display:grid;place-items:center;width:23px;height:23px;border:1px solid #ddd7d4;border-radius:50%;background:#fff;color:#8f8884;font-size:9px;font-weight:900;transition:.18s}.ke-pc3__dots span:first-child{justify-self:start}.ke-pc3__dots span:last-child{justify-self:end}.ke-pc3__dots .is-active{border-color:#d91e25;background:#d91e25;color:#fff;transform:scale(1.08)}.ke-pc3__dots .is-done{border-color:#191717;background:#191717;color:#fff}
.ke-pc3__grid{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(320px,.72fr);border-top:1px solid #ece8e6}.ke-pc3__question{min-width:0;padding:40px}.ke-pc3__step-no{display:block;color:#d91e25;font-size:10px;font-weight:900;letter-spacing:.15em}.ke-pc3__question h3{margin:3px 0 8px;font-size:clamp(27px,3vw,38px);letter-spacing:-.04em;line-height:1.08}.ke-pc3__lead{max-width:760px;margin:0 0 26px;color:#6d6764;line-height:1.58}.ke-pc3__field-block{margin:0 0 23px}.ke-pc3__label{display:block;margin-bottom:9px;color:#4d4846;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.ke-pc3__choices{display:grid;gap:10px}.ke-pc3__choices--2{grid-template-columns:repeat(2,1fr)}.ke-pc3__choices--3{grid-template-columns:repeat(3,1fr)}.ke-pc3__choices--4{grid-template-columns:repeat(4,1fr)}.ke-pc3__choices button{position:relative;display:flex;min-height:88px;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;padding:16px 17px;border:1px solid #ddd7d4;border-radius:14px;background:#fff;color:#191717;text-align:left;cursor:pointer;transition:border-color .16s,box-shadow .16s,transform .16s,background .16s}.ke-pc3__choices button:hover{transform:translateY(-1px);border-color:#bbb2ae;box-shadow:0 8px 24px rgba(25,23,23,.06)}.ke-pc3__choices button.active{border-color:#d91e25;background:#fff7f7;box-shadow:0 0 0 1px rgba(217,30,37,.08),0 10px 28px rgba(217,30,37,.08)}.ke-pc3__choices button.active:after{content:"✓";position:absolute;right:12px;top:12px;display:grid;place-items:center;width:21px;height:21px;border-radius:50%;background:#d91e25;color:#fff;font-size:11px;font-weight:900}.ke-pc3__choices b{font-size:14px}.ke-pc3__choices small{color:#77706d;font-size:10px;line-height:1.35;padding-right:14px}.ke-pc3__tag{display:inline-flex;margin-bottom:4px;padding:3px 6px;border-radius:5px;background:#efedeb;color:#5d5754;font-size:7px;font-weight:900;letter-spacing:.09em}.ke-pc3__tag--red{background:#d91e25;color:#fff}
.ke-pc3__range-card{margin:18px 0 24px;padding:20px 22px;border:1px solid #e0dad7;border-radius:16px;background:#f8f6f5}.ke-pc3__range-card>div:first-child{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:14px}.ke-pc3__range-card label{color:#5b5552;font-size:11px;font-weight:800}.ke-pc3__range-card strong{font-size:24px;letter-spacing:-.03em}.ke-pc3__range-card input[type=range]{width:100%;accent-color:#d91e25}.ke-pc3__range-minmax{display:flex;justify-content:space-between;margin-top:7px;color:#8f8884;font-size:9px}
.ke-pc3__compact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin:18px 0 22px}.ke-pc3__compact-grid label,.ke-pc3__select-wide{display:flex;flex-direction:column;gap:7px;color:#5c5653;font-size:10px;font-weight:800}.ke-pc3__compact-grid select,.ke-pc3__select-wide select,.ke-pc3__request select{width:100%;min-height:45px;border:1px solid #dcd6d3;border-radius:10px;background:#fff;padding:0 12px;color:#191717;font:inherit}.ke-pc3__select-wide{margin:18px 0 0}.ke-pc3__check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ke-pc3__check{display:flex;align-items:flex-start;gap:11px;padding:14px;border:1px solid #ddd7d4;border-radius:12px;background:#fff;cursor:pointer}.ke-pc3__check input{margin-top:2px;accent-color:#d91e25}.ke-pc3__check span{display:flex;flex-direction:column;gap:2px}.ke-pc3__check b{font-size:12px}.ke-pc3__check small{color:#7b7470;font-size:9px;line-height:1.4}
.ke-pc3__rooms{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.ke-pc3__rooms label{display:flex;flex-direction:column;gap:7px;padding:12px;border:1px solid #dfd9d6;border-radius:11px;color:#5d5754;font-size:9px;font-weight:800}.ke-pc3__rooms input{width:100%;min-height:38px;border:1px solid #ddd7d4;border-radius:8px;padding:0 9px;font-weight:800}.ke-pc3__conditional{margin:16px 0 23px;padding:18px;border:1px solid #e2dcda;border-radius:15px;background:#faf8f7}.ke-pc3__conditional[hidden]{display:none!important}
.ke-pc3__actions{display:flex;justify-content:space-between;gap:12px;margin-top:32px;padding-top:23px;border-top:1px solid #ece8e6}.ke-pc3__actions [data-action=next]{margin-left:auto}.ke-pc3__step-error{margin:20px 0 0;padding:12px 14px;border:1px solid #f2b3b6;border-radius:10px;background:#fff4f4;color:#a51219;font-size:12px;font-weight:700}.is-invalid{outline:2px solid rgba(217,30,37,.26);outline-offset:4px;border-radius:12px}
.ke-pc3__live{position:relative;padding:38px 30px;background:#1a1818;color:#fff}.ke-pc3__live:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 100% 0%,rgba(217,30,37,.27),transparent 38%);pointer-events:none}.ke-pc3__live-head>*,.ke-pc3__live-inner>*,.ke-pc3__live>*{position:relative}.ke-pc3__live-label{display:inline-flex;margin-bottom:26px;padding:7px 9px;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#ff8f94;font-size:8px;font-weight:900;letter-spacing:.14em}.ke-pc3__live-head>small,.ke-pc3__live-inner>small,.ke-pc3__live>small{display:block;color:#c3bcba;font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.ke-pc3__live-price{display:flex;flex-direction:column;margin:8px 0 4px;font-size:clamp(31px,3.2vw,43px);line-height:1;letter-spacing:-.04em}.ke-pc3__live-price i{margin:5px 0;color:#88817e;font-size:11px;font-style:normal;letter-spacing:0}.ke-pc3__live-head>p,.ke-pc3__live-inner>p,.ke-pc3__live>p{margin:10px 0 23px;color:#d7d1ce;font-size:11px}.ke-pc3__breakdown{padding:12px 0;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12)}.ke-pc3__breakdown>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;color:#cfc8c5;font-size:10px}.ke-pc3__breakdown strong{color:#fff}.ke-pc3__live-note{display:flex;gap:10px;align-items:flex-start;margin:19px 0;color:#f2efed;font-size:11px;line-height:1.5}.ke-pc3__live-note b{display:grid;place-items:center;flex:0 0 20px;width:20px;height:20px;border-radius:50%;background:#d91e25}.ke-pc3__fineprint{color:#928b88!important;line-height:1.55}
.ke-pc3__result-hero{margin:18px 0 20px;padding:22px 24px;border-radius:17px;background:#191717;color:#fff}.ke-pc3__result-hero small{display:block;color:#c4bdb9;font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.ke-pc3__result-hero strong{display:flex;flex-wrap:wrap;align-items:baseline;gap:11px;margin:5px 0;font-size:clamp(28px,4vw,42px);letter-spacing:-.04em}.ke-pc3__result-hero i{color:#8b8481;font-size:12px;font-style:normal}.ke-pc3__result-hero em{display:block;color:#aaa3a0;font-size:10px;font-style:normal}.ke-pc3__result-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.ke-pc3__result-columns>section{padding:18px;border:1px solid #e1dbd8;border-radius:14px;background:#fff}.ke-pc3__result-columns h4{margin:0 0 12px;font-size:13px}.ke-pc3__result-list>div{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px solid #efebe9;font-size:10px}.ke-pc3__result-list>div:last-child{border-bottom:0}.ke-pc3__result-list strong{white-space:nowrap}.ke-pc3__open-list,.ke-pc3__included-list{margin:0;padding:0;list-style:none}.ke-pc3__open-list li,.ke-pc3__included-list li{position:relative;padding:8px 0 8px 17px;border-bottom:1px solid #efebe9;font-size:10px;line-height:1.4}.ke-pc3__open-list li:before{content:"?";position:absolute;left:0;top:8px;display:grid;place-items:center;width:12px;height:12px;border-radius:50%;background:#d8cda0;color:#50452b;font-size:8px;font-weight:900}.ke-pc3__included-list li:before{content:"✓";position:absolute;left:0;top:8px;color:#15913c;font-weight:900}.ke-pc3__pdf-card{background:linear-gradient(145deg,#fff,#f7f4f3)!important}.ke-pc3__pdf-card>span{color:#d91e25;font-size:8px;font-weight:900;letter-spacing:.12em}.ke-pc3__pdf-card p{color:#6f6966;font-size:10px;line-height:1.5}
.ke-pc3__request{margin-top:18px;padding:22px;border:1px solid #ded8d5;border-radius:17px;background:#f8f6f5}.ke-pc3__request-head{margin-bottom:18px}.ke-pc3__request-head>span{color:#d91e25;font-size:8px;font-weight:900;letter-spacing:.13em}.ke-pc3__request-head h4{margin:4px 0 5px;font-size:18px}.ke-pc3__request-head p{margin:0;color:#6d6764;font-size:10px;line-height:1.5}.ke-pc3__request-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.ke-pc3__request-grid label,.ke-pc3__message,.ke-pc3__attachment{display:flex;flex-direction:column;gap:6px;color:#5e5855;font-size:9px;font-weight:800}.ke-pc3__request input:not([type=checkbox]):not([type=file]),.ke-pc3__request textarea{width:100%;border:1px solid #dcd6d3;border-radius:9px;background:#fff;padding:11px 12px;font:inherit;color:#191717}.ke-pc3__message,.ke-pc3__attachment{margin-top:11px}.ke-pc3__request textarea{resize:vertical}.ke-pc3__attachment input{padding:10px;border:1px dashed #cfc6c2;border-radius:9px;background:#fff}.ke-pc3__consent{display:flex;align-items:flex-start;gap:9px;margin:13px 0;color:#69625f;font-size:9px;line-height:1.45}.ke-pc3__consent input{margin-top:2px;accent-color:#d91e25}.ke-pc3__request-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.ke-pc3__request-actions [data-role=form-status]{font-size:10px;font-weight:700}.ke-pc3__request-actions .is-success{color:#16833a}.ke-pc3__request-actions .is-error{color:#b5171e}.ke-pc3__honeypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important}
.ke-pc3--flash .ke-pc3__top-price strong,.ke-pc3--flash .ke-pc3__live-price{animation:ke-price-pop .2s ease-out}

.ke-quick-v3{border:1px solid #ddd7d4;border-radius:22px;background:#fff;overflow:hidden;box-shadow:0 18px 50px rgba(25,23,23,.08)}.ke-quick-v3__head{padding:21px 22px 16px;border-bottom:1px solid #eee9e7}.ke-quick-v3__head span{display:block;color:#d91e25;font-size:8px;font-weight:900;letter-spacing:.13em}.ke-quick-v3__head strong{display:block;margin-top:4px;font-size:17px}.ke-quick-v3__body{padding:18px 22px 22px}.ke-quick-v3__label{display:block;margin:14px 0 7px;color:#6a6461;font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase}.ke-quick-v3__segment{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}.ke-quick-v3__segment--4{grid-template-columns:repeat(4,1fr)}.ke-quick-v3__segment--3{grid-template-columns:repeat(3,1fr)}.ke-quick-v3__segment button{min-height:42px;border:1px solid #ddd7d4;border-radius:9px;background:#fff;font-size:10px;font-weight:800;cursor:pointer}.ke-quick-v3__segment button.active{border-color:#d91e25;background:#fff5f5;color:#b9161d}.ke-quick-v3__range{margin-top:14px}.ke-quick-v3__range label{display:flex;justify-content:space-between;color:#69625f;font-size:9px;font-weight:800}.ke-quick-v3__range strong{color:#191717;font-size:13px}.ke-quick-v3__range input{width:100%;margin-top:8px;accent-color:#d91e25}.ke-quick-v3__result{margin:18px 0 13px;padding:17px 18px;border-radius:13px;background:#191717;color:#fff}.ke-quick-v3__result small{display:block;color:#bbb4b1;font-size:8px;font-weight:900;letter-spacing:.1em}.ke-quick-v3__result strong{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;margin:4px 0;font-size:26px;letter-spacing:-.035em}.ke-quick-v3__result i{color:#8c8582;font-size:10px;font-style:normal}.ke-quick-v3__result em{color:#a59e9b;font-size:8px;font-style:normal}.ke-quick-v3>.ke-quick-v3__body>.button{width:100%;justify-content:center}

.ke-special-v3{margin-top:20px;border:1px solid #ddd8d5;border-radius:24px;background:#fff;box-shadow:0 20px 54px rgba(25,23,23,.08);overflow:hidden}.ke-special-v3__head{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:end;padding:28px 30px;border-bottom:1px solid #ebe7e5;background:linear-gradient(135deg,#fff,#faf8f7)}.ke-special-v3__head span{display:block;color:#d91e25;font-size:8px;font-weight:900;letter-spacing:.13em}.ke-special-v3__head h2{margin:4px 0 7px;font-size:clamp(24px,3vw,34px);letter-spacing:-.035em}.ke-special-v3__head p{max-width:700px;margin:0;color:#6e6764;font-size:11px;line-height:1.55}.ke-special-v3__tabs{display:flex;gap:6px;padding:5px;border-radius:12px;background:#f0ecea}.ke-special-v3__tabs button{border:0;border-radius:9px;background:transparent;padding:10px 13px;font-size:10px;font-weight:900;cursor:pointer}.ke-special-v3__tabs button.active{background:#fff;color:#d91e25;box-shadow:0 3px 12px rgba(25,23,23,.08)}.ke-special-v3__grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr)}.ke-special-v3__controls{padding:28px 30px}.ke-special-v3__controls>div>label:not(.ke-special-v3__switch){display:flex;flex-direction:column;gap:7px;margin:14px 0;color:#5f5956;font-size:10px;font-weight:800}.ke-special-v3__controls select{min-height:44px;border:1px solid #ddd7d4;border-radius:9px;background:#fff;padding:0 11px}.ke-special-v3__range{margin:0 0 20px;padding:16px;border:1px solid #e0dad7;border-radius:13px;background:#faf8f7}.ke-special-v3__range label{display:flex;justify-content:space-between;gap:14px;color:#625c59;font-size:10px;font-weight:800}.ke-special-v3__range strong{color:#191717;font-size:15px}.ke-special-v3__range input{width:100%;margin-top:10px;accent-color:#d91e25}.ke-special-v3__switch{display:flex;align-items:flex-start;gap:11px;margin:10px 0;padding:13px;border:1px solid #ddd7d4;border-radius:11px}.ke-special-v3__switch input{margin-top:2px;accent-color:#d91e25}.ke-special-v3__switch span{display:flex;flex-direction:column}.ke-special-v3__switch b{font-size:11px}.ke-special-v3__switch small{color:#77706d;font-size:9px}.ke-special-v3__choice{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px}.ke-special-v3__choice button{min-height:43px;border:1px solid #ddd7d4;border-radius:9px;background:#fff;font-weight:800;cursor:pointer}.ke-special-v3__choice button.active{border-color:#d91e25;background:#fff5f5;color:#b4161d}.ke-special-v3__result{padding:30px;background:#191717;color:#fff}.ke-special-v3__result>span{color:#ff8e94;font-size:8px;font-weight:900;letter-spacing:.13em}.ke-special-v3__result h3{display:flex;flex-direction:column;margin:10px 0 18px;font-size:34px;letter-spacing:-.04em}.ke-special-v3__result h3 i{margin:4px 0;color:#85807d;font-size:10px;font-style:normal;letter-spacing:0}.ke-special-v3__result [data-breakdown]{padding:12px 0;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12)}.ke-special-v3__result [data-breakdown]>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;color:#d5cecb;font-size:10px}.ke-special-v3__result [data-breakdown] strong{color:#fff}.ke-special-v3__result>p{color:#a8a19e;font-size:9px;line-height:1.5}.ke-special-v3__actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}.ke-special-v3__actions .button{justify-content:center;text-align:center}

/* WhatsApp: launcher disappears completely while panel is open */
.ke-wa-widget.is-open .ke-wa-launcher{display:none}.ke-wa-widget.is-open .ke-wa-panel{bottom:0}.ke-wa-widget.is-open{width:326px;height:auto}.ke-wa-panel__body p{border-radius:10px 14px 14px 3px}.ke-wa-panel{border-radius:17px}.ke-wa-panel__head{padding-top:20px}.ke-wa-launcher{transition:transform .18s ease,opacity .18s ease}

@media(max-width:980px){.ke-pc3__top{grid-template-columns:1fr}.ke-pc3__top-price{text-align:left;min-width:0}.ke-pc3__top-price strong{justify-content:flex-start}.ke-pc3__grid{grid-template-columns:1fr}.ke-pc3__live{display:none}.ke-pc3__choices--4{grid-template-columns:repeat(2,1fr)}.ke-pc3__rooms{grid-template-columns:repeat(3,1fr)}.ke-special-v3__head{grid-template-columns:1fr}.ke-special-v3__tabs{width:max-content}.ke-special-v3__grid{grid-template-columns:1fr}.ke-special-v3__result h3{font-size:30px}}
@media(max-width:680px){.ke-project-calc-v3{border-radius:19px}.ke-pc3__top,.ke-pc3__progress-wrap,.ke-pc3__question{padding-left:18px;padding-right:18px}.ke-pc3__top{padding-top:30px}.ke-pc3__top-price strong{font-size:20px}.ke-pc3__dots{display:none}.ke-pc3__choices--2,.ke-pc3__choices--3,.ke-pc3__choices--4,.ke-pc3__compact-grid,.ke-pc3__check-grid,.ke-pc3__result-columns,.ke-pc3__request-grid{grid-template-columns:1fr}.ke-pc3__rooms{grid-template-columns:repeat(2,1fr)}.ke-pc3__actions{flex-direction:column-reverse}.ke-pc3__actions .button{width:100%;margin:0!important}.ke-pc3__result-hero strong{flex-direction:column;align-items:flex-start;gap:2px}.ke-pc3__request-actions .button{width:100%}.ke-quick-v3__segment--4{grid-template-columns:repeat(2,1fr)}.ke-quick-v3__segment--3{grid-template-columns:1fr}.ke-special-v3{border-radius:18px}.ke-special-v3__head,.ke-special-v3__controls,.ke-special-v3__result{padding-left:18px;padding-right:18px}.ke-special-v3__tabs{display:grid;grid-template-columns:1fr 1fr 1fr;width:100%}.ke-special-v3__tabs button{padding:9px 6px}.ke-special-v3__actions{grid-template-columns:1fr}.ke-wa-widget{display:block;right:14px;bottom:82px}.ke-wa-widget.is-open{width:min(326px,calc(100vw - 28px))}.ke-wa-panel{width:min(326px,calc(100vw - 28px))}.ke-wa-launcher{width:56px;height:56px}}
@media(prefers-reduced-motion:reduce){.ke-pc3__progress i,.ke-pc3__choices button,.ke-pc3--flash .ke-pc3__top-price strong,.ke-pc3--flash .ke-pc3__live-price{transition:none!important;animation:none!important}}

/* Premium request modal for specialist calculators */
html.ke-modal-open{overflow:hidden}
.ke-special-v3__modal[hidden]{display:none!important}.ke-special-v3__modal{position:fixed;inset:0;z-index:2147482500;display:grid;place-items:center;padding:24px}.ke-special-v3__backdrop{position:absolute;inset:0;border:0;background:rgba(18,16,16,.72);backdrop-filter:blur(7px);cursor:default}.ke-special-v3__dialog{position:relative;z-index:1;width:min(760px,calc(100vw - 32px));max-height:min(860px,calc(100vh - 32px));overflow:auto;border:1px solid rgba(255,255,255,.32);border-radius:24px;background:#fff;padding:34px;box-shadow:0 32px 90px rgba(0,0,0,.34)}.ke-special-v3__dialog>span{display:block;color:#d91e25;font-size:9px;font-weight:900;letter-spacing:.14em}.ke-special-v3__dialog h3{margin:6px 44px 8px 0;font-size:clamp(26px,3.2vw,38px);line-height:1.08;letter-spacing:-.04em}.ke-special-v3__dialog>p{margin:0 0 24px;color:#6e6764;font-size:13px;line-height:1.6}.ke-special-v3__close{position:absolute;top:18px;right:18px;display:grid;place-items:center;width:38px;height:38px;border:1px solid #e1dcda;border-radius:50%;background:#fff;color:#191717;font-size:24px;line-height:1;cursor:pointer;transition:.18s ease}.ke-special-v3__close:hover{border-color:#d91e25;color:#d91e25;transform:rotate(3deg)}.ke-special-v3__form{display:grid;gap:16px}.ke-special-v3__form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.ke-special-v3__form label:not(.ke-special-v3__consent){display:flex;flex-direction:column;gap:7px;color:#47413f;font-size:10px;font-weight:850;letter-spacing:.01em}.ke-special-v3__form input:not([type="checkbox"]):not([type="file"]),.ke-special-v3__form select,.ke-special-v3__form textarea{width:100%;border:1px solid #dcd6d3;border-radius:10px;background:#fbfaf9;padding:11px 12px;color:#191717;font:inherit;outline:none;transition:.18s ease}.ke-special-v3__form input:not([type="checkbox"]):focus,.ke-special-v3__form select:focus,.ke-special-v3__form textarea:focus{border-color:#d91e25;box-shadow:0 0 0 3px rgba(217,30,37,.09);background:#fff}.ke-special-v3__upload{padding:13px 15px;border:1px dashed #d7cfcb;border-radius:12px;background:#faf8f7}.ke-special-v3__upload input{font-size:10px}.ke-special-v3__upload small{color:#817976;font-size:9px;font-weight:600}.ke-special-v3__consent{display:flex;align-items:flex-start;gap:10px;color:#655f5c;font-size:10px;line-height:1.5}.ke-special-v3__consent input{margin-top:2px;accent-color:#d91e25}.ke-special-v3__consent a{color:#b4161d;text-decoration:underline}.ke-special-v3__submit{display:flex;align-items:center;gap:15px;padding-top:3px}.ke-special-v3__submit [data-form-status]{font-size:10px;font-weight:750}.ke-special-v3__submit [data-form-status].is-success{color:#187b39}.ke-special-v3__submit [data-form-status].is-error{color:#b4161d}.ke-hp-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
@media(max-width:680px){.ke-special-v3__modal{padding:10px}.ke-special-v3__dialog{width:100%;max-height:calc(100vh - 20px);border-radius:18px;padding:25px 18px}.ke-special-v3__form-grid{grid-template-columns:1fr}.ke-special-v3__submit{align-items:stretch;flex-direction:column}.ke-special-v3__submit .button{width:100%}}

/* ===== September 2026 refinement: readability, totals and FAQ assistant ===== */
/* Calculator typography: deliberately larger than the previous compact demo build. */
.ke-project-calc-v3{font-size:15px}
.ke-pc3__kicker{font-size:11px}.ke-pc3__top p{font-size:15px}.ke-pc3__top-price small{font-size:10.5px}.ke-pc3__top-price em{font-size:11.5px}
.ke-pc3__progress-label{font-size:10.5px}.ke-pc3__dots span{font-size:10px}.ke-pc3__step-no{font-size:11px}.ke-pc3__lead{font-size:15px}.ke-pc3__label{font-size:11.5px}
.ke-pc3__choices b{font-size:15px}.ke-pc3__choices small{font-size:11.5px}.ke-pc3__tag{font-size:8.5px}.ke-pc3__range-card label{font-size:12.5px}.ke-pc3__range-minmax{font-size:10.5px}
.ke-pc3__compact-grid label,.ke-pc3__select-wide{font-size:11.5px}.ke-pc3__check b{font-size:13px}.ke-pc3__check small{font-size:10.5px}.ke-pc3__rooms label{font-size:10.5px}
.ke-pc3__live-label{font-size:9.5px}.ke-pc3__live-head>small,.ke-pc3__live-inner>small,.ke-pc3__live>small{font-size:10.5px}.ke-pc3__live-head>p,.ke-pc3__live-inner>p,.ke-pc3__live>p{font-size:12.5px}.ke-pc3__breakdown>div{font-size:11.5px}.ke-pc3__live-note{font-size:12px}
.ke-pc3__result-hero small{font-size:10.5px}.ke-pc3__result-hero em{font-size:11.5px}.ke-pc3__result-columns h4{font-size:15px}.ke-pc3__result-list>div{font-size:11.5px}.ke-pc3__open-list li,.ke-pc3__included-list li{font-size:11.5px}.ke-pc3__pdf-card>span{font-size:9.5px}.ke-pc3__pdf-card p{font-size:11.5px}
.ke-pc3__request-head>span{font-size:9.5px}.ke-pc3__request-head h4{font-size:20px}.ke-pc3__request-head p{font-size:12px}.ke-pc3__request-grid label,.ke-pc3__message,.ke-pc3__attachment{font-size:11px}.ke-pc3__consent{font-size:10.5px}.ke-pc3__request-actions [data-role=form-status]{font-size:11.5px}
.ke-pc3__breakdown-total,.ke-pc3__total-row{margin-top:5px!important;padding-top:11px!important;border-top:1px solid rgba(217,30,37,.28)!important;font-weight:900}.ke-pc3__total-row{color:#191717}.ke-pc3__total-row strong{color:#d91e25!important}

.ke-special-v3{font-size:15px}.ke-special-v3__head span{font-size:9.5px}.ke-special-v3__head p{font-size:13.5px}.ke-special-v3__tabs button{font-size:11.5px}.ke-special-v3__controls>div>label:not(.ke-special-v3__switch){font-size:11.5px}.ke-special-v3__range label{font-size:11.5px}.ke-special-v3__range strong{font-size:17px}.ke-special-v3__switch b{font-size:13px}.ke-special-v3__switch small{font-size:10.5px}.ke-special-v3__choice button{font-size:12px}.ke-special-v3__result>span{font-size:9.5px}.ke-special-v3__result h3 i{font-size:11.5px}.ke-special-v3__result [data-breakdown]>div{font-size:11.5px}.ke-special-v3__result>p{font-size:10.5px}.ke-special-v3__total-row{margin-top:6px;padding-top:12px!important;border-top:1px solid rgba(255,255,255,.18);font-weight:900}.ke-special-v3__dialog>span{font-size:10px}.ke-special-v3__form label:not(.ke-special-v3__consent){font-size:11.5px}.ke-special-v3__upload small{font-size:10px}.ke-special-v3__consent{font-size:11px}.ke-special-v3__submit [data-form-status]{font-size:11.5px}

/* FAQ: practical, non-fake "digital assistant" that searches the real FAQ content. */
.ke-faq-premium{display:grid;grid-template-columns:minmax(270px,.72fr) minmax(0,1.55fr);gap:30px;align-items:start}
.ke-faq-assistant{position:sticky;top:118px;overflow:hidden;border:1px solid #ddd8d5;border-radius:24px;background:#1b1919;color:#fff;box-shadow:0 24px 60px rgba(25,23,23,.14)}
.ke-faq-assistant__visual{position:relative;height:245px;overflow:hidden;background:#2a2726}.ke-faq-assistant__visual img{width:100%;height:100%;object-fit:cover;object-position:center 25%;filter:saturate(.92) contrast(1.03)}.ke-faq-assistant__visual:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(27,25,25,.96) 100%)}
.ke-faq-assistant__badge{position:absolute;left:20px;bottom:18px;z-index:1;display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(27,25,25,.78);backdrop-filter:blur(10px);font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.ke-faq-assistant__badge:before{content:"";width:8px;height:8px;border-radius:50%;background:#22a447;box-shadow:0 0 0 4px rgba(34,164,71,.16)}
.ke-faq-assistant__body{padding:24px}.ke-faq-assistant__body>span{display:block;color:#ff8f94;font-size:10px;font-weight:900;letter-spacing:.14em}.ke-faq-assistant__body h2{margin:7px 0 9px;color:#fff;font-size:28px;line-height:1.05;letter-spacing:-.04em}.ke-faq-assistant__body p{margin:0 0 18px;color:#d2ccca;font-size:13px;line-height:1.6}
.ke-faq-search{position:relative}.ke-faq-search input{width:100%;min-height:50px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:#fff;color:#191717;padding:0 44px 0 14px;font-size:14px;outline:none}.ke-faq-search input:focus{border-color:#ef3139;box-shadow:0 0 0 3px rgba(239,49,57,.18)}.ke-faq-search svg{position:absolute;right:14px;top:50%;width:20px;height:20px;transform:translateY(-50%);color:#756e6b}
.ke-faq-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.ke-faq-chips button{border:1px solid rgba(255,255,255,.16);border-radius:999px;background:transparent;color:#fff;padding:7px 10px;font-size:10.5px;font-weight:800;cursor:pointer}.ke-faq-chips button:hover{border-color:#ef3139;color:#ff9aa0}.ke-faq-assistant__cta{display:flex;justify-content:center;margin-top:17px!important;width:100%}
.ke-faq-content{min-width:0}.ke-faq-content__intro{margin-bottom:18px}.ke-faq-content__intro>span{color:#d91e25;font-size:10px;font-weight:900;letter-spacing:.13em}.ke-faq-content__intro h2{margin:6px 0 8px;font-size:clamp(28px,3vw,38px);letter-spacing:-.04em}.ke-faq-content__intro p{margin:0;color:#6d6764;font-size:14px;line-height:1.6}.ke-faq-empty{display:none;margin:18px 0;padding:20px;border:1px dashed #d7cfcb;border-radius:14px;background:#fff;color:#6d6764;font-size:13px}.ke-faq-empty.is-visible{display:block}
.ke-faq-premium .faq-accordion{border-radius:20px;overflow:hidden;box-shadow:0 18px 50px rgba(25,23,23,.07)}.ke-faq-premium .faq-accordion__question{font-size:15px}.ke-faq-premium .faq-accordion__panel{font-size:14px;line-height:1.65}
@media(max-width:900px){.ke-faq-premium{grid-template-columns:1fr}.ke-faq-assistant{position:relative;top:auto}.ke-faq-assistant__visual{height:220px}}
@media(max-width:680px){.ke-faq-assistant__body{padding:20px}.ke-faq-assistant__body h2{font-size:25px}.ke-faq-premium .faq-accordion__question{font-size:14px}.ke-faq-premium .faq-accordion__panel{font-size:13px}}

/* Final calculator readability pass */
.ke-project-calc-v3{font-size:16px}
.ke-pc3__top p,.ke-pc3__lead{font-size:16px}
.ke-pc3__choices b{font-size:16px}.ke-pc3__choices small{font-size:12.5px}.ke-pc3__label,.ke-pc3__compact-grid label,.ke-pc3__select-wide{font-size:12.5px}
.ke-pc3__check b{font-size:14px}.ke-pc3__check small,.ke-pc3__rooms label{font-size:11.5px}.ke-pc3__range-card label{font-size:13px}
.ke-pc3__live-head>p,.ke-pc3__live-inner>p,.ke-pc3__live>p,.ke-pc3__live-note{font-size:13px}.ke-pc3__breakdown>div{font-size:12.5px}.ke-pc3__result-list>div,.ke-pc3__open-list li,.ke-pc3__included-list li{font-size:12.5px;line-height:1.55}
.ke-pc3__pdf-card p,.ke-pc3__request-head p{font-size:12.5px}.ke-pc3__request-grid label,.ke-pc3__message,.ke-pc3__attachment{font-size:12px}.ke-pc3__consent{font-size:11.5px}
.ke-special-v3{font-size:16px}.ke-special-v3__head p{font-size:14.5px}.ke-special-v3__tabs button,.ke-special-v3__controls>div>label:not(.ke-special-v3__switch),.ke-special-v3__range label{font-size:12.5px}
.ke-special-v3__switch b{font-size:14px}.ke-special-v3__switch small{font-size:11.5px}.ke-special-v3__choice button{font-size:13px}.ke-special-v3__result [data-breakdown]>div{font-size:12.5px}.ke-special-v3__result>p{font-size:11.5px}
/* Homepage calculator uses the same readable typography scale. */
.ke-quick-v3__head span{font-size:10px}.ke-quick-v3__head strong{font-size:19px}.ke-quick-v3__label{font-size:11px}.ke-quick-v3__segment button{font-size:12px}.ke-quick-v3__range label{font-size:11px}.ke-quick-v3__range strong{font-size:15px}.ke-quick-v3__result small{font-size:10px}.ke-quick-v3__result i{font-size:11px}.ke-quick-v3__result em{font-size:10px;line-height:1.45}

/* ===== Premium v7 final refinements ===== */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* More compact service hero: keeps the technical content above the fold. */
body.ke-service-detail .page-hero{padding:64px 0 60px}
body.ke-service-detail .page-hero p{margin-top:18px}
body.ke-service-detail .page-hero__inner>span{margin-top:22px}

/* §14a EnWG explainer */
.ke-14a-card{display:grid;grid-template-columns:48px 1fr;gap:18px;margin-top:34px;padding:24px;border:1px solid #e1d8d5;border-radius:20px;background:linear-gradient(145deg,#fff 0%,#faf6f5 100%);box-shadow:0 16px 38px rgba(25,23,23,.07)}
.ke-14a-card__icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#191717;color:#fff;font-size:24px;font-weight:900;box-shadow:inset 0 -3px 0 rgba(217,30,37,.75)}
.ke-14a-card span{display:block;color:#d91e25;font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.ke-14a-card h3{margin:6px 0 10px;font-size:22px;line-height:1.15;letter-spacing:-.03em}
.ke-14a-card p{margin:0 0 10px;color:#5f5956;font-size:13.5px;line-height:1.65}
.ke-14a-card a{display:inline-flex;align-items:center;gap:7px;margin-top:4px;color:#b4161d;font-size:11.5px;font-weight:900}

/* WhatsApp: real message composer; launcher disappears completely while open. */
.ke-wa-panel__body{padding:17px 17px 18px}
.ke-wa-panel__body p{margin-bottom:12px}
.ke-wa-compose{margin:0}
.ke-wa-compose__field{position:relative;display:block}
.ke-wa-compose textarea{display:block;width:100%;min-height:86px;resize:none;border:1px solid #d8d2cf;border-radius:14px;background:#fff;padding:13px 48px 13px 14px;color:#191717;font:inherit;font-size:13px;line-height:1.45;outline:none;box-shadow:inset 0 1px 0 rgba(25,23,23,.02);transition:border-color .18s,box-shadow .18s,background .18s}
.ke-wa-compose textarea::placeholder{color:#9a918d}
.ke-wa-compose textarea:focus{border-color:#239f40;box-shadow:0 0 0 3px rgba(35,159,64,.12)}
.ke-wa-compose textarea.is-empty{border-color:#d91e25;background:#fff7f7;animation:ke-wa-shake .28s ease}
.ke-wa-compose__field button{position:absolute;right:9px;bottom:9px;display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:10px;background:#239f40;color:#fff;cursor:pointer;box-shadow:0 7px 18px rgba(35,159,64,.24);transition:transform .15s,background .15s}
.ke-wa-compose__field button:hover{background:#197d34;transform:translateY(-1px)}
.ke-wa-compose__field button svg{width:18px;height:18px}
.ke-wa-compose small{display:block;margin-top:7px;text-align:left;color:#817976;font-size:9px;line-height:1.3}
@keyframes ke-wa-shake{0%,100%{transform:translateX(0)}35%{transform:translateX(-3px)}70%{transform:translateX(3px)}}

/* Scroll-to-top button on every page */
.ke-backtop{position:fixed;left:24px;bottom:24px;z-index:210;display:grid;place-items:center;width:46px;height:46px;border:1px solid rgba(25,23,23,.13);border-radius:50%;background:rgba(255,255,255,.94);color:#191717;cursor:pointer;box-shadow:0 14px 34px rgba(25,23,23,.16);backdrop-filter:blur(10px);opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .2s,visibility .2s,transform .2s,background .2s,color .2s}
.ke-backtop svg{width:20px;height:20px}
.ke-backtop:hover{background:#191717;color:#fff;transform:translateY(-2px)}
.ke-backtop.is-visible{opacity:1;visibility:visible;transform:none}

/* Reviews: use the three supplied genuine Google voices without inventing individual links. */
.ke-reviews-live .review-card{animation:ke-review-in .45s ease both}
.ke-reviews-live .review-card:nth-child(2){animation-delay:.08s}.ke-reviews-live .review-card:nth-child(3){animation-delay:.16s}
.ke-reviews-live .reviews-score>span:first-child{font-size:24px;letter-spacing:-.03em}
.review-card__source{display:inline-flex!important;align-items:center;gap:8px;color:#817976!important;font-size:10.5px!important;font-weight:800!important;pointer-events:none}
.review-card__source span{color:#f0a400;letter-spacing:.06em}
@keyframes ke-review-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* FAQ: the active answer is visually clearer when only one is open. */
.ke-faq-premium .faq-accordion__item.is-open{background:#fff}
.ke-faq-premium .faq-accordion__item.is-open .faq-accordion__plus{color:#d91e25;transform:rotate(45deg)}

@media(max-width:900px){body.ke-service-detail .page-hero{padding:52px 0 50px}.ke-14a-card{grid-template-columns:1fr}.ke-14a-card__icon{width:44px;height:44px}.ke-backtop{bottom:84px}}
@media(max-width:680px){.ke-backtop{left:14px;bottom:84px;width:43px;height:43px}.ke-14a-card{padding:20px;border-radius:17px}.ke-14a-card h3{font-size:20px}.ke-wa-compose textarea{min-height:92px}}
@media(prefers-reduced-motion:reduce){.ke-reviews-live .review-card,.ke-wa-launcher,.ke-wa-launcher:before{animation:none!important}.ke-backtop{transition:none}}

/* Selected real-project showcase: local image, no social-media embed */
.ke-project-feature{margin-top:52px;display:grid;grid-template-columns:minmax(0,1.12fr) minmax(330px,.88fr);overflow:hidden;border-radius:30px;background:#211f1f;color:#fff;box-shadow:0 26px 70px rgba(25,23,23,.16)}
.ke-project-feature__media{position:relative;min-height:470px;overflow:hidden;background:#181717}
.ke-project-feature__media:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 54%,rgba(25,23,23,.42))}
.ke-project-feature__media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:transform .55s ease}
.ke-project-feature:hover .ke-project-feature__media img{transform:scale(1.025)}
.ke-project-feature__badge{position:absolute;z-index:2;left:24px;bottom:24px;border:1px solid rgba(255,255,255,.36);border-radius:999px;background:rgba(25,23,23,.72);backdrop-filter:blur(10px);padding:9px 13px;text-transform:uppercase;letter-spacing:.11em;font-size:9px;font-weight:900}
.ke-project-feature__content{display:flex;flex-direction:column;justify-content:center;padding:clamp(34px,5vw,64px)}
.ke-project-feature__content>small{color:#ff858a;letter-spacing:.14em;font-size:9px;font-weight:900}
.ke-project-feature__content h2{margin:10px 0 15px;max-width:540px;font-size:clamp(34px,4.2vw,54px);line-height:1.02;letter-spacing:-.055em}
.ke-project-feature__content>p{margin:0;max-width:520px;color:rgba(255,255,255,.72);font-size:15px;line-height:1.65}
.ke-project-feature__facts{display:grid;gap:0;margin:25px 0 28px;border-top:1px solid rgba(255,255,255,.14);border-bottom:1px solid rgba(255,255,255,.14)}
.ke-project-feature__facts span{position:relative;padding:11px 0 11px 20px;color:rgba(255,255,255,.9);font-size:12px;font-weight:750}
.ke-project-feature__facts span+span{border-top:1px solid rgba(255,255,255,.09)}
.ke-project-feature__facts span:before{content:"";position:absolute;left:0;top:50%;width:7px;height:7px;border-radius:50%;background:#d91e25;transform:translateY(-50%)}
.ke-project-feature__actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.ke-project-feature__actions .button{min-height:48px}
.ke-project-feature__instagram{display:inline-flex;align-items:center;gap:8px;color:#fff;font-size:12px;font-weight:850;border-bottom:1px solid rgba(255,255,255,.45);padding:8px 0 6px;transition:color .18s,border-color .18s,transform .18s}
.ke-project-feature__instagram:hover{color:#ff858a;border-color:#ff858a;transform:translateX(2px)}
@media (max-width:900px){.ke-project-feature{grid-template-columns:1fr}.ke-project-feature__media{min-height:360px}.ke-project-feature__content{padding:34px 28px 38px}}
@media (max-width:560px){.ke-project-feature{margin-top:34px;border-radius:22px}.ke-project-feature__media{min-height:280px}.ke-project-feature__content{padding:28px 22px 32px}.ke-project-feature__content h2{font-size:34px}.ke-project-feature__actions{align-items:stretch;flex-direction:column}.ke-project-feature__actions .button{width:100%;justify-content:center}.ke-project-feature__instagram{align-self:flex-start}}


/* ===== Premium v9: Paka-style quantity controls, stronger PDF UX and form urgency ===== */
.ke-pc3__rooms label{gap:10px}
.ke-pc3__rooms input[data-room][type="hidden"]{display:none!important}
.ke-qty{display:grid;grid-template-columns:42px minmax(48px,1fr) 42px;align-items:center;min-height:44px;border:1px solid #ded7d3;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 5px 14px rgba(25,23,23,.035)}
.ke-qty__btn{height:44px;border:0;background:#f7f4f3;color:#191717;font-size:22px;font-weight:700;line-height:1;cursor:pointer;transition:background .15s,color .15s,transform .12s}
.ke-qty__btn:first-child{border-right:1px solid #e6dfdc}.ke-qty__btn:last-child{border-left:1px solid #e6dfdc}
.ke-qty__btn:hover{background:#191717;color:#fff}.ke-qty__btn:active{transform:scale(.96)}
.ke-qty__value{display:block;text-align:center;font-size:16px;font-weight:850;color:#191717;font-variant-numeric:tabular-nums}

.ke-pc3__pdf-card{position:relative;overflow:hidden;padding:28px!important;background:linear-gradient(145deg,#fff 0%,#fbf5f4 100%)!important;border:1px solid #e2d9d5!important;box-shadow:0 18px 42px rgba(25,23,23,.07)}
.ke-pc3__pdf-card:after{content:"";position:absolute;right:-34px;top:-34px;width:118px;height:118px;border-radius:50%;background:rgba(217,30,37,.055)}
.ke-pc3__pdf-icon{display:grid;place-items:center;width:50px;height:50px;margin-bottom:18px;border-radius:15px;background:#191717;color:#fff;font-size:12px;font-weight:950;letter-spacing:.08em;box-shadow:inset 0 -4px 0 #d91e25}
.ke-pc3__pdf-card>span{display:block;margin-bottom:7px;color:#d91e25;font-size:12px!important;font-weight:950;letter-spacing:.12em;text-transform:uppercase}
.ke-pc3__pdf-card h4{font-size:21px!important;line-height:1.16;margin:0 0 10px}
.ke-pc3__pdf-card p{font-size:13.5px!important;line-height:1.6;margin-bottom:18px!important;max-width:520px}
.ke-pc3__pdf-card .button{display:inline-flex!important;min-height:46px!important;padding:0 18px!important;border:1px solid #191717!important;border-radius:999px!important;background:#191717!important;color:#fff!important;font-size:12px!important;font-weight:900!important;text-decoration:none!important}
.ke-pc3__pdf-card .button:hover{background:#d91e25!important;border-color:#d91e25!important}
.ke-pc3__request-head>span{display:block;margin-bottom:8px;color:#d91e25;font-size:13px!important;font-weight:950!important;letter-spacing:.115em!important;text-transform:uppercase}
.ke-pc3__request-head h4{font-size:23px!important;line-height:1.16}
.ke-pc3__pdf-send,.ke-special-v3__pdf-send,.ke-urgent-field{display:flex!important;align-items:flex-start;gap:12px;padding:15px 16px;border:1px solid #ded7d3;border-radius:14px;background:#fff;cursor:pointer}
.ke-pc3__pdf-send{margin:2px 0 14px}.ke-special-v3__pdf-send{margin:14px 0}.ke-urgent-field{margin:4px 0 16px;background:#fff9f7;border-color:#ead8d2}
.ke-pc3__pdf-send input,.ke-special-v3__pdf-send input,.ke-urgent-field input{flex:0 0 auto;width:19px!important;height:19px!important;margin:1px 0 0;accent-color:#d91e25}
.ke-pc3__pdf-send span,.ke-special-v3__pdf-send span,.ke-urgent-field span{display:block}
.ke-pc3__pdf-send strong,.ke-special-v3__pdf-send b,.ke-urgent-field strong{display:block;color:#191717;font-size:13px;font-weight:900}
.ke-pc3__pdf-send small,.ke-special-v3__pdf-send small,.ke-urgent-field small{display:block;margin-top:3px;color:#756d69;font-size:11px;line-height:1.45}
.ke-urgent-field strong:before{content:"!";display:inline-grid;place-items:center;width:19px;height:19px;margin-right:7px;border-radius:50%;background:#d91e25;color:#fff;font-size:11px;vertical-align:-2px}

@media(max-width:680px){.ke-qty{grid-template-columns:40px minmax(44px,1fr) 40px}.ke-qty__btn{height:42px}.ke-pc3__pdf-card{padding:22px!important}.ke-pc3__request-head h4{font-size:21px!important}}

/* v10 static-site hardening & polish */
.ke-form-status{min-height:0;margin:4px 0 14px;font-size:13px;font-weight:750;line-height:1.5}.ke-form-status:empty{display:none}.ke-form-status.is-success{padding:13px 15px;border-left:3px solid #1c8a44;border-radius:0 10px 10px 0;background:#eef9f1;color:#146b35}.ke-form-status.is-error{padding:13px 15px;border-left:3px solid #d91e25;border-radius:0 10px 10px 0;background:#fff0f1;color:#b2141b}
.ke-static-form-head{margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid #e6dfdc}.ke-static-form-head>span{color:#d91e25;font-size:9px;font-weight:900;letter-spacing:.15em}.ke-static-form-head h2{margin:7px 0 8px;font-size:clamp(27px,3vw,38px);line-height:1.06;letter-spacing:-.04em}.ke-static-form-head p{margin:0;max-width:720px;color:#6f6865;line-height:1.6}
.ke-wallbox-static{max-width:920px;margin:0 auto;padding:clamp(24px,4vw,42px);border:1px solid #e0d9d6;border-radius:26px;background:#fff;box-shadow:0 22px 58px rgba(25,23,23,.08)}

.ke-special-v3__backdrop{position:absolute;inset:0;background:rgba(18,16,16,.72);backdrop-filter:blur(7px);cursor:default}

/* Elegant process line */
.ke-process-section{overflow:hidden}.ke-process-flow{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-top:44px;padding-top:34px;counter-reset:keprocess}.ke-process-flow:before,.ke-process-flow:after{content:"";position:absolute;left:4%;right:4%;top:14px;height:2px;border-radius:999px}.ke-process-flow:before{background:rgba(255,255,255,.16)}.ke-process-flow:after{right:auto;width:0;background:linear-gradient(90deg,#d91e25,#ff7076);box-shadow:0 0 18px rgba(217,30,37,.45);transition:width 1.25s cubic-bezier(.2,.8,.2,1)}.ke-process-section.is-visible .ke-process-flow:after{width:92%}.ke-process-step{position:relative;min-height:210px;padding:34px 24px 26px!important;border:1px solid rgba(255,255,255,.1);border-radius:22px;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));box-shadow:0 16px 44px rgba(0,0,0,.11);opacity:0;transform:translateY(18px);transition:opacity .55s ease,transform .55s ease,border-color .25s ease,background .25s ease}.ke-process-section.is-visible .ke-process-step{opacity:1;transform:none}.ke-process-section.is-visible .ke-process-step:nth-child(2){transition-delay:.12s}.ke-process-section.is-visible .ke-process-step:nth-child(3){transition-delay:.24s}.ke-process-section.is-visible .ke-process-step:nth-child(4){transition-delay:.36s}.ke-process-step:before{content:"";position:absolute;top:-28px;left:22px;width:18px;height:18px;border:4px solid #272424;border-radius:50%;background:#d91e25;box-shadow:0 0 0 1px rgba(255,255,255,.25),0 0 0 8px rgba(217,30,37,.12)}.ke-process-step>span{display:inline-flex;margin-bottom:18px;color:#ff858a!important;font-size:11px!important;font-weight:900!important;letter-spacing:.13em!important}.ke-process-step h3{margin:0 0 10px;font-size:23px;letter-spacing:-.03em}.ke-process-step p{margin:0;color:rgba(255,255,255,.7);line-height:1.65}.ke-process-step:hover{border-color:rgba(255,112,118,.4);background:linear-gradient(180deg,rgba(217,30,37,.11),rgba(255,255,255,.025))}
@media(max-width:900px){.ke-process-flow{grid-template-columns:1fr 1fr}.ke-process-flow:before,.ke-process-flow:after{display:none}.ke-process-step:before{top:20px;left:auto;right:20px}.ke-process-step{padding-top:28px!important}}
@media(max-width:600px){.ke-process-flow{grid-template-columns:1fr;margin-top:26px;padding-top:0}.ke-process-step{min-height:0}}
@media(prefers-reduced-motion:reduce){.ke-process-flow:after,.ke-process-step{transition:none!important}.ke-process-step{opacity:1;transform:none}}


/* v11: Projects are references, not duplicate service navigation */
.desktop-nav__trigger--plain{padding-right:0}
.desktop-nav__trigger--plain::after{display:none!important}
.ke-portfolio-section{padding-top:74px;padding-bottom:74px}
.ke-portfolio-heading{max-width:760px;margin-bottom:34px}
.ke-portfolio-feature{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);border:1px solid #e6dfdc;border-radius:28px;overflow:hidden;background:#fff;box-shadow:0 24px 70px rgba(31,26,24,.09)}
.ke-portfolio-feature__visual{position:relative;min-height:520px;background:#1c1a19;overflow:hidden}
.ke-portfolio-feature__visual img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;display:block}
.ke-portfolio-feature__visual::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 48%,rgba(20,18,18,.64) 100%)}
.ke-portfolio-feature__badge{position:absolute;left:28px;bottom:26px;z-index:2;display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;padding:14px 17px;border-radius:16px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);box-shadow:0 10px 34px rgba(0,0,0,.18)}
.ke-portfolio-feature__badge span{grid-row:1/3;font-size:13px;font-weight:900;color:#dc1e26}
.ke-portfolio-feature__badge strong{font-size:15px;line-height:1.1}.ke-portfolio-feature__badge small{font-size:11px;color:#6e6561;text-transform:uppercase;letter-spacing:.08em}
.ke-portfolio-feature__content{padding:48px 44px;display:flex;flex-direction:column;justify-content:center}
.ke-portfolio-feature__content h3{margin:8px 0 15px;font-size:clamp(30px,3vw,47px);line-height:1.02;letter-spacing:-.045em;font-weight:500}
.ke-portfolio-feature__content>p:not(.eyebrow){font-size:17px;line-height:1.7;color:#675f5b;margin:0}
.ke-portfolio-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:30px 0 32px}
.ke-portfolio-facts div{padding:15px 13px;border:1px solid #e8e1de;border-radius:14px;background:#faf8f7}.ke-portfolio-facts small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:#8a817c;margin-bottom:5px}.ke-portfolio-facts strong{font-size:14px}
.ke-portfolio-actions{display:flex;gap:10px;flex-wrap:wrap}
.ke-project-detail-strip{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-top:18px}
.ke-project-detail-strip>div{position:relative;min-height:190px;border-radius:20px;background-size:cover;background-repeat:no-repeat;overflow:hidden}
.ke-project-detail-strip>div::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(12,11,11,.67))}.ke-project-detail-strip span{position:absolute;left:18px;bottom:16px;z-index:1;color:#fff;font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.08em}
.ke-project-method{padding-top:76px;padding-bottom:84px}.ke-project-method__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:32px}.ke-project-method__grid article{position:relative;padding:30px;border-radius:22px;background:#fff;border:1px solid #e4ddda;min-height:190px}.ke-project-method__grid article span{display:inline-flex;width:38px;height:38px;border-radius:50%;align-items:center;justify-content:center;background:#df2028;color:white;font-weight:900;font-size:12px;margin-bottom:22px}.ke-project-method__grid h3{font-size:22px;margin:0 0 8px}.ke-project-method__grid p{margin:0;color:#6f6763;line-height:1.6}
@media(max-width:900px){.ke-portfolio-feature{grid-template-columns:1fr}.ke-portfolio-feature__visual{min-height:400px}.ke-portfolio-facts{grid-template-columns:1fr}.ke-project-method__grid{grid-template-columns:1fr}.ke-project-detail-strip{grid-template-columns:1fr 1fr}.ke-project-detail-strip>div:last-child{grid-column:1/3}}
@media(max-width:600px){.ke-portfolio-section{padding-top:46px;padding-bottom:50px}.ke-portfolio-feature__visual{min-height:330px}.ke-portfolio-feature__content{padding:32px 24px}.ke-project-detail-strip{grid-template-columns:1fr}.ke-project-detail-strip>div:last-child{grid-column:auto}.ke-portfolio-actions .button{width:100%;justify-content:center}}

/* v12 dedicated calculator pages */
.ke-calc-overview,.ke-dedicated-calc{max-width:1190px;margin:44px auto 70px;padding:0 20px}.ke-calc-overview__intro,.ke-dedicated-calc__intro{max-width:780px;margin-bottom:28px}.ke-calc-overview__intro>span,.ke-dedicated-calc__intro>span{color:#d91e25;font-size:10px;font-weight:900;letter-spacing:.14em}.ke-calc-overview__intro h2,.ke-dedicated-calc__intro h2{margin:8px 0 10px;font-size:clamp(32px,4vw,52px);line-height:1.04;letter-spacing:-.045em}.ke-calc-overview__intro p,.ke-dedicated-calc__intro p{margin:0;color:#6e6764;font-size:16px;line-height:1.6}.ke-calc-overview__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.ke-calc-overview__grid>a{display:flex;min-height:220px;flex-direction:column;padding:28px;border:1px solid #ded8d5;border-radius:22px;background:#fff;color:#191717;box-shadow:0 16px 44px rgba(25,23,23,.07);transition:.2s ease}.ke-calc-overview__grid>a:hover{transform:translateY(-4px);border-color:#d91e25;box-shadow:0 22px 56px rgba(25,23,23,.12)}.ke-calc-overview__grid small{color:#d91e25;font-size:9px;font-weight:900;letter-spacing:.12em}.ke-calc-overview__grid strong{margin:18px 0 9px;font-size:25px;line-height:1.1}.ke-calc-overview__grid span{color:#6e6764;line-height:1.55}.ke-calc-overview__grid b{margin-top:auto;padding-top:24px;color:#b4161d}.ke-dedicated-calc .ke-special-v3{margin-top:24px}.ke-dedicated-calc .ke-special-v3__head{grid-template-columns:1fr!important}.ke-dedicated-calc .ke-special-v3__tabs{display:none!important}@media(max-width:760px){.ke-calc-overview__grid{grid-template-columns:1fr}.ke-calc-overview,.ke-dedicated-calc{padding:0 14px}}


/* v13 stability / contact status */
.ke-form-status{display:none;margin:0 0 18px;padding:14px 16px;border-radius:12px;font-weight:700;font-size:14px;line-height:1.5}.ke-form-status.is-success,.ke-form-status.is-error{display:block}.ke-form-status.is-success{background:#edf8f0;color:#116b2b;border:1px solid #b9e0c4}.ke-form-status.is-error{background:#fff0f0;color:#a20f18;border:1px solid #efb9bc}

/* v16 final polish */
.map-card.ke-route-only .map-card__content>span{display:inline-flex;margin-bottom:10px;color:#dc1e26;font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.map-card.ke-route-only .map-card__content h2{margin:0 0 12px;font-size:clamp(28px,3vw,42px);line-height:1.05;letter-spacing:-.035em}
.map-card.ke-route-only .map-card__content .button{margin-top:8px}
.ke-project-method__grid article p{font-size:15px}

/* ============================================================================
   v17 — Anfahrt: Google-Maps-Karte mit Zwei-Klick-Consent + Routenplaner
   ========================================================================= */
.map-consent-section{scroll-margin-top:96px}
.map-card{overflow:hidden}
.map-card__frame.ke-map{min-height:420px;background:
  radial-gradient(circle at 22% 18%,#ffffff 0,rgba(255,255,255,0) 55%),
  linear-gradient(140deg,#efeceb 0%,#e3dedb 48%,#d9d3cf 100%);
  position:relative;isolation:isolate}
.map-card__frame.ke-map:before{content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;
  background-image:
    linear-gradient(rgba(25,23,23,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(25,23,23,.07) 1px,transparent 1px),
    linear-gradient(115deg,transparent 46%,rgba(217,30,37,.14) 46.6%,rgba(217,30,37,.14) 48%,transparent 48.6%),
    linear-gradient(28deg,transparent 62%,rgba(25,23,23,.09) 62.5%,rgba(25,23,23,.09) 64%,transparent 64.5%);
  background-size:34px 34px,34px 34px,100% 100%,100% 100%}
.map-card__frame.ke-map iframe{border:0;width:100%;height:100%;position:absolute;inset:0;z-index:2}
.map-card__frame.ke-map.is-loaded:before{display:none}

.ke-map__consent{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;text-align:center;padding:32px 26px}
.ke-map__pin{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;
  background:var(--white);color:var(--red);box-shadow:0 12px 30px rgba(25,23,23,.16);margin-bottom:4px}
.ke-map__consent strong{font-size:17px;font-weight:850;letter-spacing:-.01em;color:var(--ink)}
.ke-map__consent p{max-width:340px;margin:0;font-size:13.5px;line-height:1.55;color:var(--muted)}
.ke-map__consent p a{color:var(--red);text-decoration:underline;text-underline-offset:2px}
.ke-map__consent .button{margin-top:6px;min-height:46px;padding:13px 24px}
.ke-map__consent small{font-size:11.5px;color:var(--muted);opacity:.85}

.ke-route-form{display:flex;flex-direction:column;gap:12px;width:100%;max-width:460px;margin-top:4px}
.ke-route-form__field{position:relative;display:block}
.ke-route-form__icon{position:absolute;left:15px;top:50%;transform:translateY(-50%) scale(.72);
  transform-origin:left center;color:var(--red);pointer-events:none;display:flex}
.ke-route-form__field input{width:100%;min-height:52px;padding:14px 18px 14px 46px;
  border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--white);
  font:inherit;font-size:15px;color:var(--ink);transition:border-color .18s,box-shadow .18s}
.ke-route-form__field input::placeholder{color:#a49e9c}
.ke-route-form__field input:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 4px rgba(217,30,37,.13)}
.ke-route-form__modes{display:inline-flex;gap:6px;padding:5px;border-radius:999px;
  background:var(--gray-2);align-self:flex-start}
.ke-route-form__modes button{border:0;background:transparent;border-radius:999px;padding:8px 16px;
  font:inherit;font-size:13px;font-weight:800;color:var(--muted);cursor:pointer;transition:background .18s,color .18s}
.ke-route-form__modes button:hover{color:var(--ink)}
.ke-route-form__modes button.is-active{background:var(--white);color:var(--ink);box-shadow:0 4px 12px rgba(25,23,23,.1)}
.ke-route-form__modes button:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.ke-route-form .button{margin-top:2px;align-self:flex-start}
.ke-route-form__hint{margin:2px 0 0;font-size:12.5px;line-height:1.5;color:var(--muted)}

@media (max-width:900px){
  .map-card__frame.ke-map{min-height:320px}
  .ke-route-form,.ke-route-form .button{max-width:none}
  .ke-route-form .button{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .ke-route-form__modes button{transition:none}
}

/* ============================================================================
   v17 — Robustheit: Inhalte bleiben sichtbar, wenn JS/IntersectionObserver
   nicht greifen (Druck, Screenreader-Modi, blockierte Skripte)
   ========================================================================= */
html:not(.ke-js) .ke-process-step{opacity:1;transform:none}
html:not(.ke-js) .ke-process-flow:after{width:92%}
@media print{
  .ke-process-step{opacity:1!important;transform:none!important}
  .ke-process-flow:after{width:92%!important}
  .ke-wa-widget,.ke-backtop,.mobile-contact-dock,.utility-bar,.mobile-nav{display:none!important}
  .site-header{position:static!important}
  a[href^="http"]:after{content:" (" attr(href) ")";font-size:10px;color:#666}
}

/* Ungültige Auswahl im Rechner sichtbar markieren (bisher nur im JS gesetzt) */
.ke-pc3__choices.is-invalid,.ke-pc3__field-block .is-invalid{
  animation:ke-shake .38s ease;border-radius:14px;
  box-shadow:0 0 0 3px rgba(217,30,37,.18)}
.ke-pc3__choices.is-invalid button{border-color:#f2b3b6}
@keyframes ke-shake{
  0%,100%{transform:translateX(0)}
  22%{transform:translateX(-5px)}
  55%{transform:translateX(5px)}
  80%{transform:translateX(-2px)}}
@media (prefers-reduced-motion:reduce){
  .ke-pc3__choices.is-invalid,.ke-pc3__field-block .is-invalid{animation:none}
}

/* ============================================================================
   v17 — Layoutkorrekturen
   ========================================================================= */
/* Auf schmalen Displays erzeugten aspect-ratio + min-height eine Breite von
   377px im 375px-Viewport -> die ganze Startseite liess sich seitlich schieben. */
.hero__visual{max-width:100%}
@media (max-width:640px){
  .hero__visual{width:100%;min-height:min(410px,84vw)}
}

/* Lange Fachbegriffe (z. B. "Wärmepumpenanschluss") sprengten die Rechner-Kacheln
   auf 320-360px-Displays und erzeugten seitliches Scrollen. */
.ke-calc-overview__grid>a{min-width:0}
.ke-calc-overview__grid strong,
.ke-calc-overview__grid span,
.ke-calc-overview__grid b{overflow-wrap:anywhere;hyphens:auto}
@media (max-width:420px){
  .ke-calc-overview__grid>a{padding:22px 20px;min-height:0}
  .ke-calc-overview__grid strong{font-size:21px;margin-top:14px}
  .ke-calc-overview__grid b{padding-top:18px}
}

/* Sehr lange deutsche Komposita ("Wärmepumpenanschluss") passten auf 320px-Displays
   in keine Zeile und schoben das Layout auf. Umbruch + Silbentrennung erlauben. */
h1,h2,h3,h4,p,li,strong,b,small,label,figcaption,blockquote,dd,dt{overflow-wrap:break-word}
/* In der Spalten-Flexbox mit align-items:flex-start wuchsen die Kinder auf
   max-content-Breite - ein einziges langes Wort sprengte damit die Sektion. */
.contact-band__inner>div{max-width:100%;min-width:0}
@media (max-width:400px){
  h1,h2,h3,.contact-band h2,.page-hero h1{hyphens:auto;-webkit-hyphens:auto}
  .reviews-score{min-width:0}
}

/* ============================================================================
   v17 — Feinschliff Rechner und Bedienbarkeit
   ========================================================================= */
/* Schritt 7 zeigt das Ergebnis. Die Live-Spalte wiederholte dort nur dieselben
   Zahlen und hinterliess ~1.700px leere dunkle Flaeche. */
.ke-project-calc-v3[data-step="7"] .ke-pc3__grid{grid-template-columns:minmax(0,1fr)}
.ke-project-calc-v3[data-step="7"] .ke-pc3__live{display:none}
@media (min-width:1100px){
  .ke-project-calc-v3[data-step="7"] .ke-pc3__result-columns{gap:22px}
  .ke-project-calc-v3[data-step="7"] .ke-pc3__request-grid{gap:16px 20px}
}

/* Sichtbarer Tastaturfokus – zurückhaltend statt plakativ.
   Schaltflächen und Links bekommen eine feine Kontur, Eingabefelder dagegen
   einen weichen Ring am Feldrand: ein 3px-Aussenrahmen um ein Textfeld wirkte
   deutlich zu laut (besonders im grünen WhatsApp-Fenster). */
a:focus-visible,button:focus-visible,select:focus-visible,
summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--red);outline-offset:2px;border-radius:6px}
.site-header a:focus-visible,.utility-bar a:focus-visible,
.site-footer a:focus-visible,.ke-pc3__live a:focus-visible,
.ke-livebar button:focus-visible{outline-color:#fff}
.button:focus-visible{outline-offset:3px}

/* Textfelder: kein Aussenrahmen, sondern ein weicher Ring direkt am Feld. */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus-visible,
textarea:focus-visible{
  outline:none;
  border-color:var(--red);
  box-shadow:0 0 0 3px rgba(217,30,37,.12)}

/* Im WhatsApp-Fenster bleibt alles in Grün – dort passt Rot nicht hin. */
.ke-wa-panel input:focus-visible,
.ke-wa-panel textarea:focus-visible,
.ke-wa-compose textarea:focus,
.ke-wa-compose textarea:focus-visible{
  outline:none;
  border-color:#2bb14b;
  box-shadow:0 0 0 3px rgba(43,177,75,.16)}
.ke-wa-panel button:focus-visible{outline-color:#2bb14b}

/* Sprungziele nicht unter den klebenden Header schieben */
:target{scroll-margin-top:104px}
#anfrage,#anfahrt,[id^="ke-faq"]{scroll-margin-top:104px}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ============================================================================
   v17 — Abschluss-Erklärung auf der Rechnerseite
   ========================================================================= */
.ke-why__head{max-width:760px}
.ke-why__head h2{margin:10px 0 14px;font-size:clamp(28px,3.2vw,44px);line-height:1.06;letter-spacing:-.035em}
.ke-why__lead{color:var(--muted);font-size:17px;line-height:1.7;margin:0}
.ke-why__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:40px}
.ke-why-card{position:relative;padding:30px 26px 28px;border:1px solid var(--line);
  border-radius:var(--radius-md);background:var(--white);
  box-shadow:0 14px 40px rgba(25,23,23,.06);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.ke-why-card:hover{transform:translateY(-4px);border-color:var(--red);box-shadow:0 22px 56px rgba(25,23,23,.11)}
.ke-why-card__no{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;
  background:var(--red-soft);color:var(--red);font-size:12px;font-weight:900;letter-spacing:.06em}
.ke-why-card h3{margin:18px 0 10px;font-size:19px;line-height:1.25;letter-spacing:-.02em}
.ke-why-card p{margin:0;color:var(--muted);font-size:14.5px;line-height:1.65}
.ke-why__foot{display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;
  margin-top:34px;padding:26px 30px;border-radius:var(--radius-md);
  background:var(--ink);color:#fff}
.ke-why__foot div{display:flex;flex-direction:column;gap:6px;max-width:620px}
.ke-why__foot strong{font-size:17px;letter-spacing:-.01em}
.ke-why__foot span{color:#ffffffb3;font-size:14px;line-height:1.6}
.ke-why__foot .button{flex:none;margin:0}
@media (max-width:960px){
  .ke-why__grid{grid-template-columns:1fr}
  .ke-why__foot{flex-direction:column;align-items:flex-start}
  .ke-why__foot .button{width:100%}
}

/* ============================================================================
   v17 — Designkorrekturen aus dem Abnahme-Review
   ========================================================================= */

/* 1. FAQ: im Grid-Layout griff "flex:0 0 34px" nicht mehr, das Plus-Zeichen
      wurde zu einem 14px breiten Oval gequetscht. */
.faq-accordion__plus{width:34px;min-width:34px;height:34px;aspect-ratio:1;
  line-height:1;flex:0 0 34px}

/* 2. Die Zwischenueberschrift im FAQ-Assistenten erbte Schriftstaerke 400,
      alle anderen H2 der Seite sind fett. */
.ke-faq-content__intro h2{font-weight:850;line-height:1.08}

/* 3. "Dringendes Anliegen": das Label erbte flex-direction:column aus
      .site-form label, dadurch stand die Checkbox ueber ihrem Text. */
.ke-urgent-field{flex-direction:row!important;align-items:flex-start;gap:12px}
.ke-urgent-field>input[type="checkbox"]{flex:0 0 auto;margin-top:2px;width:18px;height:18px;accent-color:var(--red)}
.ke-urgent-field>span{display:flex;flex-direction:column;gap:3px;min-width:0}

/* 4. Leistungsuebersicht: die Beschreibung war mobil ausgeblendet, der dafuer
      reservierte Platz blieb aber als leere Flaeche stehen. */
@media (width<=640px){
  .services-list p{display:block;font-size:13.5px;line-height:1.55;margin:6px 0 0}
}

/* 5. Preisrechner-Detailseiten: die Karte lag in einer zweiten Karte, sichtbar
      als doppelter Rahmen mit zwei verschiedenen Eckradien. */
.price-calculator{border:0;box-shadow:none;background:transparent;border-radius:var(--radius-md);overflow:visible}
.price-calculator>.ke-special-v3{box-shadow:var(--shadow-lg)}

/* 6. Der Eyebrow-Punkt wurde bei mehrzeiligen Kickern mittig zum ganzen Block
      gesetzt und landete dadurch auf Zeile 2. */
.eyebrow{align-items:flex-start}
.eyebrow:before{flex:0 0 7px;margin-top:.42em}

/* 7. Kontrast: rotes CTA-Band, Footer-Zeile und Datei-Hinweis lagen unter
      WCAG AA (3,06 / 3,82 / 4,02 : 1). */
.contact-band p,.contact-band .eyebrow{color:#fff}
.contact-band .button--outline{border-color:rgba(255,255,255,.72)}
.site-footer__bottom span{color:rgba(255,255,255,.66)}
.site-form small,.ke-pc3__fineprint{color:#5d5754}

/* 8. Datei-Auswahl sah als nackter Browser-Standard aus. */
input[type="file"]{font:inherit;font-size:13px;color:#5d5754}
input[type="file"]::file-selector-button{
  margin-right:12px;padding:10px 16px;border:1px solid var(--line);border-radius:999px;
  background:var(--gray);color:var(--ink);font:inherit;font-size:12.5px;font-weight:800;
  cursor:pointer;transition:background .18s,border-color .18s}
input[type="file"]:hover::file-selector-button{background:var(--gray-2);border-color:var(--red)}

/* 9. Absatzabstand in Fliesstexten der Über-uns-Seite */
.about-story p,.about-panel p,.section p+p{margin-block:0 14px}

/* Solange Projektart/Gebäudeart fehlen, las sich "– bis –" wie ein Anzeigefehler.
   Im Wartezustand steht dort jetzt ein klarer Hinweis. */
.ke-pc3--pending .ke-pc3__top-price>strong,
.ke-pc3--pending .ke-pc3__live-price{visibility:hidden;position:relative}
.ke-pc3--pending .ke-pc3__top-price>strong:after,
.ke-pc3--pending .ke-pc3__live-price:after{
  content:"Noch nicht berechnet";visibility:visible;position:absolute;top:50%;
  transform:translateY(-50%);white-space:nowrap;
  font-size:15px;font-weight:800;letter-spacing:-.01em}
.ke-pc3--pending .ke-pc3__top-price>strong:after{right:0;text-align:right;color:#8b8481}
.ke-pc3--pending .ke-pc3__live-price:after{left:0;color:#a9a2a0}

/* Die Sekundär-Aktion im dunklen Ergebnisfeld war nackter Text und wirkte nicht
   anklickbar. Sie bekommt jetzt eine sichtbare Kontur auf dunklem Grund. */
.ke-special-v3__actions .button--secondary,
.ke-pc3__pdf-card .button--secondary{
  border:1px solid rgba(255,255,255,.42);background:rgba(255,255,255,.06);color:#fff}
.ke-special-v3__actions .button--secondary:hover,
.ke-pc3__pdf-card .button--secondary:hover{
  background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.7)}
/* Auf hellem Grund (PDF-Karte und Schritt-Navigation im 7-Schritte-Rechner) bleibt sie dunkel.
   .ke-pc3__actions ergaenzt: "<- Zurueck" trug bereits .button--secondary, war aber ohne
   eigene Regel fuer diesen Container unsichtbar gefuellt (wirkte wie blosser Text). */
.ke-pc3__pdf-card .button--secondary,
.ke-pc3__actions .button--secondary{border-color:var(--ink);background:var(--ink);color:#fff}
.ke-pc3__pdf-card .button--secondary:hover,
.ke-pc3__actions .button--secondary:hover{background:#000;border-color:#000}

/* ============================================================================
   v18 — Live-Preis auf jedem Gerät
   ----------------------------------------------------------------------------
   Desktop und iPad: die dunkle Spalte bleibt beim Scrollen stehen.
   Kleinere Displays: feste Leiste am unteren Rand statt eines Preises, den man
   erst wegscrollen muss.
   ========================================================================= */

/* --- 1. Zwei-Spalten-Layout schon ab iPad hoch (bisher erst ab 981px) ----- */
@media (min-width:820px){
  .ke-pc3__grid{grid-template-columns:minmax(0,1.6fr) minmax(268px,.68fr)}
  .ke-pc3__live{display:block}
}
@media (min-width:1100px){
  .ke-pc3__grid{grid-template-columns:minmax(0,1.72fr) minmax(320px,.72fr)}
}
@media (max-width:819px){
  .ke-pc3__grid{grid-template-columns:1fr}
  .ke-pc3__live{display:none}
}

/* --- 2. Live-Spalte klebt beim Scrollen ---------------------------------- */
.ke-pc3__live{padding:0}
@media (min-width:820px){ .ke-pc3__live{display:flex;flex-direction:column} }
/* Der Innencontainer füllt die ganze Spalte, damit der Sticky-Kopf den kompletten
   Schritt begleiten kann und nicht schon nach der Textlänge stehen bleibt. */
.ke-pc3__live-inner{flex:1 1 auto;padding:34px 26px 30px}
.ke-pc3__live-head{position:sticky;top:88px;z-index:3;margin:-6px -26px 0;padding:6px 26px 14px;
  background:#1a1818;box-shadow:0 14px 22px -14px rgba(0,0,0,.85)}
@media (min-width:1100px){
  .ke-pc3__live-inner{padding:38px 30px 34px}
  .ke-pc3__live-head{margin:-8px -30px 0;padding:8px 30px 16px}
}
@media (prefers-reduced-motion:no-preference){
  .ke-pc3__live-head{transition:box-shadow .2s}
}

/* --- 3. Feste Preisleiste unten ------------------------------------------ */
.ke-livebar{
  position:fixed;left:0;right:0;bottom:0;z-index:240;display:none;
  background:rgba(20,18,18,.97);color:#fff;
  border-top:1px solid rgba(255,255,255,.1);
  box-shadow:0 -14px 40px rgba(0,0,0,.3);
  backdrop-filter:saturate(140%) blur(10px);
  padding-bottom:env(safe-area-inset-bottom);
  transform:translateY(102%);transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.ke-livebar:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--red),#ff7076 55%,var(--red))}
.ke-pc3--bar-on .ke-livebar,
.ke-sp3--bar-on .ke-livebar{transform:translateY(0)}

.ke-livebar__inner{display:flex;align-items:center;gap:14px;
  max-width:min(1180px,calc(100% - 28px));margin:0 auto;padding:12px 0 13px}
.ke-livebar__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.ke-livebar__label{font-size:9.5px;font-weight:900;letter-spacing:.13em;
  text-transform:uppercase;color:#b7aeab}
.ke-livebar__price{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;
  font-size:clamp(19px,5.4vw,25px);font-weight:900;letter-spacing:-.03em;line-height:1.1;
  color:#fff;font-variant-numeric:tabular-nums}
.ke-livebar__price i{font-style:normal;font-size:11.5px;font-weight:700;color:#a49b98;
  letter-spacing:0;transform:translateY(-1px)}
.ke-livebar__meta{font-style:normal;font-size:11px;line-height:1.35;color:#a49b98;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.ke-livebar__toggle{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;
  min-height:42px;padding:11px 15px;border:1px solid rgba(255,255,255,.28);
  border-radius:999px;background:rgba(255,255,255,.07);color:#fff;
  font:inherit;font-size:12.5px;font-weight:800;cursor:pointer;
  transition:background .18s,border-color .18s}
.ke-livebar__toggle:hover{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.5)}
.ke-livebar__toggle svg{transition:transform .22s}
.ke-livebar.is-open .ke-livebar__toggle svg{transform:rotate(180deg)}
.ke-livebar__panel{max-width:min(1180px,calc(100% - 28px));margin:0 auto;
  padding:2px 0 16px;border-top:1px solid rgba(255,255,255,.1)}
.ke-livebar__panel .ke-pc3__breakdown,
.ke-livebar__panel .ke-special-v3__breakdown{margin:0;padding-top:12px}
.ke-livebar__panel .ke-pc3__breakdown div,
.ke-livebar__panel .ke-special-v3__breakdown div{display:flex;justify-content:space-between;
  gap:16px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.09);font-size:13px}
.ke-livebar__panel .ke-pc3__breakdown div:last-child,
.ke-livebar__panel .ke-special-v3__breakdown div:last-child{border-bottom:0}
.ke-livebar__panel span{color:#b7aeab}
.ke-livebar__panel strong{color:#fff;font-variant-numeric:tabular-nums}
.ke-livebar__panel .ke-pc3__breakdown-total strong,
.ke-livebar__panel .ke-special-v3__total-row strong{color:#f0c9cb}

/* Die Leiste erscheint nur dort, wo die dunkle Spalte fehlt … */
@media (max-width:819px){
  .ke-livebar{display:block}
  /* … und legt sich nie über die feste Kontaktleiste. */
  .ke-project-calc-v3,.ke-special-v3{scroll-margin-bottom:120px}
}
@media (max-width:640px){
  .ke-livebar{bottom:calc(68px + env(safe-area-inset-bottom))}
  .ke-livebar__inner{padding:10px 0 11px;gap:10px}
  .ke-livebar__toggle{padding:10px 13px;font-size:12px}
}
/* Im Ergebnisschritt steht die Spanne bereits gross auf der Seite. */
.ke-project-calc-v3[data-step="7"] .ke-livebar{transform:translateY(102%)}
.ke-pc3--pending .ke-livebar__price{visibility:hidden;position:relative}
.ke-pc3--pending .ke-livebar__price:after{content:"Noch nicht berechnet";visibility:visible;
  position:absolute;left:0;top:0;white-space:nowrap;font-size:17px;font-weight:800;color:#a49b98}
@media print{ .ke-livebar{display:none!important} }
@media (prefers-reduced-motion:reduce){
  .ke-livebar{transition:none}
  .ke-livebar__toggle svg{transition:none}
}

/* ============================================================================
   v18 — Mengenauswahl (− Zahl +) einheitlich und griffig auf allen Geräten
   ========================================================================= */
.ke-qty{
  display:grid;grid-template-columns:38px minmax(30px,1fr) 38px;align-items:stretch;
  min-height:40px;border:1px solid var(--line);border-radius:11px;background:var(--white);
  overflow:hidden;box-shadow:0 3px 9px rgba(25,23,23,.045);
  transition:border-color .16s,box-shadow .16s}
.ke-qty:focus-within{border-color:var(--red);box-shadow:0 0 0 3px rgba(217,30,37,.14)}
.ke-qty__btn{
  display:grid;place-items:center;height:auto;min-height:38px;padding:0;
  border:0;background:#f7f5f4;color:var(--ink);
  font-size:17px;font-weight:800;line-height:1;cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  transition:background .15s,color .15s}
.ke-qty__btn:first-child{border-right:1px solid var(--line)}
.ke-qty__btn:last-child{border-left:1px solid var(--line)}
.ke-qty__btn:hover{background:var(--ink);color:#fff}
.ke-qty__btn:active{background:var(--red);color:#fff}
.ke-qty__btn:focus-visible{outline:2px solid var(--red);outline-offset:-3px}
.ke-qty__value{
  display:grid;place-items:center;
  font-size:15px;font-weight:850;color:var(--ink);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em}
@media (max-width:400px){
  .ke-qty{grid-template-columns:40px minmax(30px,1fr) 40px;min-height:42px}
  .ke-qty__btn{min-height:40px;font-size:18px}
  .ke-qty__value{font-size:15px}
}
@media (min-width:1100px){
  .ke-qty{grid-template-columns:40px minmax(32px,1fr) 40px;min-height:42px}
  .ke-qty__btn{min-height:40px}
}
/* Raumname darf nie abgeschnitten werden */
.ke-pc3__rooms label{gap:9px;min-width:0}
.ke-pc3__rooms label>span:first-child,
.ke-pc3__rooms label{overflow-wrap:break-word;hyphens:auto}

/* Der Kartenrahmen war overflow:hidden - das erzeugt einen Scroll-Container und
   setzt position:sticky im Inneren ausser Kraft. overflow:clip schneidet genauso
   sauber ab, ohne einen Scroll-Container zu bilden. */
.ke-project-calc-v3{overflow:hidden;overflow:clip}
.price-calculator>.ke-special-v3{overflow:hidden;overflow:clip}

/* Etwas Luft, damit die Preisleiste nie den letzten Inhalt verdeckt. */
@media (max-width:819px){
  .ke-livebar__panel{padding-bottom:20px}
  .ke-project-calc-v3,.price-calculator{margin-bottom:92px}
}

/* Optischer Feinschliff der Mengenauswahl: das Minuszeichen wirkt in vielen
   Schriften leichter als das Plus - hier werden beide auf gleiche Wirkung gebracht,
   und die Steuerung wächst auf breiten Karten nicht ins Unförmige. */
.ke-qty{max-width:148px}
/* Minus und Plus wirken in dieser Schrift unterschiedlich schwer - hier auf
   gleiche optische Grösse gebracht. */
.ke-qty__btn{font-size:17px;font-weight:700}
.ke-qty__btn[data-dir="-1"]{font-size:21px;line-height:.9}
@media (max-width:400px){
  .ke-qty__btn{font-size:17px}
  .ke-qty__btn[data-dir="-1"]{font-size:20px}
}

/* Bei fünf Spalten blieb pro Raumkarte zu wenig Breite: die Plus-Schaltfläche
   ragte aus der Karte und wurde vom Kartenrand abgeschnitten. Die Spalten der
   Mengenauswahl dürfen jetzt mitschrumpfen, und die Raumkarten bekommen eine
   Mindestbreite. */
.ke-qty{grid-template-columns:minmax(34px,40px) minmax(28px,1fr) minmax(34px,40px)}
@media (max-width:400px){
  .ke-qty{grid-template-columns:minmax(34px,40px) minmax(28px,1fr) minmax(34px,40px)}
}
/* Zehn Räume stehen als 5 x 2 - eine ruhige, gleichmässige Blockform.
   Darunter stufenweise 4, 3 und 2 Spalten. */
.ke-pc3__rooms{grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
@media (max-width:1180px){ .ke-pc3__rooms{grid-template-columns:repeat(4,minmax(0,1fr))} }
@media (max-width:820px){  .ke-pc3__rooms{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:560px){  .ke-pc3__rooms{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* Zwischen 820 und 1000 px ist die Fragenspalte durch die Live-Spalte schmaler.
   Die Auswahlkacheln bekommen dort weniger Spalten, sonst bricht der Text auf
   fünf Zeilen um. */
@media (min-width:820px) and (max-width:1010px){
  .ke-pc3__choices--3,.ke-pc3__choices--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ke-pc3__compact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}



/* Raumkarten kompakter, damit fünf nebeneinander ruhig wirken. */
.ke-pc3__rooms label{padding:10px 10px 11px;gap:7px;border-radius:10px;font-size:10px}
@media (min-width:1100px){ .ke-pc3__rooms label{font-size:10.5px} }

/* Zwischen 820 und 1010 px nimmt die Live-Spalte viel Breite weg – dort passen
   nur zwei Raumkarten nebeneinander, sonst werden sie zu schmal. */
@media (min-width:820px) and (max-width:1010px){
  .ke-pc3__rooms{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ============================================================================
   v19 — /projekte/ : filterbares Referenz-Raster
   ----------------------------------------------------------------------------
   Bewusst als wiederholbare Karte gebaut. Eine Karte = ein Projekt = später
   ein WordPress-Beitrag (Bild, Kategorie, Titel, Kurztext, Schlagworte).
   ========================================================================= */
.ke-projects__head{max-width:760px;margin-bottom:26px}

/* --- Filterleiste ------------------------------------------------------- */
.ke-proj-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px;
  padding-bottom:22px;border-bottom:1px solid var(--line)}
.ke-proj-filter__chip{display:inline-flex;align-items:center;gap:7px;
  min-height:40px;padding:10px 16px;border:1px solid var(--line);border-radius:999px;
  background:var(--white);color:var(--muted);font:inherit;font-size:13px;font-weight:800;
  cursor:pointer;transition:background .18s,color .18s,border-color .18s,transform .18s}
.ke-proj-filter__chip:hover{color:var(--ink);border-color:var(--ink);transform:translateY(-1px)}
.ke-proj-filter__chip.is-active{background:var(--ink);border-color:var(--ink);color:#fff}
.ke-proj-filter__count{display:inline-grid;place-items:center;min-width:20px;height:20px;
  padding:0 6px;border-radius:999px;background:var(--gray-2);color:var(--muted);
  font-size:10.5px;font-weight:900;font-variant-numeric:tabular-nums}
.ke-proj-filter__chip.is-active .ke-proj-filter__count{background:rgba(255,255,255,.19);color:#fff}

/* --- Raster ------------------------------------------------------------- */
.ke-proj-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
@media (min-width:1100px){
  .ke-proj-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .ke-proj-card{grid-column:span 3}
  .ke-proj-card--wide{grid-column:span 6}
  .ke-proj-card--wide{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
  .ke-proj-card--wide .ke-proj-card__media{height:100%;aspect-ratio:auto;min-height:340px}
  .ke-proj-card--wide .ke-proj-card__body{padding:34px 34px 30px}
  .ke-proj-card--wide h3{font-size:26px}
}
@media (max-width:700px){ .ke-proj-grid{grid-template-columns:1fr} }

/* --- Karte -------------------------------------------------------------- */
.ke-proj-card{position:relative;display:flex;flex-direction:column;overflow:hidden;
  border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white);
  box-shadow:0 14px 40px rgba(25,23,23,.06);
  transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s,border-color .2s}
.ke-proj-card:hover{transform:translateY(-5px);border-color:rgba(217,30,37,.4);
  box-shadow:0 26px 62px rgba(25,23,23,.14)}
.ke-proj-card__media{position:relative;aspect-ratio:3/2;overflow:hidden;background:var(--gray-2)}
.ke-proj-card__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.ke-proj-card:hover .ke-proj-card__media img{transform:scale(1.05)}
.ke-proj-card__media:after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(14,13,13,.42) 0%,rgba(14,13,13,0) 42%,rgba(14,13,13,.12) 100%)}
.ke-proj-card__cat{position:absolute;top:14px;left:14px;z-index:2;
  padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.94);
  color:var(--ink);font-size:10.5px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;
  box-shadow:0 6px 18px rgba(0,0,0,.16)}
.ke-proj-card__no{position:absolute;top:14px;right:16px;z-index:2;
  color:rgba(255,255,255,.85);font-size:12px;font-weight:900;letter-spacing:.08em;
  text-shadow:0 1px 6px rgba(0,0,0,.4)}
.ke-proj-card__body{display:flex;flex-direction:column;gap:9px;padding:24px 24px 22px;flex:1}
.ke-proj-card__meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;
  color:var(--muted);font-size:10.5px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
.ke-proj-card__meta span+span:before{content:"·";margin-right:14px;color:var(--line)}
.ke-proj-card h3{margin:0;font-size:20px;line-height:1.2;letter-spacing:-.025em}
.ke-proj-card__text{margin:0;color:var(--muted);font-size:14.5px;line-height:1.62}
.ke-proj-card__tags{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 0;padding:0;list-style:none}
.ke-proj-card__tags li{padding:5px 10px;border-radius:7px;background:var(--gray);
  color:#5d5754;font-size:11px;font-weight:800}
.ke-proj-card__link{display:inline-flex;align-items:center;gap:8px;margin-top:auto;padding-top:16px;
  color:var(--red);font-size:13.5px;font-weight:850;text-decoration:none}
.ke-proj-card__link svg{transition:transform .22s}
.ke-proj-card__link:hover svg{transform:translateX(4px)}

/* --- Einladungskarte ---------------------------------------------------- */
.ke-proj-card--invite{border-style:dashed;border-color:#d8d1cd;background:var(--gray);
  box-shadow:none}
.ke-proj-card--invite:hover{transform:none;border-color:var(--red);box-shadow:none}
.ke-proj-card__invite{display:flex;flex-direction:column;align-items:flex-start;gap:11px;
  padding:30px 26px;height:100%;justify-content:center}
.ke-proj-card__invite-icon{display:grid;place-items:center;width:46px;height:46px;
  border-radius:14px;background:var(--red-soft);color:var(--red)}
.ke-proj-card__invite strong{font-size:17px;letter-spacing:-.02em}
.ke-proj-card__invite p{margin:0;color:var(--muted);font-size:14px;line-height:1.6}
.ke-proj-card__invite .button{margin-top:6px}

.ke-proj-empty{margin:26px 0 0;padding:22px;border:1px dashed var(--line);border-radius:16px;
  color:var(--muted);text-align:center;font-size:14.5px}

/* Ein- und Ausblenden beim Filtern */
.ke-proj-card[hidden]{display:none}
.ke-proj-card.is-entering{animation:ke-proj-in .42s cubic-bezier(.2,.8,.2,1) both}
@keyframes ke-proj-in{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}

/* ============================================================================
   v19 — "Drei sichtbare Aspekte": Aufbau mit Bewegung
   ========================================================================= */
.ke-aspects__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:36px}
@media (max-width:900px){ .ke-aspects__grid{grid-template-columns:1fr} }
.ke-aspect{position:relative;padding:30px 26px 28px;border:1px solid var(--line);
  border-radius:var(--radius-md);background:var(--white);
  box-shadow:0 12px 34px rgba(25,23,23,.05);
  opacity:0;transform:translateY(22px);
  transition:opacity .6s cubic-bezier(.2,.8,.2,1) var(--d,0ms),
             transform .6s cubic-bezier(.2,.8,.2,1) var(--d,0ms),
             border-color .25s ease,box-shadow .25s ease}
.ke-aspects.is-visible .ke-aspect{opacity:1;transform:none}
.ke-aspect:hover{border-color:var(--red);box-shadow:0 22px 54px rgba(25,23,23,.12)}
.ke-aspect__no{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:13px;
  background:var(--ink);color:#fff;font-size:12.5px;font-weight:900;letter-spacing:.04em}
.ke-aspect__line{display:block;height:2px;width:0;margin:20px 0 16px;border-radius:999px;
  background:linear-gradient(90deg,var(--red),#ff8286);
  transition:width .9s cubic-bezier(.2,.8,.2,1) calc(var(--d,0ms) + 180ms)}
.ke-aspects.is-visible .ke-aspect__line{width:56px}
.ke-aspect:hover .ke-aspect__line{width:100%}
.ke-aspect h3{margin:0 0 9px;font-size:19px;line-height:1.24;letter-spacing:-.02em}
.ke-aspect p{margin:0;color:var(--muted);font-size:14.5px;line-height:1.65}

/* Ohne JavaScript, im Druck und bei reduzierter Bewegung sofort sichtbar. */
html:not(.ke-js) .ke-aspect{opacity:1;transform:none}
html:not(.ke-js) .ke-aspect__line{width:56px}
@media print{ .ke-aspect{opacity:1!important;transform:none!important} }
@media (prefers-reduced-motion:reduce){
  .ke-aspect,.ke-aspect__line,.ke-proj-card,.ke-proj-card__media img{transition:none!important}
  .ke-aspect{opacity:1;transform:none}
  .ke-aspect__line{width:56px}
  .ke-proj-card.is-entering{animation:none}
}

/* Die Regeln für die breite Karte standen vor der Grundregel .ke-proj-card und
   wurden dadurch von deren display:flex überschrieben – hier nachgezogen. */
@media (min-width:1100px){
  .ke-proj-card--wide{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);align-items:stretch}
  .ke-proj-card--wide .ke-proj-card__media{aspect-ratio:auto;height:100%;min-height:360px}
  .ke-proj-card--wide .ke-proj-card__body{padding:36px 36px 32px;justify-content:center}
  .ke-proj-card--wide h3{font-size:27px}
  .ke-proj-card--wide .ke-proj-card__text{font-size:15.5px;max-width:46ch}
  .ke-proj-card--wide .ke-proj-card__link{margin-top:20px;padding-top:0}
}

/* ============================================================================
   v19 — Feinschliff: Bewegung, die die Seite hochwertig wirken lässt,
   ohne sie unruhig zu machen. Alles respektiert prefers-reduced-motion
   und ist ohne JavaScript wirkungslos statt störend.
   ========================================================================= */

/* --- 1. Lesefortschritt -------------------------------------------------- */
.ke-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:400;
  pointer-events:none;background:rgba(25,23,23,.06);
  opacity:0;transition:opacity .3s ease}
.ke-progress.is-on{opacity:1}
.ke-progress i{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--red),#ff7d82 60%,var(--red));
  box-shadow:0 0 12px rgba(217,30,37,.55)}

/* --- 2. Hero-Auftakt ----------------------------------------------------- */
.ke-intro>*{opacity:0;transform:translateY(16px);
  transition:opacity .66s cubic-bezier(.2,.8,.2,1) calc(var(--i,0)*95ms),
             transform .66s cubic-bezier(.2,.8,.2,1) calc(var(--i,0)*95ms)}
.ke-intro.is-in>*{opacity:1;transform:none}

/* --- 3. Einblenden beim Scrollen ---------------------------------------- */
.ke-reveal{opacity:0;transform:translateY(18px);
  transition:opacity .62s cubic-bezier(.2,.8,.2,1) var(--rd,0ms),
             transform .62s cubic-bezier(.2,.8,.2,1) var(--rd,0ms)}
.ke-reveal--in{opacity:1;transform:none}
/* Karten behalten ihre eigene Hover-Bewegung. */
.ke-proj-card.ke-reveal--in,.ke-why-card.ke-reveal--in{transition:opacity .62s cubic-bezier(.2,.8,.2,1) var(--rd,0ms),
  transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s,border-color .2s}

html:not(.ke-js) .ke-reveal,
html:not(.ke-js) .ke-intro>*{opacity:1;transform:none}
@media print{
  .ke-reveal,.ke-intro>*{opacity:1!important;transform:none!important}
  .ke-progress{display:none!important}
}
@media (prefers-reduced-motion:reduce){
  .ke-reveal,.ke-intro>*{opacity:1!important;transform:none!important;transition:none!important}
  .ke-progress i{transition:none}
}

/* v19 — Kalkulation als Link speichern */
.ke-pc3__share{margin-top:14px}
.ke-pc3__share .button{width:100%;justify-content:center;gap:9px}
.ke-pc3__share-note{margin:10px 0 0;padding:10px 12px;border-radius:10px;
  background:var(--red-soft);color:#8d2026;font-size:12.5px;line-height:1.5}

/* ==========================================================================
   v20 — Hover-Akzent, Zurück-Links, Social-Buttons, Bewertungs-Aufruf
   ========================================================================== */

/* 1. Leistungen-Kacheln: der rote Strich läuft bei Hover nach rechts durch,
      dieselbe Sprache wie die wachsende Linie bei den Projekte-Karten. */
.service-card__line:before{transition:width .45s cubic-bezier(.22,.8,.24,1)}
.service-card:hover .service-card__line:before{width:100%}

/* 2. Zurück-Link oben in der Einleitung von Detailseiten (Leistungen,
      Preisrechner). Gleiche Pfeil-Optik wie im Rest der Seite, nur gespiegelt
      und mit kleiner Bewegung nach links beim Überfahren. */
.ke-back-link{display:inline-flex;align-items:center;gap:8px;margin-bottom:22px;
  color:#ffffffad;font-size:13px;font-weight:800;letter-spacing:.01em;text-decoration:none}
.ke-back-link svg{flex:0 0 auto;transition:transform .25s ease}
.ke-back-link:hover{color:#fff}
.ke-back-link:hover svg{transform:translateX(-4px)}

/* 3. Footer: Social-Buttons als eigene, auffällige Kreis-Buttons statt
      weisser Textlinks unter "Rechtliches"; Impressum/Datenschutz in der
      Fusszeile. */
.site-footer__social-row{display:flex;gap:10px}
.site-footer__social-link{display:inline-flex!important;align-items:center;justify-content:center;
  gap:0!important;width:40px;height:40px;border-radius:50%;background:var(--red);
  transition:background .2s ease,transform .2s ease}
.site-footer__social-link::before{width:18px!important;height:18px!important;flex:0 0 18px!important}
.site-footer__social-link:hover{background:var(--red-dark);transform:translateY(-3px)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}
.site-footer__legal-row{display:flex;gap:18px}
.site-footer__legal-row a{color:#ffffff99;font-size:11px}
.site-footer__legal-row a:hover{color:#fff}
.site-footer__bottom{flex-wrap:wrap;gap:10px 20px}

/* 4. Aufruf, selbst eine Bewertung zu hinterlassen – unter den drei echten
      Google-Bewertungen auf der Startseite. Als ruhige Zitat-Form gestaltet. */
.ke-review-cta{text-align:center;max-width:520px;margin:44px auto 0;padding-top:34px;
  border-top:1px solid var(--line)}
.ke-review-cta__quote{position:relative;margin:0 0 24px;padding:0 6px;color:var(--ink);
  font-size:17px;font-weight:800;line-height:1.5;font-style:normal}
.ke-review-cta__mark{position:absolute;top:-28px;left:50%;transform:translateX(-50%);
  font-size:56px;font-weight:900;color:#d91e2524;line-height:1;
  font-family:Georgia,"Times New Roman",serif;pointer-events:none}
.ke-review-cta__btn svg{transition:transform .25s ease}
.ke-review-cta__btn:hover{border-color:var(--red);color:var(--red-dark);background:#fff6f5}
.ke-review-cta__btn:hover svg{transform:translateX(4px)}
@media(max-width:640px){
  .ke-review-cta__quote{font-size:15px;padding:0}
}
@media(max-width:340px){
  .ke-review-cta__quote{font-size:13.5px}
}

/* 5. Bewertungs-Karten: etwas mehr Bewegung beim Überfahren, dieselbe
      Sprache wie die Leistungen-Kacheln (wachsender roter Strich) plus ein
      dezentes Heranzoomen der Avatar-Kreise. */
.review-card:before{transition:width .4s cubic-bezier(.22,.8,.24,1)}
.review-card:hover:before{width:130px}
.review-card__avatar{transition:transform .3s ease}
.review-card:hover .review-card__avatar{transform:scale(1.08)}

@media(prefers-reduced-motion:reduce){
  .service-card__line:before,.ke-back-link svg,.site-footer__social-link,
  .ke-review-cta__btn svg,.review-card:before,.review-card__avatar{transition:none}
}

/* v25 — Abstand zwischen Zwischenüberschriften und Fliesstext auf den
   Leistungen-Seiten mit mehreren Absätzen (Elektroinstallation, Photovoltaik,
   Baustrom, Wallbox). Die ursprüngliche Vorlage kannte pro Seite nur eine
   Überschrift; bei mehreren hintereinander wirkte es ohne diesen Abstand
   zusammengeklebt. Erste Überschrift bleibt wie gehabt direkt unter dem Foto. */
.service-detail-grid article h2{margin:0 0 14px}
.service-detail-grid article h2:not(:first-child){margin-top:36px}
/* v26 — Grösserer Absatzabstand innerhalb der Leistungen-Fliesstexte:
   14px wirkte zwischen zwei aufeinanderfolgenden Absätzen zu knapp.
   Eigene, spezifischere Regel (überschreibt ".section p+p" nur hier,
   Über-uns bleibt unverändert bei 14px). Der Abstand steht bewusst auf
   margin-top des zweiten Absatzes (nicht margin-bottom des ersten) -
   nur so entsteht die Lücke auch vor dem allerersten Folge-Absatz
   nach einer Überschrift, statt erst ab dem dritten Absatz zu wirken. */
.service-detail-grid article p+p{margin-block:26px 0}

/* ============================================================================
   v27 — /projekte/: gleich hohe Bilder, Redaktionstext und "Mehr lesen"
   ----------------------------------------------------------------------------
   Ausgangslage: die Höhe des Fotos richtete sich nach der Textmenge daneben,
   ein längerer Beschreibungstext zog also das Bild in die Länge.

   1. Bilder haben ein festes Verhältnis. Hoch- und Querformat füllen denselben
      Rahmen (Bildausschnitt statt Verzerrung); das Bild liegt absolut im
      Rahmen, damit seine Eigenhöhe in der Layout-Berechnung keine Rolle mehr
      spielt.
   2. Der Beschreibungstext kommt als fertiges HTML aus der Projektverwaltung.
      Absätze, Leerzeilen, Fettungen, Listen und Zwischenüberschriften behalten
      dadurch die im Editor eingegebene Form.
   3. Die Karte zeigt davon nur die ersten Zeilen (--ke-zeilen), alles Weitere
      erscheint über "Mehr lesen". Die Kartenhöhe ist damit unabhängig von der
      Textmenge. Mehrere Karten lassen sich gleichzeitig öffnen; eine geöffnete
      Karte zieht ihre Nachbarkarte nicht mehr mit in die Länge.
   Cache-Kennung dieser Runde: 34.
   ========================================================================= */

/* --- 1. Feste Bildverhältnisse ------------------------------------------ */
.ke-proj-card__media{aspect-ratio:3/2;height:auto;min-height:0;max-height:none}
.ke-proj-card__media img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;display:block}

@media (min-width:1100px){
  /* Breite Karte: das Bild füllt die Kartenhöhe vollständig aus, damit neben
     einem geöffneten Text keine leere Fläche entsteht. */
  .ke-proj-card--wide .ke-proj-card__media{aspect-ratio:auto;height:auto;
    min-height:340px;max-height:none}
}
@media (max-width:1099px){
  .ke-proj-card--wide .ke-proj-card__media{aspect-ratio:3/2;min-height:0;max-height:none}
}

/* --- 2. Raster: geöffnete Karte streckt die Nachbarkarte nicht ----------- */
.ke-proj-card{align-self:start}
.ke-proj-card--invite{align-self:stretch}

/* --- 3. Fliesstext aus der Projektverwaltung ---------------------------- */
.ke-proj-card__text{margin:0;color:var(--muted);font-size:14.5px;line-height:1.62}
.ke-proj-card__text>:first-child{margin-top:0}
.ke-proj-card__text>:last-child{margin-bottom:0}
.ke-proj-card__text p{margin:0 0 12px}
.ke-proj-card__text strong,.ke-proj-card__text b{color:var(--ink);font-weight:800}
.ke-proj-card__text em,.ke-proj-card__text i{font-style:italic}
.ke-proj-card__text h1,.ke-proj-card__text h2,.ke-proj-card__text h3,
.ke-proj-card__text h4,.ke-proj-card__text h5,.ke-proj-card__text h6{
  margin:18px 0 8px;color:var(--ink);font-size:16px;line-height:1.25;
  letter-spacing:-.02em;font-weight:900}
.ke-proj-card__text ul,.ke-proj-card__text ol{margin:0 0 12px;padding-left:20px}
.ke-proj-card__text ul{list-style:disc}
.ke-proj-card__text ol{list-style:decimal}
.ke-proj-card__text li{margin:0 0 5px}
.ke-proj-card__text a{color:var(--red);text-decoration:underline}
.ke-proj-card__text blockquote{margin:12px 0;padding-left:14px;
  border-left:3px solid var(--line);font-style:italic}
.ke-proj-card__text img{max-width:100%;height:auto;border-radius:10px}
.ke-proj-card__text hr{margin:14px 0;border:0;border-top:1px solid var(--line)}

/* --- 4. Sichtbare Textmenge begrenzen ----------------------------------- */
.ke-proj-card__text{--ke-zeilen:3;position:relative;
  max-height:calc(var(--ke-zeilen) * 1.62em);overflow:hidden}
.ke-proj-card__text.is-open{max-height:none;overflow:visible}
/* Weicher Auslauf an der Schnittkante, nur solange gekürzt wird. */
.ke-proj-card__text.ke-hat-mehr:not(.is-open):after{content:"";position:absolute;
  left:0;right:0;bottom:0;height:20px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,var(--white) 92%)}
@media (min-width:1100px){
  /* Breite Karte hat mehr Platz neben dem Bild. */
  .ke-proj-card--wide .ke-proj-card__text{--ke-zeilen:8}
}
/* Ohne JavaScript gibt es keine Schaltfläche – dann vollständig anzeigen. */
html:not(.ke-js) .ke-proj-card__text{max-height:none;overflow:visible}
@media print{ .ke-proj-card__text{max-height:none!important;overflow:visible!important} }

/* --- 5. Schaltfläche "Mehr lesen" --------------------------------------- */
/* Gleiche Schriftgrösse, Stärke und Farbe wie "Ähnliches Projekt anfragen".
   align-self verhindert, dass die Schaltfläche als Flex-Element über die
   ganze Spaltenbreite läuft und ihre Beschriftung dadurch mittig steht. */
.ke-proj-card__toggle{align-self:flex-start;display:inline-block;width:auto;
  margin:2px 0 0;padding:0;border:0;background:none;text-align:left;
  font:inherit;font-size:13.5px;font-weight:850;color:var(--red);cursor:pointer;
  text-decoration:underline;text-underline-offset:3px}
.ke-proj-card__toggle:hover{opacity:.75}
