.so-search-results-page {
    --so-business: #0d5cdb;
    --so-service: #7e31bd;
    --so-property: #159447;
    --so-rental: #f05a24;
    --so-text: #182032;
    --so-muted: #667085;
    --so-border: #e5eaf2;
    --so-background: #f7f9fc;
    --so-card-shadow: 0 8px 24px rgba(16, 24, 40, 0.08);

    color: var(--so-text);
    width: 100%;
}

.so-search-results-header {
    margin-bottom: 24px;
}

.so-search-results-count {
    margin: 0;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.35;
}

.so-search-results-grid {
    display: grid;
    gap: 18px;
}

.so-result-card {
    display: grid;
    grid-template-columns: 230px minmax(0, 1fr) auto;
    gap: 20px;
    align-items: stretch;
    padding: 14px;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--so-border);
    border-radius: 16px;
    box-shadow: var(--so-card-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.so-result-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 32px rgba(16, 24, 40, 0.12);
}

.so-result-card-image {
    position: relative;
    display: block;
    min-height: 190px;
    overflow: hidden;
    border-radius: 11px;
    background: var(--so-background);
}

.so-result-card-image img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 190px;
    object-fit: cover;
}

.so-result-card-image-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 190px;
    background:
        linear-gradient(135deg, rgba(13, 92, 219, 0.12), rgba(13, 92, 219, 0.03)),
        #edf2f8;
}

.so-result-card-badges {
    position: absolute;
    top: 10px;
    right: 10px;
    left: 10px;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 6px;
    pointer-events: none;
}

.so-result-card-badge {
    display: inline-flex;
    align-items: center;
    min-height: 23px;
    padding: 4px 8px;
    color: #fff;
    border-radius: 5px;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.04em;
    line-height: 1;
    text-transform: uppercase;
    box-shadow: 0 2px 7px rgba(16, 24, 40, 0.18);
}

.so-result-card-badge--featured_business,
.so-result-card-badge--featured_service,
.so-result-card-badge--featured_property {
    background: #1467e8;
}

.so-result-card-badge--verified_business,
.so-result-card-badge--verified_service,
.so-result-card-badge--verified_property {
    background: #16a34a;
}

.so-result-card-badge--premium_business,
.so-result-card-badge--premium_service,
.so-result-card-badge--premium_property {
    background: #8c2ac4;
}

.so-result-card-badge--emergency_service {
    background: #dc2626;
}

.so-result-card-badge--popular_service {
    background: #f59e0b;
}

.so-result-card-content {
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 4px 0;
}

.so-result-card-module {
    display: inline-flex;
    align-self: flex-start;
    margin-bottom: 7px;
    color: var(--so-business);
    font-size: 18px;
    font-weight: 700;
    line-height: 1.2;
}

.so-result-card--service .so-result-card-module,
.so-result-card--service .so-result-card-title a {
    color: var(--so-service);
}

.so-result-card--property .so-result-card-module,
.so-result-card--property .so-result-card-title a {
    color: var(--so-property);
}

.so-result-card--rental .so-result-card-module,
.so-result-card--rental .so-result-card-title a {
    color: var(--so-rental);
}

.so-result-card-title {
    margin: 0 0 8px;
    font-size: 21px;
    font-weight: 750;
    line-height: 1.25;
}

.so-result-card-title a {
    color: var(--so-business);
    text-decoration: none;
}

.so-result-card-title a:hover {
    text-decoration: underline;
}

.so-result-card-category,
.so-result-card-area,
.so-result-card-availability,
.so-result-card-description {
    margin: 0;
}

.so-result-card-category,
.so-result-card-area {
    color: var(--so-muted);
    font-size: 16px;
    line-height: 1.5;
}

.so-result-card-category {
    margin-bottom: 3px;
}

.so-result-card-area {
    margin-bottom: 9px;
}

.so-result-card-details {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 15px;
    margin: 0 0 10px;
    padding: 0;
    color: var(--so-muted);
    font-size: 18px;
    line-height: 1.4;
    list-style: none;
}

.so-result-card-details li {
    display: inline-flex;
    align-items: center;
}

.so-result-card-details li::before {
    width: 5px;
    height: 5px;
    margin-right: 6px;
    background: currentColor;
    border-radius: 50%;
    content: "";
    opacity: 0.6;
}

.so-result-card-availability {
    margin-bottom: 10px;
    color: #17823b;
    font-size: 13px;
    font-weight: 700;
}

.so-result-card-availability::before {
    margin-right: 5px;
    content: "●";
}

.so-result-card-description {
    color: #4b5565;
    font-size: 14px;
    line-height: 1.55;
}

.so-result-card-actions {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
    gap: 9px;
    width: 142px;
    padding: 8px 0 8px 4px;
}

.so-result-card-price {
    margin: 0 0 2px;
    color: var(--so-text);
    font-size: 21px;
    font-weight: 800;
    line-height: 1.2;
    text-align: right;
}

.so-result-card--property .so-result-card-price {
    color: var(--so-property);
}

.so-result-card--rental .so-result-card-price {
    color: var(--so-rental);
}

.so-result-card-price small {
    color: var(--so-muted);
    font-size: 11px;
    font-weight: 600;
}

.so-result-card-call,
.so-result-card-whatsapp,
.so-result-card-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid transparent;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    text-align: left !important;
    text-decoration: none;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.so-result-card-call {
    color: #fff;
    background: var(--so-business);
}

.so-result-card-whatsapp {
    color: #fff;
    background: #1aab5c;
}

.so-result-card-cta {
    color: var(--so-business);
    border-color: rgba(13, 92, 219, 0.35);
    background: #fff;
}

.so-result-card--service .so-result-card-call {
    background: var(--so-service);
}

.so-result-card--service .so-result-card-cta {
    color: var(--so-service);
    border-color: rgba(126, 49, 189, 0.35);
}

.so-result-card--property .so-result-card-call {
    background: var(--so-property);
}

.so-result-card--property .so-result-card-cta {
    color: var(--so-property);
    border-color: rgba(21, 148, 71, 0.4);
}

.so-result-card--rental .so-result-card-call {
    background: var(--so-rental);
}

.so-result-card--rental .so-result-card-cta {
    color: var(--so-rental);
    border-color: rgba(240, 90, 36, 0.45);
}

.so-result-card-call:hover,
.so-result-card-whatsapp:hover,
.so-result-card-cta:hover {
    color: #fff;
    border-color: transparent;
    background: #172554;
}

.so-search-empty-state {
    padding: 46px 24px;
    color: var(--so-muted);
    border: 1px dashed #cfd8e6;
    border-radius: 14px;
    background: var(--so-background);
    text-align: center;
}

.so-search-empty-state p {
    margin: 0;
    font-size: 16px;
}

/*
|--------------------------------------------------------------------------
| Property-only and Rental-only Result Grids
|--------------------------------------------------------------------------
*/

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)),
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card {
    display: flex;
    flex-direction: column;
    gap: 0;
    padding: 0;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-image,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-image {
    min-height: 0;
    aspect-ratio: 4 / 3;
    border-radius: 15px 15px 0 0;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-image img,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-image img,
.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-image-placeholder,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-image-placeholder {
    min-height: 0;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-content,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-content {
    flex: 1;
    padding: 16px 16px 8px;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-title,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-title {
    font-size: 17px;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-description,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-description {
    display: none;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-actions,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-actions {
    width: auto;
    padding: 4px 16px 16px;
}

.so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)) .so-result-card-price,
.so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) .so-result-card-price {
    text-align: left;
}

/*
|--------------------------------------------------------------------------
| Responsive Layout
|--------------------------------------------------------------------------
*/

@media (max-width: 1024px) {

    .so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)),
    .so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

}

@media (max-width: 767px) {

    .so-search-results-count {
        font-size: 19px;
    }

    .so-result-card {
        grid-template-columns: 120px minmax(0, 1fr);
        gap: 14px;
        padding: 11px;
    }

    .so-result-card-image,
    .so-result-card-image img,
    .so-result-card-image-placeholder {
        min-height: 128px;
    }

    .so-result-card-actions {
        grid-column: 1 / -1;
        flex-direction: row;
        flex-wrap: wrap;
        width: auto;
        padding: 0;
    }

    .so-result-card-actions > * {
        flex: 1 1 calc(50% - 5px);
    }

    .so-result-card-price {
        flex-basis: 100%;
        text-align: left;
    }

    .so-result-card-title {
        font-size: 17px;
    }

    .so-result-card-description {
        font-size: 13px;
    }

    .so-search-results-grid:has(> .so-result-card--property):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--rental)),
    .so-search-results-grid:has(> .so-result-card--rental):not(:has(> .so-result-card--business)):not(:has(> .so-result-card--service)):not(:has(> .so-result-card--property)) {
        grid-template-columns: 1fr;
    }

}

@media (max-width: 440px) {

    .so-result-card {
        grid-template-columns: 1fr;
    }

    .so-result-card-image,
    .so-result-card-image img,
    .so-result-card-image-placeholder {
        min-height: 190px;
    }

    .so-result-card-actions > * {
        flex-basis: 100%;
    }

}

/*
|--------------------------------------------------------------------------
| Card CTA icons, category icons, and layout-mode options
|--------------------------------------------------------------------------
*/

/* White, left-aligned CTA content. */

.so-result-card-call,
.so-result-card-whatsapp {
    justify-content: flex-start;
    gap: 8px;
    color: #fff !important;
    padding-left: 14px;
}

.so-result-card-call::before,
.so-result-card-whatsapp::before {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    color: #fff;
    font-size: 14px;
    line-height: 1;
}

.so-result-card-call::before {
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    content: "\f095";
}

.so-result-card-whatsapp::before {
    font-family: "Font Awesome 5 Brands";
    font-weight: 400;
    content: "\f232";
}

/* Module-specific category icons. */

.so-result-card-category {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.so-result-card-category::before {
    font-family: "Font Awesome 5 Free";
    font-size: 13px;
    font-weight: 900;
    line-height: 1;
}

.so-result-card--business .so-result-card-category::before {
    color: var(--so-business);
    content: "\f54e";
}

.so-result-card--service .so-result-card-category::before {
    color: var(--so-service);
    content: "\f0ad";
}

.so-result-card--property .so-result-card-category::before {
    color: var(--so-property);
    content: "\f015";
}

.so-result-card--rental .so-result-card-category::before {
    color: var(--so-rental);
    content: "\f466";
}

/*
|--------------------------------------------------------------------------
| Elementor layout switch
|--------------------------------------------------------------------------
|
| Add ONE class in the Elementor Shortcode widget:
|
| so-cards--horizontal
| so-cards--vertical
|
*/

/* Horizontal listing cards for every module. */

.so-cards--horizontal .so-search-results-grid {
    grid-template-columns: 1fr !important;
}

.so-cards--horizontal .so-result-card {
    display: grid !important;
    grid-template-columns: 230px minmax(0, 1fr) auto !important;
    gap: 20px !important;
    padding: 14px !important;
}

.so-cards--horizontal .so-result-card-image {
    min-height: 190px !important;
    aspect-ratio: auto !important;
    border-radius: 11px !important;
}

.so-cards--horizontal .so-result-card-image img,
.so-cards--horizontal .so-result-card-image-placeholder {
    min-height: 190px !important;
}

.so-cards--horizontal .so-result-card-content {
    padding: 4px 0 !important;
}

.so-cards--horizontal .so-result-card-description {
    display: block !important;
}

.so-cards--horizontal .so-result-card-actions {
    width: 142px !important;
    padding: 8px 0 8px 4px !important;
}

.so-cards--horizontal .so-result-card-price {
    text-align: right !important;
}

/* Vertical directory cards for every module. */

.so-cards--vertical .so-search-results-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

.so-cards--vertical .so-result-card {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    padding: 0 !important;
}

.so-cards--vertical .so-result-card-image {
    min-height: 0 !important;
    aspect-ratio: 4 / 3 !important;
    border-radius: 15px 15px 0 0 !important;
}

.so-cards--vertical .so-result-card-image img,
.so-cards--vertical .so-result-card-image-placeholder {
    min-height: 0 !important;
}

.so-cards--vertical .so-result-card-content {
    flex: 1;
    padding: 16px 16px 8px !important;
}

.so-cards--vertical .so-result-card-title {
    font-size: 17px;
}

.so-cards--vertical .so-result-card-description {
    display: none !important;
}

.so-cards--vertical .so-result-card-actions {
    width: auto !important;
    padding: 4px 16px 16px !important;
}

.so-cards--vertical .so-result-card-price {
    text-align: left !important;
}

@media (max-width: 1024px) {

    .so-cards--vertical .so-search-results-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

}

@media (max-width: 767px) {

    .so-cards--horizontal .so-result-card {
        grid-template-columns: 120px minmax(0, 1fr) !important;
        gap: 14px !important;
        padding: 11px !important;
    }

    .so-cards--horizontal .so-result-card-actions {
        grid-column: 1 / -1;
        flex-direction: row;
        flex-wrap: wrap;
        width: auto !important;
        padding: 0 !important;
    }

    .so-cards--horizontal .so-result-card-actions > * {
        flex: 1 1 calc(50% - 5px);
    }

    .so-cards--horizontal .so-result-card-price {
        flex-basis: 100%;
        text-align: left !important;
    }

    .so-cards--vertical .so-search-results-grid {
        grid-template-columns: 1fr !important;
    }

}

@media (max-width: 440px) {

    .so-cards--horizontal .so-result-card {
        grid-template-columns: 1fr !important;
    }

    .so-cards--horizontal .so-result-card-image,
    .so-cards--horizontal .so-result-card-image img,
    .so-cards--horizontal .so-result-card-image-placeholder {
        min-height: 190px !important;
    }

}

/* Module filter sidebar and pagination. */
.so-search-results-layout { display:grid; grid-template-columns:250px minmax(0,1fr); gap:28px; align-items:start; }
.so-search-results-main { min-width:0; }
.so-search-sidebar { position:sticky; top:24px; padding:18px; background:#fff; border:1px solid var(--so-border); border-radius:14px; box-shadow:var(--so-card-shadow); }
.so-search-sidebar-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.so-search-sidebar-heading h2 { margin:0; font-size:20px; color:var(--so-business); }
.so-search-sidebar-heading a { color:var(--so-business); font-size:12px; font-weight:700; text-decoration:none; }
.so-search-sidebar--service .so-search-sidebar-heading h2,.so-search-sidebar--service .so-search-sidebar-heading a { color:var(--so-service); }
.so-search-sidebar--property .so-search-sidebar-heading h2,.so-search-sidebar--property .so-search-sidebar-heading a { color:var(--so-property); }
.so-search-sidebar--rental .so-search-sidebar-heading h2,.so-search-sidebar--rental .so-search-sidebar-heading a { color:var(--so-rental); }
.so-filter-group { margin:0; padding:15px 0; border:0; border-top:1px solid var(--so-border); }
.so-filter-group:first-of-type { border-top:0; padding-top:0; }
.so-filter-group legend { margin-bottom:9px; padding:0; color:var(--so-text); font-size:14px; font-weight:800; }
.so-filter-group label { display:flex; align-items:center; gap:8px; margin:8px 0; color:#475467; font-size:13px; line-height:1.3; cursor:pointer; }
.so-filter-group input[type="checkbox"] { width:15px; height:15px; margin:0; accent-color:var(--so-business); }
.so-search-sidebar--service input[type="checkbox"] { accent-color:var(--so-service); }
.so-search-sidebar--property input[type="checkbox"] { accent-color:var(--so-property); }
.so-search-sidebar--rental input[type="checkbox"] { accent-color:var(--so-rental); }
.so-filter-group small { margin-left:auto; color:#98a2b3; }
.so-filter-price > div { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.so-filter-price input { min-width:0; padding:9px 8px; border:1px solid #d0d5dd; border-radius:7px; font:inherit; font-size:12px; }
.so-filter-submit { width:100%; min-height:40px; color:#fff; border:0; border-radius:7px; background:var(--so-business); font:inherit; font-size:13px; font-weight:800; cursor:pointer; }
.so-search-sidebar--service .so-filter-submit { background:var(--so-service); }
.so-search-sidebar--property .so-filter-submit { background:var(--so-property); }
.so-search-sidebar--rental .so-filter-submit { background:var(--so-rental); }
.so-search-pagination { display:flex; flex-wrap:wrap; gap:7px; justify-content:center; margin-top:26px; }
.so-search-pagination a { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; color:#475467; border:1px solid #d0d5dd; border-radius:7px; background:#fff; font-size:13px; font-weight:700; text-decoration:none; }
.so-search-pagination a.is-current,.so-search-pagination a:hover { color:#fff; border-color:var(--so-business); background:var(--so-business); }
.so-search-results-layout--service .so-search-pagination a.is-current,.so-search-results-layout--service .so-search-pagination a:hover { border-color:var(--so-service); background:var(--so-service); }
.so-search-results-layout--property .so-search-pagination a.is-current,.so-search-results-layout--property .so-search-pagination a:hover { border-color:var(--so-property); background:var(--so-property); }
.so-search-results-layout--rental .so-search-pagination a.is-current,.so-search-results-layout--rental .so-search-pagination a:hover { border-color:var(--so-rental); background:var(--so-rental); }
@media (max-width: 900px) { .so-search-results-layout { grid-template-columns:1fr; } .so-search-sidebar { position:static; } }
