/* Listing card extras shared by the homepage and search page (cards.js):
   swipeable photos with dots, badges (open house, new, price cut) and the save heart. */
.lcard-img{position:relative;display:block;min-width:0}
.lcard-img>svg{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}
.gtrack{position:absolute;inset:0;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.gtrack::-webkit-scrollbar{display:none}
.gslide{flex:0 0 100%;height:100%;scroll-snap-align:start;scroll-snap-stop:always;display:flex;align-items:center;justify-content:center;overflow:hidden}
.gslide img{width:100%;height:100%;object-fit:cover}
.lcard-img:hover .gslide img{transform:none}
.gnav{position:absolute;top:50%;margin-top:-16px;width:32px;height:32px;border-radius:50%;border:0;background:rgba(255,255,255,.92);box-shadow:0 2px 8px rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .25s;z-index:2;padding:0}
.gnav svg{width:16px;height:16px;stroke:var(--navy);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.gprev{left:8px}
.gnext{right:8px}
.lcard-img:hover .gnav:not([disabled]),.gnav:focus-visible{opacity:1}
.gnav[disabled]{pointer-events:none}
.gnav:focus-visible{outline:2px solid var(--bronze);outline-offset:1px}
@media (hover:none){.gnav{display:none}}
.gdots{position:absolute;left:0;right:0;bottom:9px;display:flex;justify-content:center;gap:5px;pointer-events:none;z-index:2}
.gdots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.55);box-shadow:0 0 3px rgba(0,0,0,.35);transition:background .2s,transform .2s}
.gdots i.on{background:#fff;transform:scale(1.2)}
.badges{position:absolute;left:8px;bottom:24px;right:8px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;pointer-events:none;z-index:2}
.badge{font-size:.64rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1;padding:6px 8px;border-radius:3px;background:rgba(255,255,255,.95);color:var(--navy);box-shadow:0 1px 4px rgba(0,0,0,.16);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.badge.oh{background:var(--navy);color:#fff}
.badge.cut{color:#8a4b1e}
.fav{position:absolute;right:8px;top:8px;width:38px;height:38px;border:0;border-radius:50%;background:rgba(20,40,61,.32);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:3;padding:0;transition:background .2s}
.fav:hover{background:rgba(20,40,61,.5)}
.fav svg{width:21px;height:21px;fill:none;stroke:#fff;stroke-width:2;stroke-linejoin:round;transition:transform .25s}
.fav[aria-pressed="true"] svg{fill:#E0565B;stroke:#fff}
.fav.pop svg{transform:scale(1.25)}
.fav:focus-visible{outline:2px solid #fff;outline-offset:1px}
