/* EPF-Objekte · Bauteil-CSS (makler-blueprint/components/epf-objekte, 04.09.2026)
   Alle Farben/Fonts über --eo-Tokens; je Kunde EIN Mapping-Block auf seine tokens.css (siehe README). Klassen: eoc__ (Karten) · eod__ (Detail) · eo-lb (Lightbox) · eo-sc (Sticky) · eo-btn. */
:root{
  --eo-accent:#1f2937;            /* Marke: Preis, Badges, Icons, Primär-Button */
  --eo-accent-deep:#111827;       /* Hover Primär-Button */
  --eo-accent-2:#d6c9a8;          /* Zweitfarbe: Thumb-Rahmen, Unterstrich, weicher Button */
  --eo-accent-2-text:#8a7443;     /* Zweitfarbe als Text (Eyebrows) – kontrastfähig */
  --eo-ink:#1f2124; --eo-dim:#6b6f76; --eo-line:#e7e7e4; --eo-grey:#f4f3f0; --eo-card:#fff;
  --eo-font-display:inherit; --eo-font-text:inherit;
  --eo-radius:14px; --eo-radius-sm:10px; --eo-ease:cubic-bezier(.2,.8,.2,1); --eo-hh:84px;
}
.eo-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;width:100%;background:var(--eo-accent);color:#fff;border:1px solid var(--eo-accent);border-radius:999px;padding:.85rem 1.3rem;font:600 .95rem/1 var(--eo-font-text);text-decoration:none;cursor:pointer;transition:background .2s,transform .2s}
.eo-btn:hover{background:var(--eo-accent-deep);transform:translateY(-1px)}
.eo-btn .a{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.18)}.eo-btn .a svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.eo-btn--soft{background:var(--eo-card);color:var(--eo-ink);border-color:var(--eo-line)}.eo-btn--soft:hover{background:var(--eo-card);border-color:var(--eo-accent-2)}.eo-btn--soft .a{background:var(--eo-accent-2);color:var(--eo-ink)}
.eod__side .eo-btn{margin-top:.2rem}
/* Sticky-Objektanfrage (Fallback, wenn die Kundenseite kein .sc-Bauteil hat) */
.eo-sc{position:fixed;right:clamp(14px,2vw,26px);bottom:clamp(14px,2vw,26px);z-index:90;display:inline-flex;align-items:center;gap:14px;background:var(--eo-card);border:1px solid var(--eo-line);border-radius:16px;box-shadow:0 24px 60px -28px rgba(17,21,36,.5),0 4px 14px -8px rgba(17,21,36,.28);padding:12px 14px;text-decoration:none;color:var(--eo-ink);opacity:0;pointer-events:none;transform:translateY(16px);transition:transform .3s ease,opacity .3s ease}
.eo-sc.on{opacity:1;pointer-events:auto;transform:none}.eo-sc:hover{transform:translateY(-2px)}
.eo-sc .sc__ic{flex:0 0 auto;width:44px;height:44px;border-radius:12px;background:var(--eo-grey);color:var(--eo-accent);display:grid;place-items:center}.eo-sc .sc__ic svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8}
.eo-sc .sc__txt{display:flex;flex-direction:column;gap:3px}.eo-sc .sc__ey{display:inline-flex;align-items:center;gap:7px;font:600 10.5px/1 var(--eo-font-text);letter-spacing:.14em;text-transform:uppercase;color:var(--eo-dim)}.eo-sc .sc__dot{width:7px;height:7px;border-radius:50%;background:#16a34a}
.eo-sc .sc__t{font:600 16px/1.15 var(--eo-font-display);color:var(--eo-accent)}.eo-sc .sc__ar{width:36px;height:36px;border-radius:50%;background:var(--eo-accent);color:#fff;display:grid;place-items:center}.eo-sc .sc__ar svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2}
@media(max-width:600px){.eo-sc{left:12px;right:12px;bottom:12px;justify-content:space-between}}
/* ── Karten (Angebote, Referenzen, Startseiten-Teaser) ── */
.eod__gal{margin-bottom:clamp(1.6rem,3vw,2.4rem)}
.eod__main{position:relative;border-radius:var(--eo-radius);overflow:hidden;background:var(--eo-grey);aspect-ratio:16/9}
.eod__main--empty{display:grid;place-items:center;min-height:320px}
.eod__mainbtn{display:block;width:100%;height:100%;padding:0;border:0;background:none;cursor:zoom-in}.eod__mainbtn img{width:100%;height:100%;object-fit:cover;display:block}
.eod__badge{position:absolute;top:1rem;left:1rem;background:var(--eo-accent);color:#fff;border-radius:var(--eo-radius-sm);padding:.4rem .9rem;font-size:.76rem;font-weight:700;letter-spacing:.04em}
.eod__badge--sold{background:var(--eo-ink)}
.eod__type{position:absolute;top:1rem;right:1rem;background:rgba(255,255,255,.94);border-radius:var(--eo-radius-sm);padding:.4rem .9rem;font-size:.76rem;font-weight:700;color:var(--eo-accent)}
.eod__count{position:absolute;right:1rem;bottom:1rem;background:rgba(255,255,255,.9);border-radius:999px;padding:.3rem .8rem;font-size:.75rem;font-weight:600;color:var(--eo-ink)}
.eod__thumbs{display:flex;gap:.5rem;overflow-x:auto;padding:.6rem 0 .2rem;scrollbar-width:thin}
.eod__thumbs button{flex:0 0 auto;width:96px;height:64px;border:2px solid transparent;border-radius:var(--eo-radius-sm);overflow:hidden;padding:0;background:none;cursor:pointer;opacity:.7;transition:opacity .2s,border-color .2s}
.eod__thumbs button img{width:100%;height:100%;object-fit:cover;display:block}.eod__thumbs button.is-on,.eod__thumbs button:hover{opacity:1;border-color:var(--eo-accent-2)}
.eod__grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.9fr);gap:clamp(1.6rem,3.5vw,3.2rem);align-items:start}
@media(max-width:960px){.eod__grid{grid-template-columns:minmax(0,1fr)}}
.eod__grid>*{min-width:0}.eod__mainc,.eod__side{max-width:100%}.eod__thumbs{min-width:0}.eod__head h1{overflow-wrap:anywhere}.eod__egrid>*{min-width:0}.eod__group dd{overflow-wrap:anywhere}
.eod__group dl div,.eod__egrid dl div{flex-wrap:wrap}.eod__group dd,.eod__egrid dd,.eod__group dt,.eod__egrid dt{min-width:0;max-width:100%;overflow-wrap:anywhere}.eod__egrid dd{text-align:right}.eod__docs a,.eod__card p,.eod__contact a{overflow-wrap:anywhere}
.eod__head h1{font-family:var(--eo-font-display);font-weight:400;font-size:clamp(1.7rem,3vw,2.5rem);line-height:1.15;letter-spacing:-.01em;color:var(--eo-ink);margin:.5rem 0 .6rem;text-wrap:balance}
.eod__price{font-family:var(--eo-font-display);font-weight:800;font-size:clamp(1.5rem,2.6vw,2rem);color:var(--eo-accent);margin:0 0 1.2rem}
.eod__tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.7rem}
.eod__tiles div{background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius-sm);padding:.8rem 1rem}.eod__tiles span{display:block;font-size:.74rem;color:var(--eo-dim);text-transform:uppercase;letter-spacing:.08em}.eod__tiles b{display:block;font-family:var(--eo-font-display);font-weight:700;font-size:1.15rem;color:var(--eo-ink);margin-top:.15rem}
.eod__sec{margin-top:clamp(2.2rem,4vw,3.2rem)}
.eod__sec h2{font-family:var(--eo-font-display);font-weight:400;font-size:clamp(1.35rem,2.2vw,1.75rem);color:var(--eo-ink);margin:0 0 .9rem;letter-spacing:-.01em}
.eod__sec h2::after{content:"";display:block;width:34px;height:1px;background:var(--eo-accent-2);margin-top:.5rem}
.eod__txt{white-space:pre-line;color:var(--eo-ink);line-height:1.7;font-size:1rem;margin:0}
.eod__groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.9rem}
.eod__group{background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius);overflow:hidden}
.eod__group h3{margin:0;padding:.7rem 1rem;font:600 .72rem/1 var(--eo-font-text);letter-spacing:.2em;text-transform:uppercase;color:var(--eo-accent-2-text);border-bottom:1px solid var(--eo-line)}
.eod__group dl,.eod__egrid dl{margin:0;padding:.3rem 1rem .5rem}
.eod__group dl div,.eod__egrid dl div{display:flex;justify-content:space-between;gap:1rem;padding:.45rem 0;border-bottom:1px solid var(--eo-line);font-size:.93rem}
.eod__group dl div:last-child,.eod__egrid dl div:last-child{border-bottom:0}
.eod__group dt,.eod__egrid dt{color:var(--eo-dim);flex:0 0 auto}.eod__group dd,.eod__egrid dd{margin:0;text-align:right;font-weight:500;color:var(--eo-ink)}
.eod__group dl div.is-note{flex-direction:column;gap:.2rem}.eod__group dl div.is-note dd{text-align:left;font-weight:400;font-size:.85rem;color:var(--eo-dim)}
.eod__feats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.55rem}
.eod__feats li{display:flex;align-items:center;gap:.7rem;background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius-sm);padding:.6rem .85rem;font-size:.92rem;color:var(--eo-ink)}
.eod__feats li span{flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:var(--eo-accent);color:#fff;display:grid;place-items:center}.eod__feats svg{width:16px;height:16px}
.eod__feats + .eod__txt{margin-top:1rem}
.eod__map{position:relative;border:1px solid var(--eo-line);border-radius:var(--eo-radius);overflow:hidden;background:var(--eo-grey);min-height:300px;display:grid;place-items:center;text-align:center;padding:1.4rem;margin-bottom:1rem}
.eod__map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.eod__map small{display:block;color:var(--eo-dim);font-size:.78rem;margin-top:.6rem;position:relative}
.eod__map iframe + small{position:absolute;left:.8rem;bottom:.5rem;margin:0;background:rgba(255,255,255,.9);padding:.2rem .6rem;border-radius:6px}
.eod__plans{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.9rem}
.eod__plans button{border:1px solid var(--eo-line);border-radius:var(--eo-radius-sm);background:#fff;padding:0;overflow:hidden;cursor:zoom-in}.eod__plans img{width:100%;aspect-ratio:4/3;object-fit:contain;display:block}
.eod__energy{background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius);padding:1.2rem 1.4rem}.eod__energy h2{margin-bottom:.4rem}
.eod__egrid{display:grid;grid-template-columns:1.3fr 1fr;gap:1.4rem}@media(max-width:700px){.eod__egrid{grid-template-columns:1fr}}
.eod__scale{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.3rem}
.eod__scale li{display:flex;align-items:center;gap:.6rem;font-size:.78rem;color:var(--eo-dim)}
.eod__scale li span{display:inline-flex;align-items:center;justify-content:flex-end;height:24px;padding-right:.5rem;border-radius:0 6px 6px 0;color:#fff;font-weight:700;font-size:.78rem;box-sizing:border-box}
.eod__scale li.is-on span{outline:3px solid var(--eo-ink);outline-offset:1px}.eod__scale li em{margin-left:auto;font-style:normal;background:var(--eo-ink);color:#fff;border-radius:999px;padding:.15rem .6rem;font-size:.7rem;font-weight:600}
.eod__docs{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}.eod__docs a{display:block;background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius-sm);padding:.6rem .9rem;color:var(--eo-accent);font-weight:500}
.eod__side{position:sticky;top:calc(var(--eo-hh) + 1rem);display:grid;gap:1rem}
.eod__card{background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius);padding:1.3rem 1.4rem}.eod__card--soft{background:var(--eo-grey);border-style:dashed}
.eod__card h2{font-family:var(--eo-font-display);font-weight:500;font-size:1.25rem;margin:0 0 .5rem;color:var(--eo-ink)}.eod__card p{color:var(--eo-dim);font-size:.93rem;line-height:1.6;margin:0 0 .9rem}.eod__card b{display:block;color:var(--eo-ink);margin-bottom:.2rem}
.eod__contact small{display:block;font:600 .68rem/1 var(--eo-font-text);letter-spacing:.2em;text-transform:uppercase;color:var(--eo-accent-2-text);margin-bottom:.8rem}
.eod__person{display:flex;align-items:center;gap:.9rem;margin-bottom:.8rem}.eod__person img{width:56px;height:56px;border-radius:50%;object-fit:cover}.eod__person b{font-size:1rem}.eod__person span{display:block;font-size:.82rem;color:var(--eo-dim)}.eod__person .eod__cfirm{margin-top:.35rem;font-size:.78rem}
.eod__contact a{display:block;color:var(--eo-ink);font-size:.95rem;padding:.2rem 0}.eod__contact a:hover{color:var(--eo-accent)}
.eod__company .eod__cname{font-family:var(--eo-font-display);font-weight:600;font-size:1.05rem;display:block;margin-bottom:.15rem}.eod__company .eod__caddr{display:block;color:var(--eo-dim);font-size:.88rem;margin-bottom:.5rem}
.eod__missing{text-align:center;padding:clamp(3rem,6vw,5rem) 0}.eod__missing h1{font-family:var(--eo-font-display);font-weight:400;font-size:1.8rem}.eod__missing a{color:var(--eo-accent);text-decoration:underline}
.eo-lb{position:fixed;inset:0;z-index:300;background:rgba(17,21,36,.92);display:grid;place-items:center;padding:1rem}
.eo-lb[hidden]{display:none}
#anfrage{scroll-margin-top:calc(var(--eo-hh) + 12px)}
.eo-lb figure{margin:0;max-width:min(1200px,96vw);text-align:center}.eo-lb img{max-width:100%;max-height:82vh;object-fit:contain;border-radius:var(--eo-radius-sm);background:#fff}.eo-lb figcaption{color:rgba(255,255,255,.8);font-size:.85rem;margin-top:.6rem}
.eo-lb button{position:absolute;background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:50%;width:44px;height:44px;display:grid;place-items:center;cursor:pointer;font-size:1.3rem}
.eo-lb__x{top:1rem;right:1rem}.eo-lb__prev{left:1rem;top:50%;transform:translateY(-50%)}.eo-lb__next{right:1rem;top:50%;transform:translateY(-50%)}
.od-page .site{background:rgba(255,255,255,.97);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 6px 24px -18px rgba(28,26,23,.5);color:var(--brand)}
.od-page .site .site__util{display:none}.od-page .site .site__main .container{height:70px}
.od-page .site .site__logo .light{display:none}.od-page .site .site__logo .dark{display:block}
.od-page .site .site__menu a{color:var(--eo-ink)}.od-page .site .site__menu a:not(.site__cta):hover{color:var(--brand-deep)}
.od-page .site .site__cta{background:#fff;border-color:var(--line,#e7e7e4);color:var(--eo-ink)!important}
.od-page .site .site__burger{color:var(--brand,#344a6f)}
.eoc__badge--res{background:var(--eo-accent-2);color:var(--eo-ink)}.eoc__badge--rent{background:var(--eo-accent);color:#fff}.eoc__noimg{width:100%;height:100%;background:var(--eo-grey)}.eoc__empty{grid-column:1/-1;text-align:center;color:var(--eo-dim);padding:2rem 0}a.eoc__card{color:inherit;text-decoration:none}
.eo-grid,.eoc__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,2.2vw,1.8rem)}
@media(max-width:900px){.eo-grid,.eoc__grid{grid-template-columns:1fr}}
.eoc__card{display:flex;flex-direction:column;position:relative;background:var(--eo-card);border:1px solid var(--eo-line);border-radius:var(--eo-radius);transition:transform .45s cubic-bezier(.2,.7,.2,1),border-color .45s;will-change:transform;transform:translateZ(0)}
/* Hover-Schatten als Opacity auf Pseudo-Element statt animiertem box-shadow (GPU, kein Ruckeln — Milan 05.09.) */
.eoc__card::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 30px 60px -36px rgba(20,27,43,.35);opacity:0;transition:opacity .45s cubic-bezier(.2,.7,.2,1);pointer-events:none;z-index:-1}
.eoc__card:hover::after{opacity:1}
.eoc__card:hover{transform:translateY(-4px) translateZ(0);border-color:var(--eo-accent-2)}
.eoc__media{position:relative;aspect-ratio:16/11;overflow:hidden;border-radius:calc(var(--eo-radius) - 1px) calc(var(--eo-radius) - 1px) 0 0}
.eoc__media img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1);will-change:transform;transform:translateZ(0);backface-visibility:hidden}
.eoc__card:hover .eoc__media img{transform:scale(1.04) translateZ(0)}
@media(prefers-reduced-motion:reduce){.eoc__card,.eoc__media img,.eoc__card::after{transition:none}}
.eoc__badge{position:absolute;top:.8rem;left:.8rem;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:var(--eo-radius-sm);padding:.32rem .8rem;font-size:.72rem;font-weight:700;letter-spacing:.04em;color:var(--eo-accent);white-space:nowrap}
.eoc__type{position:absolute;top:.8rem;right:.8rem;background:var(--eo-accent);color:#fff;border-radius:var(--eo-radius-sm);padding:.32rem .8rem;font-size:.72rem;font-weight:700}
.eoc__body{padding:clamp(1.4rem,2.2vw,1.8rem);display:flex;flex-direction:column;flex:1}
.eoc__loc{display:inline-flex;align-items:center;gap:.4rem;color:var(--eo-accent-2-text);font-weight:600;font-size:.85rem}
.eoc__loc svg{width:15px;height:15px;stroke-width:1.8}
.eoc__t{font-family:var(--eo-font-display);font-weight:500;font-size:1.12rem;line-height:1.3;color:var(--eo-ink);margin:.6rem 0 0;min-height:2.9em}
.eoc__specs{display:flex;gap:1.6rem;margin:1.1rem 0;padding:1.1rem 0;border-top:1px solid var(--eo-line);border-bottom:1px solid var(--eo-line)}
.eoc__spec b{display:block;font-family:var(--eo-font-display);font-weight:700;color:var(--eo-ink);font-size:1rem}
.eoc__spec span{font-size:.78rem;color:var(--eo-dim)}
.eoc__price{font-family:var(--eo-font-display);font-weight:800;font-size:1.4rem;color:var(--eo-accent);margin-top:auto}
.eoc__badge--sold{background:var(--eo-accent);color:#fff}
.eoc__card:hover .kv__more{color:var(--eo-accent)}
.eoc__card:hover .kv__more svg{transform:translateX(3px)}

/* Schneider → EPF-Objekte Token-Mapping (kundenspezifisch sind nur Tokens, nie Regeln) — MUSS am Ende stehen, sonst gewinnen die :root-Defaults des Bauteils.
   Gold (--accent-2) ist bei Schneider NUR für Rating-Sterne reserviert → Zweitakzent = Sand-Fläche + Bordeaux-Text. */
:root{--eo-accent:var(--brand);--eo-accent-deep:var(--brand-deep);--eo-accent-2:var(--surface-sand);--eo-accent-2-text:var(--brand);
      --eo-ink:var(--text-on-light);--eo-dim:var(--text-on-light-dim);--eo-line:var(--border-light);--eo-grey:var(--surface-sand);--eo-card:var(--surface-light-2);
      --eo-font-display:var(--font-display);--eo-font-text:var(--font-text);--eo-radius:var(--radius);--eo-radius-sm:10px;--eo-hh:72px}
