/* BOM Immobilienobjekte – Frontend
   Karten-Design portiert aus dem Zielentwurf, gekapselt unter .bom-objekte,
   damit es das Theme nicht beeinflusst und umgekehrt. */

.bom-objekte{
  --paper:#FBFCFD;
  --paper-2:#F2F5F9;
  --mist:#E9EFF7;
  --ink:#1B2430;
  --gray:#56616F;
  --gray-light:#8A95A3;
  --line:#DCE3EC;
  --blue:#7FB0F2;
  --blue-deep:#4E84CE;
  --blue-soft:#EAF1FB;

  font-family:"Mulish",-apple-system,system-ui,sans-serif;
  color:var(--ink);
}
.bom-objekte *{box-sizing:border-box}

/* ---------- Filter-Leiste ---------- */
.bom-objekte .filters{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 28px}
.bom-objekte .filter-btn{
  font-family:inherit;font-weight:700;font-size:.92rem;color:var(--gray);
  background:#fff;border:1.5px solid var(--line);padding:9px 20px;border-radius:40px;
  cursor:pointer;line-height:1.2;
  transition:background .25s,border-color .25s,color .25s,transform .25s;
}
.bom-objekte .filter-btn:hover{border-color:var(--blue);color:var(--ink);transform:translateY(-1px)}
.bom-objekte .filter-btn.active{background:var(--ink);border-color:var(--ink);color:#fff}

/* ---------- Raster ---------- */
.bom-objekte .obj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.bom-objekte .obj-card{
  position:relative;
  display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:12px;overflow:hidden;
  transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;
}
.bom-objekte .obj-card:hover{transform:translateY(-6px);box-shadow:0 30px 60px -38px rgba(27,36,48,.45);border-color:var(--blue)}
.bom-objekte .obj-card.hide{display:none}

/* Ganze Kachel klickbar, wenn ein Portal-Link vorhanden ist. */
.bom-objekte .obj-card--clickable{cursor:pointer}
.bom-objekte .obj-link-portal::after{content:"";position:absolute;inset:0;z-index:1}
.bom-objekte .obj-card--clickable .obj-link-360{position:relative;z-index:2}

.bom-objekte .obj-media{
  position:relative;aspect-ratio:4/3;background-size:cover;background-position:center;
  background-color:var(--mist);background-image:linear-gradient(135deg,#E9EFF7,#D6E2F1);
}
.bom-objekte .obj-media .ph-ic{position:absolute;inset:0;display:grid;place-items:center}
.bom-objekte .obj-media .ph-ic svg{stroke:#AFC1DA}

.bom-objekte .badge{
  position:absolute;top:14px;left:14px;font-size:.7rem;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;padding:6px 13px;border-radius:30px;color:#fff;
}
.bom-objekte .badge.avail{background:rgba(43,134,86,.94)}
.bom-objekte .badge.reserved{background:rgba(193,138,28,.96)}
.bom-objekte .badge.coming{background:rgba(78,132,206,.96)}
.bom-objekte .badge.sold{background:rgba(74,85,99,.94)}

.bom-objekte .obj-body{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}
.bom-objekte .obj-type{
  font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue-deep);margin-bottom:8px;
}
.bom-objekte .obj-body h3{
  font-family:"Schibsted Grotesk","Mulish",sans-serif;font-weight:600;
  font-size:1.2rem;line-height:1.2;letter-spacing:-0.02em;margin:0 0 10px;color:var(--ink);
}
.bom-objekte .obj-body>p{font-size:.95rem;line-height:1.6;color:var(--gray);margin:0 0 18px}

.bom-objekte .obj-facts{list-style:none;margin:0 0 20px;padding:0;border-top:1px solid var(--line)}
.bom-objekte .obj-facts li{
  display:flex;justify-content:space-between;gap:16px;padding:10px 0;
  border-bottom:1px solid var(--line);font-size:.92rem;
}
.bom-objekte .obj-facts li span{color:var(--gray)}
.bom-objekte .obj-facts li strong{color:var(--ink);font-weight:700;text-align:right}

.bom-objekte .obj-link{
  margin-top:auto;font-weight:700;color:var(--blue-deep);font-size:.96rem;
  display:inline-flex;align-items:center;gap:.4rem;text-decoration:none;
  transition:gap .25s ease;
}
.bom-objekte .obj-link:hover{gap:.7rem}
.bom-objekte .obj-link.disabled{color:var(--gray-light);pointer-events:none}
.bom-objekte .obj-link-360{margin-top:8px;font-weight:600;font-size:.9rem}

.bom-objekte .bom-empty{color:var(--gray)}

/* ---------- Reveal-Animation ---------- */
.bom-objekte .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.bom-objekte .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.bom-objekte .reveal{opacity:1;transform:none;transition:none}}

/* ---------- Responsive ---------- */
@media (max-width:920px){.bom-objekte .obj-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.bom-objekte .obj-grid{grid-template-columns:1fr}}
