.select2-container {
            width: 100% !important;
        }

        .select2-container .select2-selection--single {
            height: 38px !important;
            border: 1px solid #ced4da !important;
            border-radius: 0.375rem !important;
            display: flex !important;
            align-items: center !important;
            padding: 0 0.75rem !important;
        }

        .select2-container--default .select2-selection--single .select2-selection__rendered {
            line-height: normal !important;
            padding-left: 0 !important;
            color: #212529;
        }

        .select2-container--default .select2-selection--single .select2-selection__arrow {
            height: 36px !important;
            right: 8px !important;
        }


        /* ===== Design tokens ===== */
        :root {
            --pc-primary: #1565c0;
            --pc-primary-dark: #0d47a1;
            --pc-primary-light: #eaf2ff;
            --pc-success: #16a34a;
            --pc-success-light: #eafaf0;
            --pc-corner: #d97706;
            --pc-corner-light: #fef3e2;
            --pc-whatsapp: #25d366;
            --pc-ink: #14182b;
            --pc-body: #4b5468;
            --pc-muted: #8a92a6;
            --pc-border: #e7eaf3;
            --pc-surface: #f6f8fc;
            --pc-radius-lg: 18px;
            --pc-radius-md: 12px;
            --pc-radius-sm: 8px;
        }

        /* ===== Property Card ===== */
        .listing-card {
            border: 1px solid var(--pc-border);
            border-radius: var(--pc-radius-lg);
            overflow: hidden;
            background: #fff;
            transition: box-shadow 0.25s ease, transform 0.25s ease, border-color 0.25s ease;
            display: flex;
            flex-direction: row;
            box-shadow: 0 1px 2px rgba(20, 24, 43, 0.04), 0 10px 28px -18px rgba(20, 24, 43, 0.18);
        }

        .listing-card:hover {
            box-shadow: 0 8px 16px -4px rgba(20, 24, 43, 0.1), 0 20px 40px -20px rgba(20, 24, 43, 0.22);
            transform: translateY(-3px);
            border-color: #d3e2fb;
        }

        /* ===== Left: Image/Carousel ===== */
        .prop-media {
            position: relative;
            width: 320px;
            min-width: 280px;
            flex-shrink: 0;
            background: var(--pc-surface);
            overflow: hidden;
            aspect-ratio: 4 / 3;
        }

        .prop-media .carousel,
        .prop-media .carousel-inner,
        .prop-media .carousel-item {
            height: 100%;
        }

        .prop-media .carousel-item img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        /* Bottom gradient so overlaid badges/counters stay legible on bright photos */
        .prop-media::after {
            content: '';
            position: absolute;
            inset: auto 0 0 0;
            height: 56px;
            background: linear-gradient(to top, rgba(0, 0, 0, 0.32), transparent);
            pointer-events: none;
            z-index: 4;
        }

        .prop-media .svg-wrapper {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            background: linear-gradient(160deg, #eef5ff, #f7fafe);
        }

        .prop-media .carousel-control-prev,
        .prop-media .carousel-control-next {
            width: 15%;
            opacity: 0;
            transition: opacity 0.2s ease;
        }

        .prop-media:hover .carousel-control-prev,
        .prop-media:hover .carousel-control-next {
            opacity: 1;
        }

        .prop-media .carousel-control-prev-icon,
        .prop-media .carousel-control-next-icon {
            background-color: rgba(20, 24, 43, 0.55);
            border-radius: 50%;
            padding: 14px;
            width: 2rem;
            height: 2rem;
            background-size: 55%;
        }

        /* Badge overlay */
        .prop-badge-wrap {
            position: absolute;
            top: 12px;
            left: 12px;
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
            z-index: 5;
        }

        .prop-badge {
            font-size: 10.5px;
            font-weight: 700;
            padding: 4px 10px;
            border-radius: 20px;
            text-transform: uppercase;
            letter-spacing: 0.4px;
            color: #fff;
            box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
            display: inline-flex;
            align-items: center;
            gap: 4px;
        }

        .prop-badge.verified {
            background: var(--pc-primary);
        }

        .prop-badge.corner {
            background: var(--pc-corner);
        }

        .prop-badge.new {
            background: var(--pc-success);
        }

        /* Slide count */
        .prop-slide-count {
            position: absolute;
            bottom: 10px;
            right: 12px;
            background: rgba(20, 24, 43, 0.6);
            color: #fff;
            font-size: 11px;
            font-weight: 600;
            padding: 3px 10px;
            border-radius: 20px;
            z-index: 5;
        }

        /* Wishlist heart */
        .btn-wishlist {
            position: absolute;
            top: 12px;
            right: 12px;
            z-index: 6;
            width: 34px;
            height: 34px;
            border-radius: 50%;
            border: none;
            background: rgba(255, 255, 255, 0.92);
            color: #dc2626;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 16px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
            cursor: pointer;
            transition: transform 0.15s ease, background 0.15s ease;
        }

        .btn-wishlist:hover {
            transform: scale(1.08);
            background: #fff;
        }

        .btn-wishlist.is-wishlisted {
            background: #dc2626;
            color: #fff;
        }

        /* ===== Right: Info ===== */
        .prop-info {
            flex: 1;
            padding: 18px 22px;
            display: flex;
            flex-direction: column;
            gap: 10px;
            min-width: 0;
        }

        /* Top row */
        .prop-top {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 10px;
        }

        .prop-title {
            font-size: 1.12rem;
            font-weight: 700;
            color: var(--pc-ink);
            margin: 0;
            line-height: 1.3;
        }

        .prop-title .prop-subunit {
            font-weight: 400;
            color: var(--pc-muted);
            font-size: 0.88rem;
        }

        .prop-title-link {
            color: inherit;
            text-decoration: none;
        }

        .prop-title-link:hover {
            color: var(--pc-primary);
            text-decoration: underline;
        }

        .prop-new-tag {
            background: var(--pc-primary-light);
            color: var(--pc-primary);
            font-size: 11px;
            font-weight: 700;
            padding: 4px 12px;
            border-radius: 20px;
            white-space: nowrap;
            flex-shrink: 0;
        }

        /* Location */
        .prop-location {
            font-size: 0.85rem;
            color: var(--pc-body);
            display: flex;
            align-items: center;
            gap: 5px;
        }

        .prop-location i {
            color: var(--pc-primary);
            font-size: 14px;
        }

        /* Price row */
        .prop-price-row {
            display: flex;
            align-items: baseline;
            gap: 12px;
            flex-wrap: wrap;
        }

        .prop-price-main {
            font-size: 1.4rem;
            font-weight: 800;
            color: var(--pc-primary);
            letter-spacing: -0.01em;
        }

        .prop-price-main .prop-price-unit {
            font-size: 0.78rem;
            font-weight: 600;
            color: var(--pc-muted);
        }

        .prop-price-total {
            font-size: 0.8rem;
            color: var(--pc-body);
        }

        .prop-price-total strong {
            color: var(--pc-ink);
        }

        /* Specs chips */
        .prop-specs {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(84px, 1fr));
            gap: 8px;
        }

        .prop-spec-chip {
            background: var(--pc-surface);
            border: 1px solid var(--pc-border);
            border-radius: var(--pc-radius-sm);
            padding: 8px 6px;
            font-size: 0.78rem;
            color: #444;
            display: flex;
            flex-direction: column;
            align-items: center;
            text-align: center;
            gap: 2px;
            transition: border-color 0.2s ease, background 0.2s ease;
        }

        .listing-card:hover .prop-spec-chip {
            border-color: #dbe6f8;
            background: #fbfcff;
        }

        .prop-spec-chip i {
            color: var(--pc-primary);
            font-size: 1rem;
            margin-bottom: 2px;
        }

        .prop-spec-chip span:first-of-type {
            font-weight: 700;
            color: var(--pc-ink);
            font-size: 0.82rem;
        }

        .prop-spec-chip span:last-child {
            font-size: 0.68rem;
            color: var(--pc-muted);
        }

        /* Description */
        .prop-desc-box {
            background: var(--pc-surface);
            border: 1px solid var(--pc-border);
            border-radius: var(--pc-radius-sm);
            padding: 10px 14px;
            position: relative;
        }

        .prop-desc {
            font-size: 0.82rem;
            color: var(--pc-body);
            line-height: 1.6;
            margin: 0;
            max-height: 4.8em;
            overflow: hidden;
            position: relative;
            transition: max-height 0.3s ease;
        }

        .prop-desc-box.is-clamped .prop-desc::after {
            content: '';
            position: absolute;
            inset: auto 0 0 0;
            height: 1.8em;
            background: linear-gradient(to bottom, rgba(246, 248, 252, 0), var(--pc-surface) 85%);
        }

        .prop-desc-box.is-expanded .prop-desc {
            max-height: none;
        }

        .prop-desc-toggle {
            border: none;
            background: none;
            color: var(--pc-primary);
            font-size: 0.78rem;
            font-weight: 700;
            padding: 6px 0 0;
            cursor: pointer;
        }

        .prop-desc-toggle:hover {
            text-decoration: underline;
        }

        /* Bottom action row */
        .prop-actions {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: auto;
            padding-top: 12px;
            border-top: 1px solid var(--pc-border);
            gap: 10px;
            flex-wrap: wrap;
        }

        .prop-contact {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.85rem;
            color: var(--pc-body);
            font-weight: 500;
        }

        .prop-contact i {
            color: var(--pc-primary);
        }

        .btn-whatsapp {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background: var(--pc-success-light);
            color: var(--pc-whatsapp) !important;
            font-size: 15px;
            flex-shrink: 0;
            transition: background 0.15s ease;
        }

        .btn-whatsapp:hover {
            background: #d3f5df;
        }

        .prop-action-btns {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }

        .btn-view-images {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            border-radius: var(--pc-radius-sm);
            font-size: 0.82rem;
            font-weight: 600;
            padding: 8px 16px;
            white-space: nowrap;
        }

        .btn-view-number {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            background: var(--pc-primary);
            color: #fff;
            border: none;
            border-radius: var(--pc-radius-sm);
            padding: 8px 18px;
            font-size: 0.82rem;
            font-weight: 700;
            cursor: pointer;
            transition: background 0.15s ease, box-shadow 0.15s ease;
            white-space: nowrap;
            box-shadow: 0 4px 10px -4px rgba(21, 101, 192, 0.55);
        }

        .btn-view-number:hover {
            background: var(--pc-primary-dark);
            color: #fff;
        }

        .btn-brochure {
            border: 1.5px solid var(--pc-primary);
            color: var(--pc-primary);
            background: #fff;
            border-radius: var(--pc-radius-sm);
            padding: 6px 16px;
            font-size: 0.82rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.15s;
            white-space: nowrap;
        }

        .btn-brochure:hover {
            background: var(--pc-primary-light);
        }

        /* ===== Responsive ===== */
        @media (max-width: 991.98px) {
            .listing-card {
                flex-direction: column;
            }

            .prop-media {
                width: 100%;
                min-width: unset;
                aspect-ratio: 16 / 9;
            }
        }

        @media (max-width: 575.98px) {
            .prop-media {
                aspect-ratio: 4 / 3;
            }

            .prop-info {
                padding: 14px 16px;
            }

            .prop-title {
                font-size: 1rem;
            }

            .prop-price-main {
                font-size: 1.2rem;
            }

            .prop-specs {
                grid-template-columns: repeat(2, 1fr);
            }

            .prop-actions {
                flex-direction: column;
                align-items: stretch;
            }

            .prop-action-btns {
                width: 100%;
            }

            .prop-action-btns .btn-view-images,
            .prop-action-btns .btn-view-number {
                flex: 1;
                justify-content: center;
                padding-top: 11px;
                padding-bottom: 11px;
            }
        }

        /* ===== Page header ===== */
        .page-eyebrow {
            font-size: 0.75rem;
            font-weight: 600;
            letter-spacing: 1px;
            text-transform: uppercase;
            color: var(--pc-primary);
            margin-bottom: 4px;
        }

        .page-main-title {
            font-size: 1.6rem;
            font-weight: 800;
            color: var(--pc-ink);
            margin: 0;
        }

        @media (max-width: 575.98px) {
            .page-main-title {
                font-size: 1.3rem;
            }
        }

        /* ===== Filter card ===== */
        .filter-card {
            border-radius: var(--pc-radius-md);
            border: 1px solid var(--pc-border);
            background: #fff;
            box-shadow: 0 2px 10px rgba(20, 24, 43, 0.05);
        }

        .filter-card .form-label {
            font-size: 11.5px;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            color: #6b7280;
            margin-bottom: 4px;
        }

        .filter-card .form-control,
        .filter-card .form-select {
            border-radius: var(--pc-radius-sm);
            border-color: var(--pc-border);
            font-size: 0.88rem;
        }

        .filter-card .form-control:focus,
        .filter-card .form-select:focus {
            border-color: var(--pc-primary);
            box-shadow: 0 0 0 3px var(--pc-primary-light);
        }

        .filter-card .btn-primary {
            background: var(--pc-primary);
            border-color: var(--pc-primary);
            border-radius: var(--pc-radius-sm);
        }

        .filter-card .btn-primary:hover {
            background: var(--pc-primary-dark);
            border-color: var(--pc-primary-dark);
        }

        .filter-card .btn-outline-secondary {
            border-radius: var(--pc-radius-sm);
        }

        /* ===== Pagination polish ===== */
        .pagination .page-link {
            border-radius: var(--pc-radius-sm);
            margin: 0 3px;
            border-color: var(--pc-border);
            color: var(--pc-body);
        }

        .pagination .page-item.active .page-link {
            background: var(--pc-primary);
            border-color: var(--pc-primary);
        }

        .pagination .page-link:hover {
            background: var(--pc-primary-light);
            color: var(--pc-primary-dark);
        }

        /* ===== Sidebar filter panel =====
           .filter-sidebar-wrap must be as tall as the listing column (via the
           Bootstrap row's flex-stretch) so the sticky child has room to stay
           put while you scroll — a sticky element can only move within its
           own immediate parent's box, not further ancestors, so if that
           parent only auto-sizes to the sidebar's own height there's nowhere
           for it to "stick" to. */
        .filter-sidebar-wrap {
            height: 100%;
        }

        .filter-sidebar {
            border-radius: var(--pc-radius-md);
            border: 1px solid var(--pc-border);
            background: #fff;
            box-shadow: 0 2px 10px rgba(20, 24, 43, 0.05);
            padding: 20px;
            position: sticky;
            top: 90px;
        }

        .filter-sidebar-title {
            font-size: 1rem;
            font-weight: 800;
            color: var(--pc-ink);
            margin-bottom: 16px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .filter-sidebar .form-label {
            font-size: 11.5px;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            color: #6b7280;
            margin-bottom: 4px;
        }

        .filter-sidebar .form-control,
        .filter-sidebar .form-select {
            border-radius: var(--pc-radius-sm);
            border-color: var(--pc-border);
            font-size: 0.88rem;
        }

        .filter-sidebar .form-control:focus,
        .filter-sidebar .form-select:focus {
            border-color: var(--pc-primary);
            box-shadow: 0 0 0 3px var(--pc-primary-light);
        }

        .filter-sidebar .btn-primary {
            background: var(--pc-primary);
            border-color: var(--pc-primary);
            border-radius: var(--pc-radius-sm);
        }

        .filter-sidebar .btn-primary:hover {
            background: var(--pc-primary-dark);
            border-color: var(--pc-primary-dark);
        }

        @media (max-width: 991.98px) {
            .filter-sidebar {
                position: static;
            }
        }

        /* ===== Compact grid card ===== */
        .compact-card {
            background: #fff;
            border: 1px solid var(--pc-border);
            border-radius: var(--pc-radius-lg);
            overflow: hidden;
            transition: box-shadow 0.25s ease, transform 0.25s ease, border-color 0.25s ease;
            box-shadow: 0 1px 2px rgba(20, 24, 43, 0.04), 0 10px 28px -18px rgba(20, 24, 43, 0.18);
            height: 100%;
            display: flex;
            flex-direction: column;
        }

        .compact-card:hover {
            box-shadow: 0 8px 16px -4px rgba(20, 24, 43, 0.1), 0 20px 40px -20px rgba(20, 24, 43, 0.22);
            transform: translateY(-3px);
            border-color: #d3e2fb;
        }

        .compact-card-media {
            position: relative;
            aspect-ratio: 4 / 3;
            background: var(--pc-surface);
            overflow: hidden;
        }

        .compact-card-media img,
        .compact-card-media .svg-wrapper {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .compact-card-media .svg-wrapper {
            display: flex;
            align-items: center;
            justify-content: center;
            background: linear-gradient(160deg, #eef5ff, #f7fafe);
        }

        .compact-card-badges {
            position: absolute;
            top: 10px;
            left: 10px;
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
            z-index: 5;
        }

        .compact-card-body {
            padding: 14px 16px 16px;
            display: flex;
            flex-direction: column;
            flex: 1;
        }

        .compact-card-title {
            font-size: 0.95rem;
            font-weight: 700;
            color: var(--pc-ink);
            text-decoration: none;
            display: -webkit-box;
            -webkit-line-clamp: 1;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }

        .compact-card-title:hover {
            color: var(--pc-primary);
        }

        .compact-card-location {
            font-size: 0.78rem;
            color: var(--pc-muted);
            display: flex;
            align-items: center;
            gap: 4px;
            margin: 4px 0 10px;
        }

        .compact-card-location i {
            color: var(--pc-primary);
        }

        .compact-card-specs {
            display: flex;
            gap: 14px;
            font-size: 0.78rem;
            color: var(--pc-body);
            margin-bottom: 12px;
        }

        .compact-card-specs span {
            display: flex;
            align-items: center;
            gap: 5px;
        }

        .compact-card-specs i {
            color: var(--pc-primary);
        }

        .compact-card-footer {
            margin-top: auto;
            padding-top: 12px;
            border-top: 1px solid var(--pc-border);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .compact-card-price {
            font-size: 1.05rem;
            font-weight: 800;
            color: var(--pc-primary);
        }

        .compact-card-price span {
            font-size: 0.7rem;
            font-weight: 600;
            color: var(--pc-muted);
        }

        .compact-card-link {
            font-size: 0.8rem;
            font-weight: 700;
            color: var(--pc-primary);
            text-decoration: none;
        }

        .compact-card-link:hover {
            text-decoration: underline;
        }
