/* ============================================================
   Recherche visiteur — design "Claude Design" porté sur /annonces
   (hero + barre de recherche + grille d'annonces + bandeau CTA).
   Tout est scopé sous .dv-search pour ne rien fuiter dans le reste
   du site. Les jetons reprennent la charte Domivae déjà chargée
   par app.css (Quicksand/Urbanist, marine/canard/corail…).
   ============================================================ */

.dv-search {
    /* Alias des jetons du design → charte Domivae (app.css :root) */
    --color-navy:      var(--color-marine);
    --color-teal:      var(--color-canard);
    --color-coral:     var(--color-apricot);
    --color-mustard:   #F7B441;
    --color-peach:     #FBE8DA;
    --color-sky:       var(--color-blue-pastel);
    --color-offwhite:  #F2F2F2;
    --color-white:     #FBFBFB;
    --color-gray-500:  #717171;
    --color-gray-300:  #D6D6D6;
    --color-gray-200:  #EAEAEA;
    --fg-1:            #1E1E1E;

    --border-subtle:   #EAEAEA;
    --border-default:  #D6D6D6;

    --font-display:    'Quicksand', 'Trebuchet MS', system-ui, sans-serif;
    --font-body:       var(--font-sans);

    --radius-md:  14px;
    --radius-lg:  20px;
    --radius-xl:  28px;
    --radius-2xl: 40px;
    --radius-pill: 999px;

    --shadow-sm: 0 1px 2px rgba(1,29,45,.06), 0 1px 1px rgba(1,29,45,.04);
    --shadow-md: 0 6px 16px rgba(1,29,45,.08), 0 2px 4px rgba(1,29,45,.04);
    --shadow-lg: 0 18px 40px rgba(1,29,45,.10), 0 4px 8px rgba(1,29,45,.05);
    --shadow-focus: 0 0 0 3px rgba(0,126,133,.28);

    --ease-standard: cubic-bezier(.2,.8,.2,1);
    --dur-fast: 120ms;
    --dur-base: 200ms;

    color: var(--fg-1);
    font-family: var(--font-body);
}

/* Icône (Bootstrap Icons rendues par bi_icon, classe .lu ajoutée) */
.dv-search .lu { font-size: 20px; line-height: 1; width: auto; height: auto; vertical-align: -2px; }

.dv-search a { text-decoration: none; }

/* ---------- Boutons ---------- */
.dv-search .btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 9px;
    border: none; cursor: pointer; font-family: var(--font-body); font-weight: 600;
    border-radius: var(--radius-md); transition: all var(--dur-fast) var(--ease-standard);
    text-decoration: none;
}
.dv-search .btn .lu { font-size: 18px; }
.dv-search .btn:active { transform: scale(.985); }
.dv-search .btn-primary { padding: 12px 22px; font-size: 14.5px; background: var(--color-teal); color: #fff; box-shadow: 0 6px 16px rgba(0,126,133,.22); }
.dv-search .btn-primary:hover { background: #00696f; color: #fff; }
.dv-search .btn-ghost { padding: 12px 18px; font-size: 14.5px; background: transparent; color: var(--color-navy); border: 1px solid var(--border-default); }
.dv-search .btn-ghost:hover { background: var(--color-white); }
.dv-search .btn-lg { padding: 15px 30px; font-size: 16px; }

/* ---------- Hero ---------- */
.dv-search .hero { position: relative; overflow: hidden; background: var(--color-peach); padding: 56px 40px 130px; }
.dv-search .hero .loop { position: absolute; opacity: .14; color: var(--color-coral); }
.dv-search .hero .loop.a { width: 260px; right: -40px; top: -60px; }
.dv-search .hero .loop.b { width: 180px; left: -50px; bottom: -40px; color: var(--color-teal); }
.dv-search .hero-inner { max-width: 1080px; margin: 0 auto; position: relative; }
.dv-search .eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--color-teal); margin-bottom: 16px; }
.dv-search .eyebrow .lu { font-size: 16px; }
.dv-search .hero h1 { font-family: var(--font-display); font-size: 48px; font-weight: 700; color: var(--color-navy); line-height: 1.08; letter-spacing: -.01em; max-width: 760px; margin: 0; }
.dv-search .hero .lede { font-size: 18px; color: #5a4a3e; line-height: 1.55; margin-top: 16px; max-width: 620px; }

/* ---------- Barre de recherche ---------- */
.dv-search .searchbar {
    max-width: 1080px; margin: -86px auto 0; position: relative; z-index: 5;
    background: var(--color-white); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl);
    box-shadow: var(--shadow-lg); padding: 22px;
}
.dv-search .sb-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; align-items: end; }
.dv-search .sb-actions { display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.dv-search .sb-field { display: flex; flex-direction: column; gap: 7px; margin: 0; }
.dv-search .sb-field label { font-size: 12.5px; font-weight: 600; color: var(--color-navy); display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.dv-search .sb-field label .lu { font-size: 15px; color: var(--color-teal); }
.dv-search .sb-help { font-size: 12.5px; color: var(--color-gray-500); }
.dv-search .sb-help.is-ok { color: #16a34a; font-weight: 600; }
.dv-search .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.dv-search .inp, .dv-search .sel {
    width: 100%; padding: 13px 14px; border: 1px solid var(--border-default); border-radius: var(--radius-md);
    font-family: var(--font-body); font-size: 14.5px; color: var(--fg-1); background: var(--color-white);
    transition: border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard);
}
.dv-search .inp::placeholder { color: var(--color-gray-300); }
.dv-search .inp:focus, .dv-search .sel:focus { outline: none; border-color: var(--color-teal); box-shadow: var(--shadow-focus); }
.dv-search .sel {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23717171' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center; padding-right: 38px; cursor: pointer;
}
.dv-search .sb-search { height: 46px; padding: 0 24px; }
.dv-search .sb-extra { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border-subtle); }
.dv-search .sb-cta-inline { display: inline-flex; align-items: center; gap: 9px; font-size: 13.5px; color: var(--color-gray-500); }
.dv-search .sb-cta-inline .lu { font-size: 17px; color: var(--color-coral); }
.dv-search .sb-cta-inline a { color: var(--color-teal); font-weight: 600; }

/* ---------- « Où ? » : volet multi-communes ----------
   Le markup vient du widget partagé _cities_field (classes .sfc-*), qui porte
   son propre style générique (il sert aussi à la vitrine gestionnaire, HORS
   .dv-search). On ne le duplique pas : on l'habille ici au design de la barre.
   Les étiquettes gardent leur teinte par département (info métier) — seules la
   géométrie et la typo s'alignent sur la maquette. */
.dv-search .where { border: 1px solid var(--border-default); border-radius: var(--radius-lg); margin-bottom: 14px; transition: border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard); }
.dv-search .where:focus-within { border-color: var(--color-teal); box-shadow: var(--shadow-focus); }
.dv-search .where .sfc-head { padding: 14px 18px; gap: 12px; }
.dv-search .where .sfc-head__label { font-family: var(--font-display); font-size: 17px; font-weight: 700; color: var(--color-navy); gap: 9px; }
.dv-search .where .sfc-head__label .lu { font-size: 19px; color: var(--color-teal); }
.dv-search .where .sfc-head__summary { font-size: 15px; font-weight: 600; color: var(--color-teal); }
.dv-search .where .sfc-head__chev { color: var(--color-gray-500); }
.dv-search .where .sfc-body { padding: 0 18px 16px; }
.dv-search .where .sfc-tags { gap: 9px; margin: 2px 0 14px; }
.dv-search .where .sfc-tag { padding: 9px 8px 9px 13px; border-radius: var(--radius-pill); font-size: 14px; font-weight: 600; }
.dv-search .where .sfc-tag__x { width: 17px; height: 17px; }
.dv-search .where .sfc-ac-wrap input { padding: 13px 15px; border-radius: var(--radius-md); border-color: var(--border-default); font-size: 14.5px; }
.dv-search .where .sfc-ac-wrap input:focus { border-color: var(--color-teal); box-shadow: var(--shadow-focus); outline: none; }
.dv-search .where .sfc-actions { gap: 10px; margin-top: 14px; }
.dv-search .where .sfc-mini,
.dv-search .where .sfc-excluded-toggle { padding: 11px 16px; border-radius: var(--radius-pill); border: 1px solid var(--border-default); background: var(--color-white); font-size: 14px; font-weight: 600; color: var(--color-navy); }
.dv-search .where .sfc-mini:hover,
.dv-search .where .sfc-excluded-toggle:hover { border-color: var(--color-teal); color: var(--color-navy); }
.dv-search .where .sfc-mini--primary { background: var(--color-teal); border-color: var(--color-teal); color: #fff; box-shadow: 0 6px 16px rgba(0,126,133,.22); }
.dv-search .where .sfc-mini--primary:hover { background: #00696f; color: #fff; }
.dv-search .where .sfc-expand .form-control { border-radius: var(--radius-pill); padding: 11px 34px 11px 14px; font-size: 14px; font-weight: 600; }
.dv-search .where .sfc-msg { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--color-gray-500); background: var(--color-offwhite); border: none; border-radius: var(--radius-md); padding: 11px 15px; margin-top: 14px; }
/* `display:flex` ci-dessus l'emporte sur le `.sfc-msg[hidden]{display:none}` du
   widget → sans ça, le message replié s'affiche en barre grise vide. */
.dv-search .where .sfc-msg[hidden] { display: none; }

/* ---------- Pastilles de filtres (popovers) ---------- */
.dv-search .filters { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border-subtle); }
.dv-search .filters .flabel { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--color-gray-500); margin-right: 2px; }
.dv-search .filters .flabel .lu { font-size: 15px; color: var(--color-coral); }
.dv-search .filters .spacer { flex: 1; }
.dv-search .pop { position: relative; }
.dv-search .pill {
    display: inline-flex; align-items: center; gap: 8px; padding: 9px 15px;
    border: 1px solid var(--border-default); border-radius: var(--radius-pill); background: var(--color-white);
    font-family: var(--font-body); font-size: 13.5px; font-weight: 600; color: var(--color-navy);
    cursor: pointer; transition: all var(--dur-fast) var(--ease-standard);
}
.dv-search .pill .lu { font-size: 15px; }
.dv-search .pill .chev { font-size: 14px; color: var(--color-gray-500); transition: transform var(--dur-fast) var(--ease-standard); }
.dv-search .pill:hover { border-color: var(--color-teal); }
.dv-search .pill.active { border-color: var(--color-teal); background: var(--color-sky); color: var(--color-teal); }
.dv-search .pill.active .chev { color: var(--color-teal); }
.dv-search .pop.open .pill { border-color: var(--color-teal); box-shadow: var(--shadow-focus); }
.dv-search .pop.open .chev { transform: rotate(180deg); }
.dv-search .pill .cnt { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--color-teal); color: #fff; font-size: 11px; font-weight: 700; }
.dv-search .panel {
    position: absolute; top: calc(100% + 8px); left: 0; z-index: 20; min-width: 250px;
    background: var(--color-white); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg); padding: 16px; display: none;
}
.dv-search .pop.open .panel { display: block; animation: dv-pop .16s var(--ease-standard); }
@keyframes dv-pop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.dv-search .panel h5 { font-family: var(--font-display); font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--color-gray-500); margin: 0 0 12px; }
.dv-search .chk-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 14px; }
.dv-search .chk { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 500; color: var(--fg-1); cursor: pointer; padding: 8px 10px; border-radius: 10px; margin: 0; transition: background var(--dur-fast); }
.dv-search .chk:hover { background: var(--color-offwhite); }
.dv-search .chk input { width: 17px; height: 17px; accent-color: var(--color-teal); cursor: pointer; }
/* Boutons segmentés (Meublé / Publié par) — de vrais <input type=radio> masqués,
   habillés par le <span> frère : fonctionne sans JS et au clavier (flèches). */
.dv-search .seg { display: flex; gap: 6px; flex-wrap: wrap; }
.dv-search .seg.vert { flex-direction: column; flex-wrap: nowrap; }
.dv-search .seg-opt { margin: 0; }
.dv-search .seg-opt input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.dv-search .seg-opt > span {
    display: flex; align-items: center; gap: 9px; padding: 11px 14px;
    border: 1px solid var(--border-default); border-radius: var(--radius-md); background: var(--color-white);
    font-family: var(--font-body); font-size: 14px; font-weight: 600; color: var(--color-navy);
    cursor: pointer; transition: all var(--dur-fast) var(--ease-standard);
}
.dv-search .seg-opt > span .lu { font-size: 16px; color: var(--color-gray-500); }
.dv-search .seg-opt:hover > span { border-color: var(--color-teal); }
.dv-search .seg-opt input:checked + span { background: var(--color-teal); border-color: var(--color-teal); color: #fff; }
.dv-search .seg-opt input:checked + span .lu { color: #fff; }
.dv-search .seg-opt input:focus-visible + span { box-shadow: var(--shadow-focus); border-color: var(--color-teal); }
.dv-search .chk .lu { font-size: 15px; color: var(--color-teal); }
.dv-search .range-row { display: flex; gap: 12px; }
.dv-search .range-field { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.dv-search .range-field > label { font-size: 11.5px; font-weight: 600; color: var(--color-gray-500); margin: 0; }
.dv-search .panel-foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border-subtle); }
.dv-search .panel-reset { border: none; background: none; padding: 0; font-family: var(--font-body); font-size: 13px; font-weight: 600; color: var(--color-gray-500); cursor: pointer; }
.dv-search .panel-reset:hover { color: var(--color-navy); }
.dv-search .panel-foot .btn { padding: 8px 16px; font-size: 13px; }
/* Le dernier popover de la rangée déborderait à droite → on l'ancre à droite. */
.dv-search .filters .pop:nth-last-of-type(1) .panel,
.dv-search .filters .pop:nth-last-of-type(2) .panel { left: auto; right: 0; }
/* margin-left auto EN PLUS du .spacer : quand la rangée de pastilles passe à la
   ligne, le spacer reste sur la 1re ligne et le tri se collerait à gauche. */
.dv-search .sortsel { display: inline-flex; align-items: center; gap: 7px; margin-left: auto; font-size: 13px; color: var(--color-gray-500); }
.dv-search .sortsel .lu { font-size: 15px; }
.dv-search .sortsel .sel { width: auto; padding: 9px 34px 9px 13px; font-size: 13.5px; font-weight: 600; border-radius: var(--radius-pill); background-position: right 12px center; }

/* ---------- Résultats ---------- */
.dv-search .wrap { max-width: 1080px; margin: 0 auto; padding: 44px 40px 80px; }
.dv-search .results-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.dv-search .results-head h2 { font-family: var(--font-display); font-size: 24px; font-weight: 600; color: var(--color-navy); margin: 0; }
.dv-search .results-head .count { font-size: 14px; color: var(--color-gray-500); }
.dv-search .results-head .count b { color: var(--color-navy); font-weight: 700; }

.dv-search .grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.dv-search .card { position: relative; display: flex; flex-direction: column; background: var(--color-white); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); overflow: hidden; box-shadow: var(--shadow-sm); transition: box-shadow var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard); }
.dv-search .card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.dv-search a.card-hit { color: inherit; display: flex; flex-direction: column; flex: 1; }
.dv-search .card-media { position: relative; aspect-ratio: 4/3; background-size: cover; background-position: center; background-color: var(--color-offwhite); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }
.dv-search .card-media.is-placeholder { background-image: repeating-linear-gradient(135deg, rgba(1,29,45,.04) 0 10px, transparent 10px 20px); }
.dv-search .card-media .ph-room { font-size: 12px; font-weight: 600; color: var(--color-gray-500); }
.dv-search .card-media .ph-city { font-size: 13px; font-weight: 500; color: var(--color-navy); }
.dv-search .card-media .ph-foot { position: absolute; bottom: 9px; left: 0; right: 0; text-align: center; font-size: 9px; letter-spacing: .08em; text-transform: uppercase; color: var(--color-gray-300); }
/* Étiquettes de la photo (Nouveau / Meublé / Dispo le…), empilées en haut à gauche */
.dv-search .tags { position: absolute; top: 12px; left: 12px; display: flex; gap: 6px; flex-wrap: wrap; max-width: 75%; z-index: 2; }
.dv-search .tag { padding: 5px 10px; border-radius: var(--radius-pill); font-size: 11px; font-weight: 700; }
.dv-search .tag-new { background: var(--color-coral); color: #fff; }
.dv-search .tag-furn { background: var(--color-mustard); color: var(--color-navy); }
.dv-search .tag-soon { background: #fff; color: var(--color-navy); border: 1px solid var(--border-default); }
/* teaser compatibilité verrouillée (visiteur) — même emplacement que le score
   du locataire connecté (.match-slot), pour que « compatibilité » se lise
   toujours au même endroit de la photo, verrouillée ou non. */
.dv-search .compat-lock { position: absolute; bottom: 12px; left: 12px; display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: var(--radius-pill); background: rgba(1,29,45,.78); color: #fff; font-size: 12px; font-weight: 600; backdrop-filter: blur(3px); z-index: 2; }
.dv-search .compat-lock .lu { font-size: 14px; }
/* mode de gestion (agence / direct proprio) */
.dv-search .gestion-tag { position: absolute; bottom: 12px; right: 12px; display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: var(--radius-pill); font-size: 11.5px; font-weight: 600; color: #fff; z-index: 2; }
.dv-search .gestion-tag .lu { font-size: 13px; }
.dv-search .gestion-tag.is-agency { background: #1e40af; }
.dv-search .gestion-tag.is-direct { background: #10b981; }
/* favori (locataire connecté) */
.dv-search .fav-btn { position: absolute; top: 10px; right: 10px; z-index: 3; margin: 0; }
.dv-search .fav-btn button { width: 36px; height: 36px; border-radius: 50%; border: none; cursor: pointer; background: rgba(255,255,255,.92); display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--shadow-sm); color: var(--color-coral); }
.dv-search .fav-btn button .lu { font-size: 17px; }
.dv-search .card-body { padding: 16px 18px 18px; display: flex; flex-direction: column; flex: 1; }
.dv-search .card-price { font-family: var(--font-display); font-weight: 700; font-size: 22px; color: var(--color-navy); }
.dv-search .card-price small { font-size: 12.5px; font-weight: 500; color: var(--color-gray-500); }
.dv-search .card-fit { font-size: .78rem; font-weight: 700; margin: .25rem 0 0; }
.dv-search .card-title { font-family: var(--font-display); font-size: 15.5px; font-weight: 600; color: var(--color-navy); margin-top: 8px; line-height: 1.3; }
.dv-search .card-loc { font-size: 13px; color: var(--color-gray-500); margin-top: 3px; display: inline-flex; align-items: center; gap: 5px; }
.dv-search .card-loc .lu { font-size: 14px; color: var(--color-teal); }
/* Caractéristiques en pastilles pleines (type / surface / chambres) */
.dv-search .card-specs { display: flex; gap: 8px; margin-top: 13px; flex-wrap: wrap; }
.dv-search .card-specs .spec { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 600; color: var(--color-navy); background: var(--color-offwhite); padding: 5px 10px; border-radius: 10px; }
.dv-search .card-specs .lu { font-size: 14px; color: var(--color-teal); }
/* Équipements en pastilles canard sur fond pastel */
.dv-search .card-eq { display: flex; gap: 6px; margin-top: 11px; flex-wrap: wrap; }
.dv-search .card-eq .eq { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600; color: var(--color-teal); background: var(--color-sky); padding: 4px 9px; border-radius: var(--radius-pill); }
.dv-search .card-eq .lu { font-size: 13px; }
/* Pied de carte : disponibilité à gauche, « Voir » à droite, collé en bas */
.dv-search .card-foot { margin-top: auto; padding-top: 14px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.dv-search .card-disp { font-size: 12px; color: var(--color-gray-500); display: inline-flex; align-items: center; gap: 5px; }
.dv-search .card-disp .lu { font-size: 14px; color: var(--color-coral); }
.dv-search .card-link { font-size: 13.5px; font-weight: 700; color: var(--color-teal); display: inline-flex; align-items: center; gap: 5px; }
.dv-search .card-link .lu { font-size: 16px; }

/* ---------- Compat match badge (locataire connecté) ----------
   Le slot porte SEUL le positionnement (la pastille est un inline-flex normal).
   Bas-gauche : le haut-droite est pris par le cœur favori (.fav-btn), le
   haut-gauche par les étiquettes (.tags), le bas-droite par le mode de gestion. */
.dv-search .match-slot { position: absolute; bottom: 12px; left: 12px; z-index: 2; display: inline-flex; }
.dv-search .property-match-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: var(--radius-pill); background: rgba(255,255,255,.94); backdrop-filter: blur(3px); box-shadow: var(--shadow-sm), 0 0 0 1px rgba(1,29,45,.06); color: var(--color-navy); font-size: 12px; font-weight: 600; line-height: 1; white-space: nowrap; }
.dv-search .property-match-badge .pmb-dot { width: 7px; height: 7px; border-radius: 50%; flex: none; }
.dv-search .property-match-badge .pmb-score { font-weight: 700; }
/* Niveaux (property_match_level) : >=85 haut, 60-84 moyen, <60 faible.
   Teintes assombries vs les tokens --color-success/-warning/-danger : le texte
   coloré est en 12px sur fond blanc, il lui faut un contraste >= 4.5:1. */
.dv-search .property-match-badge.is-high   .pmb-dot { background: #15803D; }
.dv-search .property-match-badge.is-high   .pmb-score { color: #15803D; }
.dv-search .property-match-badge.is-medium .pmb-dot { background: #B45309; }
.dv-search .property-match-badge.is-medium .pmb-score { color: #B45309; }
.dv-search .property-match-badge.is-low    .pmb-dot { background: var(--color-danger); }
.dv-search .property-match-badge.is-low    .pmb-score { color: var(--color-danger); }

/* ---------- Bandeau CTA compte ---------- */
.dv-search .cta { position: relative; overflow: hidden; margin: 44px 0 0; background: var(--color-navy); border-radius: var(--radius-2xl); padding: 48px 52px; }
.dv-search .cta .loop { position: absolute; opacity: .13; color: var(--color-teal); }
.dv-search .cta .loop.a { width: 320px; right: -50px; top: -70px; color: var(--color-coral); }
.dv-search .cta .loop.b { width: 200px; left: -40px; bottom: -70px; }
.dv-search .cta-inner { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: wrap; }
.dv-search .cta-text { max-width: 560px; }
.dv-search .cta .eyebrow { color: var(--color-mustard); }
.dv-search .cta h2 { font-family: var(--font-display); font-size: 32px; font-weight: 700; color: #fff; line-height: 1.12; margin: 0; }
.dv-search .cta p { font-size: 16px; color: rgba(255,255,255,.78); line-height: 1.55; margin-top: 12px; }
.dv-search .cta-points { display: flex; flex-direction: column; gap: 12px; margin-top: 22px; }
.dv-search .cta-point { display: flex; align-items: center; gap: 12px; font-size: 14.5px; color: rgba(255,255,255,.92); }
.dv-search .cta-point .ic { width: 30px; height: 30px; border-radius: 9px; background: rgba(0,126,133,.32); color: var(--color-teal); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.dv-search .cta-point .ic .lu { font-size: 17px; color: #5fd0d6; }
.dv-search .cta-action { display: flex; flex-direction: column; gap: 12px; align-items: stretch; min-width: 248px; }
.dv-search .btn-mustard { background: var(--color-mustard); color: var(--color-navy); padding: 16px 28px; font-size: 16px; box-shadow: 0 8px 20px rgba(247,180,65,.28); }
.dv-search .btn-mustard:hover { background: #f2a91f; color: var(--color-navy); }
.dv-search .btn-onnavy { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,.28); padding: 14px 28px; font-size: 15px; }
.dv-search .btn-onnavy:hover { background: rgba(255,255,255,.08); color: #fff; }
.dv-search .cta-reassure { font-size: 12.5px; color: rgba(255,255,255,.55); text-align: center; display: inline-flex; align-items: center; gap: 6px; justify-content: center; }
.dv-search .cta-reassure .lu { font-size: 14px; }

/* ---------- Ligne "fonctionnalité verrouillée" sous la recherche ---------- */
.dv-search .teaser { display: flex; align-items: center; gap: 14px; padding: 16px 20px; margin-bottom: 26px; background: var(--color-sky); border-radius: var(--radius-lg); }
.dv-search .teaser .ic { width: 42px; height: 42px; border-radius: 12px; background: rgba(0,126,133,.16); color: var(--color-teal); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.dv-search .teaser .ic .lu { font-size: 21px; }
.dv-search .teaser .t-body { flex: 1; min-width: 0; }
.dv-search .teaser .t-body strong { font-family: var(--font-display); font-size: 15.5px; font-weight: 600; color: var(--color-navy); }
.dv-search .teaser .t-body p { font-size: 13.5px; color: #2c4751; margin-top: 2px; margin-bottom: 0; }
.dv-search .teaser a.btn { flex-shrink: 0; }

/* ---------- Vide / pagination ---------- */
.dv-search .empty-state { text-align: center; padding: 48px 24px; background: var(--color-white); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); }
.dv-search .empty-state p { color: var(--color-gray-500); margin-bottom: 18px; }
.dv-search .pager { margin-top: 36px; display: flex; justify-content: center; }

@media (max-width: 980px) {
    .dv-search .sb-grid { grid-template-columns: 1fr 1fr; }
    .dv-search .sb-search { grid-column: span 2; }
    .dv-search .grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 760px) {
    .dv-search .hero { padding: 40px 18px 120px; }
    .dv-search .hero h1 { font-size: 34px; }
    .dv-search .hero .lede { font-size: 16px; }
    .dv-search .searchbar { margin-top: -90px; }
    .dv-search .sb-grid { grid-template-columns: 1fr; }
    .dv-search .sb-search { grid-column: span 1; }
    .dv-search .wrap { padding: 32px 18px 60px; }
    .dv-search .grid { grid-template-columns: 1fr; }
    .dv-search .cta { padding: 34px 24px; }
    .dv-search .cta h2 { font-size: 26px; }
    .dv-search .cta-action { min-width: 0; width: 100%; }
    .dv-search .teaser { flex-wrap: wrap; }
    /* Mobile-first (PWA) : un panneau ancré sur SA pastille déborde dès que la
       pastille n'est pas à gauche (ex. « Équipements » → 491px sur un écran de
       390). On l'ancre donc sur la rangée entière (.pop devient statique, le
       bloc conteneur est .filters) : les panneaux s'ouvrent pleine largeur sous
       la rangée, jamais hors écran. */
    .dv-search .filters { position: relative; }
    .dv-search .filters .spacer { display: none; }
    .dv-search .filters .sortsel { width: 100%; }
    .dv-search .filters .sortsel .sel { flex: 1; }
    .dv-search .filters .pop { position: static; }
    /* Les 2 sélecteurs nth-last ci-dessus (ancrage à droite sur desktop) sont plus
       spécifiques : on les reprend ici, sinon ils gagneraient aussi en mobile. */
    .dv-search .filters .pop .panel,
    .dv-search .filters .pop:nth-last-of-type(1) .panel,
    .dv-search .filters .pop:nth-last-of-type(2) .panel { left: 0; right: 0; width: auto; min-width: 0; }
    .dv-search .chk-grid { grid-template-columns: 1fr; }
    .dv-search .where .sfc-actions,
    .dv-search .where .sfc-expand { flex-wrap: wrap; }
}

/* ============================================================
   Barre de recherche DISCRÈTE + en-tête minimal (2026-07-20)
   Objectif : voir les annonces immédiatement. Le hero se réduit à
   une bande, et les filtres sont repliés derrière un résumé cliquable.
   ============================================================ */
/* Bande dense : titre + baseline côte à côte, typo resserrée. Le message reste
   lisible sans repousser les annonces sous la ligne de flottaison. */
.dv-search .hero--slim { padding: 20px 40px 52px; }
.dv-search .hero--slim .hero-inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 460px); align-items: end; gap: 10px 34px; }
.dv-search .hero--slim .eyebrow { grid-column: 1 / -1; margin-bottom: 0; }
.dv-search .hero--slim h1 { font-size: 30px; line-height: 1.15; max-width: 620px; }
.dv-search .hero--slim .lede { font-size: 14.5px; line-height: 1.5; margin-top: 0; max-width: none; }
.dv-search .searchbar--collapsed { padding: 0; }
.dv-search .searchbar--collapsed .sb-body { display: none; }
.dv-search .searchbar--collapsed.is-open .sb-body { display: block; padding: 0 22px 22px; }

.dv-search .sb-toggle {
    display: flex; align-items: center; gap: 12px; width: 100%;
    padding: 13px 18px; background: none; border: 0; cursor: pointer;
    font-family: var(--font-body); font-size: 14px; color: var(--color-navy); text-align: left;
}
.dv-search .sb-toggle__label { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; white-space: nowrap; }
.dv-search .sb-toggle__label .lu { font-size: 17px; color: var(--color-teal); }
.dv-search .sb-toggle__sum { flex: 1; min-width: 0; font-size: 13px; color: var(--color-gray-500); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dv-search .sb-toggle__chev { margin-left: auto; color: var(--color-gray-500); transition: transform var(--dur-fast) var(--ease-standard); }
.dv-search .searchbar--collapsed.is-open .sb-toggle__chev { transform: rotate(180deg); }
.dv-search .searchbar--collapsed.is-open .sb-toggle { border-bottom: 1px solid var(--border-subtle); }
.dv-search .results-head--slim { margin-bottom: 16px; }

@media (max-width: 760px) {
    .dv-search .hero--slim { padding: 16px 18px 46px; }
    .dv-search .hero--slim .hero-inner { grid-template-columns: 1fr; gap: 8px; }
    .dv-search .hero--slim h1 { font-size: 23px; }
    .dv-search .hero--slim .lede { font-size: 13.5px; }
    .dv-search .searchbar--collapsed.is-open .sb-body { padding: 0 14px 16px; }
}
/* Le hero étant réduit, la barre ne remonte plus autant (elle chevauchait 86px). */
.dv-search .hero--slim + .searchbar { margin-top: -26px; }
@media (max-width: 760px) { .dv-search .hero--slim + .searchbar { margin-top: -26px; } }
