
:root{--green:#244D32;--green2:#173D28;--brown:#8B572A;--cream:#F5F3EE;--ink:#171917;--line:#D8D5CE;--white:#fff;--max:1240px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:#fff;line-height:1.6}
a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.wrap{width:min(var(--max),calc(100% - 48px));margin:auto}
header{height:104px;background:var(--cream);display:flex;align-items:center;position:sticky;top:0;z-index:20;border-bottom:1px solid #eee}
.nav{display:flex;align-items:center;gap:34px;width:100%}.logo{width:135px;margin-right:auto}.navlinks{display:flex;gap:30px;font-size:13px;font-weight:700;letter-spacing:.04em}
.phone,.btn{border:1px solid var(--green);padding:12px 18px;font-weight:700;font-size:13px;display:inline-flex;align-items:center;gap:8px;transition:.25s}
.btn.fill{background:var(--green);color:#fff}.btn:hover,.phone:hover{transform:translateY(-1px);background:var(--green);color:#fff}
.hero{min-height:650px;display:grid;grid-template-columns:1fr 1fr}.hero-copy{background:var(--green2);color:#fff;display:flex;align-items:center}.hero-copy>div{max-width:610px;margin-left:max(24px,calc((100vw - var(--max))/2));padding:70px 50px 70px 0}
.kicker{font-size:12px;color:var(--brown);font-weight:800;letter-spacing:.12em;text-transform:uppercase}.hero h1,.pagehero h1{font-size:clamp(48px,6vw,88px);line-height:.94;margin:18px 0 28px;letter-spacing:-.055em}.hero p{font-size:19px;max-width:520px;color:#e7eee9}
.hero-img,.split-img{background:linear-gradient(135deg,#8c6a48,#e3c18d);min-height:480px;position:relative;overflow:hidden}
.hero-img:after,.split-img:after{content:"Beispielbild – später durch echtes Projektfoto ersetzen";position:absolute;bottom:18px;right:18px;background:#ffffffdd;padding:8px 11px;font-size:11px;color:#555}
section{padding:110px 0}.cream{background:var(--cream)}.dark{background:var(--green2);color:#fff}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
h2{font-size:clamp(38px,4vw,62px);line-height:1.04;letter-spacing:-.045em;margin:12px 0 26px;color:var(--green)}.dark h2{color:#fff}
.lead{font-size:18px;max-width:600px;color:#555}.service-list{border-top:1px solid var(--line)}
.service-row{display:grid;grid-template-columns:48px 1fr 30px;align-items:center;border-bottom:1px solid var(--line);padding:24px 0;cursor:pointer}
.service-row .num{color:var(--brown);font-size:12px}.service-row strong{font-size:22px;color:var(--green);transform-origin:left center;transition:transform .25s ease-out,color .25s}.service-row .arrow{transition:transform .25s ease-out}
.service-row:hover strong{transform:scale(1.08);color:var(--brown)}.service-row:hover .arrow{transform:translateX(6px)}
.projects{display:grid;grid-template-columns:repeat(2,1fr);gap:34px}.project img{aspect-ratio:4/3;object-fit:cover;background:#ddd;transition:transform .4s ease}.project .crop{overflow:hidden}.project:hover img{transform:scale(1.025)}
.project h3{color:var(--green);font-size:14px;letter-spacing:.04em;margin:14px 0 0}.project p{margin:2px 0;color:#777;font-size:13px}
.pagehero{background:var(--cream);padding:110px 0 90px}.pagehero h1{color:var(--green);max-width:900px}.pagehero p{max-width:650px;font-size:18px;color:#555}
.alt{display:grid;grid-template-columns:1fr 1fr;min-height:520px}.alt .text{padding:90px max(40px,calc((100vw - var(--max))/2));display:flex;flex-direction:column;justify-content:center}.alt:nth-child(even) .text{background:var(--cream)}
.alt h2{font-size:52px}.placeholder{background:linear-gradient(135deg,#d2b48c,#7b5b3d);min-height:480px;position:relative}.placeholder:after{content:"Beispielbild";position:absolute;bottom:16px;right:16px;background:#fff;padding:7px 10px;font-size:11px}
.process{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.step{padding:38px;border-right:1px solid var(--line)}.step:last-child{border:0}.step b{color:var(--brown);font-size:12px}.step h3{color:var(--green);font-size:20px}
.contactbar{padding:68px 0}.contactgrid{display:grid;grid-template-columns:1.3fr auto 1fr;gap:55px;align-items:center}.contactgrid h2{font-size:46px;margin:8px 0 10px}
footer{background:var(--cream);padding:40px 0}.foot{display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;gap:25px;font-size:12px}.foot img{width:110px}.foot nav{display:flex;justify-content:center;gap:24px}.legal{text-align:right}
.form{display:grid;gap:15px}.form input,.form textarea{width:100%;padding:15px;border:1px solid #bbb;background:transparent;font:inherit}.form textarea{min-height:130px}
.map{height:350px;background:var(--cream);display:flex;align-items:center;justify-content:center;color:var(--green);font-weight:800;font-size:28px}
@media(max-width:800px){.wrap{width:min(100% - 40px,var(--max))}header{height:86px}.navlinks{display:none}.logo{width:112px}.phone{font-size:0;padding:11px}.phone:after{content:"☎";font-size:18px}
.hero,.grid2,.alt,.contactgrid,.foot{grid-template-columns:1fr}.hero{min-height:0}.hero-copy>div{margin:0;padding:70px 24px}.hero-img{min-height:360px}
section{padding:75px 0}.grid2{gap:45px}.projects{grid-template-columns:1fr}.alt .text{padding:70px 24px}.alt .placeholder{min-height:360px}.process{grid-template-columns:1fr}.step{border-right:0;border-bottom:1px solid var(--line)}
.contactgrid{gap:25px}.foot nav{justify-content:flex-start;flex-wrap:wrap}.legal{text-align:left}.service-row:hover strong{transform:none}.pagehero{padding:75px 0}}

/* Homepage sections matching the approved concept */
.home-services{padding:90px 0 80px}
.home-services .grid2{grid-template-columns:.95fr 1.25fr;gap:90px;align-items:start}
.home-services h2{font-size:clamp(36px,3.5vw,56px)}
.home-projects{padding:70px 0 100px}
.home-projects-grid{display:grid;grid-template-columns:.42fr 1.58fr;gap:70px;align-items:start}
.home-projects-intro{padding-top:6px}
.home-projects-intro h2{font-size:clamp(36px,3.5vw,56px)}
.home-projects-intro .more-link{display:inline-block;margin-top:54px;font-size:13px;font-weight:700;border-bottom:1px solid var(--brown);padding-bottom:5px}
.home-projects .projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.home-projects .project img{aspect-ratio:16/10}
.home-projects .project h3{margin-top:12px;font-size:13px}
.home-projects .project p{font-size:12px}
@media(max-width:800px){
  .home-services .grid2,.home-projects-grid{grid-template-columns:1fr;gap:44px}
  .home-projects-intro .more-link{margin-top:22px}
  .home-projects .projects{grid-template-columns:1fr}
}


/* ===== V3 desktop refinements agreed with the user ===== */

/* Header: centered container, horizontal logo, softer buttons */
header{height:100px}
.nav{max-width:1280px;margin:0 auto;padding:0 24px;gap:38px}
.logo{width:220px;margin-right:auto}
.navlinks{gap:34px}
.phone,.btn,.outline-link{
  border-radius:7px;
  transition:background-color .25s ease,color .25s ease,border-color .25s ease,transform .25s ease;
}
.phone{padding:13px 20px}
.btn{padding:13px 20px}
.btn .arrow,.outline-link .arrow{display:inline-block;transition:transform .25s ease}
.btn:hover .arrow,.outline-link:hover .arrow{transform:translateX(6px)}
.outline-link{
  border:1px solid var(--green);
  padding:13px 20px;
  font-weight:700;
  font-size:13px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  width:max-content;
}
.outline-link:hover{background:var(--green);color:#fff}
.phone:hover{background:var(--green);color:#fff}

/* Homepage hero: exact user photo, no green half-panel */
.hero{
  min-height:650px;
  display:block;
  position:relative;
  background-image:url("hero-startseite.webp");
  background-size:cover;
  background-position:center 32%;
  color:#fff;
  isolation:isolate;
}
.hero:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(90deg,rgba(0,0,0,.62) 0%,rgba(0,0,0,.34) 38%,rgba(0,0,0,.08) 66%,rgba(0,0,0,0) 100%);
}
.hero-copy{background:transparent;min-height:650px;display:flex;align-items:center}
.hero-copy>div{
  width:min(1240px,calc(100% - 48px));
  max-width:none;
  margin:0 auto;
  padding:70px 0;
}
.hero-copy .hero-inner{max-width:620px}
.hero h1{font-size:clamp(64px,6vw,92px)}
.hero-img{display:none}

/* Homepage project headline and button */
.home-projects-intro h2{max-width:360px}
.home-projects-intro .more-link{
  border:1px solid var(--green);
  border-radius:7px;
  padding:13px 20px;
  margin-top:54px;
  font-size:13px;
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:10px;
  transition:background-color .25s ease,color .25s ease;
}
.home-projects-intro .more-link .arrow{display:inline-block;transition:transform .25s ease}
.home-projects-intro .more-link:hover{background:var(--green);color:#fff}
.home-projects-intro .more-link:hover .arrow{transform:translateX(6px)}

/* Leistungen: only the "Mehr erfahren" links receive the new button treatment */
.alt .text .outline-link{margin-top:18px}

/* Unternehmen: same button system for Geschichte + Team */
.company-more{margin-top:24px}

/* White outline variant in dark CTA */
.btn.white-outline{border-color:#fff;color:#fff;background:transparent}
.btn.white-outline:hover{background:#fff;color:var(--green2)}

/* Keep desktop the focus for now; existing responsive rules remain as a later base. */
.detail-intro{padding:110px 0 100px;background:var(--cream)}.detail-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:120px;align-items:start}.detail-intro h1{font-size:clamp(48px,5vw,76px);line-height:1.02;color:var(--green);margin:18px 0 28px}.service-accordion>.kicker{margin-bottom:18px}.service-detail{border-top:1px solid rgba(30,76,48,.22)}.service-detail:last-child{border-bottom:1px solid rgba(30,76,48,.22)}.service-detail summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:42px 1fr 28px;gap:12px;align-items:center;padding:24px 0;font-weight:700;color:var(--green);font-size:18px}.service-detail summary::-webkit-details-marker{display:none}.service-num{font-size:12px;color:var(--brown)}.service-arrow{transition:transform .25s ease;text-align:right}.service-detail[open] .service-arrow{transform:rotate(90deg)}.service-detail-body{padding:0 40px 26px 54px;max-width:700px}.service-detail-body h3{font-size:24px;color:var(--green);margin:0 0 10px}.service-detail-body p{line-height:1.7;margin:0}.service-note{margin-top:22px;padding:18px 20px;background:#efe9df;border-radius:7px}.service-note strong{font-size:11px;color:var(--brown);letter-spacing:.08em}.service-note p{margin-top:7px;font-size:14px}.detail-projects{padding:95px 0;background:#fff}.detail-projects h2{font-size:44px;color:var(--green);margin:12px 0 36px}.detail-photo-grid{display:grid;grid-template-columns:1.15fr .85fr .85fr;gap:18px}.detail-photo-grid .placeholder{height:300px}.detail-cta{padding:90px 0;background:var(--cream)}.detail-cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.detail-cta h2{font-size:46px;color:var(--green);margin:0 0 18px}.detail-cta .placeholder{height:330px}

/* V5: ruhiger Accordion-Pfeil statt sichtbarer Rotation */
.service-arrow{
  position:relative;
  width:22px;
  height:22px;
  display:block;
  text-align:right;
}
.service-arrow::before,
.service-arrow::after{
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
  transition:opacity .22s ease, transform .22s ease;
  font-size:18px;
  font-weight:400;
  line-height:1;
}
.service-arrow::before{
  content:"→";
  opacity:1;
  transform:translateY(-50%) translateX(0);
}
.service-arrow::after{
  content:"↓";
  opacity:0;
  transform:translateY(-55%) translateY(-2px);
}
.service-detail[open] .service-arrow{
  transform:none;
}
.service-detail[open] .service-arrow::before{
  opacity:0;
  transform:translateY(-50%) translateX(3px);
}
.service-detail[open] .service-arrow::after{
  opacity:1;
  transform:translateY(-50%) translateY(0);
}

/* Inhalt öffnet ruhig; native Details-Logik bleibt erhalten */
.service-detail-body{
  animation:serviceReveal .24s ease both;
}
@keyframes serviceReveal{
  from{opacity:0; transform:translateY(-4px)}
  to{opacity:1; transform:translateY(0)}
}

/* ===== V6 review refinements ===== */

/* Header navigation */
.navlinks .nav-item{
  color:var(--brown);
  font-weight:600;
  transform:scale(1);
  transform-origin:center;
  transition:transform .22s ease,font-weight .22s ease,color .22s ease;
  display:inline-block;
}
.navlinks .nav-item:hover{
  transform:scale(1.075);
  font-weight:800;
}
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  transform:scale(1.075);
  font-weight:800;
}

/* Footer logo mirrors header presence */
.foot img{width:220px;max-width:100%}
footer{padding:48px 0}
.foot{align-items:center}

/* Accordion arrow: never rotates or changes symbol */
.service-arrow{
  display:inline-block !important;
  width:auto !important;
  height:auto !important;
  position:static !important;
  color:var(--green);
  opacity:1 !important;
  transform:translateX(0) !important;
  transition:transform .22s ease,color .22s ease !important;
}
.service-arrow::before,.service-arrow::after{content:none !important;display:none !important}
.service-detail[open] .service-arrow{
  transform:translateX(5px) !important;
  color:var(--brown);
}

/* Recruitment */
.recruit-section{padding:100px 0;background:var(--cream)}
.recruit-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:100px;align-items:center}
.recruit-grid h2{font-size:clamp(42px,4vw,60px)}
.job-list{border-top:1px solid var(--line)}
.job-list>div{display:grid;grid-template-columns:46px 1fr;border-bottom:1px solid var(--line);padding:23px 0;align-items:center}
.job-list span{color:var(--brown);font-size:12px}
.job-list strong{color:var(--green);font-size:20px}

/* Team */
.team-hero{padding-bottom:70px}
.team-page{padding:40px 0 110px}
.team-owner{max-width:560px;margin:0 auto 100px;text-align:center}
.team-photo{background:#d8d1c6;aspect-ratio:4/5;display:flex;align-items:center;justify-content:center;overflow:hidden}
.team-photo span{font-size:11px;letter-spacing:.14em;color:rgba(30,76,48,.5)}
.team-photo-owner{max-width:460px;margin:0 auto}
.team-meta{padding-top:18px}
.team-meta h2,.team-meta h3{margin:0;color:var(--green);font-size:20px;letter-spacing:.01em}
.team-meta p{margin:6px 0 0;color:var(--brown);font-size:14px}
.team-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:70px 42px;max-width:980px;margin:0 auto}

/* Kontakt */
.contact-main{align-items:start}
.contact-direct h2{margin-top:0}
.contact-rows{border-top:1px solid var(--line);margin-top:34px}
.contact-row{display:grid;grid-template-columns:46px 1fr 28px;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:24px 0}
.contact-row .num{font-size:12px;color:var(--brown)}
.contact-row strong{color:var(--green);font-size:19px;font-weight:700}
.contact-row .arrow{color:var(--green);transition:transform .22s ease,color .22s ease}
.contact-row:hover .arrow{transform:translateX(6px);color:var(--brown)}
.contact-row:hover strong{color:var(--brown)}
.form select{width:100%;padding:15px;border:1px solid #bbb;background:transparent;font:inherit;color:#555}
.location-section{padding:95px 0;background:var(--cream)}
.location-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:80px;align-items:center}
.location-grid h2{margin-top:0}
.map-placeholder{min-height:340px;background:#e5e0d7;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--green);gap:10px}
.map-placeholder span{font-size:26px;font-weight:800}
.map-placeholder small{color:#777}

/* Bewerbung deep link helper styling */


/* ===== V7: ruhigere Header-Navigation ohne Layout-Verschiebung ===== */
.navlinks{
  display:flex;
  align-items:center;
  gap:18px;
}

/* Feste Layout-Boxen verhindern, dass andere Punkte beim Hover verrutschen */
.navlinks .nav-item{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:34px;
  color:var(--brown);
  font-weight:600;
  transform:scale(1);
  transform-origin:center center;
  transition:
    transform 320ms cubic-bezier(.2,.8,.2,1),
    color 260ms ease,
    font-weight 260ms ease;
  
}

/* Breiten passend zu den vier Begriffen */
.navlinks .nav-leistungen{width:104px}
.navlinks .nav-projekte{width:88px}
.navlinks .nav-unternehmen{width:132px}
.navlinks .nav-kontakt{width:82px}

/* Hover: nur der jeweilige Text bewegt sich optisch */
.navlinks .nav-item:hover{
  transform:scale(1.08);
  font-weight:800;
}

/* Aktive Seite bleibt hervorgehoben, ohne Layout-Shift */
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  transform:scale(1.06);
  font-weight:800;
}

/* Aktiver Punkt darf beim Hover nur ganz leicht nachlegen */
body[data-active="leistungen"] .nav-leistungen:hover,
body[data-active="projekte"] .nav-projekte:hover,
body[data-active="unternehmen"] .nav-unternehmen:hover,
body[data-active="kontakt"] .nav-kontakt:hover{
  transform:scale(1.09);
}


/* ===== V8: noch weichere Navigation =====
   Wichtig: font-weight wird beim Hover NICHT mehr animiert.
   Das vermeidet das sichtbare "Ruckeln" durch neue Glyphenbreiten. */
.navlinks .nav-item{
  transform:translate3d(0,0,0) scale(1);
  transition:
    transform 420ms cubic-bezier(.16,1,.3,1),
    color 300ms cubic-bezier(.16,1,.3,1);
  backface-visibility:hidden;
  -webkit-font-smoothing:antialiased;
  
}

/* Nur optische Bewegung des Wortes */
.navlinks .nav-item:hover{
  transform:translate3d(0,-1px,0) scale(1.055);
  font-weight:600;
}

/* Aktive Seite: dauerhaft kräftig, ohne Animation des Gewichts */
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  transform:translate3d(0,0,0) scale(1.045);
  font-weight:800;
}

/* Aktiver Punkt bewegt sich beim Hover nur minimal */
body[data-active="leistungen"] .nav-leistungen:hover,
body[data-active="projekte"] .nav-projekte:hover,
body[data-active="unternehmen"] .nav-unternehmen:hover,
body[data-active="kontakt"] .nav-kontakt:hover{
  transform:translate3d(0,-1px,0) scale(1.065);
  font-weight:800;
}


/* ===== V9: Unsere Geschichte – Zeitleiste ===== */
.history-hero{padding-bottom:80px}
.history-section{position:relative;padding:90px 0 120px;background:#fff}
.history-section .wrap{position:relative;max-width:1180px}
.history-line{
  position:absolute;
  left:50%;
  top:20px;
  bottom:20px;
  width:1px;
  background:var(--brown);
  opacity:.5;
  transform:translateX(-50%);
}
.history-item{
  display:grid;
  grid-template-columns:1fr 70px 1fr;
  align-items:center;
  gap:28px;
  min-height:320px;
  margin:0 0 54px;
}
.history-dot{
  width:12px;
  height:12px;
  border:2px solid var(--brown);
  background:#fff;
  border-radius:50%;
  justify-self:center;
  z-index:2;
}
.history-photo{
  min-height:260px;
  background:#d8d1c6;
  display:flex;
  align-items:center;
  justify-content:center;
}
.history-photo span{
  font-size:11px;
  letter-spacing:.14em;
  color:rgba(30,76,48,.5);
}
.history-content{max-width:430px}
.history-left .history-content{justify-self:start}
.history-right .history-content{justify-self:end}
.history-year{
  color:var(--brown);
  font-weight:800;
  font-size:13px;
  letter-spacing:.12em;
  margin-bottom:12px;
}
.history-content h2{
  color:var(--green);
  font-size:34px;
  line-height:1.08;
  margin:0 0 14px;
}
.history-content p{
  margin:0;
  line-height:1.7;
}
.history-end{
  padding:90px 0;
  background:var(--cream);
  text-align:center;
}
.history-end h2{
  color:var(--green);
  font-size:46px;
  margin:0 0 26px;
}
@media(max-width:800px){
  .history-line{left:18px}
  .history-item{grid-template-columns:36px 1fr;gap:18px;min-height:0;margin-bottom:70px}
  .history-left .history-photo,.history-right .history-photo{grid-column:2}
  .history-left .history-dot,.history-right .history-dot{grid-column:1;grid-row:1}
  .history-left .history-content,.history-right .history-content{grid-column:2;justify-self:start}
  .history-right .history-content{grid-row:1}
  .history-right .history-photo{grid-row:2}
  .history-left .history-photo{grid-row:2}
}


/* ===== V11: Header-Navigation in Schulz-Grün ===== */
.navlinks .nav-item,
.navlinks .nav-item:visited,
.navlinks .nav-item:hover,
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  color:var(--green);
}


/* ===== V13: Homepage Intro ===== */
html.intro-lock,
html.intro-lock body{
  overflow:hidden;
}
.intro-overlay{
  position:fixed;
  inset:0;
  z-index:99999;
  background:#111;
  display:grid;
  place-items:center;
  overflow:hidden;
  cursor:pointer;
  opacity:1;
  visibility:visible;
  transition:
    opacity 700ms cubic-bezier(.16,1,.3,1),
    visibility 700ms step-end;
}
.intro-bg{
  position:absolute;
  inset:-3%;
  background-image:url("hero-startseite.webp");
  background-size:cover;
  background-position:center 30%;
  transform:scale(1.04);
  animation:introDrift 9s ease-in-out infinite alternate;
}
.intro-shade{
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 72% 40%, rgba(166,97,34,.16), transparent 28%),
    linear-gradient(180deg,rgba(0,0,0,.24),rgba(0,0,0,.52));
}
.intro-content{
  position:relative;
  z-index:2;
  min-height:100%;
  width:min(920px,calc(100% - 48px));
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  color:#fff;
  text-align:center;
}
.intro-logo{
  width:min(440px,72vw);
  height:auto;
  filter:brightness(0) invert(1);
  opacity:0;
  transform:translateY(12px) scale(.97);
  animation:introLogoIn 1100ms 180ms cubic-bezier(.16,1,.3,1) forwards;
}
.intro-start{
  margin-top:72px;
  font-size:12px;
  font-weight:700;
  letter-spacing:.18em;
  opacity:0;
  animation:introTextIn 800ms 850ms ease forwards;
}
.intro-chevron{
  margin-top:18px;
  font-size:38px;
  line-height:1;
  opacity:0;
  animation:introChevron 1600ms 1150ms ease-in-out infinite;
}
.intro-overlay.is-leaving{
  opacity:0;
  visibility:hidden;
}
.intro-overlay.is-leaving .intro-content{
  transform:scale(.985);
  transition:transform 700ms cubic-bezier(.16,1,.3,1);
}
@keyframes introDrift{
  from{transform:scale(1.04) translate3d(0,0,0)}
  to{transform:scale(1.09) translate3d(-.6%,.4%,0)}
}
@keyframes introLogoIn{
  to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes introTextIn{
  to{opacity:.92}
}
@keyframes introChevron{
  0%,100%{opacity:.25;transform:translateY(0)}
  50%{opacity:.9;transform:translateY(7px)}
}
@media (prefers-reduced-motion: reduce){
  .intro-bg,.intro-logo,.intro-start,.intro-chevron{animation:none}
  .intro-logo,.intro-start,.intro-chevron{opacity:1;transform:none}
}

/* Recruiting section stays on the light background in the alternating sequence */
.recruit-section{background:#fff !important;}


/* ===== V14: Footer final ===== */
footer .foot{
  display:flex;
  align-items:center;
  justify-content:space-between;
}
footer .footnav,
footer .footer-nav{
  display:none !important;
}


/* ===== V15: Original Schulz-Holzbau-Logo im Homepage-Intro ===== */
.intro-logo{
  width:min(430px,72vw);
  height:auto;
  filter:none !important;
}


/* ===== V16: echtes Intro-Video ===== */
.intro-video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.intro-bg{display:none !important;}
.intro-shade{
  background:
    radial-gradient(circle at 62% 38%,rgba(156,92,34,.10),transparent 32%),
    linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.48));
}
/* Logo erhält einen sehr dezenten hellen Ruhebereich, damit die Originalfarben
   auf wechselnden Videoframes lesbar bleiben, ohne wie eine Box zu wirken. */
.intro-logo{
  filter:drop-shadow(0 2px 12px rgba(255,255,255,.18)) !important;
}

/* V17: browser-kompatibles Intro-Video */
.intro-video{
  display:block !important;
  background:#111;
}

/* ===== V18: Kontaktzeilen ohne Nummerierung ===== */
.contact-row{
  grid-template-columns:1fr 28px;
}


/* ===== V20: Leistungs-Unterseiten – Projekt-anfragen-Button ===== */
.btn.outline{
  background:transparent;
  color:var(--green);
  border:1px solid var(--green);
}
.btn.outline:hover{
  background:var(--green);
  color:#fff;
}


/* ===== V24: Intro-Scroll-Fix ===== */
html:not(.intro-lock),
html:not(.intro-lock) body{
  overflow:auto;
}


/* ==========================================================
   V25 — TABLET + MOBILE
   Desktop bleibt unverändert. Responsive Anpassungen starten
   unterhalb 1100px und werden unter 820px konsequent mobil.
   ========================================================== */

.mobile-menu-toggle{
  display:none;
  width:46px;
  height:46px;
  border:1px solid var(--green);
  border-radius:7px;
  background:transparent;
  padding:0;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:5px;
  cursor:pointer;
}
.mobile-menu-toggle span{
  display:block;
  width:20px;
  height:1.5px;
  background:var(--green);
  transition:transform .26s ease, opacity .2s ease;
}
html.mobile-menu-lock,
html.mobile-menu-lock body{
  overflow:hidden;
}

/* ---------- Tablet ---------- */
@media (max-width:1100px){
  :root{--max:960px}
  .wrap{width:min(var(--max),calc(100% - 56px))}
  section{padding:88px 0}

  header{height:94px}
  .nav{padding:0 28px;gap:20px}
  .logo{width:190px}
  .navlinks{gap:4px}
  .navlinks .nav-leistungen{width:96px}
  .navlinks .nav-projekte{width:82px}
  .navlinks .nav-unternehmen{width:122px}
  .navlinks .nav-kontakt{width:76px}
  .phone{padding:11px 14px;font-size:12px}

  .hero{min-height:600px}
  .hero-copy{min-height:600px}
  .hero h1{font-size:clamp(58px,7vw,76px)}
  .hero-copy .hero-inner{max-width:560px}

  .grid2{gap:56px}
  .home-services .grid2{gap:56px}
  .home-projects-grid{grid-template-columns:.52fr 1.48fr;gap:44px}

  .contactgrid{grid-template-columns:1.15fr auto .9fr;gap:32px}
  .contactgrid h2{font-size:40px}

  .detail-grid{gap:70px}
  .detail-photo-grid{grid-template-columns:1.05fr .95fr}
  .detail-photo-grid .placeholder:last-child{display:none}

  .recruit-grid{gap:60px}
  .history-section .wrap{max-width:960px}
  .history-item{gap:20px}

  .team-grid{gap:55px 32px}
}

/* ---------- Mobile Header / Navigation ---------- */
@media (max-width:820px){
  .wrap{width:min(100% - 40px,var(--max))}
  section{padding:68px 0}

  header{
    height:82px;
    position:sticky;
    top:0;
    z-index:1000;
  }
  .nav{
    padding:0 20px;
    gap:12px;
  }
  .logo{width:150px}
  .phone{
    margin-left:auto;
    font-size:0;
    width:46px;
    height:46px;
    padding:0;
    justify-content:center;
  }
  .phone::after{
    content:"☎";
    font-size:18px;
  }

  .mobile-menu-toggle{
    display:flex;
    order:3;
  }
  header.menu-open .mobile-menu-toggle span:nth-child(1){
    transform:translateY(6.5px) rotate(45deg);
  }
  header.menu-open .mobile-menu-toggle span:nth-child(2){
    opacity:0;
  }
  header.menu-open .mobile-menu-toggle span:nth-child(3){
    transform:translateY(-6.5px) rotate(-45deg);
  }

  .navlinks{
    position:fixed;
    inset:82px 0 0 0;
    z-index:999;
    background:var(--cream);
    display:flex !important;
    flex-direction:column;
    align-items:stretch;
    justify-content:flex-start;
    gap:0;
    padding:34px 24px 40px;
    opacity:0;
    visibility:hidden;
    transform:translateY(-8px);
    transition:opacity .26s ease, transform .26s ease, visibility .26s step-end;
    overflow:auto;
  }
  header.menu-open .navlinks{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
  }
  .navlinks .nav-item,
  body[data-active="leistungen"] .nav-leistungen,
  body[data-active="projekte"] .nav-projekte,
  body[data-active="unternehmen"] .nav-unternehmen,
  body[data-active="kontakt"] .nav-kontakt{
    width:100% !important;
    height:auto;
    justify-content:flex-start;
    padding:20px 4px;
    border-bottom:1px solid var(--line);
    transform:none !important;
    font-size:22px;
    font-weight:700;
    color:var(--green);
  }
  .navlinks .nav-item:hover{transform:none !important}

  /* Intro */
  .intro-logo{width:min(330px,72vw)}
  .intro-start{font-size:10px;line-height:1.5;margin-top:48px;padding:0 18px}
  .intro-chevron{font-size:30px}

  /* Homepage hero */
  .hero{
    min-height:calc(100svh - 82px);
    background-position:center 30%;
  }
  .hero-copy{
    min-height:calc(100svh - 82px);
    align-items:flex-end;
  }
  .hero-copy>div{
    width:100%;
    padding:90px 20px 54px;
  }
  .hero-copy .hero-inner{max-width:100%}
  .hero h1{
    font-size:clamp(46px,13vw,64px);
    line-height:.94;
    letter-spacing:-.045em;
  }
  .hero p{font-size:16px}
  .hero:before{
    background:linear-gradient(90deg,rgba(0,0,0,.58),rgba(0,0,0,.22)),
               linear-gradient(0deg,rgba(0,0,0,.45),transparent 55%);
  }

  /* Generic layouts */
  .grid2,
  .home-services .grid2,
  .home-projects-grid,
  .alt,
  .contactgrid,
  .detail-grid,
  .detail-cta-grid,
  .recruit-grid,
  .contact-main,
  .location-grid{
    grid-template-columns:1fr !important;
  }
  .grid2,
  .home-services .grid2,
  .home-projects-grid,
  .detail-grid,
  .detail-cta-grid,
  .recruit-grid,
  .location-grid{
    gap:42px;
  }

  h2{font-size:clamp(34px,10vw,48px)}
  .pagehero{padding:68px 0 58px}
  .pagehero h1{font-size:clamp(44px,12vw,60px)}
  .pagehero p{font-size:16px}

  /* Startseite */
  .home-services{padding:66px 0}
  .service-row{
    grid-template-columns:40px 1fr 24px;
    padding:21px 0;
  }
  .service-row strong{font-size:19px}
  .service-row:hover strong{transform:none}

  .home-projects{padding:66px 0 78px}
  .home-projects-intro .more-link{margin-top:18px}
  .home-projects .projects{grid-template-columns:1fr}
  .projects{grid-template-columns:1fr}

  /* Alternierende Leistungsübersicht: auf Mobile immer Text vor Bild */
  .alt{display:flex;flex-direction:column}
  .alt .text{padding:58px 20px}
  .alt .placeholder{min-height:300px}
  .alt:nth-child(even) .text{order:1}
  .alt:nth-child(even) .placeholder{order:2}
  .alt h2{font-size:clamp(38px,10vw,48px)}

  /* Leistungs-Detailseiten */
  .detail-intro{padding:70px 0 68px}
  .detail-intro h1{font-size:clamp(44px,12vw,60px)}
  .service-detail summary{
    grid-template-columns:34px 1fr 22px;
    padding:20px 0;
    font-size:16px;
  }
  .service-detail-body{padding:0 0 24px 46px}
  .service-detail-body h3{font-size:21px}
  .detail-photo-grid{grid-template-columns:1fr}
  .detail-photo-grid .placeholder,
  .detail-photo-grid .placeholder:last-child{display:flex;height:250px}
  .detail-cta .placeholder{height:260px}

  /* Prozess */
  .process{grid-template-columns:1fr}
  .step{border-right:0;border-bottom:1px solid var(--line);padding:30px 0}
  .step:last-child{border-bottom:0}

  /* Unternehmen / Recruiting */
  .job-list strong{font-size:17px}
  .recruit-section{padding:72px 0}

  /* Team */
  .team-owner{max-width:100%;margin-bottom:68px}
  .team-photo-owner{max-width:100%}
  .team-grid{grid-template-columns:1fr;gap:52px}
  .team-card .team-meta{text-align:left}

  /* Geschichte Timeline */
  .history-section{padding:70px 0 90px}
  .history-line{left:18px}
  .history-item{
    grid-template-columns:36px 1fr;
    gap:18px;
    min-height:0;
    margin-bottom:62px;
  }
  .history-left .history-photo,
  .history-right .history-photo{
    grid-column:2;
    grid-row:2;
    min-height:230px;
  }
  .history-left .history-dot,
  .history-right .history-dot{
    grid-column:1;
    grid-row:1;
  }
  .history-left .history-content,
  .history-right .history-content{
    grid-column:2;
    grid-row:1;
    justify-self:start;
  }
  .history-content h2{font-size:29px}

  /* Kontakt */
  .contact-main{gap:54px}
  .contact-row{
    grid-template-columns:1fr 24px;
    padding:20px 0;
  }
  .contact-row strong{font-size:17px}
  .form{gap:12px}
  .form input,.form textarea,.form select{font-size:16px}
  .location-section{padding:70px 0}
  .map-placeholder{min-height:250px}

  /* CTA */
  .contactbar{padding:58px 0}
  .contactgrid{gap:28px}
  .contactgrid h2{font-size:38px}
  .contactgrid>div:last-child{padding-top:6px}

  /* Footer */
  footer{padding:34px 0}
  footer .foot{
    flex-direction:column;
    align-items:flex-start;
    gap:22px;
  }
  .foot img{width:190px}
  .legal{text-align:left}

  /* Buttons */
  .btn,.outline-link,.phone{border-radius:7px}
}

/* ---------- Very small phones ---------- */
@media (max-width:430px){
  .wrap{width:calc(100% - 32px)}
  .nav{padding:0 16px}
  .logo{width:138px}
  .mobile-menu-toggle,.phone{width:42px;height:42px}
  .hero-copy>div{padding-left:16px;padding-right:16px}
  .hero h1{font-size:44px}
  .btn,.outline-link{padding:12px 15px;font-size:12px}
  .service-row strong{font-size:17px}
  .contact-row strong{font-size:15px}
}

/* ===== V27: Header-Navigation – grün normal, braun bei Hover und aktiver Seite ===== */
.navlinks .nav-item{
  color:var(--green);
}
.navlinks .nav-item:hover{
  color:var(--brown);
}
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  color:var(--brown);
}

/* ===== V28: Navigation – sauberes Ausgleiten ohne Nachruckeln =====
   Schriftgewicht bleibt konstant; die kräftigere Hover-Wirkung entsteht
   über Skalierung + minimalen Textschatten. Dadurch kein zweites Reflow/Raster-Ruckeln. */
@media (min-width: 901px){
  .navlinks .nav-item{
    font-weight:700 !important;
    transform:translate3d(0,0,0) scale(1) !important;
    transition:transform 280ms cubic-bezier(.22,1,.36,1), color 220ms ease-out, text-shadow 220ms ease-out !important;
    text-shadow:0 0 0 currentColor;
    
  }
  .navlinks .nav-item:hover{
    color:var(--brown) !important;
    font-weight:700 !important;
    transform:translate3d(0,0,0) scale(1.055) !important;
    text-shadow:.25px 0 0 currentColor,-.25px 0 0 currentColor;
  }
  body[data-active="leistungen"] .nav-leistungen,
  body[data-active="projekte"] .nav-projekte,
  body[data-active="unternehmen"] .nav-unternehmen,
  body[data-active="kontakt"] .nav-kontakt{
    color:var(--brown) !important;
    font-weight:700 !important;
    transform:translate3d(0,0,0) scale(1.045) !important;
    text-shadow:.25px 0 0 currentColor,-.25px 0 0 currentColor;
  }
  body[data-active="leistungen"] .nav-leistungen:hover,
  body[data-active="projekte"] .nav-projekte:hover,
  body[data-active="unternehmen"] .nav-unternehmen:hover,
  body[data-active="kontakt"] .nav-kontakt:hover{
    transform:translate3d(0,0,0) scale(1.06) !important;
  }
}


/* ===== V29: flüssiger Header-Hover ohne font-weight-Sprung =====
   Das Schriftgewicht wird NICHT mehr animiert/gewechselt.
   Der kräftigere Eindruck entsteht optisch über scale + text-shadow. */
.navlinks .nav-item{
  font-weight:600 !important;
  transition:
    transform 360ms cubic-bezier(.16,1,.3,1),
    color 260ms ease,
    text-shadow 260ms ease !important;
  text-shadow:0 0 0 rgba(0,0,0,0);
  transform:scale(1);
}

/* Hover: größer + optisch kräftiger + braun, ohne neues Glyphen-Rendering */
.navlinks .nav-item:hover{
  font-weight:600 !important;
  color:var(--brown) !important;
  transform:scale(1.06);
  text-shadow:
    .22px 0 currentColor,
    -.22px 0 currentColor;
}

/* Aktive Seite bleibt braun und etwas kräftiger */
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  font-weight:600 !important;
  color:var(--brown) !important;
  transform:scale(1.045);
  text-shadow:
    .18px 0 currentColor,
    -.18px 0 currentColor;
}

/* Aktive Seite beim Hover nur minimal nachlegen */
body[data-active="leistungen"] .nav-leistungen:hover,
body[data-active="projekte"] .nav-projekte:hover,
body[data-active="unternehmen"] .nav-unternehmen:hover,
body[data-active="kontakt"] .nav-kontakt:hover{
  font-weight:600 !important;
  color:var(--brown) !important;
  transform:scale(1.06);
  text-shadow:
    .24px 0 currentColor,
    -.24px 0 currentColor;
}


/* ===== V30: Navigation nur größer + braun, kein Dickerwerden ===== */
.navlinks .nav-item{
  font-weight:600 !important;
  text-shadow:none !important;
  transform:scale(1);
  transform-origin:center center;
  transition:
    transform 320ms cubic-bezier(.22,.8,.2,1),
    color 260ms ease !important;
  
}

/* Hover: ausschließlich hervorheben durch Größe + Braun */
.navlinks .nav-item:hover{
  font-weight:600 !important;
  text-shadow:none !important;
  color:var(--brown) !important;
  transform:scale(1.08);
}

/* Aktive Seite: braun, aber normale Größe */
body[data-active="leistungen"] .nav-leistungen,
body[data-active="projekte"] .nav-projekte,
body[data-active="unternehmen"] .nav-unternehmen,
body[data-active="kontakt"] .nav-kontakt{
  font-weight:600 !important;
  text-shadow:none !important;
  color:var(--brown) !important;
  transform:scale(1);
}

/* Auch aktive Seite beim Hover nur größer */
body[data-active="leistungen"] .nav-leistungen:hover,
body[data-active="projekte"] .nav-projekte:hover,
body[data-active="unternehmen"] .nav-unternehmen:hover,
body[data-active="kontakt"] .nav-kontakt:hover{
  font-weight:600 !important;
  text-shadow:none !important;
  color:var(--brown) !important;
  transform:scale(1.08);
}


/* 2.7 – dezente Bildveredelung */
.projects .project .crop{border:1px solid rgba(36,77,50,.72);overflow:hidden}
.projects .project img{display:block;width:100%;transition:transform .45s ease}
@media (hover:hover) and (pointer:fine){.projects .project:hover img{transform:scale(1.04)}}
.team-photo,.history-photo,.detail-photo-grid .placeholder{transition:transform .45s ease,background-size .45s ease;overflow:hidden}
.detail-photo-grid .placeholder{border:1px solid rgba(36,77,50,.72)}
@media (hover:hover) and (pointer:fine){.team-card:hover .team-photo,.team-owner:hover .team-photo,.history-item:hover .history-photo{transform:scale(1.025)}}
.detail-photo-grid .placeholder{background-repeat:no-repeat!important;background-size:cover!important}
/* Leistungen: jedes austauschbare Bild läuft weich in den Hintergrund. */
.alt .placeholder{overflow:hidden}
.alt .placeholder:before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(90deg,var(--cream) 0%,rgba(245,243,238,.96) 7%,rgba(245,243,238,.72) 17%,rgba(245,243,238,.28) 29%,rgba(245,243,238,0) 43%)}
.alt .placeholder[style]:after,.detail-cta .placeholder[style]:after{display:none}
/* Detailseiten: CTA-Foto weich in Creme überblenden. */
.detail-cta .placeholder{overflow:hidden}
.detail-cta .placeholder:before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(90deg,var(--cream) 0%,rgba(245,243,238,.95) 8%,rgba(245,243,238,.62) 22%,rgba(245,243,238,.15) 38%,rgba(245,243,238,0) 52%)}
/* Karte wird erst nach aktiver Auswahl geladen. */
.v30-map{min-height:340px;background:#e5e0d7;position:relative;overflow:hidden}.v30-map-consent{min-height:340px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:28px;color:var(--green)}.v30-map-consent strong{font-size:26px}.v30-map-consent span{color:#555}.v30-map-consent small{max-width:420px;color:#777}.v30-map iframe{display:block;width:100%;height:340px;border:0}
.legal-copy{max-width:900px}.legal-copy h2{color:var(--green);font-size:30px;margin:42px 0 12px}.legal-copy h2:first-child{margin-top:0}.legal-copy h3{color:var(--green);font-size:19px;margin:28px 0 8px}.legal-copy p{line-height:1.75;margin:0 0 14px}.legal-copy a{color:var(--green)}
@media(max-width:820px){.alt .placeholder:before{background:linear-gradient(180deg,var(--cream) 0%,rgba(245,243,238,.72) 12%,rgba(245,243,238,0) 32%)}.detail-cta .placeholder:before{background:linear-gradient(180deg,var(--cream) 0%,rgba(245,243,238,.72) 14%,rgba(245,243,238,0) 38%)}.v30-map,.v30-map-consent{min-height:280px}.v30-map iframe{height:280px}}

@media (hover:hover) and (pointer:fine){.alt,.detail-cta-grid{overflow:hidden}.alt .placeholder:hover,.detail-cta .placeholder:hover{transform:scale(1.018)}}

/* ===== 2.7.1 – abgestimmte Verläufe Leistungen / Detail-CTA ===== */
/* Die weißen Leistungsblöcke laufen wirklich in Weiß aus; Creme-Blöcke bleiben Creme. */
.alt:nth-child(odd) .placeholder:before{
  background:linear-gradient(90deg,#fff 0%,rgba(255,255,255,.98) 10%,rgba(255,255,255,.86) 22%,rgba(255,255,255,.55) 35%,rgba(255,255,255,.20) 48%,rgba(255,255,255,0) 60%);
}
.alt:nth-child(even) .placeholder:before{
  background:linear-gradient(90deg,var(--cream) 0%,rgba(245,243,238,.98) 10%,rgba(245,243,238,.86) 22%,rgba(245,243,238,.55) 35%,rgba(245,243,238,.20) 48%,rgba(245,243,238,0) 60%);
}
/* CTA auf den Leistungs-Unterseiten: mehr Luft zwischen Text und Bild, Bild weiter rechts. */
@media(min-width:821px){
  .detail-cta-grid{gap:120px}
  .detail-cta .placeholder:before{
    background:linear-gradient(90deg,var(--cream) 0%,rgba(245,243,238,.98) 10%,rgba(245,243,238,.84) 24%,rgba(245,243,238,.48) 39%,rgba(245,243,238,.16) 52%,rgba(245,243,238,0) 64%);
  }
}
@media(max-width:820px){
  .alt:nth-child(odd) .placeholder:before{background:linear-gradient(180deg,#fff 0%,rgba(255,255,255,.82) 14%,rgba(255,255,255,.35) 27%,rgba(255,255,255,0) 42%)}
  .alt:nth-child(even) .placeholder:before{background:linear-gradient(180deg,var(--cream) 0%,rgba(245,243,238,.82) 14%,rgba(245,243,238,.35) 27%,rgba(245,243,238,0) 42%)}
}

/* ===== 2.8 – finale Bildlogik, CTA, Karte und ruhige Accordions ===== */
/* Normale Fotos erhalten den dünnen grünen Rahmen. Bilder mit weichem Auslauf bleiben rahmenlos. */
.grid2 > .placeholder,
.grid2 > div > .placeholder,
.team-photo,
.history-photo,
.detail-photo-grid .placeholder,
.projects .project .crop{
  border:1px solid rgba(36,77,50,.78);
}
.alt .placeholder,
.detail-cta .placeholder{border:0!important}

/* Projekt-CTA der Leistungs-Unterseiten: Foto bis an den rechten Fensterrand, ohne Verzerrung. */
@media(min-width:821px){
  .detail-cta{overflow:hidden}
  .detail-cta-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:120px}
  .detail-cta .placeholder{
    width:calc(100% + max(24px, (100vw - var(--max))/2));
    margin-right:calc(-1 * max(24px, (100vw - var(--max))/2));
    background-size:cover!important;
    transform:none;
  }
  .detail-cta .placeholder:hover{transform:none}
}

/* Permanente Standortkarte mit dem gleichen grünen Rahmen. */
.v30-map{border:1px solid rgba(36,77,50,.78);background:#e5e0d7}
.v30-map iframe{display:block;width:100%;height:340px;border:0}

/* Accordion: JS animiert die Höhe; Inhalt blendet zusätzlich ruhig ein. */
.service-detail{}
.service-detail-body{animation:none}
.service-detail[open] .service-detail-body{animation:serviceRevealSoft .46s cubic-bezier(.22,.8,.2,1) both}
@keyframes serviceRevealSoft{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:translateY(0)}}
.service-arrow::before,.service-arrow::after{transition:opacity .38s ease,transform .38s cubic-bezier(.22,.8,.2,1)}

/* ===== 2.8.1 – CTA bis zum Fensterrand + stabiler Foto-Zoom ===== */
/* Alle „Sie haben ein Projekt?“-Bildbereiche auf Leistungs-Detailseiten:
   rechts bündig mit dem Viewport, links weicher Auslauf. Das Foto selbst wird
   nicht gestreckt; cover erhält immer das Seitenverhältnis. */
@media (min-width:821px){
  .detail-cta .detail-cta-grid{
    width:calc(100% - max(24px, (100vw - var(--max))/2));
    max-width:none;
    margin-left:max(24px, (100vw - var(--max))/2);
    margin-right:0;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:120px;
  }
  .detail-cta .placeholder{
    width:100%;
    margin-right:0;
    background-size:cover!important;
  }
  .detail-cta .placeholder:before{
    background:linear-gradient(90deg,var(--cream) 0%,rgba(245,243,238,.98) 10%,rgba(245,243,238,.84) 24%,rgba(245,243,238,.48) 39%,rgba(245,243,238,.16) 52%,rgba(245,243,238,0) 64%);
  }
}

/* Der Projekt-Zoom bleibt vollständig innerhalb des grünen Bildrahmens.
   Die feste 4:3-Fläche clippt das Original; nur das innere Foto skaliert. */
.projects .project .crop{
  aspect-ratio:4/3;
  overflow:hidden;
  position:relative;
}
.projects .project .crop img{
  width:100%;
  height:100%;
  max-width:none;
  object-fit:cover;
  object-position:center;
  display:block;
  transform:scale(1);
  transform-origin:center center;
  transition:transform .45s cubic-bezier(.22,.8,.2,1);
}
@media (hover:hover) and (pointer:fine){
  .projects .project:hover .crop img{transform:scale(1.04)}
}

/* ===== 2.8.2 – fehlender Bildrahmen auf der Startseite ===== */
/* „Erfahrung. Darauf kann man bauen.“: gleicher dünner dunkelgrüner Rahmen
   wie bei den übrigen normalen Fotos. Zoom-/Bildlogik bleibt unverändert. */
.home .cream .split-img{
  border:1px solid rgba(36,77,50,.78);
}

/* ===== 2.8.3 – Startseite Bildvergleich Früher / Heute ===== */
.home .cream .split-img.v30-compare{background:none;min-height:0;aspect-ratio:auto;position:relative;overflow:hidden;border:1px solid rgba(36,77,50,.78);line-height:0}
.v30-compare-img{display:block;width:100%;height:auto;max-width:100%;transform:none!important;transition:none!important}
.v30-compare-reveal{position:absolute;inset:0 auto 0 0;width:50%;overflow:hidden;line-height:0}
.v30-compare-reveal .v30-compare-img{position:absolute;left:0;top:0;width:auto;max-width:none;height:100%;object-fit:contain;object-position:left center}
.v30-compare-line{position:absolute;z-index:4;top:0;bottom:0;left:50%;width:2px;background:#fff;transform:translateX(-1px);pointer-events:none}
.v30-compare-line span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:#fff;color:#244D32;display:flex;align-items:center;justify-content:center;font:700 20px/1 Arial,sans-serif;box-shadow:0 2px 9px rgba(0,0,0,.18)}
.v30-compare-range{position:absolute;z-index:5;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.v30-compare-label{position:absolute;z-index:3;bottom:16px;background:#244D32;color:#fff;padding:9px 13px;border-radius:5px;font:700 13px/1 Arial,sans-serif;line-height:1;pointer-events:none}
.v30-compare-label-left{left:16px}.v30-compare-label-right{right:16px}
.v30-compare-add{position:absolute;z-index:6;left:50%;bottom:18px;transform:translateX(-50%);border:1px solid #8B572A;background:#fff;color:#173D28;padding:10px 14px;font-weight:700;cursor:pointer;line-height:1.2}
.v30-compare-empty{min-height:360px;display:flex;align-items:center;justify-content:center;background:#eee;color:#555;line-height:1.4}
@media(max-width:820px){.v30-compare-line span{width:40px;height:40px}.v30-compare-label{bottom:10px;padding:7px 9px}.v30-compare-label-left{left:10px}.v30-compare-label-right{right:10px}}

/* ===== 2.8.4 – Bildvergleich Beschriftungen / Alt-Hinweis ===== */
.home .split-img.v30-compare::after{content:none!important;display:none!important}
.v30-compare-label{transition:opacity .18s ease,visibility .18s ease}
.v30-compare-label.is-hidden{opacity:0;visibility:hidden}

/* ===== 2.9.2 – Intro-Video echtes Fullscreen-Cover =====
   Das Video selbst fuellt den Viewport. object-fit:cover bewahrt das
   Seitenverhaeltnis; Ueberstand wird an den Raendern abgeschnitten. */
#intro-overlay > video.intro-video{
  position:absolute !important;
  inset:0 !important;
  display:block !important;
  width:100% !important;
  height:100% !important;
  min-width:0 !important;
  min-height:0 !important;
  max-width:none !important;
  max-height:none !important;
  margin:0 !important;
  transform:none !important;
  object-fit:cover !important;
  object-position:center center !important;
  background:#111;
}

/* ===== 2.9.3 – Intro-Video proportional, ohne Streckung =====
   Das Video wird als echtes ersetztes Element ueber seine intrinsischen
   Abmessungen skaliert. width/height bleiben auto; min-width/min-height
   sorgen fuer Viewport-Cover. Dadurch kann der Browser das Video nicht
   auf ein fremdes Seitenverhaeltnis strecken. */
#intro-overlay > video.intro-video{
  position:absolute !important;
  top:50% !important;
  left:50% !important;
  right:auto !important;
  bottom:auto !important;
  width:auto !important;
  height:auto !important;
  min-width:100% !important;
  min-height:100% !important;
  max-width:none !important;
  max-height:none !important;
  margin:0 !important;
  transform:translate(-50%,-50%) !important;
  object-fit:fill !important; /* wirkungslos bei auto/auto; verhindert alte Cover-Konflikte */
  object-position:center center !important;
  background:#111;
}

/* ===== 3.0 – Team-Bereiche & individueller Vergleichsregler ===== */
.team-area{max-width:980px;margin:0 auto 90px}.team-area:last-child{margin-bottom:0}.team-area-title{margin:0 0 28px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.v30-team-area-edit{font-size:12px!important;color:#6b6b6b!important;margin-top:10px!important}.v30-team-area-edit .v30-live-edit{display:inline-block;padding:3px 6px;border:1px dashed #8B572A;border-radius:3px;color:#173D28}
.v30-compare-line span{font-size:0;width:54px;height:54px;border:2px solid #244D32;background:#f5f3ee}
.v30-compare-line span::before{content:"";width:30px;height:30px;background-repeat:no-repeat;background-position:center;background-size:contain;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='none' stroke='%23244D32' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 10l28 44M46 10L18 54'/%3E%3Cpath d='M12 12h15l-4 9-11-9zM52 12H37l4 9 11-9z'/%3E%3Cpath d='M8 32h10M46 32h10'/%3E%3Cpath d='M8 32l5-5M8 32l5 5M56 32l-5-5M56 32l-5 5'/%3E%3C/svg%3E")}
.v30-compare-range{cursor:none!important}


/* ===== 3.2 – Vergleichsregler wieder schlicht, Maus sichtbar ===== */
.v30-compare-line span{width:46px!important;height:46px!important;border:0!important;background:#fff!important;color:#244D32!important;font:700 20px/1 Arial,sans-serif!important;box-shadow:0 2px 9px rgba(0,0,0,.18)!important}
.v30-compare-line span::before{content:none!important;display:none!important;background:none!important}
.v30-compare-line span{font-size:0!important}
.v30-compare-line span::after{content:"‹ ›";display:block;font:700 20px/1 Arial,sans-serif;color:#244D32}
.v30-compare-range{cursor:ew-resize!important}


/* ===== 3.3 – Bildpositionierung im visuellen Editor konsistent =====
   Gespeicherte Positionen duerfen nicht mehr durch feste center-Regeln
   ueberschrieben werden. Waehrend des Ziehens setzt der Editor die Position
   mit hoher Prioritaet; Seitenverhaeltnis, cover und Fade bleiben erhalten. */
body.v30-visual-editing [data-v30-bg],
body.v30-visual-editing [data-v30-image]:not(.v30-compare-img),
body.v30-visual-editing [data-v30-team-prop="photo"],
body.v30-visual-editing [data-v30-history-prop="photo"],
body.v30-visual-editing [data-v30-project-prop="image"]{
  user-select:none;
  -webkit-user-drag:none;
}

/* V3.4 Kontaktformular */
.v30-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.v30-form-message{margin:0 0 18px;padding:16px 18px;border:1px solid var(--green);font-size:16px;line-height:1.45}
.v30-form-success{color:var(--green);background:rgba(36,77,50,.06)}
.v30-form-error{color:#7a2d24;border-color:#7a2d24;background:rgba(122,45,36,.05)}

/* ===== 3.6 – robuste Bilddarstellung fuer alle Upload-Formate =====
   Alle austauschbaren Hintergrundfotos werden immer proportional als cover
   dargestellt. Kein Wiederholen/Kacheln – unabhaengig von Hoch-, Quer- oder
   Quadratformat. Die gespeicherte background-position bleibt unangetastet. */
[data-v30-bg],
.placeholder[style*="background-image"],
.team-photo[style*="background-image"],
.history-photo[style*="background-image"]{
  background-repeat:no-repeat !important;
  background-size:cover !important;
  background-origin:border-box;
  background-clip:border-box;
}

/* Austauschbare echte IMG-Dateien: proportional in ihrem vorhandenen Rahmen. */
img[data-v30-image]:not(.v30-compare-img),
.projects .project .crop img{
  object-fit:cover;
  max-width:100%;
}

/* Hintergrundbilder werden nicht mehr ueber background-size gezoomt.
   Das verhindert bei exotischen Seitenverhaeltnissen Browser-Artefakte und
   Bildstreifen. Normale <img>-Projektbilder behalten ihren geclippten Zoom. */
.detail-photo-grid .placeholder,
.team-photo,
.history-photo{
  transition:transform .45s ease;
}

/* ===== 3.7 – einheitlicher echter Bildrahmen fuer ALLE austauschbaren Fotos =====
   Hintergrund-Uploads werden beim Laden in genau ein <img> im vorhandenen Rahmen
   ueberfuehrt. So kann kein Bild – egal welches Seitenverhaeltnis – kacheln,
   verzerren oder ausserhalb des Rahmens auftauchen. */
.v30-cover-frame{position:relative;overflow:hidden!important}
.v30-cover-frame>.v30-cover-image{
  position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
  max-width:none!important;margin:0!important;padding:0!important;display:block!important;
  object-fit:cover!important;object-position:50% 50%;transform:scale(1);
  transform-origin:center center;transition:transform .45s cubic-bezier(.22,.8,.2,1);
  pointer-events:none;user-select:none;-webkit-user-drag:none;z-index:0;
}
.v30-has-cover-image::after{display:none!important}
/* Text/Verlaeufe bleiben ueber dem Foto. */
.v30-cover-frame::before{z-index:2!important}
.hero.v30-cover-frame>.hero-copy{position:relative;z-index:1}
.team-photo.v30-cover-frame>span,.history-photo.v30-cover-frame>span{position:relative;z-index:3}
/* Alte Zooms auf dem gesamten Hintergrundrahmen abschalten. */
@media (hover:hover) and (pointer:fine){
  .detail-photo-grid .v30-cover-frame:hover,
  .detail-cta .v30-cover-frame:hover,
  .alt .v30-cover-frame:hover,
  .team-card:hover .v30-cover-frame,
  .team-owner:hover .v30-cover-frame,
  .history-item:hover .v30-cover-frame{transform:none!important}
  .detail-photo-grid .v30-cover-frame:hover>.v30-cover-image,
  .team-card:hover .v30-cover-frame>.v30-cover-image,
  .team-owner:hover .v30-cover-frame>.v30-cover-image,
  .history-item:hover .v30-cover-frame>.v30-cover-image{transform:scale(1.025)}
  .alt .v30-cover-frame:hover>.v30-cover-image,
  .detail-cta .v30-cover-frame:hover>.v30-cover-image{transform:scale(1.018)}
}
@media (prefers-reduced-motion:reduce){.v30-cover-frame>.v30-cover-image{transition:none!important}}

/* V3.9: privacy-friendly map */
.v30-map-revoke{position:absolute;right:10px;bottom:10px;z-index:2;border:1px solid #154a34;background:#fff;color:#154a34;padding:9px 13px;cursor:pointer;border-radius:3px}
.v30-map-consent button{cursor:pointer;border:0;padding:13px 20px}


/* V4.0: Fixierter Header auf Desktop, Tablet und Smartphone. */
body{padding-top:100px}
body > header{
  position:fixed !important;
  top:0;
  left:0;
  right:0;
  width:100%;
  z-index:1000;
}
body.admin-bar > header{top:32px}
.phone{align-items:center;gap:8px}
.phone-icon{display:block;flex:none}
.phone::after{content:none !important}
@media(max-width:1100px){body{padding-top:94px}}
@media(max-width:820px){
  body{padding-top:82px}
  .phone{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:0;
    line-height:1;
  }
  .phone-label{display:none}
  .phone-icon{width:20px;height:20px;margin:0}
}
@media(max-width:782px){body.admin-bar > header{top:46px}}
@media(max-width:600px){body.admin-bar > header{top:0}}

/* V4.2: Align rightmost phone button to the same content inset as the left logo.
   Keep the responsive mobile header untouched. */
@media (min-width:821px){
  header .nav > .phone{margin-left:auto;flex-shrink:0}
  header .nav > .navlinks{flex-shrink:0}
}

/* V4.3: Desktop-Navigation und Telefon als rechte Gruppe; Logo bleibt links. */
@media (min-width:1101px){
  header .nav .logo{margin-right:0}
  header .nav > .navlinks{margin-left:auto;gap:18px;font-size:15px}
  header .nav > .phone{margin-left:0}
}

/* V4.4: 19px-Navigation im Raum zwischen Logo und Telefon zentrieren. */
@media (min-width:1251px){
  header .nav > .navlinks{
    flex:1 1 auto;min-width:0;margin-left:0;margin-right:0;
    display:flex;align-items:center;justify-content:center;
    gap:14px;font-size:18px;
  }
  header .nav > .phone{margin-left:0;flex-shrink:0}
  header .nav .logo{margin-right:0}
}
/* Bei mittleren Desktopbreiten kompakter, damit kein Menüpunkt überlappt. */
@media (min-width:1101px) and (max-width:1250px){
  header .nav > .navlinks{flex:1 1 auto;min-width:0;margin:0;justify-content:center;gap:6px;font-size:15px}
  header .nav > .phone{margin-left:0;flex-shrink:0}
}

/* V4.5: 19px desktop navigation with proper item widths and spacing.
   Earlier fixed item widths were too narrow for 19px labels. */
@media (min-width:1251px){
  header .nav > .navlinks{gap:26px;font-size:18px;}
  header .nav > .navlinks .nav-item{width:auto;min-width:max-content;white-space:nowrap;flex:0 0 auto;}
}
@media (min-width:1101px) and (max-width:1250px){
  header .nav > .navlinks{gap:12px;font-size:15px;}
  header .nav > .navlinks .nav-item{width:auto;min-width:max-content;white-space:nowrap;flex:0 0 auto;}
}

/* V4.6: Only header logo 15% larger on wide desktops; original image unchanged. */
@media (min-width:1251px){header .nav .logo{width:253px}}

/* V4.8: Ausschliesslich Schriftgewicht der Desktop-Navigationslinks auf 600. */
@media (min-width:901px){
  header .nav .navlinks .nav-item,
  header .nav .navlinks .nav-item:hover,
  body[data-active="leistungen"] header .nav .nav-leistungen,
  body[data-active="projekte"] header .nav .nav-projekte,
  body[data-active="unternehmen"] header .nav .nav-unternehmen,
  body[data-active="kontakt"] header .nav .nav-kontakt{font-weight:600 !important}
}

/* V4.9: same handset outline as header, in the contact summary. */
.contact-phone-line{display:inline-flex;align-items:center;gap:.35em}.contact-phone-icon{width:1em;height:1em;flex:none;color:inherit;vertical-align:middle}

/* V5.0: Tablet/Desktop-Navigation und lesbare Startseiten-Typografie. */
@media (min-width:821px) and (max-width:1100px){
  header .nav{gap:16px}
  header .nav .logo{width:190px;flex-shrink:0;margin-right:0}
  header .nav > .navlinks{display:flex;flex:1 1 auto;min-width:0;margin:0;justify-content:center;align-items:center;gap:clamp(10px,1.6vw,20px);font-size:clamp(15px,1.65vw,16px)}
  header .nav > .navlinks .nav-item{width:auto;min-width:max-content;flex:0 0 auto;white-space:nowrap}
  header .nav > .phone{margin-left:0;flex-shrink:0}
}
/* Hero-Text auf allen Viewports gleich hell, ohne Schriftgroesse oder Position zu aendern. */
.hero .hero-copy h1,.hero .hero-copy h1 *{color:#fff!important;opacity:1}
.hero .hero-copy p{color:#fff!important;opacity:1}

/* V5.1: Bild-Overlay liegt hinter der Startseiten-Typografie.
   V5.0 hatte die Textfarbe korrigiert, aber das Cover-Overlay lag noch darueber. */
.hero.v30-cover-frame > .hero-copy{position:relative;z-index:3}
.hero.v30-cover-frame::before{z-index:2!important;pointer-events:none}
.hero.v30-cover-frame .hero-copy h1,
.hero.v30-cover-frame .hero-copy h1 *,
.hero.v30-cover-frame .hero-copy p{color:#fff!important;opacity:1!important}

/* V5.2: Nur mobiler Startseiten-Hero. Kompakter Bildausschnitt,
   Text direkt sichtbar; Desktop und Header bleiben unveraendert. */
@media (max-width:820px){
  .hero{min-height:480px!important;height:auto;background-position:center 32%!important}
  .hero.v30-cover-frame > .v30-cover-image{object-position:50% 32%!important}
  .hero .hero-copy{min-height:480px!important;height:auto;align-items:center!important}
  .hero .hero-copy > div{padding:30px 20px!important;width:100%}
  .hero .hero-copy .hero-inner{max-width:100%}
  .hero .hero-copy h1{font-size:clamp(38px,9.5vw,54px)!important;line-height:.98}
  .hero .hero-copy p{font-size:15px;line-height:1.45}
}
@media (max-width:380px){
  .hero .hero-copy > div{padding-left:16px!important;padding-right:16px!important}
  .hero .hero-copy h1{font-size:clamp(35px,9.4vw,40px)!important}
}

/* V5.9: optionaler Vorher/Nachher-Vergleich nur auf Projektkarten */
.projects .project .v30-project-compare{position:relative;aspect-ratio:4/3;overflow:hidden;line-height:0;background:#e8e5de}
.projects .project .v30-project-compare .v30-compare-now{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.projects .project .v30-project-compare .v30-compare-reveal{height:100%;width:50%;position:absolute;left:0;top:0;overflow:hidden}
.projects .project .v30-project-compare .v30-compare-then{position:absolute;top:0;left:0;width:auto;max-width:none;height:100%;object-fit:cover}
.projects .project:hover .v30-project-compare img{transform:none!important}
.v30-project-toggle{display:block;margin:0 0 9px;padding:9px 12px;border:1px solid #244D32;background:#fff;color:#244D32;font-weight:700;cursor:pointer}
.v30-project-image-help{position:absolute;top:8px;left:8px;z-index:6;background:#fff;padding:6px 9px;color:#244D32;font-size:12px;pointer-events:none;line-height:1.2}
.v30-visual-editing .v30-project-compare .v30-compare-range{pointer-events:none}
.v30-visual-editing .v30-project-compare .v30-compare-now,.v30-visual-editing .v30-project-compare .v30-compare-then{cursor:pointer;pointer-events:auto}
