/* =========================================================================
   MARKL IMMOBILIEN — 2026 UPGRADE LAYER
   Ergänzt & überschreibt gezielt styles.css. Farbwelt Grün/Gold bleibt.
   Fokus: modernere Typografie, editoriale Ruhe, hochwertiges Motion Design,
   Proof-Bausteine (Kundenstimmen, Beispiel-Fall) und Sofort-Kontakt.
   ========================================================================= */

:root{
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --ease-out-quint:cubic-bezier(.22,1,.36,1);
  --whatsapp:#25d366;
}

/* -------------------------------------------------------------------------
   1. MODERNE TYPOGRAFIE — größere, engere, editoriale Headlines
   ------------------------------------------------------------------------- */
h1{font-size:clamp(2.6rem,6.2vw,4.6rem);line-height:1.04;letter-spacing:-.035em;font-weight:700}
/* EINE konsistente Skala für ALLE Section-Headlines — überschreibt auch die
   sektionsspezifischen Regeln aus styles.css (gleiche Selektoren, später geladen). */
h2,
.abwicklung-header h2,
.vertrauen h2,
.map-section h2,
.section-head h2{font-size:clamp(1.85rem,3.6vw,2.75rem);line-height:1.12;letter-spacing:-.025em}
h3{letter-spacing:-.025em}
.section > .container > h2,
.abwicklung-header h2{max-width:36ch;margin-left:auto;margin-right:auto}
p{text-wrap:pretty}
h1,h2,h3{text-wrap:balance}

/* Editorial „Eyebrow"-Kicker über Section-Headlines */
.eyebrow{
  display:inline-flex;align-items:center;gap:.55em;
  font-family:var(--font-body);font-size:.8125rem;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;
  color:var(--color-accent);margin-bottom:1rem;
}
.eyebrow::before{
  content:"";width:26px;height:1.5px;background:var(--color-accent);
  border-radius:2px;opacity:.75;
}
/* Eyebrow direkt als Container-Kind (ohne .section-head-Wrapper) muss sich
   selbst zentrieren, da .container kein text-align:center erbt. */
.section > .container > .eyebrow{display:flex;justify-content:center}
.section-head{text-align:center;max-width:760px;margin:0 auto var(--space-lg)}
.section-head h2{margin-bottom:.75rem}
.section-head .lead{font-size:clamp(1.05rem,2vw,1.2rem);color:var(--color-text-light);line-height:1.65}

/* -------------------------------------------------------------------------
   2. HERO — mehr Präsenz, ruhigerer Verlauf, Sofort-Kontakt
   ------------------------------------------------------------------------- */
.hero{min-height:clamp(300px,39vh,420px);padding:var(--space-lg) 0}
/* Flex-Item braucht min-width:0, sonst wird der Container nie schmaler als
   der längste unzerbrechliche Text (z.B. "Sanierungsbedürftige") und die
   Headline läuft auf schmalen Viewports über den Rand hinaus. */
.hero .container{min-width:0}
/* WICHTIG: kein eigenes .hero::after — das nutzt styles.css bereits für den
   weichen Auslauf nach unten. Wir überschreiben nur das Farb-Overlay auf
   .hero::before mit EINEM durchgehenden, weichen Verlauf (kein harter Bruch). */
.hero::before{
  background:linear-gradient(180deg,rgba(15,34,28,.74) 0%,rgba(15,34,28,.66) 46%,rgba(15,34,28,.78) 100%);
}
.hero .container{position:relative;z-index:3}

/* Über-uns-Portrait — komplett neu aufgebaut.
   Das alte .vertrauen-image (aspect-ratio/max-height/object-fit in mehreren
   Media Queries) wurde im HTML durch <img class="about-photo"> ersetzt; die
   alten Regeln greifen dadurch NICHT mehr. Hier nur EINE simple Regel:
   ein ganz normales responsives Bild. Kann in keinem Browser einen Rand haben. */
/* Das Foto hat helle Ränder (Himmel/Wand), die sonst mit dem fast weißen
   Seitenhintergrund verschmelzen und wie ein weißer Rahmen aussehen.
   Feine Umrandung + definierter Schatten geben ihm eine klare Kante. */
.about-photo{display:block;width:100%;height:auto;border-radius:16px;
  border:1px solid rgba(0,0,0,.09);
  box-shadow:0 14px 36px rgba(28,48,40,.18)}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:.5em;
  font-size:.85rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:#e9d9b8;margin-bottom:1.1rem;
  text-shadow:0 1px 8px rgba(0,0,0,.35);
  max-width:100%;overflow-wrap:break-word;hyphens:auto;
}
.hero-eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--color-accent);box-shadow:0 0 0 4px rgba(150,112,58,.3);flex-shrink:0}
.hero-headline{font-size:clamp(2.25rem,5.4vw,4rem);text-shadow:0 2px 24px rgba(0,0,0,.28);line-height:1.08;overflow-wrap:break-word;hyphens:auto}
.hero-subheadline{font-size:clamp(1.15rem,2.4vw,1.45rem);color:#f4efe6;max-width:640px}

/* Sofort-Kontakt unter dem Haupt-CTA (Impuls nach Anhänger-Sichtung) */
.hero-actions{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-top:.25rem}
.hero-sofortkontakt{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}
.hero-mini-cta{
  display:inline-flex;align-items:center;gap:.5em;
  padding:.7rem 1.25rem;border-radius:100px;
  font-size:.95rem;font-weight:600;text-decoration:none;
  background:rgba(255,255,255,.94);color:var(--color-primary-dark);
  border:1px solid rgba(255,255,255,.5);
  box-shadow:0 2px 10px rgba(0,0,0,.12);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  transition:background .25s ease,transform .25s ease,border-color .25s ease;
}
/* Solider, selbst-kontrastierender Hintergrund statt Glas-Effekt auf dem
   Foto: garantiert WCAG-AA-Kontrast (>7:1) unabhängig davon, was im Hero-
   Hintergrund gerade darunter liegt (Foto, Overlay-Verlauf, Ausblendzone). */
.hero-mini-cta svg{width:18px;height:18px}
.hero-mini-cta:hover{background:#fff;transform:translateY(-2px)}
.hero-mini-cta.is-whatsapp:hover{color:#128c4a;border-color:var(--whatsapp)}

/* -------------------------------------------------------------------------
   3. BUTTONS — moderner, weicher, mit Lift & Sheen
   ------------------------------------------------------------------------- */
.btn{border-radius:100px;letter-spacing:.005em;position:relative;overflow:hidden;isolation:isolate;
     transition:transform .35s var(--ease-out-quint),box-shadow .35s var(--ease-out-quint),background-color .25s ease}
.btn-primary{
  background:linear-gradient(135deg,#a67f43 0%,#8a642f 100%);
  box-shadow:0 6px 20px rgba(150,112,58,.28),inset 0 1px 0 rgba(255,255,255,.18);
}
.btn-primary::before{ /* Sheen */
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);
  transform:translateX(-120%);transition:transform .7s var(--ease-out-expo);
}
.btn-primary:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(150,112,58,.38),inset 0 1px 0 rgba(255,255,255,.22)}
.btn-primary:hover::before{transform:translateX(120%)}
.btn-primary:active{transform:translateY(-1px)}
.hero-cta{padding:1.3rem 3.2rem;font-size:1.15rem;min-height:60px}

/* -------------------------------------------------------------------------
   4. HINTERGRUND-ORBS — dezenter (weniger „generisch")
   ------------------------------------------------------------------------- */
.orb{opacity:.32;filter:blur(140px)}
.orb-warm{opacity:.28}

/* -------------------------------------------------------------------------
   5. REVEAL-SYSTEM — gestaffelte Scroll-Einblendungen
   ------------------------------------------------------------------------- */
/* Verberge-Zustände nur wenn JS aktiv ist (.js-motion) — sonst bleibt
   bei JS-Ausfall / Crawlern alles sichtbar (Progressive Enhancement). */
.js-motion [data-reveal]{opacity:0;transform:translateY(32px);
  transition:opacity .8s var(--ease-out-quint),transform .8s var(--ease-out-quint);
  transition-delay:calc(var(--i,0) * 90ms)}
/* Der Park-Versatz muss kleiner bleiben als das seitliche Container-Padding
   (var(--space-md), 32px), sonst ragt ein Element, dessen Spalte bündig mit
   dem Container abschließt, vor dem Einblenden aus dem Viewport heraus und
   macht die Seite horizontal verschiebbar. Siehe Abschnitt 13. */
.js-motion [data-reveal="left"]{transform:translateX(-24px)}
.js-motion [data-reveal="right"]{transform:translateX(24px)}
.js-motion [data-reveal="scale"]{transform:scale(.94)}
.js-motion [data-reveal].is-in{opacity:1;transform:none}

/* Zeilenweises Reveal der Hero-Headline (Clip-Maske) */
.reveal-line{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.js-motion .reveal-line > span{display:block;transform:translateY(105%);
  transition:transform .9s var(--ease-out-quint);transition-delay:calc(var(--i,0)*120ms + 150ms)}
.js-motion .hero.is-ready .reveal-line > span{transform:translateY(0)}

/* -------------------------------------------------------------------------
   6. STATS-LEISTE (ersetzt Trust-Icons durch große animierte Zahlen)
   ------------------------------------------------------------------------- */
.trust-bar{margin-top:-64px}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;max-width:1000px;margin:0 auto}
.stat-tile{
  text-align:center;padding:1.75rem 1rem;
  background:var(--card-glass-bg);
  backdrop-filter:blur(var(--card-glass-blur));-webkit-backdrop-filter:blur(var(--card-glass-blur));
  border:1px solid var(--card-glass-border);border-radius:18px;
  box-shadow:var(--glass-shadow);
  transition:transform .35s var(--ease-out-quint),box-shadow .35s var(--ease-out-quint);
}
.stat-tile:hover{transform:translateY(-4px);box-shadow:var(--glass-shadow-hover)}
.stat-number{
  font-family:var(--font-heading);font-weight:700;
  font-size:clamp(2.3rem,4.8vw,3.3rem);line-height:1;
  letter-spacing:-.03em;
  background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-light) 60%,var(--color-accent) 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  color:var(--color-primary);
}
.stat-label{margin-top:.6rem;font-size:.95rem;font-weight:500;color:var(--color-text);line-height:1.35}
@media(max-width:768px){.stats-grid{grid-template-columns:repeat(2,1fr)}}

/* 7. PROZESS — Original-Look beibehalten (gold gefüllte, abgerundete Quadrate
   als Schritt-Nummern + Original-Karten). Keine Umgestaltung durch das Upgrade;
   die Schritte bekommen nur das dezente Reveal (data-reveal im HTML). */

/* -------------------------------------------------------------------------
   8. PROJEKTE — Galerie sanierter Objekte (Nachher-Fotos)
   ------------------------------------------------------------------------- */
.projekte{position:relative;z-index:2}

.projekt-grid{display:grid;grid-template-columns:1fr;gap:2rem;max-width:560px;margin:0 auto}
@media(min-width:860px){.projekt-grid{grid-template-columns:repeat(2,1fr);max-width:1040px}}
.projekt-card{
  margin:0;background:#fff;border:1px solid rgba(0,0,0,.07);border-radius:18px;overflow:hidden;
  box-shadow:0 12px 34px rgba(28,48,40,.10);
  transition:transform .35s var(--ease-out-quint),box-shadow .35s var(--ease-out-quint)}
.projekt-card:hover{transform:translateY(-5px);box-shadow:0 20px 46px rgba(28,48,40,.16)}

/* Zimmer-Streifen: horizontal scrollbar (Touch-Swipe funktioniert nativ),
   ein Vorher/Nachher-Paar pro Zimmer. flex:0 0 95% lässt das nächste
   Zimmer leicht anschneiden. Navigation auf Desktop über die Pfeile
   in .projekt-rooms-wrap statt Maus-Drag – vermeidet jeden Konflikt mit
   dem Bild-Klick-zum-Vergrößern. */
.projekt-rooms-wrap{position:relative}
.projekt-rooms{display:flex;gap:1.1rem;overflow-x:auto;padding:1.25rem 2.25rem 0;
  scroll-snap-type:x mandatory;scroll-padding-inline:2.25rem;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.projekt-rooms::-webkit-scrollbar{display:none}
.projekt-room{flex:0 0 95%;scroll-snap-align:start}
.projekt-room-label{display:block;font-size:.78rem;font-weight:600;letter-spacing:.03em;
  color:var(--color-text-dark);margin-bottom:.6rem}
.projekt-pair{display:grid;grid-template-columns:1fr 1fr;gap:4px;border-radius:12px;overflow:hidden}
.projekt-pair-img{position:relative;aspect-ratio:3 / 4;overflow:hidden;background:#eef0ee;cursor:zoom-in}
.projekt-pair-img img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
.pair-tag{position:absolute;top:8px;left:8px;font-size:.62rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;padding:.28em .6em;border-radius:100px;color:#fff;pointer-events:none}
.pair-tag--before{background:rgba(20,20,20,.55)}
.pair-tag--after{background:var(--color-primary)}

.projekt-rooms-arrow{position:absolute;top:calc(50% + 16px);transform:translateY(-50%);z-index:5;
  width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;padding:0;
  background:rgba(255,255,255,.94);box-shadow:0 4px 14px rgba(0,0,0,.18);
  display:flex;align-items:center;justify-content:center;color:var(--color-primary-dark);
  transition:background .2s ease,opacity .2s ease}
.projekt-rooms-arrow:hover{background:#fff}
.projekt-rooms-arrow svg{width:17px;height:17px}
.projekt-rooms-arrow--prev{left:.4rem}
.projekt-rooms-arrow--next{right:.4rem}
.projekt-rooms-arrow[disabled]{opacity:0;pointer-events:none}
@media(max-width:640px){.projekt-rooms-arrow{display:none}} /* Mobile: natives Swipe reicht */

/* Lightbox: Klick auf ein Vorher/Nachher-Foto vergrößert es */
.projekt-lightbox{position:fixed;inset:0;z-index:10010;display:flex;align-items:center;justify-content:center;
  background:rgba(15,20,18,.9);padding:3.5rem 1.25rem;opacity:0;pointer-events:none;
  transition:opacity .25s ease}
.projekt-lightbox.is-visible{opacity:1;pointer-events:auto}
.projekt-lightbox img{max-width:100%;max-height:100%;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.projekt-lightbox-close{position:absolute;top:1.1rem;right:1.25rem;width:44px;height:44px;border-radius:50%;
  border:none;background:rgba(255,255,255,.12);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .2s ease}
.projekt-lightbox-close:hover{background:rgba(255,255,255,.22)}

.projekt-card figcaption{padding:1rem 1.25rem 1.35rem;display:flex;flex-direction:column;gap:.2rem}
.projekt-tag{align-self:flex-start;font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--color-primary);background:rgba(44,95,79,.09);padding:.3em .7em;border-radius:100px;margin-bottom:.55rem}
.projekt-card figcaption strong{font-family:var(--font-heading);font-size:1.05rem;color:var(--color-text-dark);letter-spacing:-.01em}
.projekt-desc{font-size:.92rem;color:var(--color-text-light);line-height:1.5;margin-top:.15rem}

/* -------------------------------------------------------------------------
   9. FLOATING SOFORT-KONTAKT (Anruf + WhatsApp)
   ------------------------------------------------------------------------- */
.contact-fab{position:fixed;right:18px;bottom:88px;z-index:998;display:flex;flex-direction:column;gap:12px;transition:opacity .3s ease}
.contact-fab a{
  width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:#fff;box-shadow:0 8px 24px rgba(0,0,0,.22);
  transition:transform .3s var(--ease-out-quint),box-shadow .3s ease;position:relative}
.contact-fab a svg{width:21px;height:21px}
.contact-fab a:hover{transform:scale(1.08)}
.fab-call{background:var(--color-primary)}
.fab-whatsapp{background:var(--whatsapp)}
.fab-call::after{ /* Pulsring */
  content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--color-primary);
  animation:fabPulse 2.4s ease-out infinite}
@keyframes fabPulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(1.7);opacity:0}}
@media(min-width:769px){.contact-fab{bottom:24px}}
@media(max-width:768px){.contact-fab{bottom:100px}} /* über sticky-cta, mit sichtbarem Abstand */

/* -------------------------------------------------------------------------
   9b. PROZESS: eine Reihe auf breiten Screens, sonst 2x2 / gestapelt.
   Hover-Verhalten bewusst identisch zu .abwicklung-card (Gold-Balken oben,
   Lift, Schatten) – konsistente Kartensprache über die ganze Seite.
   ------------------------------------------------------------------------- */
.prozess .steps{grid-template-columns:repeat(2,minmax(260px,1fr))}
@media(min-width:1000px){.prozess .steps{grid-template-columns:repeat(4,1fr);gap:1.5rem}}
@media(max-width:768px){.prozess .steps{grid-template-columns:1fr}}

.prozess .step{position:relative;overflow:hidden}
.prozess .step::after{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-accent);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(0.25,0.46,0.45,0.94)}
.prozess .step:hover::after{transform:scaleX(1)}
.prozess .step:hover{border-color:rgba(193,154,91,0.2)}

/* -------------------------------------------------------------------------
   10. VERGLEICH: MAKLER VS. DIREKTVERKAUF
   ------------------------------------------------------------------------- */
.vergleich-table{
  max-width:880px;margin:0 auto;border-radius:18px;overflow:hidden;
  background:#fff;border:1px solid rgba(0,0,0,.07);box-shadow:0 12px 34px rgba(28,48,40,.08);
}
.vergleich-row{
  display:grid;grid-template-columns:1.1fr 1fr 1fr;align-items:center;
  padding:.9rem 1.25rem;border-bottom:1px solid var(--color-border);
}
.vergleich-row:last-child{border-bottom:none}
.vergleich-header{background:var(--color-bg-warm);padding:.85rem 1.25rem}
.vergleich-header .vergleich-makler,.vergleich-header .vergleich-uns{
  font-family:var(--font-heading);font-weight:700;font-size:.9rem;
  color:var(--color-text-dark);text-align:center;
}
.vergleich-label{font-weight:600;color:var(--color-text-dark);font-size:.95rem}
.vergleich-makler{color:var(--color-text-light);font-size:.9rem;text-align:center;padding:0 .5rem}
.vergleich-uns{font-size:.9rem;text-align:center;padding:0 .5rem}
.vergleich-uns.is-highlight{color:var(--color-primary);font-weight:600}
.vergleich-savings{
  max-width:880px;margin:1.75rem auto 0;padding:1.1rem 1.5rem;text-align:center;
  background:rgba(150,112,58,.08);border:1px solid rgba(150,112,58,.25);border-radius:14px;
  color:var(--color-text-dark);font-size:1.05rem;line-height:1.6;
}
.vergleich-savings strong{color:var(--color-accent)}
@media(max-width:640px){
  .vergleich-row{grid-template-columns:1fr;text-align:left;gap:.35rem;padding:1rem 1.1rem}
  .vergleich-header{display:none}
  .vergleich-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-light);font-weight:600}
  .vergleich-makler,.vergleich-uns{text-align:left;padding:0}
  .vergleich-makler::before{content:"Makler: ";font-weight:600;color:var(--color-text-dark)}
  .vergleich-uns::before{content:"Direktverkauf: ";font-weight:600}
}

/* -------------------------------------------------------------------------
   11. REDUCED MOTION — alles ruhig stellen
   ------------------------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  [data-reveal],.reveal-line > span{opacity:1!important;transform:none!important;transition:none!important}
  .orb{animation:none!important}
  .fab-call::after{animation:none!important}
  .btn-primary::before{display:none}
  *{scroll-behavior:auto!important}
}

/* -------------------------------------------------------------------------
   12. LESBARKEIT — Zeilenlänge der SEO-Fließtexte auf Unterseiten begrenzen
   Ohne max-width liefen .section-intro/.wohnungstyp-block bei ~1136px auf
   ~134 Zeichen/Zeile (Optimum 45–75). Begrenzung auf ~68ch, linksbündig
   (Sektionen sind linksbündig, daher kein margin:auto).
   ------------------------------------------------------------------------- */
.section-intro,
.wohnungstyp-block p{max-width:68ch}

/* -------------------------------------------------------------------------
   13. MOBILE: horizontalen Overflow verhindern
   Reveal-Transforms (translateX) und dekorative Elemente konnten auf schmalen
   Viewports minimalen horizontalen Scroll erzeugen. overflow-x:clip clippt das
   sauber, ohne position:sticky/fixed zu beeinträchtigen (anders als hidden).

   Nachtrag: clip hat nur kaschiert, nicht behoben. Die seitlichen Reveals
   ([data-reveal="left"|"right"]) parken ihr Element vor dem Einblenden neben
   der Spalte. Der Versatz war mit 36px größer als das seitliche Padding von
   .container (var(--space-md) = 32px). Elemente, deren Spalte bündig mit dem
   Container abschließt — konkret .vertrauen-text —, ragten damit 4px über den
   Viewport hinaus; beim Reinscrollen lief der Versatz auf 0 zurück, wodurch
   sich die Scrollbreite laufend änderte und die Seite horizontal wackelte.
   Das betraf jede Breite, bei der .vertrauen-content bündig läuft (bis
   ~1164px), nicht nur Handys.

   Fix an der Wurzel: Versatz auf 24px, also sicher unter den 32px Padding.
   Damit bleibt der seitliche Effekt auf allen Breiten erhalten und kann
   konstruktionsbedingt nicht mehr überlaufen — kein Breakpoint nötig.
   ------------------------------------------------------------------------- */
html{overflow-x:clip}

/* -------------------------------------------------------------------------
   14. KAUFKRITERIEN — Subline zentrieren
   .abwicklung-intro zentriert sich selbst nur als Block (margin:0 auto),
   der Text darin bleibt ohne eigenes text-align linksbündig. In der
   Kaufkriterien-Sektion steht die Subline unter zentrierter Eyebrow/H2,
   soll also ebenfalls zentriert sein.
   ------------------------------------------------------------------------- */
.kaufkriterien .abwicklung-intro{text-align:center}
