/* Digitales Exposé · Zickzackweg 35–39
   Aufbau wie das PDF-Exposé, fürs Handy neu gesetzt. */

.abschnitt{padding-block:clamp(72px,9vw,128px)}
.abschnitt.dunkel{background:var(--nacht);color:var(--hell)}
.abschnitt.blatt{background:var(--blatt)}
.kapitel{scroll-margin-top:76px}
h2.gross{font-size:clamp(2.2rem,4.2vw,3.5rem);line-height:1.06}
.lead{font-size:clamp(1.12rem,1.5vw,1.3rem);line-height:1.6;text-wrap:balance}   /* gleich lange Zeilen: kein Zwei-Wort-Rest in der letzten Zeile */
.dunkel .lead,.dunkel .gedaempft{color:var(--hell-2)}
.gedaempft{color:var(--tinte-2)}
.objekt-zeile{font-size:.95rem;font-weight:700;letter-spacing:.02em;color:var(--greige-tief);margin-bottom:12px}
.dunkel .objekt-zeile{color:var(--greige)}
.zwei-spalten{columns:2;column-gap:56px;max-width:1040px}
.zwei-spalten p{break-inside:avoid;margin-bottom:1em}
@media (max-width:760px){.zwei-spalten{columns:1}}

/* Kopfleiste */
.kopfleiste{position:sticky;top:0;z-index:var(--z-kopf);background:rgba(20,19,18,.95);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);color:var(--hell);box-shadow:0 0 0 1px rgba(244,242,236,.06)}
@media (prefers-reduced-transparency:reduce){.kopfleiste{background:var(--schwarz);-webkit-backdrop-filter:none;backdrop-filter:none}}
.kopfleiste .innen{display:flex;align-items:center;gap:18px;height:68px}
.kopfleiste .logo{display:flex;align-items:center;min-height:44px}
.kopfleiste .logo img{height:34px;width:auto}
.kopfleiste .kapitel-name{flex:1;text-align:center;font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;color:#dcd7ca;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kopfleiste .aktionen{display:flex;align-items:center;gap:10px;margin-left:auto}
.kopfleiste .btn{min-height:42px;padding:0 18px;font-size:.92rem}
.knopf-inhalt{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 16px;border-radius:999px;border:1px solid rgba(244,242,236,.3);background:transparent;cursor:pointer;font-weight:700;font-size:.92rem}
.knopf-inhalt svg{width:18px;height:18px}
@media (hover:hover) and (pointer:fine){.knopf-inhalt:hover{border-color:var(--hell)}}
.kopfleiste .nur-mobil{display:none}
@media (max-width:900px){.kopfleiste .kapitel-name,.kopfleiste .nur-desktop{display:none}.kopfleiste .nur-mobil{display:inline-flex}.kopfleiste .innen{height:60px;gap:12px}.kopfleiste .logo img{height:28px}}
/* Handy: „Besichtigung anfragen“ steht oben in der Leiste, „Inhalt“ wird zum Menüzeichen (Carsten 03.10.26) */
@media (max-width:600px){
  .kopfleiste .aktionen{gap:4px}
  .kopfleiste .knopf-anfrage{min-height:44px;padding:0 15px;font-size:.88rem}
  .knopf-inhalt{width:44px;min-height:44px;padding:0;justify-content:center;border-color:transparent;margin-right:-14px}
  .knopf-inhalt svg{width:24px;height:24px}
  .knopf-inhalt .text{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}
@media (max-width:374px){.kopfleiste .logo img{height:24px}.kopfleiste .knopf-anfrage{padding:0 12px;font-size:.84rem}}

/* Danke-Hinweis nach dem Formular */
.danke{background:var(--greige);color:var(--schwarz)}
.danke .innen{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-block:16px}
.danke p{font-size:1rem}
.danke p{flex:1;min-width:0}
.danke p b{font-family:var(--serif);font-weight:400}
.danke .btn{flex:none;min-height:42px;padding:0 16px;font-size:.92rem}
.danke-wege{display:flex;align-items:center;gap:14px;flex:none}
.danke .von-vorn{display:inline-flex;align-items:center;gap:6px;min-height:42px;font-weight:700;color:var(--schwarz);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;white-space:nowrap}
.danke .von-vorn svg{width:16px;height:16px}
/* Nach dem Formular der Objektseite steht die Tafel im Text, über den Grundrissen oder der Wohnungsübersicht (expose.js setzt sie dorthin) */
.danke{scroll-margin-top:84px}
.danke.im-text{width:min(1200px,100% - 48px);margin:0 auto clamp(24px,3vw,36px);border-radius:var(--r-gross)}
.danke.im-text .innen{width:auto;padding:16px 20px}
@media (max-width:900px){.danke{scroll-margin-top:74px}}
/* Handy: Text links, Schließen rechts daneben, die Knöpfe in einer zweiten Zeile (kein Überlappen, der Schließknopf bleibt klickbar) */
@media (max-width:640px){.danke.im-text{width:calc(100% - 40px)}.danke .innen{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px 14px}.danke p{grid-column:1}.danke .zu{grid-column:2;grid-row:1}.danke-wege{grid-column:1 / -1}}
.danke .zu{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:1px solid rgba(20,19,18,.3);background:transparent;cursor:pointer;display:grid;place-items:center}
.danke .zu svg{width:18px;height:18px}

/* Titel */
.titel{position:relative;min-height:calc(100svh - 68px);max-height:980px;display:flex;align-items:flex-end;background:var(--schwarz);color:var(--hell);overflow:hidden}
.titel picture,.titel picture img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.titel picture img{object-position:32% 55%}
.titel::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,19,18,.62) 0%,rgba(20,19,18,.22) 42%,rgba(20,19,18,0) 65%),linear-gradient(180deg,rgba(20,19,18,.35) 0%,rgba(20,19,18,0) 18%,rgba(20,19,18,.1) 38%,rgba(20,19,18,.9) 76%,#141312 100%)}
.titel .innen{position:relative;z-index:2;padding-bottom:clamp(36px,6vh,72px)}
.titel .objekt-zeile{color:var(--hell);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase}
.titel h1{font-size:clamp(2.8rem,6vw,5.6rem);line-height:1.04;max-width:17ch}
.titel .sub{font-family:var(--serif);font-style:italic;font-size:clamp(1.12rem,1.6vw,1.45rem);color:var(--greige-hell);margin-top:14px;max-width:40ch}
.titel .eckdaten{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:clamp(26px,4vh,40px);padding-top:18px;border-top:1px solid rgba(244,242,236,.22);max-width:900px}
.titel .eckdaten div{padding-right:16px}
.titel .eckdaten b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(1.2rem,1.9vw,1.6rem);font-variant-numeric:tabular-nums;white-space:nowrap}
.titel .eckdaten span{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--hell-2)}
.titel-fuss{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 28px;margin-top:10px;max-width:900px}
.titel .adresse{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--hell-2)}
/* Direkter Weg zu den Wohnungen, ohne den Umweg über das Inhaltsmenü */
.titel .zu-wohnungen{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:.95rem;font-weight:700;color:var(--hell);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:rgba(244,242,236,.5)}
.titel .zu-wohnungen svg{width:16px;height:16px;flex:none}
@media (hover:hover) and (pointer:fine){.titel .zu-wohnungen:hover{text-decoration-color:var(--hell)}}
@media (max-width:640px){.titel .eckdaten{grid-template-columns:1fr 1fr;row-gap:16px}}
@media (prefers-reduced-motion:no-preference) and (min-width:901px){.titel picture img{animation:drift 26s var(--ease-out) infinite alternate}@keyframes drift{from{transform:scale(1.02)}to{transform:scale(1.09)}}}
/* Desktop: Villen höher, Text tiefer, damit mehr von den Häusern frei steht (Carsten 03.10.26).
   Bildlage je Seitenverhältnis so gewählt, dass das Dach der vorderen Villa immer ganz im Bild bleibt. */
@media (min-width:901px){
  .titel{min-height:calc(100svh - 40px)}
  .titel picture img{object-position:32% 72%}
  .titel::after{background:linear-gradient(90deg,rgba(20,19,18,.5) 0%,rgba(20,19,18,.16) 38%,rgba(20,19,18,0) 58%),linear-gradient(180deg,rgba(20,19,18,.32) 0%,rgba(20,19,18,0) 14%,rgba(20,19,18,0) 48%,rgba(20,19,18,.5) 64%,rgba(20,19,18,.88) 80%,#141312 100%)}
  .titel .innen{padding-bottom:clamp(28px,4vh,48px)}
  .titel h1{font-size:clamp(2.35rem,5vw,4.6rem)}
  .titel .sub{max-width:none}
}
@media (min-width:901px) and (min-aspect-ratio:19/10){.titel picture img{object-position:32% 62%}}
@media (min-width:901px) and (min-aspect-ratio:23/10){.titel picture img{object-position:32% 50%}}
/* Handy und Tablet hochkant: Bild frei und vollständig oben, Text darunter (Carsten 03.10.26) */
@media (max-width:900px){
  .titel{display:block;min-height:0;max-height:none}
  .titel::after{content:none}
  .titel picture{position:relative;inset:auto;display:block;height:auto}
  .titel picture img{position:static;height:auto}
  .titel picture::after{content:"";position:absolute;left:0;right:0;bottom:0;height:26%;background:linear-gradient(180deg,rgba(20,19,18,0) 0%,rgba(20,19,18,0) 22%,rgba(20,19,18,.66) 64%,#141312 100%)}
  .titel .innen{margin-top:-44px;padding-bottom:44px}
}
/* kleine Handys: „in den Elbvororten“ bleibt eine Zeile */
@media (max-width:400px){.titel h1{font-size:min(2.35rem,calc((100vw - 40px) / 9.15))}}

/* Willkommen */
.willkommen-bild{position:relative;overflow:hidden}
.willkommen-bild img{width:100%;aspect-ratio:16/9;object-fit:cover}
.willkommen-text{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:start;margin-top:clamp(36px,5vw,64px)}
.willkommen h2{font-size:clamp(2rem,3.6vw,3.1rem);line-height:1.08}
.willkommen-text p+p{margin-top:1em}
@media (max-width:900px){.willkommen-text{grid-template-columns:1fr;gap:18px}.willkommen-bild img{aspect-ratio:4/3}}
@media (max-width:720px){.willkommen-bild img{aspect-ratio:16/9}}

/* Daten */
.punktliste{display:grid;grid-template-columns:1fr 1fr;column-gap:56px;margin:0}
.punktliste div{display:flex;align-items:baseline;gap:8px;padding:9px 0}
.punktliste dt{color:var(--tinte-2);flex:0 0 auto}
.punktliste dd{margin:0;font-weight:700;text-align:right;flex:0 1 auto}
.punktliste div::after{content:"";order:1;flex:1;border-bottom:2px dotted rgba(38,37,31,.22);transform:translateY(-4px);min-width:16px}
.punktliste dd{order:2}
.punktliste.schmal{grid-template-columns:1fr;max-width:640px}
.punktliste dd small{display:block;font-weight:400;color:var(--tinte-2);font-size:.85rem;margin-top:1px}
.dunkel-liste dt{color:var(--hell-2)}
.dunkel-liste dd{color:var(--hell)}
.dunkel-liste dd small{color:var(--hell-2)}
.dunkel-liste div::after{border-bottom-color:rgba(244,242,236,.2)}
/* Spezifikationsliste: Begriff links, Wert links, dünne Linien; zweispaltig auf dem Desktop */
.spezifikation{display:grid;grid-template-columns:1fr 1fr;column-gap:56px;margin:0}
.spezifikation div{display:grid;grid-template-columns:minmax(120px,32%) 1fr;gap:14px;padding:12px 0;border-top:1px solid var(--kante-dunkel);align-items:baseline}
.spezifikation dt{color:var(--hell-2);font-size:.95rem}
.spezifikation dd{margin:0;color:var(--hell);line-height:1.5}
.spezifikation.hell div{border-top-color:var(--kante)}
.spezifikation.hell dt{color:var(--tinte-2)}
.spezifikation.hell dd{color:var(--tinte)}
.spezifikation.einspaltig{grid-template-columns:1fr;max-width:640px}
.spezifikation.konditionen{margin-top:32px;grid-template-columns:1fr}   /* Linien so breit wie die Preisliste darüber, nur der Text bleibt schmal */
.spezifikation.konditionen div{grid-template-columns:minmax(150px,24%) 1fr}
.spezifikation.konditionen dd{color:var(--tinte-2);max-width:68ch}
.spezifikation.konditionen dt{color:var(--tinte);font-weight:700}
@media (max-width:900px){.spezifikation{grid-template-columns:1fr}}   /* zwei Spalten erst, wenn der Wert neben dem Namen Platz hat */
@media (max-width:760px){.spezifikation div{grid-template-columns:1fr;gap:2px}.spezifikation.konditionen div{grid-template-columns:1fr}}
@media (max-width:760px){.punktliste{grid-template-columns:1fr}}

/* Ensemble */
.vollbild{position:relative;overflow:hidden;background:var(--panel)}
.vollbild img{width:100%}
.ensemble .text{margin-top:40px}
.fussnote{font-size:.9rem;color:var(--tinte-2);margin-top:14px;max-width:80ch}
.fussnote.hell{color:var(--hell-2)}
@media (max-width:760px){.zwei-karten{grid-template-columns:1fr}}

/* Geplant und gebaut */
.gebaut-kopf .lead{margin-top:14px;max-width:76ch;color:var(--tinte-2)}   /* zwei gleich lange Zeilen statt drei mit Rest */
.chronik-kopf{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:clamp(30px,4vw,48px) 0 22px}
.chronik-kopf h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 16px;font-size:clamp(1.45rem,2.2vw,1.8rem)}
.chronik-kopf h3 b{font-weight:400}
.chronik-kopf h3 span{font-family:var(--sans);font-size:1rem;letter-spacing:0;color:var(--tinte-2)}
.chronik-nav{display:flex;gap:10px;flex:none}
.chronik-nav button{width:48px;height:48px;border-radius:50%;border:1px solid rgba(38,37,31,.3);background:var(--blatt);color:var(--tinte);display:grid;place-items:center;cursor:pointer;transition:background-color .2s var(--ease-out),border-color .2s var(--ease-out),transform .14s var(--ease-out)}
.chronik-nav svg{width:22px;height:22px}
.chronik-nav button:active:not(:disabled){transform:scale(.94)}
.chronik-nav button:disabled{cursor:default;color:rgba(38,37,31,.3);border-color:var(--kante-zart);background:transparent}
@media (hover:hover) and (pointer:fine){.chronik-nav button:not(:disabled):hover{background:var(--tinte);color:var(--hell);border-color:var(--tinte)}}
@media (prefers-reduced-motion:no-preference){
  .chronik-nav.zeigt [data-chronik-weiter]:not(:disabled){animation:pfeil-puls 1.2s var(--ease-out) 2}
  @keyframes pfeil-puls{0%,100%{transform:scale(1)}50%{transform:scale(1.12);background:var(--tinte);color:var(--hell);border-color:var(--tinte)}}
}
@media (max-width:760px){.chronik-kopf{align-items:end}}

/* Architektur */
.architektur .text{margin-top:40px}
.details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:36px}
.details figure{margin:0}
.details img{width:100%;aspect-ratio:1/1;object-fit:cover}
.details figcaption{font-size:.92rem;color:var(--tinte-2);margin-top:8px}
@media (max-width:760px){.details{grid-template-columns:1fr 1fr}.details figure:first-child{grid-column:1/-1}.details figure:first-child img{aspect-ratio:4/3}}

/* Bel Etage: dunkle Bühne, die gewählte Etage leuchtet */
.beletage{--licht:#f1dcaa}
.etagen-buehne{position:relative;overflow:hidden;background:var(--schwarz);color:var(--hell);padding-block:clamp(72px,9vw,128px)}
.etagen-buehne .wrap{position:relative}
.buehne-raster{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:clamp(36px,5.5vw,88px);align-items:center;margin-top:clamp(36px,5vw,60px)}

.zeichnung{--rand:84px;position:relative;display:grid;grid-template-columns:minmax(0,1fr) var(--rand)}
.zeichnung .flaeche{position:relative;aspect-ratio:1100/1003}
.zeichnung .linien{position:absolute;inset:0;background:rgba(244,242,236,.46);-webkit-mask:url(../img/ansicht-eng.png) center/100% 100% no-repeat;mask:url(../img/ansicht-eng.png) center/100% 100% no-repeat}
.zeichnung .licht{background:var(--licht);clip-path:inset(var(--oben) 0 var(--unten) 0);transition:clip-path .75s var(--ease-out)}
.zeichnung[data-aktiv="dg"]{--oben:0%;--unten:53.5%}
.zeichnung[data-aktiv="og"]{--oben:46.5%;--unten:24.6%}
.zeichnung[data-aktiv="eg"]{--oben:75.4%;--unten:1.4%}
.etage-band{position:absolute;left:calc((100% - var(--rand)) * .028);right:0;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.etage-band[data-etage="dg"]{top:0;height:46.5%}
.etage-band[data-etage="og"]{top:46.5%;height:28.9%}
.etage-band[data-etage="eg"]{top:75.4%;height:23.2%}
.etage-band .marke{position:absolute;right:0;top:50%;transform:translateY(-50%);min-width:calc(var(--rand) - 16px);padding:7px 10px;border-radius:999px;border:1px solid rgba(244,242,236,.34);background:var(--schwarz);color:var(--hell-2);font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;text-align:center;white-space:nowrap;transition:background-color .25s var(--ease-out),border-color .25s var(--ease-out),color .25s var(--ease-out)}
.etage-band .marke::before{content:"";position:absolute;right:100%;top:50%;width:12px;height:1px;background:rgba(244,242,236,.34)}
.etage-band[aria-pressed="true"] .marke{background:var(--licht);border-color:var(--licht);color:var(--schwarz)}
.etage-band[aria-pressed="true"] .marke::before{background:var(--licht)}
@media (hover:hover) and (pointer:fine){.etage-band:not([aria-pressed="true"]):hover .marke{border-color:var(--licht);color:var(--hell)}}

.aufforderung{display:flex;align-items:center;gap:12px;font-size:.8rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--licht)}
.aufforderung::before{content:"";width:28px;height:1px;background:var(--licht)}
.aufforderung-text{margin-top:10px;color:var(--hell-2);max-width:42ch}
.etagen-wahl{display:grid;gap:10px;margin-top:22px}
.etagen-wahl button{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px;width:100%;min-height:68px;padding:12px 18px 12px 20px;text-align:left;border-radius:var(--r-gross);border:1px solid var(--kante-dunkel);background:rgba(244,242,236,.035);color:var(--hell);cursor:pointer;transition:background-color .25s var(--ease-out),border-color .25s var(--ease-out),transform .14s var(--ease-out)}
.etagen-wahl .n{font-family:var(--serif);font-weight:400;font-size:1.28rem;line-height:1.2}
.etagen-wahl .v{grid-column:1;font-size:.9rem;color:var(--hell-2)}
.etagen-wahl .punkt{grid-column:2;grid-row:1/span 2;width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(244,242,236,.4);display:grid;place-items:center;transition:border-color .25s var(--ease-out)}
.etagen-wahl .punkt::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--licht);transform:scale(0);transition:transform .25s var(--ease-out)}
.etagen-wahl button[aria-pressed="true"]{border-color:rgba(241,220,170,.6);background:rgba(241,220,170,.08)}
.etagen-wahl button[aria-pressed="true"] .n{color:var(--licht)}
.etagen-wahl button[aria-pressed="true"] .punkt{border-color:var(--licht)}
.etagen-wahl button[aria-pressed="true"] .punkt::after{transform:scale(1)}
.etagen-wahl button:active{transform:scale(.985)}
@media (hover:hover) and (pointer:fine){.etagen-wahl button:hover{border-color:rgba(244,242,236,.42)}.etagen-wahl button[aria-pressed="true"]:hover{border-color:var(--licht)}}

.etagen-info{margin-top:26px}
.etagen-info .info-kopf{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--hell-2)}
.etagen-info .liste{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.etagen-info .liste li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 16px;background:var(--panel);border:1px solid var(--kante-dunkel);border-radius:var(--r)}
.etagen-info .liste b{font-family:var(--serif);font-weight:400;font-size:1.12rem;color:var(--hell)}
.etagen-info .liste small{display:block;color:var(--hell-2);font-size:.9rem;text-wrap:balance}
.etagen-info .liste a{text-decoration:none}
.etagen-info .liste a b{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:rgba(244,242,236,.5)}
@media (hover:hover) and (pointer:fine){.etagen-info .liste a:hover b{text-decoration:underline}}
.etagen-buehne .status.frei{background:var(--greige-hell);color:var(--schwarz);border-color:var(--greige-hell)}
.etagen-buehne .status.reserviert{border:1px dashed var(--greige-hell);color:var(--greige-hell)}
.etagen-buehne .status.verkauft{border-color:var(--kante-dunkel);color:var(--hell-2)}

.beletage-text{padding-block:clamp(56px,7vw,96px) clamp(72px,9vw,128px)}
@media (max-width:900px){
  .buehne-raster{grid-template-columns:1fr;gap:0}
  .etagen-steuerung{display:contents}
  .aufforderung{order:1}
  .aufforderung-text{order:2;margin-bottom:22px}
  .zeichnung{order:3}
  .etagen-wahl{order:4;margin-top:26px}
  .etagen-info{order:5}
  .vier-zahlen{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:600px){.zeichnung{--rand:64px}.etage-band .marke{font-size:.72rem;padding:6px 5px;letter-spacing:.06em}.etage-band .marke::before{width:8px}}
@media (prefers-reduced-motion:reduce){.zeichnung .licht{transition:none}}
@media (prefers-contrast:more){.zeichnung .linien{background:rgba(244,242,236,.78)}.zeichnung .licht{background:var(--licht)}}
@media (forced-colors:active){.zeichnung .linien{forced-color-adjust:none}}

/* Wohnen */
.wohnen-raster{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
.wohnen-raster .bild{position:relative;overflow:hidden}
.wohnen-raster .bild img{width:100%;aspect-ratio:707/1000;object-fit:cover}
.wohnen-raster h2{font-size:clamp(1.8rem,3vw,2.6rem);margin-bottom:18px}
@media (max-width:900px){.wohnen-raster{grid-template-columns:1fr}}

/* Raumkonzept */
.band-bild{position:relative;overflow:hidden}
.band-bild img{width:100%;aspect-ratio:2/1;object-fit:cover}
.raeume-raster{display:grid;grid-template-columns:1fr 1fr;gap:28px 48px;margin-top:40px}
.raeume-raster h3{font-size:1.25rem;margin-bottom:6px;display:flex;gap:10px;align-items:baseline}
.raeume-raster h3 i{font-family:var(--serif);font-style:italic;font-weight:400;color:var(--greige-tief)}
.raeume-raster p{color:var(--tinte-2)}
@media (max-width:760px){.raeume-raster{grid-template-columns:1fr}.band-bild img{aspect-ratio:4/3}}

/* Ausstattung (dunkel) */

/* Abend (KI) */
.ausstattung-ende{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-top:40px;padding-top:28px;border-top:1px solid var(--kante-dunkel)}
.ausstattung-ende p{color:var(--hell-2);max-width:56ch}
.abend-bild{position:relative;overflow:hidden}
.abend-bild img{width:100%;aspect-ratio:16/9;object-fit:cover}
/* Bildunterschrift in einer Achse: Überschrift in einer Zeile, darunter der Satz, darunter klein der Hinweis.
   Nicht nebeneinander: neben einer Fußnote oder einem einzelnen Satz bricht die Überschrift ohne Grund in zwei Zeilen. */
.abend .text{margin-top:clamp(28px,4vw,44px)}
.abend .text .lead{margin-top:14px}
.abend .text .fussnote{margin-top:14px}
@media (max-width:760px){.abend-bild img{aspect-ratio:4/3}}

/* Lage */
.lagekarte{position:relative;margin-top:36px;background:var(--nacht)}
.lagekarte img{display:block;width:100%;height:auto}
.karte-quer,.karte-hoch{position:relative}
.karte-hoch{display:none}
.lagekarte .marke{position:absolute;transform:translate(-50%,-50%);font-size:.82rem;font-weight:700;letter-spacing:.02em;color:var(--hell);white-space:nowrap;pointer-events:none;text-shadow:0 1px 2px rgba(20,19,18,.9),0 0 10px rgba(20,19,18,.9)}
.lagekarte .marke.r{transform:translate(12px,-50%)}
.lagekarte .marke.l{transform:translate(calc(-100% - 12px),-50%)}
.lagekarte .marke.t{transform:translate(-50%,calc(-100% - 10px))}
.lagekarte .marke.b{transform:translate(-50%,12px)}
.lagekarte .marke.standort{transform:translate(-50%,-34px)}
.lagekarte .marke.standort b{display:inline-block;padding:5px 10px;border-radius:999px;background:var(--licht,#f1dcaa);color:var(--schwarz);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;text-shadow:none}
.karte-quelle{position:absolute;right:10px;bottom:6px;margin:0;font-size:.76rem;color:rgba(244,242,236,.55)}
.lage-liste{margin-top:28px}
/* Der Wert (Minuten) bricht nie um; wird es eng, bricht der Ortsname */
.lage-liste dd{text-align:right;font-weight:400;color:var(--tinte);flex:0 0 auto;white-space:nowrap}
.lage-liste dt{color:var(--tinte);flex:0 1 auto;min-width:0;text-wrap:balance}
@media (min-width:761px) and (max-width:960px){.lage-liste{grid-template-columns:1fr}}   /* zwei Spalten erst, wenn Name und Wert nebeneinander passen */
@media (max-width:760px){
  .karte-quer{display:none}.karte-hoch{display:block}.lagekarte .marke{font-size:.78rem}
  .lage-liste{grid-template-columns:1fr}
  .lage-liste div{display:grid;grid-template-columns:1fr auto;gap:2px 14px;padding:10px 0;border-top:1px solid var(--kante)}
  .lage-liste div::after{display:none}
  .lage-liste dt{grid-column:1;grid-row:1}
  .lage-liste dd{grid-column:2;grid-row:1;text-align:right;white-space:nowrap}
  .lage-liste dd small{grid-column:2}
}
.lage-bild{position:relative;overflow:hidden;margin-top:clamp(40px,6vw,64px)}
.lage-bild img{width:100%;height:auto;display:block}
.lage-bild figcaption{font-size:.95rem;color:var(--tinte-2);margin-top:12px}


/* Wohnungen: Übersicht */
.haeuser{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:32px}
.haus{border-top:2px solid var(--tinte);overflow:hidden;box-shadow:none}
.haus .hk{padding:18px 0 14px;border-bottom:1px solid var(--kante)}
.haus .hk b{display:block;font-family:var(--serif);font-weight:400;font-size:1.35rem}
.haus .hk span{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--tinte-2)}
.einheit{display:block;padding:16px 0;border-top:1px solid var(--kante-zart);text-decoration:none}
.haus .hk + .einheit{border-top:0}
.einheit .e{font-size:.76rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--greige-tief)}
.einheit .z{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:4px}
.einheit .z b{font-family:var(--serif);font-weight:400;font-size:1.15rem}
.einheit .d{display:block;font-size:.92rem;color:var(--tinte-2);margin-top:2px;font-variant-numeric:tabular-nums}
.einheit.verkauft b,.einheit.verkauft .d{color:var(--tinte-2)}
a.einheit .d::after{content:" → Grundriss";color:var(--tinte);font-weight:700}
@media (hover:hover) and (pointer:fine){a.einheit:hover .z b{text-decoration:underline;text-underline-offset:4px}}
.lageplan-zeile{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,4vw,56px);align-items:center;margin-top:clamp(40px,5vw,64px)}
.plan-dunkel{position:relative;margin:0;background:var(--nacht);overflow:hidden}
.plan-dunkel img{display:block;width:100%;height:auto}
.lageplan-text h3{font-size:1.5rem;margin-bottom:10px}
.lageplan-text .punktliste{margin-top:18px}
@media (max-width:900px){.haeuser{grid-template-columns:1fr}.lageplan-zeile{grid-template-columns:1fr}}

/* Wohnungen: ein Block mit Reitern */
.wohnung-wahl{background:var(--blatt);border-top:1px solid var(--kante)}
.wahl-kopf{margin-bottom:clamp(16px,2.2vw,24px)}
.wahl-kopf .aufforderung{margin-top:clamp(14px,2vw,22px);color:var(--greige-tief)}
.wahl-kopf .aufforderung::before{background:var(--greige-tief)}
.whg-reiter{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:10px;margin-bottom:clamp(32px,4.5vw,56px)}
.whg-reiter button{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px;min-height:68px;padding:12px 14px 12px 18px;text-align:left;border:1px solid rgba(38,37,31,.3);border-radius:var(--r-gross);background:transparent;color:var(--tinte-2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .2s var(--ease-out),border-color .2s var(--ease-out),color .2s var(--ease-out),transform .14s var(--ease-out)}
.whg-reiter button b{grid-column:1;font-family:var(--serif);font-weight:400;font-size:1.22rem;line-height:1.2;color:var(--tinte)}
.whg-reiter button span{grid-column:1;font-size:.84rem;line-height:1.35}
.whg-reiter button b + span{margin-top:3px}
.whg-reiter button span i{font-style:normal}
.whg-reiter button::after{content:"";grid-column:2;grid-row:1 / span 3;width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(38,37,31,.4);transition:border-color .2s var(--ease-out)}
.whg-reiter button[aria-selected="true"]{background:var(--tinte);border-color:var(--tinte);color:var(--hell-2)}
.whg-reiter button[aria-selected="true"] b{color:var(--hell)}
.whg-reiter button[aria-selected="true"]::after{border-color:var(--greige-hell);background:radial-gradient(circle,var(--greige-hell) 0 5px,transparent 5.5px)}
.whg-reiter button:active{transform:scale(.985)}
@media (hover:hover) and (pointer:fine){.whg-reiter button:not([aria-selected="true"]):hover{border-color:var(--tinte);color:var(--tinte)}}
@media (max-width:600px){
  .whg-reiter{grid-template-columns:1fr 1fr;gap:8px}
  .whg-reiter button{min-height:64px;padding:11px 10px 11px 14px;column-gap:8px}
  .whg-reiter button b{font-size:1.12rem}
  .whg-reiter button span i{display:none}
  .whg-reiter button:last-child:nth-child(odd){grid-column:1 / -1}
}
@media (min-width:601px) and (max-width:930px){
  .whg-reiter{grid-template-columns:repeat(6,minmax(0,1fr))}
  .whg-reiter button{grid-column:span 2}
  .whg-reiter button:nth-last-child(2):nth-child(3n+1),.whg-reiter button:last-child:nth-child(3n+2){grid-column:span 3}
  .whg-reiter button:last-child:nth-child(3n+1){grid-column:1 / -1}
}
@media (forced-colors:active){.whg-reiter button[aria-selected="true"]{border-width:3px}}
/* Links auf eine Wohnung landen an der Auswahl: Die gewählte Wohnung ist markiert, das Detail beginnt direkt darunter */
.whg-reiter{scroll-margin-top:84px}
@media (max-width:900px){.whg-reiter{scroll-margin-top:74px}}
.whg{scroll-margin-top:84px}
.whg-kopf{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap}
.whg-kopf h3{font-size:clamp(2rem,3.6vw,3rem)}
.whg-fakten{margin-top:8px;color:var(--tinte-2)}
.whg-kopf .preis{text-align:right}
.whg-kopf .preis b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(1.6rem,2.6vw,2.2rem);font-variant-numeric:tabular-nums}
.whg-kopf .preis span{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--tinte-2)}
.whg-raster{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(24px,4vw,64px);align-items:start;margin-top:clamp(24px,3vw,36px)}
.plaene{display:grid;gap:12px}
.plaene.zwei{grid-template-columns:1fr 1fr}
.plan-knopf{position:relative;display:block;width:100%;padding:12px 12px 56px;background:#fffefb;border:1px solid var(--kante);cursor:zoom-in;text-align:left}
.plan-knopf picture{display:block}
.plan-knopf img{width:100%;max-height:620px;object-fit:contain}
.plan-knopf .lupe{position:absolute;right:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:7px 11px;border-radius:999px;border:1px solid var(--kante);background:var(--blatt);color:var(--tinte)}
.plan-knopf .lupe svg{width:14px;height:14px}
.plan-knopf .eb{display:block;font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--greige-tief);margin-bottom:8px}
.whg-text{color:var(--tinte-2);margin-bottom:22px}
.whg-text b{font-family:var(--serif);font-weight:400;color:var(--tinte)}
/* Zwei Spalten nur, wenn die Textspalte breit genug ist, dass „Terrasse (50 %)“ samt Wert in eine Zeile passt */
.whg-daten{container:whg / inline-size}
.raumliste{margin:0;columns:1;column-gap:36px}
@container whg (min-width:460px){.raumliste{columns:2}}
.whg-daten .eb{font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--greige-tief);margin:18px 0 4px}
.whg-text + .eb{margin-top:0}
.raumliste div{display:flex;align-items:baseline;gap:8px;padding:5px 0;break-inside:avoid}
.raumliste dt{color:var(--tinte)}
.raumliste dd{margin:0;order:2;color:var(--tinte-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.raumliste div::after{content:"";order:1;flex:1;border-bottom:2px dotted rgba(38,37,31,.2);transform:translateY(-4px);min-width:12px}
.whg-fussnote{display:block;margin-top:14px;font-size:.9rem;color:var(--tinte-2)}
.whg-aktion{margin-top:24px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px}
.whg-aktion .frage-link,.plan-pdf a,.plan-dialog .pdf-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:700;color:var(--tinte);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:rgba(38,37,31,.4)}
.plan-pdf a svg,.plan-dialog .pdf-link svg{width:18px;height:18px;flex:none}
@media (hover:hover) and (pointer:fine){.whg-aktion .frage-link:hover,.plan-pdf a:hover,.plan-dialog .pdf-link:hover{text-decoration-color:var(--tinte)}}
/* Einzelblatt der Wohnung direkt unter dem Plan */
.plan-pdf{display:flex;flex-wrap:wrap;align-items:center;gap:0 14px;margin-top:8px}
.plan-pdf small{font-size:.84rem;color:var(--tinte-2)}
/* Am Ende jeder Wohnung: die anderen verfügbaren Wohnungen */
.whg-weitere{margin-top:clamp(36px,5vw,64px);padding-top:22px;border-top:1px solid var(--kante)}
.whg-weitere .eb{font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--greige-tief)}
.whg-weitere ul{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 28px}
.whg-weitere a{display:block;padding:10px 0;text-decoration:none}
.whg-weitere a b{display:block;font-family:var(--serif);font-weight:400;font-size:1.22rem;line-height:1.2;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:rgba(38,37,31,.4)}
.whg-weitere a small{display:block;margin-top:4px;font-size:.84rem;line-height:1.4;color:var(--tinte-2);text-wrap:balance}
@media (hover:hover) and (pointer:fine){.whg-weitere a:hover b{text-decoration-color:var(--tinte)}}
@media (max-width:820px){.whg-weitere ul{grid-template-columns:1fr 1fr}}   /* vier nebeneinander, solange die längste Zeile (rund 165 px) in eine Spalte passt */
@media (max-width:900px){.whg-raster{grid-template-columns:1fr}.whg-kopf .preis{text-align:left}}
@media (max-width:560px){.plaene.zwei{grid-template-columns:1fr}}

/* Preise */
.preis-buehne{color:var(--tinte);padding:clamp(20px,3vw,32px) 0;margin-top:20px;border-top:2px solid var(--tinte);border-bottom:1px solid var(--kante)}
.preis-buehne .k{font-size:.75rem;letter-spacing:.24em;text-transform:uppercase;color:var(--greige-tief)}
.preis-buehne b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(1.9rem,4vw,3rem);line-height:1.15;margin:8px 0 6px;font-variant-numeric:tabular-nums}
.preis-buehne b small{font-family:var(--sans);font-weight:400;font-size:.42em;margin:0 10px 0 0;color:var(--tinte-2)}
.preis-buehne b small{display:inline-block;min-width:2.2em}
@media (min-width:600px){.preis-buehne b .nowrap + .nowrap{margin-left:.5em}}
.preis-buehne p{color:var(--tinte-2)}
.preisliste{width:100%;border-collapse:collapse;margin-top:22px;font-variant-numeric:tabular-nums}
.preisliste th{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--tinte-2);text-align:left;font-weight:700;padding:6px 14px}
.preisliste td{padding:14px;border-bottom:1px solid var(--kante-zart)}
.preisliste .r{text-align:right;white-space:nowrap}
.preisliste .p{font-family:var(--serif);font-weight:400;font-size:1.15rem}
.preisliste tr.verkauft td{color:var(--tinte-2)}
.preisliste a{font-weight:700;position:relative}
.preisliste a::after{content:"";position:absolute;inset:-13px -10px}   /* Tippfläche 44 px hoch, ohne die Zeile zu verändern */
@media (min-width:761px){.preisliste th,.preisliste td{white-space:nowrap}}   /* „Wohnung 1“, „1. + 2. DG“ bleiben in einer Zeile */
@media (min-width:761px) and (max-width:900px){.preisliste th{padding:6px 8px}.preisliste td{padding:14px 8px}}
@media (max-width:760px){
  .preisliste thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .preisliste,.preisliste tbody,.preisliste tr,.preisliste td{display:block;width:100%}
  .preisliste tr{display:grid;grid-template-columns:1fr auto;gap:2px 12px;border-bottom:1px solid var(--kante-zart);padding:14px 0}
  .preisliste td{background:none!important;border:0!important;padding:0;border-radius:0!important}
  .preisliste td[data-k="whg"]{grid-column:1;grid-row:1;font-weight:700;font-family:var(--serif);font-size:1.1rem}
  .preisliste td[data-k="haus"],.preisliste td[data-k="lage"],.preisliste td[data-k="zimmer"],.preisliste td[data-k="flaeche"]{display:none}
  .preisliste td[data-k="mobil"]{display:block!important;grid-column:1;grid-row:2;color:var(--tinte-2);font-size:.92rem;text-wrap:balance}
  .preisliste td[data-k="preis"]{grid-column:2;grid-row:1;text-align:right}
  .preisliste td[data-k="status"]{grid-column:2;grid-row:2;text-align:right}
}
.preisliste td[data-k="mobil"]{display:none}

/* Kontakt */
.kontakt-bild{position:relative}
.kontakt-bild img{width:100%;aspect-ratio:21/8;object-fit:cover}
.kontakt-bild::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(26,25,25,0) 60%,var(--nacht) 100%)}
.kontakt .innen{padding-block:clamp(40px,6vw,72px) clamp(72px,9vw,120px)}
.kontakt h2{font-size:clamp(2rem,4vw,3.1rem)}
.kontakt-raster{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);margin-top:32px;align-items:start}
.person{display:grid;grid-template-columns:220px minmax(0,1fr);grid-template-rows:auto 1fr auto;grid-template-areas:"bild kopf" "bild text" "knoepfe knoepfe";column-gap:28px;align-items:start}
.person picture{grid-area:bild;display:block}
.person img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:center top}
.person-kopf{grid-area:kopf}
.person h3{font-size:1.45rem}
.person .rolle{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--greige);margin:6px 0 0}
.person-text{grid-area:text;margin-top:14px;color:var(--hell-2)}
.kontakt-knoepfe{grid-area:knoepfe;display:grid;gap:10px;margin-top:26px}
.kontakt-knoepfe .btn{width:100%}
.weitere-wege{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.weitere-wege .btn{padding:0 14px}
@media (max-width:480px){.weitere-wege{grid-template-columns:1fr}}
.direktwege{margin:14px 0 0;text-align:center;color:var(--hell-2)}
.direktwege a{position:relative;color:var(--hell);font-weight:700;text-decoration:none;border-bottom:1px solid rgba(244,242,236,.35)}
.direktwege a::after{content:"";position:absolute;inset:-10px -2px}
.direktwege .trenner{margin:0 10px}
.pdf-karte{border-top:1px solid var(--kante-dunkel);padding:clamp(22px,3vw,32px)}
.pdf-karte h3{font-size:1.45rem;margin-bottom:8px}
.pdf-karte p{color:var(--hell-2)}
.pdf-karte .btn{width:100%;margin-top:20px}
.pdf-karte small{display:block;margin-top:10px;color:var(--hell-2);font-size:.85rem}
@media (max-width:900px){.kontakt-raster{grid-template-columns:1fr}.kontakt-bild img{aspect-ratio:16/10}.pdf-karte{padding-inline:0}}
@media (max-width:360px){.person{grid-template-columns:104px minmax(0,1fr)!important;column-gap:16px!important}.person .rolle{letter-spacing:.08em}}
@media (max-width:600px){.person{grid-template-columns:140px minmax(0,1fr);grid-template-rows:auto auto auto;grid-template-areas:"bild kopf" "text text" "knoepfe knoepfe";column-gap:20px}.person-kopf{align-self:center}.person h3{font-size:1.35rem}.person-text{margin-top:20px}.kontakt-knoepfe{margin-top:22px}}

/* Fuß */
.fuss{background:var(--schwarz);color:var(--hell-2);padding-block:48px calc(48px + env(safe-area-inset-bottom));font-size:.92rem;border-top:1px solid var(--kante-dunkel)}   /* Linie: Kontakt und Fußzeile sind beide dunkel */
.fuss .innen{display:grid;grid-template-columns:auto 1fr auto;gap:28px;align-items:start}
.fuss img{height:30px;width:auto}
.fuss nav{display:flex;gap:18px;flex-wrap:wrap}
.fuss nav a{display:inline-flex;align-items:center;min-height:44px}
.fuss small{display:block;margin-top:24px;font-size:.8rem;line-height:1.55;max-width:90ch}
@media (max-width:760px){.fuss .innen{grid-template-columns:1fr}}

/* Dialoge */
dialog{border:0;padding:0;color:inherit}
dialog::backdrop{background:rgba(20,19,18,.55)}
.inhalt-dialog{margin:0 0 0 auto;height:100dvh;max-height:none;width:min(420px,100%);background:var(--nacht);color:var(--hell)}
.inhalt-dialog[open]{display:flex;flex-direction:column;animation:von-rechts .38s var(--ease-sheet)}
@keyframes von-rechts{from{transform:translateX(40px)}to{transform:none}}
.inhalt-dialog .kopf{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--kante-dunkel)}
.inhalt-dialog .kopf b{font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--greige)}
.inhalt-dialog ol{list-style:none;margin:0;padding:4px 22px 12px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.inhalt-dialog li a{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--kante-dunkel);text-decoration:none;font-family:var(--serif);font-size:1.2rem}
.inhalt-dialog li a[aria-current="true"]{color:var(--greige-hell)}
.inhalt-dialog li a span{font-family:var(--sans);font-size:.8rem;color:var(--hell-2)}
.inhalt-dialog .unten{flex:none;padding:14px 22px 22px;display:grid;gap:10px;border-top:1px solid var(--kante-dunkel)}
.knopf-zu{width:44px;height:44px;border-radius:50%;border:1px solid var(--kante-dunkel);background:transparent;cursor:pointer;display:grid;place-items:center;color:var(--hell)}
.knopf-zu svg{width:18px;height:18px}
.plan-dialog{width:min(1100px,100%);max-width:100%;height:min(92dvh,100%);max-height:100dvh;background:var(--blatt);border-radius:var(--r-gross);overflow:hidden}
.plan-dialog[open]{display:flex;flex-direction:column;animation:auf .3s var(--ease-sheet)}
@keyframes auf{from{transform:scale(.97)}to{transform:none}}
.plan-dialog .kopf{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;padding:12px 16px;border-bottom:1px solid var(--kante)}
.plan-dialog .kopf b{order:1;flex:1;font-family:var(--serif);font-weight:400;font-size:1.15rem}
.plan-dialog .kopf .knopf-zu{order:3}
/* Wohnungen über zwei Geschosse: zwischen den Ebenen wechseln, ohne den Dialog zu schließen */
.plan-dialog .ebenen{order:2;display:flex;gap:6px}
.plan-dialog .ebenen button{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid rgba(38,37,31,.3);background:transparent;color:var(--tinte);font-weight:700;font-size:.92rem;white-space:nowrap;cursor:pointer;transition:background-color .2s var(--ease-out),color .2s var(--ease-out),border-color .2s var(--ease-out)}
.plan-dialog .ebenen button[aria-pressed="true"]{background:var(--tinte);border-color:var(--tinte);color:var(--hell)}
@media (hover:hover) and (pointer:fine){.plan-dialog .ebenen button:not([aria-pressed="true"]):hover{border-color:var(--tinte)}}
@media (max-width:600px){.plan-dialog .ebenen{order:4;flex:1 0 100%}.plan-dialog .ebenen button{flex:1;padding:0 8px}}
/* Handy quer: wenig Höhe, darum schmale Leisten und der Dialog über die ganze Höhe */
@media (max-height:480px){.plan-dialog{height:100dvh;border-radius:0}.plan-dialog .kopf{padding:4px 12px}.plan-dialog .bedienung{padding:4px 12px}.plan-dialog .flaeche{padding:8px}}
.plan-dialog .knopf-zu{border-color:var(--kante);color:var(--tinte)}
/* Fläche: Passt der Plan ganz hinein, regelt das CSS die Größe. Vergrößert setzt expose.js die Breite in px, die Fläche rollt dann in beide Richtungen.
   touch-action: ein Finger verschiebt (der Browser rollt), zwei Finger vergrößern (das übernimmt das Skript, nicht der Seitenzoom). */
.plan-dialog .flaeche{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-x pan-y;padding:16px;background:#fffefb}
.plan-dialog .flaeche img{display:block;margin:0 auto;max-height:100%;width:auto;max-width:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
.plan-dialog.gezoomt .flaeche img{max-height:none;max-width:none}
@media (hover:hover) and (pointer:fine){.plan-dialog.gezoomt .flaeche{cursor:grab}.plan-dialog.gezoomt .flaeche.zieht{cursor:grabbing}}
/* Bedienleiste unten (nicht „fuss“ nennen: so heißt die dunkle Fußzeile der Seite) */
.plan-dialog .bedienung{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--kante)}
.plan-dialog .stufen{display:flex;align-items:center;gap:6px}
.plan-dialog .stufen button{width:44px;height:44px;border-radius:50%;border:1px solid rgba(38,37,31,.3);background:transparent;color:var(--tinte);display:grid;place-items:center;cursor:pointer;transition:background-color .2s var(--ease-out),color .2s var(--ease-out),border-color .2s var(--ease-out)}
.plan-dialog .stufen button svg{width:18px;height:18px}
.plan-dialog .stufen button:active:not(:disabled){transform:scale(.94)}
.plan-dialog .stufen button:disabled{cursor:default;color:rgba(38,37,31,.3);border-color:var(--kante-zart)}
@media (hover:hover) and (pointer:fine){.plan-dialog .stufen button:not(:disabled):hover{background:var(--tinte);color:var(--hell);border-color:var(--tinte)}}
.plan-dialog .stufen output{min-width:62px;text-align:center;font-weight:700;font-size:.95rem;font-variant-numeric:tabular-nums}
.plan-dialog .pdf-link[hidden]{display:none}
/* Fotos groß ansehen: Knopf unten rechts im Bild (Hinweise wie „Visualisierung“ stehen nie unten rechts), das Bild selbst ist auch anklickbar */
.foto-rahmen{position:relative;display:block}
.foto-rahmen img{cursor:zoom-in}
.foto-gross{position:absolute;right:8px;bottom:8px;z-index:2;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--hell);display:grid;place-items:center;cursor:zoom-in}
.foto-gross::before{content:"";position:absolute;inset:4px;border-radius:50%;background:rgba(20,19,18,.62);transition:background-color .2s var(--ease-out)}
.foto-gross svg{position:relative;width:17px;height:17px}
@media (hover:hover) and (pointer:fine){.foto-gross:hover::before{background:rgba(20,19,18,.88)}}
/* derselbe Dialog wie beim Grundriss, für Fotos dunkel und über das ganze Fenster */
.plan-dialog.foto{width:100%;height:100dvh;max-height:100dvh;border-radius:0;background:var(--schwarz);color:var(--hell)}
.plan-dialog.foto .kopf{border-bottom-color:var(--kante-dunkel)}
.plan-dialog.foto .kopf b{font-size:1.05rem}
.plan-dialog.foto .flaeche{background:var(--schwarz);padding:0}
.plan-dialog.foto .bedienung{border-top-color:var(--kante-dunkel)}
.plan-dialog.foto .knopf-zu,.plan-dialog.foto .stufen button{border-color:rgba(244,242,236,.3);color:var(--hell)}
.plan-dialog.foto .stufen button:disabled{color:rgba(244,242,236,.3);border-color:rgba(244,242,236,.12)}
@media (hover:hover) and (pointer:fine){.plan-dialog.foto .stufen button:not(:disabled):hover{background:var(--hell);color:var(--schwarz);border-color:var(--hell)}}
.plan-dialog.foto :focus-visible{outline-color:var(--greige-hell)}

/* Anfrage-Dialog: Besichtigung anfragen */
.anfrage-dialog{width:min(600px,100% - 32px);max-width:100%;max-height:min(94dvh,900px);background:var(--blatt);color:var(--tinte);border-radius:var(--r-gross);overflow:hidden}
.anfrage-dialog[open]{display:flex;flex-direction:column;animation:auf .3s var(--ease-sheet)}
.anfrage-dialog .kopf{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 24px 18px;border-bottom:1px solid var(--kante)}
.anfrage-dialog .ueber{font-size:.76rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--greige-tief)}
.anfrage-dialog h2{font-size:clamp(1.5rem,3vw,1.9rem);margin-top:6px}
.anfrage-dialog .knopf-zu{flex:none;border-color:var(--kante);color:var(--tinte)}
.anfrage-dialog .koerper{overflow:auto;overscroll-behavior:contain;padding:22px 24px 0;scroll-padding-bottom:150px}   /* unten klebt die Sendeleiste: Felder mit Fokus rollen darüber */
.anfrage-form{display:grid;gap:16px}
.anfrage-form .feld{display:grid;gap:6px;margin:0;min-width:0}
.anfrage-form label,.anfrage-form legend{font-weight:700;font-size:.95rem}
.anfrage-form label span,.anfrage-form legend span{font-weight:400;color:var(--tinte-2)}
.anfrage-form input:not([type=radio]),.anfrage-form select,.anfrage-form textarea{width:100%;min-height:50px;padding:12px 14px;border-radius:var(--r);border:1px solid rgba(38,37,31,.28);background:#fffefb;color:var(--tinte);font:inherit;font-size:1rem;transition:border-color .2s var(--ease-out)}
.anfrage-form textarea{resize:vertical;min-height:96px}
.anfrage-form select{appearance:none;-webkit-appearance:none;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2326251f' stroke-width='1.8'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:18px}
.anfrage-form input:focus-visible,.anfrage-form select:focus-visible,.anfrage-form textarea:focus-visible{outline:2px solid var(--greige-tief);outline-offset:1px;border-color:var(--greige-tief)}
/* mit Elementnamen: Die Grundregel für input, select, textarea oben wiegt sonst schwerer und der rote Rand erschien nie */
.anfrage-form input[aria-invalid="true"],.anfrage-form select[aria-invalid="true"],.anfrage-form textarea[aria-invalid="true"]{border-color:#9b2c1f}
.anfrage-form .fehler{color:#9b2c1f;font-size:.9rem;font-weight:700}
.anfrage-form .feld-paar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
/* Drei Anliegen in einem Formular: Die Wahl steht oben, data-anliegen am Dialog blendet die passenden Felder ein */
[data-anfrage-dialog][data-anliegen="besichtigung"] [data-nur]:not([data-nur~="besichtigung"]),
[data-anfrage-dialog][data-anliegen="rueckruf"] [data-nur]:not([data-nur~="rueckruf"]),
[data-anfrage-dialog][data-anliegen="frage"] [data-nur]:not([data-nur~="frage"]){display:none}
[data-anfrage-dialog][data-anliegen="rueckruf"] .feld-paar{grid-template-columns:1fr}
.anfrage-form .anliegen{border:0;padding:0}
.anfrage-form .anliegen legend{padding:0;margin-bottom:8px}
.anfrage-form .anliegen-wahl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.anfrage-form .anliegen-wahl label{position:relative;cursor:pointer}
.anfrage-form .anliegen-wahl input{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.anfrage-form .anliegen-wahl span{display:flex;align-items:center;justify-content:center;min-height:50px;padding:0 8px;border-radius:var(--r);border:1px solid rgba(38,37,31,.28);background:#fffefb;color:var(--tinte);font-weight:700;font-size:.98rem;text-align:center;transition:background-color .2s var(--ease-out),border-color .2s var(--ease-out),color .2s var(--ease-out)}
.anfrage-form .anliegen-wahl input:checked+span{background:var(--tinte);border-color:var(--tinte);color:var(--hell)}
.anfrage-form .anliegen-wahl input:focus-visible+span{outline:2px solid var(--greige-tief);outline-offset:2px}
.anfrage-form label b,.anfrage-form legend b{font-weight:inherit}
.anfrage-form .zeiten{border:0;padding:0}
.anfrage-form .zeiten legend{padding:0;margin-bottom:8px}
.anfrage-form .wahl-reihe{display:flex;flex-wrap:wrap;gap:8px}
.anfrage-form .wahl-reihe label{position:relative;font-weight:400;cursor:pointer}
.anfrage-form .wahl-reihe input{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.anfrage-form .wahl-reihe span{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid rgba(38,37,31,.28);background:#fffefb;color:var(--tinte);font-size:.95rem;transition:background-color .2s var(--ease-out),border-color .2s var(--ease-out),color .2s var(--ease-out)}
.anfrage-form .wahl-reihe input:checked+span{background:var(--tinte);border-color:var(--tinte);color:var(--hell)}
.anfrage-form .wahl-reihe input:focus-visible+span{outline:2px solid var(--greige-tief);outline-offset:2px}
.anfrage-form .hinweis{font-size:.88rem;color:var(--tinte-2)}
.anfrage-form .hinweis a{color:var(--tinte)}
/* Der Sendeknopf steht als Leiste am unteren Rand des Dialogs, auch im niedrigen Fenster (Laptop 1366 x 768, halbes Fenster) */
.anfrage-form .absenden{position:sticky;bottom:0;z-index:1;margin:0 -24px;padding:12px 24px 14px;background:var(--blatt);box-shadow:0 -1px 0 var(--kante)}
.anfrage-form .absenden .hinweis{font-size:.82rem;line-height:1.45;margin-bottom:10px}   /* Datenschutzhinweis bleibt mit dem Knopf im Blick */
.anfrage-form .senden{width:100%}
.anfrage-form .senden[aria-busy="true"]{cursor:progress}
.anfrage-form .falle{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.anfrage-danke{display:grid;gap:12px;padding:8px 0 4px}
.anfrage-danke h3{font-size:1.6rem}
.anfrage-danke h3:focus{outline:none}
.anfrage-danke p{color:var(--tinte-2)}
.anfrage-danke .vorschau-hinweis{padding:12px 14px;border-radius:var(--r);border:1px dashed rgba(38,37,31,.35);color:var(--tinte);font-size:.92rem}
.anfrage-danke .btn{justify-self:start;margin-top:6px}
.anfrage-dialog .direkt{margin-top:18px;padding:16px 0 24px;border-top:1px solid var(--kante);font-size:.92rem;color:var(--tinte-2)}
.anfrage-dialog .direkt a{color:var(--tinte);font-weight:700;white-space:nowrap}
@media (max-width:600px){
  .anfrage-dialog{width:100%;height:100dvh;max-height:100dvh;border-radius:0;margin:0}
  .anfrage-dialog .kopf{padding:16px 16px 14px}
  .anfrage-dialog .koerper{padding:18px 16px 0}
  .anfrage-dialog .direkt{padding-bottom:28px}
  .anfrage-form .absenden{margin:0 -16px;padding:12px 16px 14px}
  .anfrage-form .feld-paar{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.anfrage-dialog[open]{animation:none}}
