/* ============================================================
   DL Dienstleistungen – Home & wiederverwendbare Sektionen
   (SectionHead, Badge, Tag, Karten, CountUp, BeforeAfter, CTA)
   ============================================================ */

/* --- SectionHead ------------------------------------------ */
.section-head{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:32px;align-items:end;margin-bottom:56px}
.section-head h2{font-size:clamp(32px,4.2vw,52px);margin-top:14px;color:var(--forest)}
.section.dark .section-head h2,.on-dark .section-head h2{color:var(--cream)}
.section-head .sh-text{font-size:var(--fs-lg);color:var(--ink-soft);max-width:52ch}
.section.dark .section-head .sh-text{color:var(--text-on-dark-soft)}

/* --- Badge ------------------------------------------------- */
.badge{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:var(--r-pill);
  background:var(--forest);color:var(--accent);font-family:var(--ff-mono);font-size:12px;font-weight:var(--fw-medium);
  letter-spacing:.12em;text-transform:uppercase;line-height:1.2;white-space:nowrap}

/* --- Tag --------------------------------------------------- */
.tag{padding:9px 16px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--paper);color:var(--ink);
  font-family:var(--ff-body);font-size:15px;font-weight:var(--fw-medium);cursor:pointer;transition:all var(--dur-fast) var(--ease-out)}
.tag:hover{background:var(--cream-deep)}
.tag.is-active{border-color:var(--forest);background:var(--forest);color:var(--cream)}

/* --- CTA-Gruppe (Hero + CTA-Box) -------------------------- */
.dl-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.dl-cta.is-center{justify-content:center}
.dl-cta-row{display:flex;gap:12px;align-items:center}
.cta-wa{width:57px;height:57px;padding:0}
@media (max-width:640px){
  .dl-cta{width:100%}
  .cta-main{width:100%}
  .dl-cta-row{justify-content:center;width:100%}
  .dl-hide-sm{display:none}
  .cta-phone,.cta-wa{width:54px;height:54px;padding:0}
}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;overflow:hidden;padding:48px 0 0}
.hero-grid{max-width:var(--container-wide);margin-inline:auto;padding-inline:var(--gutter);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:48px;align-items:center}
.hero h1{font-size:var(--fs-hero);letter-spacing:var(--ls-tight);line-height:var(--lh-tight);margin-top:24px;color:var(--forest);font-weight:var(--fw-black)}
.hero-line{display:block;overflow:hidden}
.hero-line>span{display:block;animation:dl-rise var(--dur-reveal) var(--ease-out) both}
.hero h1 .accent-line{color:var(--moss)}
.hero-badge{animation:dl-fade var(--dur-slow) var(--ease-out) both}
.hero-lead{font-size:var(--fs-lg);color:var(--ink-soft);max-width:48ch;margin-top:28px;animation:dl-rise var(--dur-reveal) var(--ease-out) 360ms both}
.hero-cta{margin-top:36px;animation:dl-rise var(--dur-reveal) var(--ease-out) 480ms both}
.hero-trust{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:40px;color:var(--ink-soft);font-size:16px;animation:dl-fade var(--dur-reveal) var(--ease-out) 700ms both}
.hero-trust span{display:inline-flex;gap:8px;align-items:center}
.hero-trust .dl-ico{color:var(--moss)}
.hero-media{position:relative;animation:dl-rise var(--dur-reveal) var(--ease-out) 300ms both}
.hero-img{aspect-ratio:5/6;width:100%;object-fit:cover;border-radius:var(--r-xl);box-shadow:var(--shadow-lg);display:block}
.hero-card{position:absolute;left:-20px;bottom:40px;background:var(--paper);border-radius:var(--r-md);padding:16px 20px;
  box-shadow:var(--shadow-lg);max-width:300px;animation:dl-float 5s ease-in-out infinite}
.hero-card .stars{color:var(--accent-deep);font-size:14px;letter-spacing:.1em}
.hero-card p{font-size:15px;margin-top:6px;color:var(--ink)}
.hero-card .who{font-size:13px;color:var(--ink-mute);margin-top:8px;font-family:var(--ff-mono)}
@media (max-width:520px){.hero-card{left:12px;right:12px;max-width:none}}

/* Schnell-Links unter dem Hero */
.hero-quicklinks{margin-top:72px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper)}
.hero-quicklinks .inner{max-width:var(--container-wide);margin-inline:auto;padding-inline:var(--gutter);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.hero-quicklinks a{display:flex;align-items:center;gap:12px;padding:22px 20px;border-left:1px solid var(--line-soft);
  color:var(--ink);text-decoration:none;font-weight:var(--fw-semibold);font-size:16px}
.hero-quicklinks a:first-child{border-left:none}
.hero-quicklinks a .dl-ico{color:var(--moss)}
.hero-quicklinks a:hover{color:var(--forest)}

/* ============================================================
   STATS (CountUp)
   ============================================================ */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.stat-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px}
.countup{font-family:var(--ff-display);font-weight:var(--fw-black);font-size:56px;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;color:var(--forest);display:block}
.stat-card .label{color:var(--ink-soft);margin-top:10px;font-size:16px}

/* ============================================================
   SERVICE-CARDS
   ============================================================ */
.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.service-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  display:flex;flex-direction:column;gap:14px;text-decoration:none;color:var(--ink);height:100%;
  transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}
.service-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--moss)}
.service-card>img{width:100%;aspect-ratio:16/11;object-fit:cover;display:block}
.service-card .sc-ico-wrap{display:flex;align-items:center;padding:10px 28px 0}
.service-card .sc-ico{width:48px;height:48px;border-radius:14px;background:var(--accent-soft);display:grid;place-items:center;color:var(--forest)}
.service-card h3{font-size:var(--fs-xl);padding:0 28px}
.service-card .sc-desc{color:var(--ink-soft);font-size:16px;flex:1;padding:0 28px}
.service-card .sc-pts{color:var(--ink-mute);font-size:15px;padding:0 28px}
.service-card .sc-foot{display:flex;justify-content:space-between;align-items:center;padding:14px 28px 28px;border-top:1px solid var(--line-soft)}
.service-card .sc-price{font-size:12px}
.service-card .sc-more{font-weight:var(--fw-semibold);color:var(--forest);display:inline-flex;gap:6px;align-items:center}

/* ============================================================
   BEFORE / AFTER
   ============================================================ */
.ba{margin:0}
.ba-stage{position:relative;border-radius:var(--r-xl);overflow:hidden;user-select:none;touch-action:pan-y;cursor:ew-resize;box-shadow:var(--shadow-lg)}
.ba-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;user-select:none;pointer-events:none}
.ba-before-wrap{position:absolute;inset:0;clip-path:inset(0 50% 0 0)}
.ba-divider{position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--accent);transform:translateX(-1px);pointer-events:none}
.ba-handle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:50%;
  background:var(--accent);display:grid;grid-auto-flow:column;place-content:center;box-shadow:var(--shadow-md);color:var(--forest-deep)}
.ba-tag{position:absolute;top:16px;font-family:var(--ff-mono);font-size:12px;font-weight:var(--fw-medium);letter-spacing:.14em;padding:6px 12px;border-radius:var(--r-pill);pointer-events:none}
.ba-tag-before{left:16px;background:rgba(13,37,17,.8);color:var(--cream)}
.ba-tag-after{right:16px;background:var(--accent);color:var(--forest-deep)}
.ba figcaption{margin-top:16px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}
.ba-caption{font-weight:var(--fw-semibold);font-size:16px;color:var(--ink)}
.ba-meta{font-size:14px;color:var(--ink-mute)}
.section.dark .ba-caption,.on-dark .ba-caption{color:var(--cream)}
.section.dark .ba-meta,.on-dark .ba-meta{color:var(--text-on-dark-soft)}
.ba-check{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:12px}
.ba-check li{display:flex;gap:12px;align-items:center}
.ba-check .dl-ico{color:var(--accent)}

/* ============================================================
   ABLAUF (Steps)
   ============================================================ */
.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px}
.step{position:relative;padding-top:24px}
.step .num{font-family:var(--ff-display);font-weight:var(--fw-black);font-size:96px;line-height:1;color:var(--cream-deep);position:absolute;top:-10px;left:-6px;z-index:0}
.step .body{position:relative;padding-left:12px}
.step .body h3{font-size:var(--fs-lg)}
.step .body p{color:var(--ink-soft);font-size:16px;margin-top:10px}

/* ============================================================
   BEWERTUNGEN
   ============================================================ */
.reviews-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
.review-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:32px;height:100%}
.review-card .stars{color:var(--accent-deep);letter-spacing:.1em}
.review-card p{margin-top:16px;font-size:17px;color:var(--ink)}
.review-card .r-who{margin-top:20px;font-size:15px}
.review-card .r-src{color:var(--ink-mute)}

/* ============================================================
   EINSATZGEBIET (Karte – vorerst Platzhalter)
   ============================================================ */
.region-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:48px;align-items:center}
.region-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.map-placeholder{aspect-ratio:4/3;border-radius:var(--r-xl);background:var(--cream-deep);border:1px solid var(--line);
  display:grid;place-items:center;text-align:center;color:var(--ink-mute);padding:24px}
.map-placeholder .dl-ico{color:var(--moss)}

/* ============================================================
   SOCIAL
   ============================================================ */
.social-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.social-grid img{width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:var(--r-lg);display:block}
.social-cards{margin-top:32px;display:flex;flex-wrap:wrap;gap:16px}
.social-card{display:flex;align-items:center;gap:14px;padding:14px 20px 14px 14px;border-radius:16px;
  border:1.5px solid var(--line);background:var(--paper);color:var(--forest);text-decoration:none;flex:1 1 220px;min-width:0;
  transition:all var(--dur-fast) var(--ease-out)}
.social-card:hover{border-color:var(--forest);background:var(--forest);color:var(--cream)}
.social-card .scd-ico{width:44px;height:44px;flex:none;border-radius:12px;display:grid;place-items:center;background:var(--forest);color:var(--cream);transition:all var(--dur-fast) var(--ease-out)}
.social-card:hover .scd-ico{background:var(--accent);color:var(--forest-deep)}
.social-card .scd-text{display:flex;flex-direction:column;min-width:0;flex:1}
.social-card .scd-name{font-size:17px;font-weight:var(--fw-bold)}
.social-card .scd-handle{font-size:14px;opacity:.75;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.social-card .scd-arrow{flex:none;transition:transform var(--dur-fast) var(--ease-out)}
.social-card:hover .scd-arrow{transform:translate(2px,-2px)}

/* ============================================================
   CTA-BOX
   ============================================================ */
.cta-box{text-align:center;background:var(--forest);color:var(--cream);border-radius:var(--r-xl);
  padding:clamp(48px,7vw,96px) var(--gutter);box-shadow:var(--shadow-lg);
  background-image:radial-gradient(ellipse at 50% 120%,rgba(199,233,76,.18),transparent 60%)}
.cta-box .inner{max-width:720px;margin-inline:auto}
.cta-box h2{font-size:clamp(36px,5vw,64px);margin-top:14px}
.cta-box p{font-size:var(--fs-lg);color:var(--text-on-dark-soft);margin-top:20px}
.cta-box .dl-cta{margin-top:36px}

/* ============================================================
   FAQ
   ============================================================ */
.faq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:56px;align-items:start}
.faq-intro{position:sticky;top:120px}
.faq-list{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-q{width:100%;background:none;border:none;padding:22px 0;display:flex;justify-content:space-between;align-items:center;
  gap:16px;cursor:pointer;font-family:var(--ff-display);font-weight:var(--fw-bold);font-size:20px;color:var(--ink);text-align:left;min-height:44px}
.faq-item.is-open .faq-q{color:var(--forest)}
.faq-icon{width:36px;height:36px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);
  color:var(--forest);transition:transform var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out)}
.faq-item.is-open .faq-icon{background:var(--accent);transform:rotate(45deg)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease-out)}
.faq-item.is-open .faq-a{grid-template-rows:1fr}
.faq-a p{overflow:hidden;margin:0;color:var(--ink-soft);font-size:17px;max-width:62ch;padding-bottom:0;transition:padding var(--dur-base) var(--ease-out)}
.faq-item.is-open .faq-a p{padding-bottom:24px}

/* reduced motion: Hero-Einblendungen aus */
@media (prefers-reduced-motion:reduce){
  .hero-line>span,.hero-badge,.hero-lead,.hero-cta,.hero-trust,.hero-media,.hero-card{animation:none}
}

/* ============================================================
   EINSATZGEBIET-KARTE
   ============================================================ */
.map-embed{position:relative;border-radius:var(--r-xl);overflow:hidden;background:var(--cream-deep);box-shadow:0 0 0 1px var(--line)}
.map-gate{position:absolute;inset:0;display:grid;place-items:center;text-align:center;background:var(--cream-deep);padding:28px}
.map-gate .inner{display:grid;gap:14px;justify-items:center;max-width:380px}
.map-iframe{position:absolute;left:0;top:-60px;width:100%;height:calc(100% + 120px);border:0;pointer-events:none}
.map-svg{position:absolute;inset:0;pointer-events:none}
.map-svg .mk{pointer-events:all;cursor:pointer}
.map-pill{position:absolute;left:12px;top:12px;max-width:calc(100% - 24px);display:flex;align-items:center;gap:8px;
  padding:7px 12px;border-radius:var(--r-pill);background:rgba(255,255,255,.94);box-shadow:0 2px 10px rgba(29,58,31,.15);
  font-size:12.5px;line-height:1.3;font-weight:var(--fw-semibold);color:var(--forest);pointer-events:none}
.map-pill .dot{flex:none;width:12px;height:12px;border-radius:6px;background:#c7e97a;box-shadow:inset 0 0 0 2px #517d4a}
.map-pill .muted{font-weight:var(--fw-regular);color:var(--ink-soft)}
.map-cta{position:absolute;right:12px;bottom:12px}

/* --- Hero-Schnell-Links: umbruchsichere Trennlinien (Override) --- */
.hero-quicklinks{padding-inline:var(--gutter)}
.hero-quicklinks .inner{padding-inline:0;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line-soft)}
.hero-quicklinks a{background:var(--paper);border-left:none;justify-content:flex-start}

/* --- Hero-Schnell-Links: feste Spalten, sauberer Umbruch --- */
.hero-quicklinks .inner{grid-template-columns:repeat(6,1fr)}
.hero-quicklinks a>span{min-width:0;overflow-wrap:break-word;hyphens:auto}
@media (max-width:1140px){.hero-quicklinks .inner{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.hero-quicklinks .inner{grid-template-columns:repeat(2,1fr)}}

/* --- Hero-Schnell-Links: beliebige Anzahl Leistungen. Breit eine Zeile (Spalten nach Textlänge), schmaler
       3 bzw. 2 Spalten, das letzte Feld füllt die Zeile auf --- */
.hero-quicklinks .inner{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:auto}
@media (min-width:1360px){
  .hero-quicklinks a{padding:22px 16px;gap:10px}
  .hero-quicklinks a>span{white-space:nowrap;hyphens:manual}
}
@media (max-width:1359px){
  .hero-quicklinks .inner{grid-template-columns:repeat(3,1fr);grid-auto-flow:row}
  .hero-quicklinks a:last-child:nth-child(3n+1){grid-column:1/-1}
  .hero-quicklinks a:last-child:nth-child(3n+2){grid-column:span 2}
}
@media (max-width:560px){
  .hero-quicklinks .inner{grid-template-columns:repeat(2,1fr)}
  .hero-quicklinks a:last-child:nth-child(n){grid-column:auto}
  .hero-quicklinks a:last-child:nth-child(odd){grid-column:1/-1}
}
/* Letzte Leistung bleibt eine normale Zelle (statt über die ganze Zeile), die Lücke füllt eine leere Zelle,
   damit die Rasterlinien durchlaufen. Ohne :has() (sehr alte Browser) gilt weiter das Auffüllen oben. */
@supports selector(:has(*)){
  @media (max-width:1359px){
    .hero-quicklinks a:last-child:nth-child(3n+1),.hero-quicklinks a:last-child:nth-child(3n+2){grid-column:auto}
    .hero-quicklinks .inner:has(>a:last-child:nth-child(3n+1))::after{content:"";background:var(--paper);grid-column:span 2}
    .hero-quicklinks .inner:has(>a:last-child:nth-child(3n+2))::after{content:"";background:var(--paper);grid-column:span 1}
  }
  @media (max-width:560px){
    .hero-quicklinks a:last-child:nth-child(odd){grid-column:auto}
    .hero-quicklinks .inner:has(>a:last-child:nth-child(n))::after{content:none}
    .hero-quicklinks .inner:has(>a:last-child:nth-child(odd))::after{content:"";background:var(--paper);grid-column:span 1}
  }
}
/* Handy: Icon über dem Namen, damit lange Namen (Hausmeisterservice, Gebäudereinigung) nicht getrennt werden */
@media (max-width:560px){
  .hero-quicklinks a{flex-direction:column;align-items:flex-start;gap:8px;padding:16px 14px}
  .hero-quicklinks a>span{hyphens:manual;overflow-wrap:normal}
}
