.property-listing-grid{display:grid;gap:12px;position:relative}
.property-placeholder img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;z-index:2;opacity:1;transition:opacity .3s ease,transform 3s ease}
.property-placeholder img.is-changing{opacity:.15}
.property-feature-card:hover .property-photo{transform:scale(1.025)}
.property-feature-card a{display:inline-flex;margin-top:14px;color:var(--teal);font-weight:800;text-decoration:none}
.photo-dots{position:absolute;z-index:4;left:50%;bottom:18px;transform:translateX(-50%);display:flex;gap:8px;padding:8px 10px;background:rgba(8,30,48,.58);border-radius:30px;backdrop-filter:blur(5px)}
.photo-dot,.property-dot{width:9px;height:9px;border:0;border-radius:50%;padding:0;background:#a8b7c4;cursor:pointer}.photo-arrow{border:0;background:transparent;color:#fff;padding:0 4px;font-size:16px;line-height:1;cursor:pointer}
.photo-dot.is-active,.property-dot.is-active{background:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.photo-count{position:absolute!important;z-index:4!important;top:16px;right:16px;color:#fff!important;background:rgba(8,30,48,.72);border-radius:20px;padding:7px 11px;font:700 12px "Manrope"!important;letter-spacing:0!important}
.property-dots{display:flex;gap:9px;margin-top:26px;align-items:center}
.property-dot{background:#c7d1d8}.property-dot.is-active{background:var(--teal);box-shadow:0 0 0 2px rgba(0,133,113,.18)}
.carousel-controls{display:flex;justify-content:flex-end;align-items:center;gap:12px;color:var(--muted);font:700 12px "Manrope"}
.carousel-controls button{width:38px;height:38px;border:1px solid #d9e0e5;background:#fff;color:var(--navy);font-size:18px;cursor:pointer;transition:.2s ease}
.carousel-controls button:hover,.carousel-controls button:focus-visible{background:var(--navy);color:#fff}
@media(max-width:580px){.carousel-controls{justify-content:center}.photo-count{top:12px;right:12px}}
@media(prefers-reduced-motion:reduce){.property-placeholder img{transition:none}.property-feature-card:hover .property-photo{transform:none}}
