/* SO Immobilier — Front (build statique)
 * Source : wp-content/themes/rivendell/_dev/css/extensions/immobilier/
 * Calibré pour la base Rivendell : html { font-size: 62.5% } → 1rem = 10px.
 */

:root {
    --so-bg:          #ffffff;
    --so-border:      #cccccc;
    --so-border-soft: #e8e8e8;
    --so-soft:        #f6f6f6;
    --so-text:        #1E1E1E;
    --so-muted:       #6b7384;
    --so-main:        #2D2D2D;
    --so-main-hover:  #1E1E1E;
    --so-main-soft:   rgba(45, 45, 45, .08);
    --so-accent:      #FF0000;
    --so-accent-soft: rgba(255, 0, 0, .08);
    --so-radius:      15px;
    --so-radius-sm:   10px;
    --so-shadow:      0 0 15px -5px rgba(0, 0, 0, .15);
    --so-shadow-lg:   0 10px 35px -12px rgba(0, 0, 0, .18);
    --so-anim:        cubic-bezier(.2, .8, .2, 1);
    --so-font-bold:   "Barlow", sans-serif;
}

/* ======================================================
/* ======================================================
 *  FILTRE
 * ====================================================== */

.so-filter {
    position: relative;
    color: var(--so-text);
    font-size: 1.5rem;
    line-height: 1.4;
}

/* Barre principale */
.so-filter__bar {
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    gap: 1.2rem;
}

.so-filter__statut {
    display: inline-flex;
    align-items: center;
    gap: .8rem;
    background: #fff;
    border: 1px solid var(--so-border);
    border-radius: 999px;
    padding: 1.6rem 2.4rem;
    font-weight: 700;
    color: var(--so-accent);
    transition: border-color .2s var(--so-anim);
}
.so-filter__statut:hover { border-color: var(--so-text); }
.so-filter__statut-label { font-size: 1.6rem; line-height: 1; }
.so-filter__statut-icon { opacity: .7; }

.so-filter__fields {
    flex: 1;
    display: flex;
    align-items: stretch;
    background: #fff;
    border: 1px solid var(--so-border-soft);
    border-radius: 999px;
    padding: .5rem 1rem;
    min-width: 320px;
    box-shadow: 0 4px 18px -8px rgba(0, 0, 0, .1);
    transition: box-shadow .25s var(--so-anim), border-color .2s var(--so-anim);
}
.so-filter__fields:hover,
.so-filter__fields:focus-within {
    box-shadow: 0 8px 24px -8px rgba(0, 0, 0, .15);
    border-color: var(--so-border);
}

.so-filter__field {
    flex: 1;
    position: relative;
    min-width: 0;
    display: flex;
    align-items: stretch;
}
.so-filter__field + .so-filter__field::before {
    content: "";
    position: absolute;
    left: 0;
    top: .8rem;
    bottom: .8rem;
    width: 1px;
    background: var(--so-border-soft);
}
.so-filter__field select {
    appearance: none;
    -webkit-appearance: none;
    background: transparent;
    border: 0;
    outline: 0;
    padding: 1.3rem 3.2rem 1.3rem 1.6rem;
    width: 100%;
    font-size: 1.6rem;
    font-weight: 500;
    color: var(--so-text);
    cursor: pointer;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    border-radius: 999px;
    transition: background .2s var(--so-anim);
}
.so-filter__field select:hover { background: var(--so-soft); }
.so-filter__field select option[value=""]:checked { color: var(--so-muted); }
.so-filter__field::after {
    content: "";
    position: absolute;
    right: 1.5rem;
    top: 50%;
    width: 9px;
    height: 9px;
    border-right: 2px solid var(--so-text);
    border-bottom: 2px solid var(--so-text);
    transform: translateY(-65%) rotate(45deg);
    pointer-events: none;
    opacity: .55;
    transition: opacity .2s var(--so-anim), transform .2s var(--so-anim);
}
.so-filter__field:hover::after {
    opacity: 1;
    transform: translateY(-45%) rotate(45deg);
}

.so-filter__more {
    appearance: none;
    background: var(--so-soft);
    border: 0;
    border-radius: 999px;
    padding: 1.6rem 2.4rem;
    display: inline-flex;
    align-items: center;
    gap: .8rem;
    cursor: pointer;
    color: var(--so-text);
    font-size: 1.6rem;
    font-weight: 600;
    transition: background .25s var(--so-anim), color .25s var(--so-anim), transform .15s var(--so-anim);
}
.so-filter__more-label { white-space: nowrap; }
.so-filter__more-icon { color: var(--so-text); transition: color .25s var(--so-anim); }
.so-filter__more:hover {
    background: var(--so-main);
    color: #fff;
    transform: translateY(-1px);
}
.so-filter__more:hover .so-filter__more-icon { color: #fff; }
.so-filter__more:active { transform: translateY(0); }

.so-filter__submit {
    appearance: none;
    background: var(--so-main);
    color: #fff;
    border: 0;
    border-radius: 999px;
    padding: 1.6rem 2.6rem;
    display: inline-flex;
    align-items: center;
    gap: .9rem;
    cursor: pointer;
    font-weight: 700;
    box-shadow: 0 10px 24px -10px rgba(0, 0, 0, .35);
    transition: background .25s var(--so-anim), transform .15s var(--so-anim), box-shadow .25s var(--so-anim);
}
.so-filter__submit:hover {
    background: var(--so-main-hover);
    transform: translateY(-1px) scale(1.02);
    box-shadow: 0 14px 30px -10px rgba(0, 0, 0, .45);
}
.so-filter__submit:active { transform: translateY(0) scale(1); }
.so-filter__submit-text { display: inline-flex; align-items: baseline; gap: .5rem; }
.so-filter__submit-count {
    font-family: var(--so-font-bold);
    font-size: 1.7rem;
    line-height: 1;
}
.so-filter__submit-label { font-size: 1.3rem; opacity: .9; font-weight: 500; }
.so-filter.is-loading .so-filter__submit-count { opacity: .5; }

/* Modal */
body.so-modal-open { overflow: hidden; }

.so-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}
.so-modal[hidden] { display: none; }
.so-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(20, 20, 25, .55);
    backdrop-filter: blur(3px);
    opacity: 0;
    transition: opacity .25s var(--so-anim);
}
.so-modal__dialog {
    position: relative;
    background: #fff;
    border-radius: var(--so-radius);
    box-shadow: 0 25px 60px -15px rgba(0, 0, 0, .35);
    width: 100%;
    max-width: 580px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    transform: scale(.95) translateY(20px);
    opacity: 0;
    transition: transform .25s var(--so-anim), opacity .25s var(--so-anim);
}
.so-modal.is-open .so-modal__backdrop { opacity: 1; }
.so-modal.is-open .so-modal__dialog { transform: scale(1) translateY(0); opacity: 1; }

.so-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 2rem 2.5rem 1.5rem;
    border-bottom: 1px solid var(--so-border-soft);
}
.so-modal__title {
    margin: 0;
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 2.2rem;
    color: var(--so-text);
}
.so-modal__close {
    appearance: none;
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--so-text);
    padding: .5rem;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .15s var(--so-anim), color .15s var(--so-anim);
}
.so-modal__close:hover { background: var(--so-soft); color: var(--so-accent); }

.so-modal__body {
    padding: 2rem 2.5rem;
    overflow-y: auto;
    flex: 1;
}

.so-modal__footer {
    display: flex;
    gap: 1rem;
    padding: 1.5rem 2.5rem;
    border-top: 1px solid var(--so-border-soft);
    background: var(--so-soft);
    border-bottom-left-radius: var(--so-radius);
    border-bottom-right-radius: var(--so-radius);
}
.so-modal__footer .so-btn { flex: 1; justify-content: center; }

.so-modal-field { margin-bottom: 2.5rem; }
.so-modal-field:last-child { margin-bottom: 0; }
.so-modal-field__label,
.so-modal-field__title {
    display: block;
    margin: 0 0 .8rem;
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 1.6rem;
    color: var(--so-text);
}
.so-modal-field__range {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin: .5rem 0;
    color: var(--so-text);
    font-size: 1.3rem;
    font-weight: 500;
}
.so-modal-field__min { text-align: left; }
.so-modal-field__max { text-align: right; }

.so-modal-field__control { position: relative; }
.so-modal-field__control select {
    width: 100%;
    appearance: none;
    -webkit-appearance: none;
    background: #fff;
    border: 1px solid var(--so-border);
    border-radius: var(--so-radius-sm);
    padding: 1.3rem 3rem 1.3rem 1.5rem;
    font-size: 1.6rem;
    color: var(--so-text);
    cursor: pointer;
}
.so-modal-field__control select:hover { border-color: var(--so-text); }
.so-modal-field__control select:focus {
    border-color: var(--so-main);
    outline: none;
    box-shadow: 0 0 0 3px var(--so-main-soft);
}
.so-modal-field__control::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 18px;
    width: 8px;
    height: 8px;
    border-right: 2px solid var(--so-text);
    border-bottom: 2px solid var(--so-text);
    transform: translateY(-65%) rotate(45deg);
    pointer-events: none;
}

/* Range sliders modal */
.so-modal .so-range.ui-slider {
    position: relative;
    height: 4px;
    background: var(--so-border-soft);
    border: none;
    border-radius: 999px;
    margin: 1rem .8rem 1.5rem;
}
.so-modal .so-range .ui-slider-range {
    background: var(--so-main);
    border-radius: 999px;
    height: 100%;
}
.so-modal .so-range .ui-slider-handle {
    position: absolute;
    top: 50%;
    width: 22px;
    height: 22px;
    margin-left: -11px;
    background: #fff;
    border: 2px solid var(--so-main);
    border-radius: 50%;
    transform: translateY(-50%);
    cursor: grab;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .12);
    transition: transform .15s var(--so-anim), box-shadow .15s var(--so-anim);
}
.so-modal .so-range .ui-slider-handle:hover { transform: translateY(-50%) scale(1.1); }
.so-modal .so-range .ui-slider-handle:active { cursor: grabbing; box-shadow: 0 0 0 6px var(--so-main-soft); }
.so-modal .so-range .ui-slider-handle:focus { outline: none; box-shadow: 0 0 0 6px var(--so-main-soft); }

/* Checkboxes */
.so-checkbox-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: .6rem 1.5rem;
}
@media (max-width: 480px) { .so-checkbox-list { grid-template-columns: 1fr; } }

.so-checkbox {
    display: inline-flex;
    align-items: center;
    gap: .8rem;
    cursor: pointer;
    user-select: none;
    padding: .35rem 0;
    color: var(--so-text);
    font-size: 1.5rem;
}
.so-checkbox input[type=checkbox] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}
.so-checkbox__box {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border: 1.5px solid var(--so-border);
    border-radius: 4px;
    background: #fff;
    color: transparent;
    transition: background .15s var(--so-anim), border-color .15s var(--so-anim), color .15s var(--so-anim);
    flex-shrink: 0;
}
.so-checkbox input[type=checkbox]:checked + .so-checkbox__box {
    background: var(--so-main);
    border-color: var(--so-main);
    color: #fff;
}
.so-checkbox input[type=checkbox]:focus-visible + .so-checkbox__box {
    box-shadow: 0 0 0 3px var(--so-main-soft);
}
.so-checkbox__label { line-height: 1.3; }
.so-checkbox:hover .so-checkbox__box { border-color: var(--so-text); }

/* Boutons génériques */
.so-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .6rem;
    border: 0;
    padding: 1.4rem 2.2rem;
    border-radius: 999px;
    font-size: 1.3rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    cursor: pointer;
    text-decoration: none !important;
    transition: background .2s var(--so-anim), color .2s var(--so-anim), transform .15s var(--so-anim);
}
.so-btn:hover { transform: scale(1.02); }
.so-btn:active { transform: scale(.97); }
.so-btn--primary { background: var(--so-main) !important; color: #fff !important; }
.so-btn--primary:hover { background: var(--so-main-hover) !important; color: #fff !important; }
.so-btn--ghost { background: var(--so-soft); color: var(--so-text); }
.so-btn--ghost:hover { background: var(--so-border-soft); color: var(--so-text); }

/* Responsive */
@media (max-width: 991px) {
    .so-filter__bar { flex-direction: column; align-items: stretch; }
    .so-filter__fields {
        flex-direction: column;
        border-radius: var(--so-radius);
        padding: .5rem;
    }
    .so-filter__field + .so-filter__field {
        border-left: 0;
        border-top: 1px solid var(--so-border-soft);
    }
    .so-filter__statut,
    .so-filter__more,
    .so-filter__submit {
        justify-content: center;
        border-radius: var(--so-radius);
    }
}
@media (max-width: 575px) {
    .so-modal { padding: 1rem; }
    .so-modal__dialog { max-height: 95vh; }
    .so-modal__head,
    .so-modal__body,
    .so-modal__footer { padding-left: 1.5rem; padding-right: 1.5rem; }
}

/* ======================================================
/* ======================================================
 *  LISTE
 * ====================================================== */

.archive-immobilier { padding: 3rem 0 6rem; background: var(--so-bg); }
.archive-immobilier .blog-main-header { margin: 1.5rem 0 3rem; }
.archive-immobilier .blog-main-header h1 {
    font-family: var(--so-font-bold);
    font-weight: 700;
    text-transform: none;
    letter-spacing: -.01em;
}

.archive-immobilier .pagination {
    margin-top: 5rem;
    display: flex;
    justify-content: center;
    gap: .7rem;
}
.archive-immobilier .pagination a,
.archive-immobilier .pagination span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 1.4rem;
    border-radius: 999px;
    background: #fff;
    color: var(--so-text);
    text-decoration: none;
    font-weight: 600;
    font-size: 1.5rem;
    border: 1px solid var(--so-border-soft);
    transition: background .2s var(--so-anim), color .2s var(--so-anim), border-color .2s var(--so-anim);
}
.archive-immobilier .pagination a:hover { background: var(--so-main); color: #fff; border-color: var(--so-main); }
.archive-immobilier .pagination .current { background: var(--so-main); color: #fff; border-color: var(--so-main); }

.archive-immobilier .row > .immoItem {
    flex: 0 0 100%;
    max-width: 100%;
}
@media (min-width: 768px) {
    .archive-immobilier .row > .immoItem { flex: 0 0 50%; max-width: 50%; }
}
@media (min-width: 1200px) {
    .archive-immobilier .row > .immoItem { flex: 0 0 33.333%; max-width: 33.333%; }
}

.immoItem {
    margin-bottom: 3rem;
    padding: 0 1.25rem;
}

.immoItem .card {
    position: relative;
    background: #fff;
    border: 0;
    border-radius: var(--so-radius);
    box-shadow: 0 4px 18px -8px rgba(0, 0, 0, .12);
    overflow: hidden;
    transition: transform .35s var(--so-anim), box-shadow .35s var(--so-anim);
    height: 100%;
}
.immoItem .card:hover {
    transform: translateY(-8px);
    box-shadow: 0 22px 45px -18px rgba(0, 0, 0, .25);
}

.immoCardLink {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
    text-decoration: none !important;
}

.immoItem.vendu .card .immoImageContainer img { filter: grayscale(.5); opacity: .85; }
.immoItem.vendu .card .immoContentContainer  { opacity: .85; }

/* Image */
.immoImageContainer {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--so-soft);
    margin: 0;
    border-radius: 0;
}
.immoImageContainer img.card-img-top {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .7s var(--so-anim);
}
.immoImagePlaceholder {
    display: block;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, #f6f6f6, #e8e8e8);
}
.immoImageContainer::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, 0) 30%, rgba(0, 0, 0, 0) 100%);
    pointer-events: none;
}
.immoItem .card:hover .immoImageContainer img.card-img-top { transform: scale(1.08); }

/* Badges */
.immoStatusBadge {
    position: absolute;
    top: 1.2rem;
    left: 1.2rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    padding: .6rem 1.2rem;
    border-radius: 999px;
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    line-height: 1;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 4px 12px -4px rgba(0, 0, 0, .25);
}
.immoStatusBadge.is-vendre { background: rgba(45, 45, 45, .88); color: #fff; }
.immoStatusBadge.is-louer  { background: rgba(47, 143, 107, .9); color: #fff; }
.immoStatusBadge.is-sold   { background: rgba(45, 45, 45, .92); color: #fff; }

.immoNewBadge {
    position: absolute;
    top: 1.2rem;
    right: 1.2rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    padding: .6rem 1.2rem;
    border-radius: 999px;
    background: var(--so-accent);
    color: #fff;
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    line-height: 1;
    box-shadow: 0 4px 16px -4px rgba(255, 0, 0, .55);
}

/* Contenu */
.immoContentContainer {
    padding: 1.8rem 2rem 2rem !important;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    flex: 1;
}

/* Specs avec séparateurs point */
.immoSpecs {
    list-style: none;
    margin: 0;
    padding: 0;
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0;
    color: var(--so-muted);
    font-size: 1.3rem;
    font-weight: 500;
}
.immoSpecs li {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    line-height: 1;
    padding: 0 .9rem;
    position: relative;
}
.immoSpecs li:first-child { padding-left: 0; }
.immoSpecs li:not(:last-child)::after {
    content: "";
    position: absolute;
    right: -2px;
    top: 50%;
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background: var(--so-border);
    transform: translateY(-50%);
}
.immoSpecs svg { color: var(--so-muted); flex-shrink: 0; opacity: .85; }

/* Prix BIG */
.immoCardPrice {
    font-family: var(--so-font-bold);
    font-weight: 800;
    font-size: 2.2rem;
    color: var(--so-text);
    line-height: 1.05;
    letter-spacing: -.02em;
    margin: .2rem 0 .1rem;
}

/* Titre */
.immoCardTitle {
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 1.7rem;
    margin: 0;
    color: var(--so-text);
    line-height: 1.3;
    transition: color .2s var(--so-anim);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.immoCardLink:hover .immoCardTitle { color: var(--so-accent); }

/* Adresse — force la couleur (override thème) */
.immoCardAddress,
.immoCardLink .immoCardAddress,
.immoCardLink:hover .immoCardAddress,
.immoCardLink:visited .immoCardAddress {
    font-style: normal;
    color: var(--so-muted) !important;
    font-size: 1.3rem;
    margin: 0;
    line-height: 1.4;
    text-decoration: none !important;
    font-weight: 400;
}

/* Grille shortcode */
.immoShortcodeList {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    margin: 0 -1.25rem;
}
@media (max-width: 991px) { .immoShortcodeList { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .immoShortcodeList { grid-template-columns: 1fr; } }
.immoShortcodeList .immoItem {
    margin-bottom: 2.5rem;
    max-width: none;
    flex: none;
}

 *  FICHE DÉTAIL
 * ====================================================== */

.singleImmo { background: #fff; color: var(--so-text); }

.immoHero { position: relative; background: var(--so-soft); margin-bottom: 4rem; }

/* Dégradé noir en haut — assure la lisibilité du header par-dessus l'image */
.immoHero__topGradient {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 220px;
    z-index: 5;
    pointer-events: none;
    background: linear-gradient(to bottom,
        rgba(0, 0, 0, .75) 0%,
        rgba(0, 0, 0, .55) 30%,
        rgba(0, 0, 0, .25) 65%,
        rgba(0, 0, 0, 0)   100%);
}
@media (max-width: 767px) {
    .immoHero__topGradient { height: 150px; }
}

.immoHeroInner { position: relative; }

.immoBanniere {
    position: relative;
    overflow: hidden;
    background: #000;
}

/* Dégradés sur les bords gauche/droite — assombrissement doux des slides cloned */
.immoBanniere::before,
.immoBanniere::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 160px;
    z-index: 3;
    pointer-events: none;
    transition: opacity .3s var(--so-anim);
}
.immoBanniere::before {
    left: 0;
    background: linear-gradient(to right,
        rgba(0, 0, 0, .50) 0%,
        rgba(0, 0, 0, .30) 45%,
        rgba(0, 0, 0, .10) 80%,
        rgba(0, 0, 0, 0)   100%);
}
.immoBanniere::after {
    right: 0;
    background: linear-gradient(to left,
        rgba(0, 0, 0, .50) 0%,
        rgba(0, 0, 0, .30) 45%,
        rgba(0, 0, 0, .10) 80%,
        rgba(0, 0, 0, 0)   100%);
}
/* Mobile/tablette : une seule image plein écran (centerMode coupé en JS),
   donc plus besoin des dégradés latéraux qui assombrissaient les bords. */
@media (max-width: 991px) {
    .immoBanniere::before,
    .immoBanniere::after { display: none; }
}

.immoSlide {
    height: 60vh;
    min-height: 380px;
    max-height: 620px;
    transition: opacity .4s var(--so-anim);
}
.immoSlide.is-empty { background: var(--so-soft); }

/* Légère atténuation des slides non-centrées */
.slick-slide:not(.slick-center) .immoSlideBg {
    filter: brightness(.7);
    transition: filter .4s var(--so-anim);
}
.slick-slide.slick-center .immoSlideBg { filter: brightness(1); }

.immoSlideLink { display: block; width: 100%; height: 100%; }
.immoSlideBg {
    display: block;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

/* Flèches : repositionnées sur l'image centrale */
.immoArrow {
    position: absolute;
    top: 50%;
    z-index: 10;
    transform: translateY(-50%);
    appearance: none;
    border: 0;
    width: 60px;
    height: 60px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .95);
    backdrop-filter: blur(8px);
    color: var(--so-text);
    box-shadow: 0 8px 24px -6px rgba(0, 0, 0, .45);
    cursor: pointer;
    transition: background .2s var(--so-anim), color .2s var(--so-anim), transform .25s var(--so-anim), box-shadow .2s var(--so-anim);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.immoArrow i { font-size: 1.6rem; line-height: 1; }
.immoArrow:hover {
    background: var(--so-main);
    color: #fff;
    transform: translateY(-50%) scale(1.08);
    box-shadow: 0 10px 28px -6px rgba(0, 0, 0, .55);
}
.immoArrow:active { transform: translateY(-50%) scale(.96); }

.immoPrev { left: 1.5rem; }
.immoNext { right: 1.5rem; }

@media (min-width: 768px) {
    .immoPrev { left: calc(80px + 1.5rem); }
    .immoNext { right: calc(80px + 1.5rem); }
}
@media (min-width: 1400px) {
    .immoPrev { left: calc(80px + 3rem); }
    .immoNext { right: calc(80px + 3rem); }
}

.immoBadges {
    position: absolute;
    bottom: 2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 4;
    pointer-events: none;
    width: 100%;
    text-align: center;
}
.immoinnerbadges {
    display: inline-flex;
    flex-wrap: wrap;
    gap: .7rem;
    padding: .9rem 1.3rem;
    background: rgba(255, 255, 255, .92);
    backdrop-filter: blur(6px);
    border-radius: 999px;
    box-shadow: 0 8px 25px -8px rgba(0, 0, 0, .25);
    pointer-events: auto;
}
.immoBadge {
    display: inline-flex;
    align-items: center;
    padding: .55rem 1.2rem;
    border-radius: 999px;
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    line-height: 1;
}
.immoBadge.is-new    { background: var(--so-accent); color: #fff; }
.immoBadge.is-sold   { background: var(--so-main); color: #fff; }
.immoBadge.is-vendre { background: var(--so-main); color: #fff; }
.immoBadge.is-louer  { background: #2f8f6b; color: #fff; }
.immoBadge.is-statut { background: var(--so-soft); color: var(--so-text); }
.immoBadge.is-ref    { background: #fff; color: var(--so-muted); border: 1px solid var(--so-border); }

.immoPage { padding-bottom: 6rem; }
@media (max-width: 991px) {
    .immoPage .immoLeftSide,
    .immoPage .immoRightSideWrap { padding: 0; }
}

.immoHeroHead { padding: 0 0 3rem; }

/* Fil d'Ariane */
.immoBreadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
    margin-bottom: 2rem;
    font-size: 1.3rem;
    color: var(--so-muted);
    line-height: 1.4;
}
.immoBreadcrumb__item {
    color: var(--so-muted);
    text-decoration: none;
    font-weight: 500;
    transition: color .2s var(--so-anim);
}
a.immoBreadcrumb__item:hover { color: var(--so-accent); }
.immoBreadcrumb > span.immoBreadcrumb__item:last-child,
.immoBreadcrumb > a.immoBreadcrumb__item:last-child {
    color: var(--so-text);
    font-weight: 600;
}
.immoBreadcrumb__sep {
    color: var(--so-muted);
    opacity: .55;
    flex-shrink: 0;
}

/* Titre */
.immoTitle {
    font-family: var(--so-font-bold);
    font-weight: 800;
    font-size: 3.6rem;
    margin: 0 0 3rem;
    line-height: 1.1;
    color: var(--so-text);
    letter-spacing: -.02em;
}

/* Specs cards */
.immoSpecsGrid {
    list-style: none;
    margin: 0 0 2rem;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 2rem;
}
@media (max-width: 767px) {
    .immoSpecsGrid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
}
@media (max-width: 380px) {
    .immoSpecsGrid { grid-template-columns: 1fr; }
}
.immoSpecsGrid__item {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: .15rem;
    padding-bottom: 2.5rem;
    min-height: 95px;
}
.immoSpecsGrid__value {
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 1.7rem;
    color: var(--so-text);
    line-height: 1.2;
}
.immoSpecsGrid__label {
    color: var(--so-muted);
    font-size: 1.3rem;
    line-height: 1.3;
}
.immoSpecsGrid__icon {
    position: absolute;
    bottom: 0;
    left: 0;
    color: var(--so-text);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
}
.immoSpecsGrid__icon svg { display: block; }

.immoSectionTitle {
    font-family: var(--so-font-bold);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    font-size: 2.4rem;
    color: var(--so-text);
    margin: 0 0 2rem;
    padding-bottom: .8rem;
    border-bottom: 2px solid var(--so-main);
    display: inline-block;
}

.immoCard {
    background: #fff;
    border: 1px solid var(--so-border-soft);
    border-radius: var(--so-radius);
    padding: 2.5rem;
    margin-bottom: 3rem;
    box-shadow: var(--so-shadow);
}

.immoDescription { margin-bottom: 3rem; }
.immoWysiwyg { font-size: 1.7rem; line-height: 1.65; color: var(--so-text); }
.immoWysiwyg p { margin: 0 0 1em; }
.immoWysiwyg strong, .immoWysiwyg b { color: var(--so-text); }
.immoWysiwyg ul, .immoWysiwyg ol { padding-left: 2rem; margin: 0 0 1em; }
.immoWysiwyg li { margin-bottom: .35em; }
.immoWysiwyg a { color: var(--so-accent); text-decoration: underline; }

/* Accordéon — override agressif Bootstrap (kill du fond bleu actif + shadow focus) */
.immoAccordionWrap {
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    margin-bottom: 3rem;
    --bs-accordion-color: var(--so-text);
    --bs-accordion-bg: #fff;
    --bs-accordion-active-bg: #fff;
    --bs-accordion-active-color: var(--so-text);
    --bs-accordion-btn-color: var(--so-text);
    --bs-accordion-btn-bg: #fff;
    --bs-accordion-btn-focus-box-shadow: none;
    --bs-accordion-btn-focus-border-color: transparent;
    --bs-accordion-btn-icon: none;
    --bs-accordion-btn-active-icon: none;
    --bs-accordion-border-color: var(--so-border-soft);
    --bs-accordion-border-width: 1px;
    --bs-accordion-border-radius: var(--so-radius);
    --bs-accordion-inner-border-radius: var(--so-radius);
    --bs-accordion-body-padding-x: 2rem;
    --bs-accordion-body-padding-y: .5rem;
}

.immoAccordion .accordion-item {
    background: #fff;
    border: 1px solid var(--so-border-soft);
    border-radius: var(--so-radius) !important;
    overflow: hidden;
    box-shadow: none;
    margin-bottom: 1.5rem;
}
.immoAccordion .accordion-item:last-child { margin-bottom: 0; }
.immoAccordion .accordion-header { margin: 0; }

.immoAccordion .accordion-button {
    appearance: none;
    background: #fff !important;
    border: 0 !important;
    width: 100%;
    text-align: left;
    padding: 1.8rem 2.2rem;
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 2.4rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--so-text) !important;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    box-shadow: none !important;
    transition: background .2s var(--so-anim);
}
.immoAccordion .accordion-button:hover { background: var(--so-soft) !important; }
.immoAccordion .accordion-button:focus,
.immoAccordion .accordion-button:focus-visible {
    box-shadow: none !important;
    outline: none;
    background: #fff !important;
    color: var(--so-text) !important;
}
.immoAccordion .accordion-button:not(.collapsed) {
    background: #fff !important;
    color: var(--so-text) !important;
    box-shadow: none !important;
}
.immoAccordion .accordion-button::after {
    content: "";
    display: inline-block;
    width: 12px;
    height: 12px;
    border: 0;
    border-right: 2px solid var(--so-text);
    border-bottom: 2px solid var(--so-text);
    background: none !important;
    transform: rotate(45deg);
    transition: transform .25s var(--so-anim);
    margin-left: 1.5rem;
    flex-shrink: 0;
}
.immoAccordion .accordion-button:not(.collapsed)::after { transform: rotate(-135deg); }
.immoAccordion .accordion-collapse { border: 0; }
.immoAccordion .accordion-body { padding: .5rem 2.2rem 2rem; background: #fff; }

/* Table */
.immoTable { width: 100%; border-collapse: collapse; }
.immoTable tr {
    border-bottom: 1px solid var(--so-border-soft);
    transition: background .15s var(--so-anim);
}
.immoTable tr:last-child { border-bottom: 0; }
.immoTable tr:hover { background: rgba(45, 45, 45, .015); }
.immoTable td { padding: 1.3rem .5rem; font-size: 1.5rem; vertical-align: middle; }
.immoTable td.label {
    color: var(--so-muted);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 1.2rem;
    letter-spacing: .05em;
    width: 50%;
}
.immoTable td:not(.label) {
    color: var(--so-text);
    font-weight: 700;
    text-align: right;
    font-size: 1.6rem;
}

/* Équipements */
.equipInner { display: flex; flex-wrap: wrap; gap: .8rem; padding-top: .5rem !important; }
.equipInner .etiquette {
    display: inline-flex;
    align-items: center;
    padding: .7rem 1.4rem;
    background: var(--so-soft);
    color: var(--so-text);
    border-radius: 999px;
    font-size: 1.3rem;
    font-weight: 500;
    border: 1px solid transparent;
    transition: background .2s var(--so-anim), color .2s var(--so-anim), border-color .2s var(--so-anim);
}
.equipInner .etiquette::before {
    content: "";
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-right: .5rem;
    background: var(--so-accent);
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/></svg>") no-repeat center / contain;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/></svg>") no-repeat center / contain;
    flex-shrink: 0;
}
.equipInner .etiquette:hover { background: #fff; border-color: var(--so-main); }

.immoGalleryBlock .immoBlockHead {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    margin-bottom: 1.5rem;
}
.immoGalleryBlock .immoMiniArrows { display: inline-flex; gap: .5rem; }
.immoGalleryBlock .immoMiniArrow {
    appearance: none;
    border: 1px solid var(--so-border);
    background: #fff;
    width: 42px;
    height: 42px;
    border-radius: 999px;
    color: var(--so-text);
    cursor: pointer;
    transition: background .2s var(--so-anim), color .2s var(--so-anim), border-color .2s var(--so-anim);
}
.immoGalleryBlock .immoMiniArrow i { font-size: 1.3rem; }
.immoGalleryBlock .immoMiniArrow:hover {
    background: var(--so-main);
    color: #fff;
    border-color: var(--so-main);
}
.immoGalleryBlock .immoThumb { padding: 0 .5rem; }
.immoGalleryBlock .immoThumb a {
    display: block;
    border-radius: var(--so-radius-sm);
    overflow: hidden;
}
.immoGalleryBlock .immoThumb img {
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    display: block;
    transition: transform .4s var(--so-anim);
}
.immoGalleryBlock .immoThumb a:hover img { transform: scale(1.05); }

.immoVideo {
    position: relative;
    border-radius: var(--so-radius-sm);
    overflow: hidden;
    background: #000;
}
.immoVideo iframe { display: block; width: 100%; height: 100%; min-height: 360px; }

@media (min-width: 992px) {
    .immoRightSideWrap {
        position: sticky;
        top: 2rem;
        align-self: flex-start;
    }
}
.immoRightSide {
    background: #fff;
    border: 1px solid var(--so-border-soft);
    border-radius: var(--so-radius);
    box-shadow: none;
    padding: 2.5rem;
    color: var(--so-text);
}
.immoRightSide.is-sold { opacity: .9; }
.immoRightTop { text-align: left; }
.immoRightTitle {
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--so-muted);
    margin: 0 0 .8rem;
}
.immoPrice {
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 3.2rem;
    line-height: 1.1;
    color: var(--so-text);
    margin-bottom: .8rem;
    letter-spacing: -.01em;
}
.immoPriceSub { font-size: 1.3rem; color: var(--so-muted); }
.immoPriceSub div { margin-bottom: .2rem; }
.immoPriceSub strong { color: var(--so-text); }

.immoHr {
    border: 0;
    border-top: 1px solid var(--so-border-soft);
    margin: 2rem 0;
}

.immoAddress {
    font-style: normal;
    color: var(--so-text);
    font-size: 1.7rem;
    margin: 0 0 1.5rem;
    line-height: 1.5;
}
.immoAddress div { margin-bottom: .2rem; }

#immomap {
    width: 100%;
    height: 220px;
    border-radius: var(--so-radius-sm);
    overflow: hidden;
    background:
        repeating-linear-gradient(45deg, var(--so-soft), var(--so-soft) 10px, #f0f0f0 10px, #f0f0f0 20px);
    position: relative;
}
#immomap:empty::after {
    content: "Carte indisponible";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 1.3rem;
    color: var(--so-muted);
    background: rgba(255, 255, 255, .9);
    padding: .5rem 1rem;
    border-radius: 999px;
}

.immoFiles .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .8rem;
    padding: 1.2rem 1.8rem !important;
    font-size: 1.6rem !important;
    font-weight: 600 !important;
    background: var(--so-soft) !important;
    color: var(--so-text) !important;
    border: 1px solid var(--so-border-soft) !important;
    border-radius: var(--so-radius-sm) !important;
    text-transform: none !important;
    text-decoration: none !important;
    box-shadow: none !important;
    transition: background .2s var(--so-anim), color .2s var(--so-anim), border-color .2s var(--so-anim);
}
.immoFiles .btn i { color: var(--so-accent); }
.immoFiles .btn:hover {
    background: var(--so-main) !important;
    color: #fff !important;
    border-color: var(--so-main) !important;
    transform: none !important;
}
.immoFiles .btn:hover i { color: #fff; }

/* Contact — tuiles téléphone */
.immoContact {
    display: flex;
    flex-direction: column;
    gap: .8rem;
    margin-bottom: 1.5rem;
}

.immoContactItem {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    padding: 1.2rem 1.4rem;
    background: var(--so-soft);
    border: 1px solid transparent;
    border-radius: var(--so-radius-sm);
    color: var(--so-text);
    text-decoration: none !important;
    transition: background .25s var(--so-anim), color .25s var(--so-anim), border-color .25s var(--so-anim), transform .15s var(--so-anim);
}
.immoContactItem__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 999px;
    background: #fff;
    color: var(--so-accent);
    flex-shrink: 0;
    transition: background .25s var(--so-anim), color .25s var(--so-anim);
}
.immoContactItem__main {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    flex: 1;
    min-width: 0;
}
.immoContactItem__label {
    font-size: 1.1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--so-muted);
    line-height: 1;
    transition: color .25s var(--so-anim);
}
.immoContactItem__value {
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 1.7rem;
    line-height: 1.2;
    color: var(--so-text);
    transition: color .25s var(--so-anim);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.immoContactItem__arrow {
    color: var(--so-muted);
    flex-shrink: 0;
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .25s var(--so-anim), transform .25s var(--so-anim), color .25s var(--so-anim);
}
.immoContactItem:hover {
    background: var(--so-main);
    border-color: var(--so-main);
    transform: translateY(-1px);
}
.immoContactItem:hover .immoContactItem__icon { background: var(--so-accent); color: #fff; }
.immoContactItem:hover .immoContactItem__label { color: rgba(255, 255, 255, .65); }
.immoContactItem:hover .immoContactItem__value { color: #fff; }
.immoContactItem:hover .immoContactItem__arrow {
    color: #fff;
    opacity: 1;
    transform: translateX(0);
}

.immoInteretForm { margin-top: 1.2rem; }

.interetBtn {
    display: inline-flex !important;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    text-align: left;
    background: var(--so-main) !important;
    color: #fff !important;
    text-transform: uppercase !important;
    font-weight: 700 !important;
    font-size: 1.3rem !important;
    letter-spacing: .08em !important;
    padding: 1.5rem 2rem !important;
    border: 0 !important;
    border-radius: var(--so-radius) !important;
    box-shadow: 0 8px 22px -10px rgba(0, 0, 0, .35);
    transition: background .2s var(--so-anim), transform .15s var(--so-anim), box-shadow .2s var(--so-anim);
    overflow: hidden;
    position: relative;
}
.interetBtn__label {
    flex: 1;
    text-align: center;
    padding-right: 1rem;
}
.interetBtn__arrow {
    flex-shrink: 0;
    color: #fff;
    transition: transform .3s var(--so-anim);
}
.interetBtn i { color: #fff; }
.interetBtn:hover {
    background: var(--so-main-hover) !important;
    color: #fff !important;
    transform: translateY(-1px);
    box-shadow: 0 10px 25px -8px rgba(0, 0, 0, .4);
}
.interetBtn:hover .interetBtn__arrow { transform: translateX(6px); }

.singleImmo .slick-dots { display: none !important; }

/* Logo inversé sur la page single bien (par-dessus le dégradé sombre) */
body.single-immobilier .site-logo-container img,
body.single-immobilier .site-logo img,
body.single-immobilier .custom-logo,
body.single-immobilier .logoFixedTop img {
    filter: invert(1) brightness(1.4);
    transition: filter .3s var(--so-anim);
}
/* Quand le header passe en mode "scrolled" (.transform), logo normal */
body.single-immobilier.transform .site-logo-container img,
body.single-immobilier.transform .site-logo img,
body.single-immobilier.transform .custom-logo,
body.single-immobilier.transform .logoFixedTop img,
body.single-immobilier .transform .site-logo-container img,
body.single-immobilier .transform .site-logo img,
body.single-immobilier .transform .custom-logo,
body.single-immobilier .transform .logoFixedTop img {
    filter: none;
}


/* ======================================================
 *  WIDGET (page d'accueil, sidebar)
 * ====================================================== */

.widget_so_immobilier { margin-bottom: 4rem; }

.immobilierWidgetHead {
    margin-bottom: 3rem;
    text-align: center;
}
.immobilierWidgetTitle {
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 3.6rem;
    line-height: 1.1;
    color: var(--so-text);
    margin: 0 0 .8rem;
    letter-spacing: -.02em;
}
.immobilierWidgetSubtitle {
    color: var(--so-muted);
    font-size: 1.7rem;
    margin: 0;
    line-height: 1.4;
}

.immobilierWidgetCta {
    text-align: center;
    margin-top: 3rem;
}
.immobilierWidgetCta .so-btn {
    display: inline-flex;
    align-items: center;
    gap: .8rem;
}
.immobilierWidgetCta .so-btn svg { transition: transform .3s var(--so-anim); }
.immobilierWidgetCta .so-btn:hover svg { transform: translateX(4px); }

/* Item commun */
.immobilierWidgetItem {
    position: relative;
    background: #fff;
    border-radius: var(--so-radius);
    box-shadow: 0 4px 18px -8px rgba(0, 0, 0, .12);
    overflow: hidden;
    transition: transform .35s var(--so-anim), box-shadow .35s var(--so-anim);
}
.immobilierWidgetItem:hover {
    transform: translateY(-6px);
    box-shadow: 0 22px 45px -18px rgba(0, 0, 0, .25);
}
.immobilierWidgetItem.is-vendu .immoImageContainer img { filter: grayscale(.5); opacity: .85; }
.immobilierWidgetItem.is-vendu .immoContentContainer  { opacity: .85; }

.immobilierWidgetItem__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
    text-decoration: none !important;
}

.so-immobilier-widget .immoImageContainer {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--so-soft);
    margin: 0;
    border-radius: 0;
}
.so-immobilier-widget .immoImageContainer img.card-img-top {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .7s var(--so-anim);
}
.so-immobilier-widget .immoImageContainer::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, 0) 30%);
    pointer-events: none;
}
.immobilierWidgetItem:hover .immoImageContainer img.card-img-top { transform: scale(1.08); }

.so-immobilier-widget .immoContentContainer {
    padding: 1.8rem 2rem 2rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    flex: 1;
}

.so-immobilier-widget .immoCardPrice {
    font-family: var(--so-font-bold);
    font-weight: 800;
    font-size: 2.2rem;
    color: var(--so-text);
    line-height: 1.05;
    letter-spacing: -.02em;
    margin: .2rem 0 .1rem;
}

.so-immobilier-widget .immoCardTitle {
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 1.7rem;
    margin: 0;
    color: var(--so-text);
    line-height: 1.3;
    transition: color .2s var(--so-anim);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.immobilierWidgetItem__link:hover .immoCardTitle { color: var(--so-accent); }

.so-immobilier-widget .immoCardAddress {
    font-style: normal;
    color: var(--so-muted) !important;
    font-size: 1.3rem;
    margin: 0;
    line-height: 1.4;
    text-decoration: none !important;
    font-weight: 400;
}

/* Badges */
.so-immobilier-widget .immoStatusBadge {
    position: absolute;
    top: 1.2rem;
    left: 1.2rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    padding: .6rem 1.2rem;
    border-radius: 999px;
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    line-height: 1;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 4px 12px -4px rgba(0, 0, 0, .25);
}
.so-immobilier-widget .immoStatusBadge.is-vendre { background: rgba(45, 45, 45, .88); color: #fff; }
.so-immobilier-widget .immoStatusBadge.is-louer  { background: rgba(47, 143, 107, .9); color: #fff; }
.so-immobilier-widget .immoStatusBadge.is-sold   { background: rgba(45, 45, 45, .92); color: #fff; }

.so-immobilier-widget .immoNewBadge {
    position: absolute;
    top: 1.2rem;
    right: 1.2rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    padding: .6rem 1.2rem;
    border-radius: 999px;
    background: var(--so-accent);
    color: #fff;
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    line-height: 1;
    box-shadow: 0 4px 16px -4px rgba(255, 0, 0, .55);
}

/* Specs */
.so-immobilier-widget .immoSpecs {
    list-style: none;
    margin: 0;
    padding: 0;
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0;
    color: var(--so-muted);
    font-size: 1.3rem;
    font-weight: 500;
}
.so-immobilier-widget .immoSpecs li {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    line-height: 1;
    padding: 0 .9rem;
    position: relative;
}
.so-immobilier-widget .immoSpecs li:first-child { padding-left: 0; }
.so-immobilier-widget .immoSpecs li:not(:last-child)::after {
    content: "";
    position: absolute;
    right: -2px;
    top: 50%;
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background: var(--so-border);
    transform: translateY(-50%);
}
.so-immobilier-widget .immoSpecs svg { color: var(--so-muted); flex-shrink: 0; opacity: .85; }

/* Mode SLIDER (Swiper) */
.so-immobilier-widget--slider {
    position: relative;
    padding: 1.5rem 0 2rem;
}

/* Swiper interne : on autorise l'overflow visible pour ne pas couper les ombres */
.so-immobilier-widget--slider .swiper {
    overflow: visible;
    padding: 1rem 0;
}

.so-immobilier-widget--slider .swiper-wrapper { align-items: stretch; }
.so-immobilier-widget--slider .swiper-slide {
    height: auto;
    display: flex;
    overflow: visible;
}
.so-immobilier-widget--slider .swiper-slide .immobilierWidgetItem {
    flex: 1;
    display: flex;
    flex-direction: column;
    position: relative;
    z-index: 1;
    transition: transform .35s var(--so-anim), box-shadow .35s var(--so-anim), z-index 0s linear .35s;
}
.so-immobilier-widget--slider .swiper-slide .immobilierWidgetItem:hover {
    z-index: 20;
    transition: transform .35s var(--so-anim), box-shadow .35s var(--so-anim), z-index 0s linear 0s;
}

/* Flèches — fond blanc translucide + blur (glassmorphism) */
.so-immobilier-widget--slider .swiper-button-prev-immo,
.so-immobilier-widget--slider .swiper-button-next-immo {
    position: absolute;
    top: 38%;
    z-index: 10;
    width: 52px;
    height: 52px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .65);
    backdrop-filter: blur(10px) saturate(160%);
    -webkit-backdrop-filter: blur(10px) saturate(160%);
    color: var(--so-text);
    box-shadow:
        0 8px 22px -6px rgba(0, 0, 0, .25),
        0 0 0 1px rgba(255, 255, 255, .4) inset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transform: translateY(-50%);
    transition: background .2s var(--so-anim), color .2s var(--so-anim), transform .2s var(--so-anim), box-shadow .25s var(--so-anim);
}
.so-immobilier-widget--slider .swiper-button-prev-immo:hover,
.so-immobilier-widget--slider .swiper-button-next-immo:hover {
    background: rgba(255, 255, 255, .9);
    color: var(--so-main);
    transform: translateY(-50%) scale(1.08);
    box-shadow:
        0 12px 28px -6px rgba(0, 0, 0, .35),
        0 0 0 1px rgba(255, 255, 255, .55) inset;
}
.so-immobilier-widget--slider .swiper-button-prev-immo.swiper-button-disabled,
.so-immobilier-widget--slider .swiper-button-next-immo.swiper-button-disabled {
    opacity: .35;
    pointer-events: none;
}
.so-immobilier-widget--slider .swiper-button-prev-immo { left: -10px; }
.so-immobilier-widget--slider .swiper-button-next-immo { right: -10px; }

@media (max-width: 575px) {
    .so-immobilier-widget--slider .swiper-button-prev-immo,
    .so-immobilier-widget--slider .swiper-button-next-immo { width: 42px; height: 42px; }
    .so-immobilier-widget--slider .swiper-button-prev-immo { left: .5rem; }
    .so-immobilier-widget--slider .swiper-button-next-immo { right: .5rem; }
}

/* Pagination dots : virée */
.so-immobilier-widget--slider .swiper-pagination,
.so-immobilier-widget--slider .swiper-pagination-immo,
.so-immobilier-widget--slider .swiper-pagination-bullets {
    display: none !important;
}

/* Mode GRID */
.so-immobilier-widget--grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2.5rem;
}
@media (max-width: 991px) { .so-immobilier-widget--grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .so-immobilier-widget--grid { grid-template-columns: 1fr; } }

/* Mode LIST */
.so-immobilier-widget--list {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}
.so-immobilier-widget--list .immobilierWidgetItem__link {
    flex-direction: row;
    align-items: stretch;
}
.so-immobilier-widget--list .immoImageContainer {
    flex: 0 0 38%;
    aspect-ratio: auto;
    min-height: 220px;
}
.so-immobilier-widget--list .immoContentContainer {
    justify-content: center;
    padding: 2rem 2.5rem;
}
@media (max-width: 575px) {
    .so-immobilier-widget--list .immobilierWidgetItem__link { flex-direction: column; }
    .so-immobilier-widget--list .immoImageContainer { flex: 1; aspect-ratio: 16 / 10; min-height: 0; }
}

/* ======================================================
 *  DIVERS
 * ====================================================== */

.singleImmo .headerTop { display: none; }
#site-header { overflow: visible; }

/* ============================================================
 *  Modal "Demande d'information" (fiche bien)
 * ============================================================ */
body.so-immo-demande-open { overflow: hidden; }

.soImmoDemande {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
}
.soImmoDemande[hidden] { display: none; }

.soImmoDemande__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 15, 20, .55);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    opacity: 0;
    transition: opacity .25s var(--so-anim);
}
.soImmoDemande.is-open .soImmoDemande__backdrop { opacity: 1; }

.soImmoDemande__dialog {
    position: relative;
    width: 100%;
    max-width: 540px;
    max-height: 92vh;
    overflow-y: auto;
    background: #fff;
    border-radius: var(--so-radius);
    box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .45);
    padding: 2.5rem;
    transform: scale(.96) translateY(20px);
    opacity: 0;
    transition: transform .25s var(--so-anim), opacity .25s var(--so-anim);
}
.soImmoDemande.is-open .soImmoDemande__dialog {
    transform: scale(1) translateY(0);
    opacity: 1;
}

.soImmoDemande__close {
    position: absolute;
    top: 1.2rem;
    right: 1.2rem;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: var(--so-soft);
    color: var(--so-text);
    cursor: pointer;
    transition: background .2s var(--so-anim), transform .2s var(--so-anim);
}
.soImmoDemande__close:hover { background: var(--so-accent); color: #fff; transform: rotate(90deg); }

.soImmoDemande__title {
    font-family: var(--so-font-bold);
    font-weight: 800;
    font-size: 2.4rem;
    color: var(--so-text);
    margin: 0 0 .4rem;
    letter-spacing: -.02em;
}
.soImmoDemande__bien {
    color: var(--so-muted);
    font-size: 1.4rem;
    margin: 0 0 1.8rem;
}

.soImmoDemande__row {
    display: flex;
    gap: 1.2rem;
}
.soImmoDemande__row .soImmoDemande__field { flex: 1; min-width: 0; }

.soImmoDemande__field {
    display: block;
    margin-bottom: 1.2rem;
}
.soImmoDemande__field span {
    display: block;
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--so-text);
    margin-bottom: .5rem;
}
.soImmoDemande__field input,
.soImmoDemande__field textarea {
    width: 100%;
    background: var(--so-soft);
    border: 1px solid var(--so-border-soft);
    border-radius: var(--so-radius-sm);
    padding: 1.1rem 1.3rem;
    font-size: 1.6rem;
    font-family: inherit;
    color: var(--so-text);
    transition: border-color .2s var(--so-anim), background .2s var(--so-anim);
}
.soImmoDemande__field textarea { resize: vertical; }
.soImmoDemande__field input:focus,
.soImmoDemande__field textarea:focus {
    outline: none;
    background: #fff;
    border-color: var(--so-accent);
}

.soImmoDemande__turnstile { margin: 0 0 1.2rem; min-height: 65px; }

.soImmoDemande__feedback {
    font-size: 1.35rem;
    margin: .2rem 0 1rem;
    min-height: 1em;
}
.soImmoDemande__feedback.is-success { color: #1c7c4a; }
.soImmoDemande__feedback.is-error { color: var(--so-accent); }

.soImmoDemande__submit {
    width: 100%;
    appearance: none;
    border: 0;
    border-radius: 999px;
    background: var(--so-accent);
    color: #fff;
    font-family: var(--so-font-bold);
    font-weight: 700;
    font-size: 1.5rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 1.3rem 2rem;
    cursor: pointer;
    transition: background .2s var(--so-anim), transform .15s var(--so-anim), opacity .2s var(--so-anim);
}
.soImmoDemande__submit:hover { background: #d80000; transform: translateY(-1px); }
.soImmoDemande__submit:disabled { opacity: .6; cursor: default; transform: none; }

@media (max-width: 575px) {
    .soImmoDemande { padding: 1rem; }
    .soImmoDemande__dialog { padding: 2rem 1.6rem; }
    .soImmoDemande__row { flex-direction: column; gap: 0; }
    .soImmoDemande__title { font-size: 2rem; }
}
