/* =====================================================
   property-card-slider.css
   Works with padding-top: 56.25% aspect-ratio trick
   ===================================================== */

/* The track must use position:absolute to fill the
   padding-based height of .property-image */
.cs-track {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    transition: transform 0.36s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: transform;
    cursor: grab;
    /* Override the existing img transition that causes scale on hover */
}
.cs-track:active {
    cursor: grabbing;
}

/* Each slide also absolute-fills */
.cs-slide {
    flex: 0 0 100%;
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
}

.cs-slide img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    pointer-events: none;
    -webkit-user-drag: none;
    /* Disable the card hover scale on slider images */
    transition: none !important;
    transform: none !important;
}

/* Prevent the theme's card-hover scale from affecting slider images */
.property-card:hover .property-image .cs-slide img {
    transform: none !important;
}

/* ── Arrow buttons ── */
.cs-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 20;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: none;
    background: rgba(0, 0, 0, 0.52);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.2s, background 0.2s;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    padding: 0;
    line-height: 1;
}
.cs-arrow svg {
    width: 16px;
    height: 16px;
    stroke: #fff;
    stroke-width: 2.5;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    display: block;
    pointer-events: none;
}
.cs-prev { left: 8px; }
.cs-next { right: 8px; }
.cs-arrow:hover { background: rgba(0, 0, 0, 0.80); }

/* Show on desktop hover */
.property-card:hover .cs-arrow { opacity: 1; }

/* Always show on touch screens */
@media (hover: none) {
    .cs-arrow {
        opacity: 0.82 !important;
        width: 28px;
        height: 28px;
    }
}

/* ── Dot indicators ── */
.cs-dots {
    position: absolute;
    bottom: 38px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 5px;
    z-index: 20;
    pointer-events: none;
}
.cs-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.55);
    transition: background 0.22s, transform 0.22s;
    cursor: pointer;
    pointer-events: all;
    flex-shrink: 0;
}
.cs-dot.active {
    background: #fff;
    transform: scale(1.5);
}

/* ── Counter badge ── */
.cs-counter {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 20;
    background: rgba(0, 0, 0, 0.52);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 9px;
    border-radius: 20px;
    letter-spacing: 0.4px;
    pointer-events: none;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* ── Verified icon overlay ── */
.cs-verified-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 20;
    background: rgba(13, 202, 240, 0.88);
    color: #fff;
    border-radius: 50%;
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    pointer-events: none;
}

/* ── Keep badge + price on top of track ── */
.property-image .property-badge,
.property-image .property-price {
    z-index: 20;
}

/* ── Skeleton shimmer while loading ── */
.cs-skeleton-img {
    background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);
    background-size: 200% 100%;
    animation: cs-shimmer 1.4s ease-in-out infinite;
}
.cs-skeleton-line {
    border-radius: 6px;
    background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);
    background-size: 200% 100%;
    animation: cs-shimmer 1.4s ease-in-out infinite;
}
@keyframes cs-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Lazy image placeholder — grey until swapped */
img.cs-lazy {
    background: #e2e8f0;
    object-fit: cover;
}