/* ══ Featured Shops, restyled ══════════════════════════════════════════════
   The module stays above this view: its cards rotate through each agency's
   stock, which is worth keeping. Subcategory sections are off (module option
   show_subcats = 0). What follows only realigns it with the validated palette
   — cream ground, ink text, brand orange, Fraunces headings — replacing the
   saturated reds and blues. Scoped to the real-estate view via body class. */
body.re-search-on{
  --sf-bg:#F7F3EC; --sf-surface:#FFFDF9; --sf-surface2:#F0EAE0;
  --sf-ink:#141210; --sf-ink2:#4A423B; --sf-muted:#8A8078; --sf-line:#E2D9CB;
  --sf-brand:#EA7318; --sf-brand-soft:#FBEEE1; --sf-navy:#1B2A4A; --sf-vip:#C9A227;
}
/* section headings */
body.re-search-on .snpsf-sellers-title,
body.re-search-on .snpsf-sec h2,
body.re-search-on .snpsf-cat-title{
  font-family:"Fraunces",Georgia,serif !important;
  font-size:19px !important;font-weight:600 !important;color:var(--sf-ink) !important;
  letter-spacing:0 !important;text-transform:none !important;
}
/* seller cards */
body.re-search-on .snpsf-scard{
  background:var(--sf-surface) !important;border:1px solid var(--sf-line) !important;
  border-radius:10px !important;box-shadow:none !important;transition:.16s !important;
}
body.re-search-on .snpsf-scard:hover{
  border-color:var(--sf-brand) !important;
  box-shadow:0 6px 18px rgba(20,18,16,.10) !important;transform:translateY(-2px) !important;
}
body.re-search-on .snpsf-savt{
  border:1px solid var(--sf-line) !important;background:var(--sf-surface2) !important;
}
body.re-search-on .snpsf-sname{
  font-size:13px !important;font-weight:600 !important;color:var(--sf-ink) !important;
}
body.re-search-on .snpsf-smeta{font-size:11.5px !important;color:var(--sf-muted) !important}
/* plan badges: gold for VIP, muted brand for the rest — no saturated red */
body.re-search-on .snpsf-splan,
body.re-search-on .snpsf-pdot{
  border-radius:4px !important;font-size:9.5px !important;font-weight:700 !important;
  letter-spacing:.06em !important;padding:2px 7px !important;
  background:var(--sf-vip) !important;color:#fff !important;
}
body.re-search-on .snpsf-splan[style*="fb923c"],
body.re-search-on .snpsf-pdot[style*="fb923c"]{background:var(--sf-brand) !important}
/* listing cards inside the module */
body.re-search-on .snpsf-card{
  background:var(--sf-surface) !important;border:1px solid var(--sf-line) !important;
  border-radius:10px !important;overflow:hidden !important;box-shadow:none !important;transition:.16s !important;
}
body.re-search-on .snpsf-card:hover{
  border-color:var(--sf-brand) !important;box-shadow:0 6px 18px rgba(20,18,16,.10) !important;
}
body.re-search-on .snpsf-ctitle{
  font-size:13px !important;font-weight:600 !important;color:var(--sf-ink) !important;line-height:1.34 !important;
}
body.re-search-on .snpsf-clbl{
  background:var(--sf-surface2) !important;color:var(--sf-ink2) !important;
  border-radius:3px !important;font-size:10.5px !important;font-weight:600 !important;border:0 !important;
}
body.re-search-on .snpsf-cprice{
  font-family:"Fraunces",Georgia,serif !important;font-weight:600 !important;color:var(--sf-ink) !important;
}
/* vendor header ribbons: the navy/red blocks become quiet cream headers */
body.re-search-on .snpsf-vhead,
body.re-search-on .snpsf-cathead{
  background:var(--sf-surface) !important;border:1px solid var(--sf-line) !important;
  color:var(--sf-ink) !important;
}
body.re-search-on .snpsf-vhead *,
body.re-search-on .snpsf-cathead *{color:var(--sf-ink) !important}
/* nav arrows */
body.re-search-on .snpsf-nav,
body.re-search-on .snpsf-arrow{
  background:var(--sf-surface) !important;border:1px solid var(--sf-line) !important;
  color:var(--sf-ink2) !important;box-shadow:0 2px 8px rgba(20,18,16,.12) !important;
}
body.re-search-on .snpsf-nav:hover,
body.re-search-on .snpsf-arrow:hover{border-color:var(--sf-brand) !important;color:var(--sf-brand) !important}
/* "See All" links */
body.re-search-on .snpsf-seeall{color:var(--sf-brand) !important;font-weight:600 !important}

/* SnapSellGo — real-estate search view (/classifieds, real-estate categories)
   Scoped under #re-search so nothing here can leak into the rest of the site.
   Palette and type follow the validated system: cream, ink, brand orange,
   navy for filter labels, gold for VIP. */
:root,
#re-search{
  --res-bg:#F7F3EC; --res-surface:#FFFDF9; --res-surface2:#F0EAE0;
  --res-ink:#141210; --res-ink2:#4A423B; --res-muted:#8A8078; --res-line:#E2D9CB;
  --res-brand:#EA7318; --res-brand-soft:#FBEEE1; --res-navy:#1B2A4A;
  --res-ok:#3F7A5E; --res-warn:#B0803A; --res-stop:#B04A3A; --res-vip:#C9A227;
  --res-serif:"Fraunces",Georgia,serif;
  --res-sans:"DM Sans","Poppins",-apple-system,"Segoe UI",sans-serif;
  font-family:var(--res-sans); color:var(--res-ink);
}
#re-search *{box-sizing:border-box}
#re-search svg,
.res-panel svg,
.ps-sb svg{fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.res-wrap{max-width:1360px;margin:0 auto;padding:0 20px}

/* The category heading and result count are rendered by DJClassifieds before
   this view (default_cat.php). They duplicate what the results header already
   says, so they are hidden here — the component is untouched. */
body.re-search-on .main_cat_title,
body.re-search-on .cat_desc_top,
body.re-search-on .dj-count-items,
body.re-search-on .count_items{display:none !important}

/* ---------- property filters trigger ----------
   Not a second search bar: the module above already has one. Just the entry
   point to the property-specific panel (bedrooms, area, amenities, budget). */
.res-hookbar{background:var(--res-bg);padding:10px 0 0}
.res-hookin{display:flex;gap:11px;align-items:center;flex-wrap:wrap}
.res-fbtn{display:flex;align-items:center;gap:8px;padding:10px 17px;background:var(--res-brand-soft);
  color:var(--res-brand);border:1px solid var(--res-brand);border-radius:9px;font:inherit;
  font-weight:600;font-size:13.5px;cursor:pointer;white-space:nowrap}
.res-fbtn:hover{background:#f8e2cd}
.res-fbtn svg{width:16px;height:16px}
.res-fbtn .cnt{background:var(--res-brand);color:#fff;border-radius:10px;padding:1px 7px;
  font-size:11px;min-width:20px;text-align:center}
.res-hookhint{font-size:12.5px;color:var(--res-muted)}

/* ---------- filter panel ---------- */
.res-panel{display:grid;grid-template-rows:0fr;max-width:1180px;margin:0 auto;
  transition:grid-template-rows .28s ease,margin .28s ease;overflow:hidden}
.res-panel>.res-pin{min-height:0;overflow:hidden;background:var(--res-surface);
  border:1px solid var(--res-line);border-radius:12px;display:flex;flex-direction:column;gap:18px;
  padding:0 20px;transition:padding .28s ease}
.res-panel.open{grid-template-rows:1fr;margin:14px auto 0}
.res-panel.open>.res-pin{padding:20px}
@media (prefers-reduced-motion:reduce){.res-panel,.res-panel>.res-pin{transition:none}}
.res-phead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--res-line)}
.res-reset{display:flex;align-items:center;gap:6px;background:none;border:1px solid var(--res-line);
  border-radius:7px;padding:7px 13px;font:inherit;font-size:13px;color:var(--res-ink2);cursor:pointer}
.res-reset svg{width:13px;height:13px}
.res-chipcat{display:flex;align-items:center;gap:6px;background:var(--res-brand-soft);color:var(--res-brand);
  border:1px solid var(--res-brand);border-radius:7px;padding:6px 12px;font-size:13px;font-weight:600}
.res-chipcat svg{width:13px;height:13px}
.res-grp{display:flex;flex-direction:column;gap:9px}
.res-lbl{display:flex;align-items:center;gap:7px;font-size:11.5px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--res-navy);font-weight:700}
.res-lbl svg{width:14px;height:14px;color:var(--res-brand)}
.res-note{margin-left:auto;text-transform:none;letter-spacing:0;font-weight:400;color:var(--res-muted);font-size:11px}
.res-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px}
.res-opts{display:flex;gap:7px;flex-wrap:wrap}
.res-opt{background:var(--res-surface2);border:1px solid transparent;border-radius:7px;padding:8px 15px;
  font:inherit;font-size:13px;color:var(--res-ink2);cursor:pointer;transition:.13s}
.res-opt:hover{border-color:var(--res-brand)}
.res-opt.on{background:var(--res-navy);color:#fff;font-weight:600}
.res-fopts{display:flex;gap:7px;flex-wrap:wrap}
.res-fopt{display:flex;align-items:center;gap:6px;background:var(--res-surface2);border:1px solid transparent;
  border-radius:20px;padding:7px 13px;font-size:12.5px;color:var(--res-ink2);cursor:pointer;transition:.13s;font-family:inherit}
.res-fopt svg{width:14px;height:14px;color:var(--res-muted)}
.res-fopt:hover{border-color:var(--res-brand)}
.res-fopt.on{background:var(--res-brand-soft);border-color:var(--res-brand);color:var(--res-brand);font-weight:600}
.res-fopt.on svg{color:var(--res-brand)}
.res-fopt .tick{width:13px;height:13px;border:1.5px solid var(--res-muted);border-radius:3px;
  display:grid;place-items:center;flex:none}
.res-fopt.on .tick{background:var(--res-brand);border-color:var(--res-brand)}
.res-fopt .tick svg{width:9px;height:9px;color:#fff;stroke-width:3;opacity:0}
.res-fopt.on .tick svg{opacity:1}
.res-price{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.res-price input{width:126px;font:inherit;font-size:13px;padding:8px 11px;border:1px solid var(--res-line);
  border-radius:7px;background:var(--res-surface)}
.res-price select{font:inherit;font-size:13px;padding:8px 11px;border:1px solid var(--res-line);
  border-radius:7px;background:var(--res-surface)}
.res-hint{font-size:12px;color:var(--res-muted)}

/* location: country pills + city type-ahead */
.res-locwrap{display:flex;flex-direction:column;gap:9px}
.res-countries{display:flex;gap:7px;flex-wrap:wrap}
.res-ac{position:relative;max-width:340px}
.res-ac input{width:100%;border:1px solid var(--res-line);border-radius:8px;padding:10px 32px 10px 13px;
  font:inherit;font-size:13.5px;background:var(--res-surface);color:var(--res-ink)}
.res-ac input:focus{outline:none;border-color:var(--res-brand)}
.res-ac-x{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:20px;height:20px;
  border:0;background:none;color:var(--res-muted);cursor:pointer;display:grid;place-items:center}
.res-ac-x:hover{color:var(--res-brand)}
.res-ac-x svg{width:12px;height:12px}
.res-ac-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:60;background:var(--res-surface);
  border:1px solid var(--res-line);border-radius:9px;box-shadow:0 8px 24px rgba(20,18,16,.16);
  max-height:240px;overflow-y:auto;padding:5px}
.res-ac-item{padding:8px 11px;border-radius:6px;font-size:13.5px;cursor:pointer;display:flex;
  align-items:center;justify-content:space-between;gap:10px;color:var(--res-ink)}
.res-ac-item>span:first-child{color:var(--res-ink);font-weight:500;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.res-ac-item:hover>span:first-child,
.res-ac-item.on>span:first-child{color:var(--res-brand)}
.res-ac-item:hover,.res-ac-item.on{background:var(--res-brand-soft);color:var(--res-brand)}
.res-ac-item .co{font-size:11px;color:var(--res-muted);flex:none}
.res-ac-item:hover .co,.res-ac-item.on .co{color:var(--res-brand)}
.res-ac-empty{padding:10px 11px;font-size:12.5px;color:var(--res-muted)}

.res-pfoot{display:flex;align-items:center;gap:12px;padding-top:16px;border-top:1px solid var(--res-line);flex-wrap:wrap}
.res-count{font-size:13px;color:var(--res-ink2)}
.res-count b{font-family:var(--res-serif);font-size:16px;color:var(--res-ink)}
.res-close{display:flex;align-items:center;gap:6px;background:none;border:1px solid var(--res-line);
  border-radius:8px;padding:9px 15px;font:inherit;font-size:13px;color:var(--res-ink2);cursor:pointer;margin-left:auto}
.res-close:hover{border-color:var(--res-brand);color:var(--res-brand)}
.res-close svg{width:14px;height:14px}
.res-go{display:flex;align-items:center;gap:6px;padding:8px 18px;background:var(--res-brand);color:#fff;
  border:0;border-radius:7px;font:inherit;font-weight:600;font-size:13px;cursor:pointer}
.res-go:hover{background:#d9660f}
.res-go svg{width:14px;height:14px}
.res-tab{position:absolute;left:50%;bottom:-13px;transform:translateX(-50%);width:46px;height:26px;
  background:var(--res-surface);border:1px solid var(--res-line);border-top:0;border-radius:0 0 14px 14px;
  display:grid;place-items:center;cursor:pointer;color:var(--res-muted)}
.res-tab:hover{color:var(--res-brand)}
.res-tab svg{width:16px;height:16px}

/* ---------- category tabs ---------- */
.res-cattabs{background:var(--res-surface);border-bottom:1px solid var(--res-line);margin-top:16px}
.res-ctin{display:flex;gap:7px;overflow-x:auto;padding:14px 0;scrollbar-width:thin}
.res-ct{display:flex;align-items:center;gap:7px;padding:9px 15px;border-radius:9px;font-size:13.5px;
  color:var(--res-ink2);cursor:pointer;white-space:nowrap;font-family:inherit;
  background:var(--res-surface2);border:1px solid var(--res-line);
  transition:border-color .15s,background .15s}
.res-ct:hover{border-color:var(--res-brand);color:var(--res-brand)}
.res-ct:hover{background:var(--res-surface2)}
.res-ct.on{background:var(--res-navy);border-color:var(--res-navy);color:#fff;font-weight:600}
.res-ct .n{font-size:11.5px;color:var(--res-muted)}
.res-ct.on .n{color:rgba(255,255,255,.72)}
.res-ct .n{font-size:11.5px;opacity:.62}

/* ---------- VIP agencies ---------- */
.res-vipbar{background:var(--res-surface);border-bottom:1px solid var(--res-line);padding:16px 0}
.res-viphead{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.res-viphead h2{font-family:var(--res-serif);font-size:16px;margin:0;font-weight:600}
.res-vipbadge{background:var(--res-vip);color:#fff;font-size:9.5px;font-weight:700;letter-spacing:.07em;
  padding:2px 7px;border-radius:3px}
.res-viphead a{margin-left:auto;font-size:12.5px;color:var(--res-brand);text-decoration:none;font-weight:600}
.res-vips{display:flex;gap:13px;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x proximity}
/* Agency card: shop banner as the header, then its listings rotating below —
   the part of the old Featured Shops module worth keeping, because it shows
   real stock instead of a bare logo. */
.res-vip{flex:none;width:246px;background:var(--res-surface);border:1px solid var(--res-line);
  border-radius:11px;overflow:hidden;display:flex;flex-direction:column;text-decoration:none;
  color:inherit;transition:.16s;scroll-snap-align:start}
.res-vip:hover{border-color:var(--res-vip);box-shadow:0 6px 20px rgba(201,162,39,.20);transform:translateY(-2px)}
.res-vip-top{position:relative;height:74px;background:var(--res-navy) center/cover no-repeat}
.res-vip-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,18,16,.10),rgba(20,18,16,.55))}
.res-vip-logo{position:absolute;left:11px;bottom:-16px;width:42px;height:42px;border-radius:10px;
  background:var(--res-surface);border:2px solid var(--res-surface);overflow:hidden;display:grid;
  place-items:center;box-shadow:0 2px 8px rgba(20,18,16,.22)}
/* contain, not cover: agency logos are wordmarks — cropping cuts the name.
 Needs the extra specificity: a module rule sets object-fit:cover on img. */
.res-vip .res-vip-logo img,
#re-search .res-vip-logo img{width:100%;height:100%;object-fit:contain !important;
  padding:4px;background:#fff;border-radius:8px}
.res-vip-logo.txt{font-family:var(--res-serif);font-size:18px;font-weight:600;color:var(--res-ink2)}
.res-vip-tag{position:absolute;top:9px;right:9px;background:var(--res-vip);color:#fff;font-size:9px;
  font-weight:700;letter-spacing:.07em;padding:2px 7px;border-radius:3px}
/* rotating listing shots */
.res-vip-roll{position:relative;height:104px;background:var(--res-surface2);margin-top:0}
.res-vip-shot{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .6s}
.res-vip-shot.on{opacity:1}
.res-vip-shot img{width:100%;height:100%;object-fit:cover;display:block}
.res-vip-shot figcaption{position:absolute;left:0;right:0;bottom:0;padding:16px 10px 8px;
  background:linear-gradient(180deg,transparent,rgba(20,18,16,.82));color:#fff;
  display:flex;flex-direction:column;gap:1px}
.res-vip-shot .t{font-size:11px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.res-vip-shot .p{font-family:var(--res-serif);font-size:13px;font-weight:600}
.res-vip-body{padding:22px 12px 12px;display:flex;flex-direction:column;gap:3px}
.res-vip .nm{font-size:13px;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.res-vip .n{font-size:11.5px;color:var(--res-muted)}
/* country flags — the one place emoji are allowed */
.res-vip .fl{font-size:12px;letter-spacing:1px;white-space:nowrap}
.res-vip[hidden]{display:none}
.res-vip-empty{flex:none;align-self:center;font-size:12.5px;color:var(--res-muted);padding:14px 4px}

/* ---------- results + map ---------- */
/* map gets a real share of the width: at .92fr the tiles rendered a whole
   world map inside a narrow column, which is unreadable */
.res-main{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);min-height:660px}
@media(max-width:1100px){.res-main{grid-template-columns:1fr}.res-mapcol{height:460px;order:-1}}
.res-listcol{padding:18px 0 40px}
.res-head{display:flex;align-items:baseline;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.res-head h2{font-family:var(--res-serif);font-size:22px;margin:0;font-weight:600}
.res-n{color:var(--res-muted);font-size:13.5px}
.res-save{display:flex;align-items:center;gap:6px;background:var(--res-surface2);
  border:1px solid var(--res-line);border-radius:8px;padding:7px 13px;font:inherit;
  font-size:12.5px;color:var(--res-ink2);cursor:pointer;margin-left:auto;white-space:nowrap;
  transition:border-color .15s,color .15s,background .15s}
.res-save:hover{border-color:var(--res-brand);color:var(--res-brand);background:var(--res-brand-soft)}
.res-save svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
@media(max-width:640px){.res-save span{display:none}.res-save{padding:7px 10px}}
.res-save.on{background:var(--res-brand-soft);border-color:var(--res-brand);color:var(--res-brand);font-weight:600}
.res-save.on svg{fill:var(--res-brand)}
.res-head select{font:inherit;font-size:13px;padding:7px 10px;border:1px solid var(--res-line);
  border-radius:7px;background:var(--res-surface)}

.res-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.res-chips .lbl{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--res-muted);font-weight:700}
.res-fchip{display:flex;align-items:center;gap:5px;background:var(--res-brand-soft);color:var(--res-brand);
  border:1px solid rgba(234,115,24,.3);border-radius:16px;padding:4px 9px 4px 11px;font-size:11.5px;font-weight:600}
.res-fchip button{background:none;border:0;color:inherit;cursor:pointer;padding:0;display:grid;place-items:center;opacity:.65}
.res-fchip button:hover{opacity:1}
.res-fchip svg{width:11px;height:11px}
.res-chips .clear{background:none;border:0;color:var(--res-muted);font:inherit;font-size:11.5px;
  cursor:pointer;text-decoration:underline}

.res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:14px}
.res-card{background:var(--res-surface);border:1px solid var(--res-line);border-radius:10px;overflow:hidden;
  display:flex;flex-direction:column;text-decoration:none;color:inherit;transition:.16s}
.res-card:hover{box-shadow:0 8px 24px rgba(20,18,16,.11);transform:translateY(-2px)}
.res-card.hi{border-color:var(--res-brand);box-shadow:0 0 0 3px var(--res-brand-soft)}
.res-card.isvip{border-color:rgba(201,162,39,.5)}
.res-thumb{position:relative;aspect-ratio:4/3;background:var(--res-surface2);overflow:hidden}
.res-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.res-noimg{width:100%;height:100%;display:grid;place-items:center;color:var(--res-muted);
  font-size:11px;letter-spacing:.07em;text-transform:uppercase}
.res-badge{position:absolute;top:8px;left:8px;background:rgba(20,18,16,.9);color:#fff;border-radius:20px;
  padding:4px 10px;font-size:11.5px;font-weight:700;display:flex;align-items:center;gap:5px}
.res-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--res-ok)}
.res-badge.mid .dot{background:var(--res-warn)}
.res-badge.low .dot{background:var(--res-stop)}
.res-badge small{font-weight:500;opacity:.72;font-size:10px}
.res-tvip{position:absolute;top:8px;right:8px;background:var(--res-vip);color:#fff;border-radius:4px;
  padding:3px 8px;font-size:9.5px;font-weight:700;letter-spacing:.06em}
.res-tnew{position:absolute;top:8px;right:8px;background:var(--res-brand);color:#fff;border-radius:4px;
  padding:3px 8px;font-size:9.5px;font-weight:700;letter-spacing:.06em}
.res-nph{position:absolute;left:8px;bottom:8px;background:rgba(20,18,16,.78);color:#fff;border-radius:4px;
  padding:2px 7px;font-size:10.5px;font-weight:600;display:flex;align-items:center;gap:4px}
.res-nph svg{width:11px;height:11px}
.res-acts{position:absolute;right:8px;bottom:8px;display:flex;gap:6px;opacity:0;transition:.15s}
.res-card:hover .res-acts{opacity:1}
/* a saved favourite stays visible even when the card is not hovered */
.res-acts:has(.res-act.on){opacity:1}
.res-acts:has(.res-act.on) .res-act:not(.on){opacity:0;pointer-events:none}
.res-card:hover .res-acts .res-act:not(.on){opacity:1;pointer-events:auto}
@media(hover:none){.res-acts{opacity:1}}
.res-act{width:30px;height:30px;border-radius:50%;background:rgba(255,253,249,.95);display:grid;
  place-items:center;color:var(--res-ink2);border:0;cursor:pointer;box-shadow:0 2px 6px rgba(20,18,16,.18)}
.res-act:hover{color:var(--res-brand)}
.res-act.on{color:#fff;background:var(--res-brand);
  box-shadow:0 2px 10px rgba(234,115,24,.45)}
.res-act.on svg{fill:#fff;stroke:#fff}
/* brief pulse on save, so the click is acknowledged */
@keyframes res-fav-pop{0%{transform:scale(1)}45%{transform:scale(1.28)}100%{transform:scale(1)}}
.res-act.on{animation:res-fav-pop .28s ease}
@media(prefers-reduced-motion:reduce){.res-act.on{animation:none}}
.res-act svg{width:15px;height:15px}

.res-cb{padding:11px 12px 13px;display:flex;flex-direction:column;gap:8px;flex:1}
.res-tt{font-size:13.5px;font-weight:600;line-height:1.34;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.res-loc{font-size:11.5px;color:var(--res-muted);display:flex;align-items:center;gap:5px}
.res-loc svg{width:12px;height:12px;flex:none}
.res-specs{display:flex;gap:13px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--res-line);
  border-bottom:1px solid var(--res-line)}
.res-spec{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--res-ink);font-weight:600}
.res-spec svg{width:15px;height:15px;color:var(--res-muted)}
.res-spec .u{font-weight:400;color:var(--res-muted);font-size:11px}
.res-feats{display:flex;gap:4px;flex-wrap:wrap}
.res-feat{display:flex;align-items:center;gap:4px;font-size:10px;background:var(--res-surface2);
  color:var(--res-ink2);padding:3px 7px;border-radius:4px;font-weight:600}
.res-feat svg{width:10px;height:10px}
.res-feat.hit{background:rgba(63,122,94,.13);color:var(--res-ok)}
.res-feat.miss{background:rgba(176,72,58,.10);color:var(--res-stop);text-decoration:line-through;opacity:.85}
.res-price-t{margin-top:auto;font-family:var(--res-serif);font-size:17px;font-weight:600;
  display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.res-price-t .cv{font-family:var(--res-sans);font-size:12px;color:var(--res-muted);font-weight:400}
.res-ppsm{font-size:11px;color:var(--res-muted);font-weight:400;width:100%}
.res-shop{font-size:10.5px;color:var(--res-muted);display:flex;align-items:center;gap:5px}
.res-shop svg{width:11px;height:11px}
.res-shop .v{color:var(--res-vip);font-weight:700}

.res-mapcol{position:relative;border-left:1px solid var(--res-line);background:#E4DED2}
.res-mapin{position:sticky;top:0;height:calc(100vh - 40px);min-height:520px}
#res-map{position:absolute;inset:0}
.res-mapnote{position:absolute;left:12px;bottom:12px;z-index:800;background:var(--res-surface);
  border:1px solid var(--res-line);border-radius:7px;padding:8px 12px;font-size:11.5px;
  color:var(--res-ink2);max-width:280px;pointer-events:none}
.res-mkr{background:var(--res-ink);color:#fff;border-radius:16px;padding:6px 13px;font-size:13px;
  font-weight:700;white-space:nowrap;border:2px solid #fff;box-shadow:0 3px 10px rgba(20,18,16,.35);
  text-align:center;transition:.12s;position:relative;letter-spacing:.01em}
.res-mkr:after{content:"";position:absolute;left:50%;bottom:-7px;width:0;height:0;transform:translateX(-50%);
  border-left:6px solid transparent;border-right:6px solid transparent;border-top:7px solid #fff}
.res-mkr:hover{background:var(--res-brand);transform:scale(1.06);z-index:600}
.res-mkr.vip{background:var(--res-vip)}
.res-mkr.hi{background:var(--res-brand);transform:scale(1.12);z-index:700;box-shadow:0 5px 16px rgba(234,115,24,.55)}
.leaflet-marker-icon.res-mkwrap{background:transparent;border:0}
.res-cl{background:var(--res-brand);color:#fff;border-radius:50%;width:44px;height:44px;display:grid;
  place-items:center;font-size:14px;font-weight:700;border:3px solid #fff;box-shadow:0 3px 12px rgba(20,18,16,.34)}
.res-cl.big{width:54px;height:54px;font-size:15px}
.res-pop .lp{width:210px}
.res-pop img{width:100%;height:104px;object-fit:cover;display:block;background:var(--res-surface2)}
.res-pop .pb{padding:9px 10px 10px;display:flex;flex-direction:column;gap:5px}
.res-pop .pt{font-size:12px;font-weight:600;line-height:1.3}
.res-pop .pp{font-family:var(--res-serif);font-size:14px;font-weight:600}
.res-pop .pp small{font-family:var(--res-sans);font-size:10.5px;color:var(--res-muted);font-weight:400;display:block}
.res-pop .ps{display:flex;gap:9px;font-size:11px;color:var(--res-ink2);font-weight:600}
.res-pop .ps svg{width:12px;height:12px;color:var(--res-muted)}
.res-pop .ps span{display:flex;align-items:center;gap:3px}
.leaflet-popup-content{margin:0 !important}
.leaflet-popup-content-wrapper{border-radius:10px !important;overflow:hidden;padding:0 !important}

.res-more{display:block;margin:20px auto 0;padding:11px 26px;background:var(--res-surface);
  border:1px solid var(--res-line);border-radius:8px;font:inherit;font-size:13.5px;color:var(--res-ink2);cursor:pointer}
.res-more:hover{border-color:var(--res-brand);color:var(--res-brand)}
.res-loading,.res-empty{grid-column:1/-1;text-align:center;padding:48px 20px;color:var(--res-muted)}

/* buyer request — opens the existing SnapRequest modal */
.res-req{grid-column:span 2;background:var(--res-surface);color:var(--res-ink);
  border:1px solid var(--res-line);border-left:3px solid var(--res-brand);
  border-radius:10px;padding:22px;display:flex;flex-direction:column;gap:11px;
  justify-content:center}
@media(max-width:620px){.res-req{grid-column:span 1}}
.res-req .eyebrow{font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--res-brand);font-weight:700}
.res-req h3{font-family:var(--res-serif);font-size:20px;margin:0;font-weight:600;
  line-height:1.24;color:var(--res-navy)}
.res-req p{margin:0;font-size:13px;color:var(--res-ink2);line-height:1.5}
.res-req .cta{display:flex;align-items:center;gap:8px;align-self:flex-start;background:var(--res-brand);
  color:#fff;border:0;border-radius:8px;padding:12px 22px;font:inherit;font-weight:600;font-size:13.5px;cursor:pointer}
.res-req .cta:hover{background:#d9660f}
.res-req .cta svg{width:15px;height:15px}
.res-req .trust{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--res-muted)}
.res-req .trust span{display:flex;align-items:center;gap:5px}
.res-req .trust svg{width:12px;height:12px;color:var(--res-brand)}

.res-reqempty{grid-column:1/-1;background:var(--res-surface);border:1px solid var(--res-line);
  border-radius:12px;padding:38px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:13px}
.res-reqempty .ic{width:52px;height:52px;border-radius:50%;background:var(--res-brand-soft);
  display:grid;place-items:center;color:var(--res-brand)}
.res-reqempty .ic svg{width:25px;height:25px}
.res-reqempty h3{font-family:var(--res-serif);font-size:21px;margin:0;font-weight:600}
.res-reqempty p{margin:0;color:var(--res-ink2);font-size:13.5px;max-width:48ch}
.res-reqempty .cta{display:flex;align-items:center;gap:8px;background:var(--res-brand);color:#fff;border:0;
  border-radius:8px;padding:12px 26px;font:inherit;font-weight:600;font-size:14px;cursor:pointer;margin-top:4px}
.res-reqempty .cta:hover{background:#d9660f}
.res-reqempty .cta svg{width:16px;height:16px}
.res-reqempty .steps{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;margin-top:6px;
  font-size:11.5px;color:var(--res-muted)}
.res-reqempty .steps span{display:flex;align-items:center;gap:6px}
.res-reqempty .steps b{width:18px;height:18px;border-radius:50%;background:var(--res-surface2);
  color:var(--res-ink2);display:grid;place-items:center;font-size:10px}
.res-reqempty .agencies{font-size:12px;color:var(--res-muted)}
.res-reqempty .agencies b{color:var(--res-ink)}

/* ---------- quick preview ----------
   The hover preview from the current listing cards, kept because it lets a
   buyer judge a property without leaving the results. */
.res-eye{width:30px;height:30px;border-radius:50%;background:rgba(255,253,249,.95);display:grid;
  place-items:center;color:var(--res-ink2);border:0;cursor:pointer;box-shadow:0 2px 6px rgba(20,18,16,.18)}
.res-eye:hover{color:var(--res-brand)}
.res-eye svg{width:15px;height:15px}
/* Lighter veil, as on the original cards: the page stays visible behind the
   preview so the visitor keeps their place in the results. */
.res-pv-back{position:fixed;inset:0;background:rgba(20,18,16,.42);z-index:100000;opacity:0;
  pointer-events:none;transition:opacity .16s;backdrop-filter:blur(2px)}
.res-pv-back.on{opacity:1;pointer-events:auto}
.res-pv{position:fixed;left:50%;top:50%;transform:translate(-50%,-48%) scale(.97);z-index:100001;
  width:352px;max-width:calc(100vw - 32px);background:#FFFDF9;border-radius:14px;overflow:hidden;
  box-shadow:0 24px 70px rgba(20,18,16,.38);opacity:0;pointer-events:none;
  transition:opacity .16s,transform .16s;font-family:var(--res-sans);color:var(--res-ink);
  max-height:calc(100vh - 48px);overflow-y:auto}
.res-pv.on{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.res-pv-img{position:relative;aspect-ratio:16/10;background:var(--res-surface2)}
.res-pv-img img{width:100%;height:100%;object-fit:cover;display:block}
.res-pv-tag{position:absolute;top:12px;left:12px;background:var(--res-ok);color:#fff;border-radius:6px;
  padding:4px 11px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.res-pv-tag.vip{background:var(--res-vip)}
.res-pv-x{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;
  background:var(--res-surface);border:0;display:grid;place-items:center;cursor:pointer;
  color:var(--res-ink2);box-shadow:0 2px 8px rgba(20,18,16,.2)}
.res-pv-x svg{width:15px;height:15px}
.res-pv-b{padding:16px 18px 18px;display:flex;flex-direction:column;gap:10px}
.res-pv-t{font-family:var(--res-serif);font-size:19px;font-weight:600;line-height:1.25}
.res-pv-tags{display:flex;gap:6px;flex-wrap:wrap}
.res-pv-tags span{background:rgba(63,122,94,.12);color:var(--res-ok);border-radius:5px;
  padding:3px 9px;font-size:11.5px;font-weight:600}
.res-pv-tags span.loc{background:var(--res-surface2);color:var(--res-ink2)}
.res-pv-p{font-family:var(--res-serif);font-size:22px;font-weight:600}
.res-pv-p small{font-family:var(--res-sans);font-size:12.5px;color:var(--res-muted);font-weight:400}
.res-pv-specs{display:flex;gap:16px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--res-line);
  border-bottom:1px solid var(--res-line)}
.res-pv-specs span{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--res-ink)}
.res-pv-specs svg{width:16px;height:16px;color:var(--res-muted)}
.res-pv-d{border-left:3px solid var(--res-ok);padding-left:11px;font-size:13px;color:var(--res-ink2);
  line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.res-pv-go{display:block;background:var(--res-brand);color:#fff;text-align:center;border-radius:9px;
  padding:13px;font-size:14.5px;font-weight:600;text-decoration:none}
.res-pv-go:hover{background:#d9660f;color:#fff}
.res-pv-hint{text-align:center;font-size:11.5px;color:var(--res-muted)}

/* compare tray */
.res-cmpbar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:900;background:var(--res-ink);
  color:#fff;border-radius:12px;padding:12px 16px;display:flex;align-items:center;gap:14px;
  box-shadow:0 8px 28px rgba(20,18,16,.36);font-size:13px;font-family:var(--res-sans)}
.res-cmpbar .n{font-weight:600}
.res-cmpbar button{border:0;border-radius:8px;padding:8px 16px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}
.res-cmpbar .go{background:var(--res-brand);color:#fff}
.res-cmpbar .go:hover{background:#d9660f}
.res-cmpbar .cl{background:rgba(255,255,255,.14);color:#fff}

/* hover preview: no dark veil, the page stays readable behind */
.res-pv.hover{box-shadow:0 18px 50px rgba(20,18,16,.28)}
.res-pv.hover .res-pv-x{display:none}
/* merged into the banner accordion: our panel drops its own chrome */

/* standalone page: the panel opens under the search bar, full width */
#re-search .res-panel{max-width:1040px}
#re-search .res-panel.open{margin:16px auto 0}

/* ---------- page immobiliere : ce que le module ne sait pas filtrer ----------
   The Shop Feature module has no parameter to hide its global sections, and
   its template is shared site-wide, so scope the hiding to this page only. */
body:has(#re-search) .snpsf-wrap .snpsf-sec,
body:has(#re-search) .snpsf-wrap .snpsf-sellers-title,
body:has(#re-search) .snpsf-wrap .snpsf-sellers,
body:has(#re-search) .snpsf-wrap .snpsf-div,
body:has(#re-search) .snpsf-wrap .snpsf-hero,
body:has(#re-search) .snpsf-wrap .snpsf-srch-zone,
body:has(#re-search) .snpsf-wrap .snpsf-cat-title,
body:has(#re-search) .snpsf-wrap .snpsf-carousel,
body:has(#re-search) .snpsf-wrap .snpsf-main,
body:has(#re-search) .snpsf-wrap .snpsf-root-hdr,
body:has(#re-search) .snpsf-wrap .snpsf-root-title-row,
body:has(#re-search) .snpsf-wrap .snpsf-subcat-sec{display:none}
/* keep the request form: it is the only reason the module is on this page */
/* the module wrapper kept the carousel s reserved height once hidden */
body:has(#re-search) .snpsf-wrap{min-height:0;padding:0;margin:0}
body:has(#re-search) .ssg-feature-section{padding:0;margin:0;min-height:0;background:none;border:0}
/* the request form is the only part that stays */
body:has(#re-search) .snpsf-wrap .snpsf-reqwrap{display:block;max-width:960px;margin:16px auto 0}

/* agency logos are wordmarks: contain, never crop. The module sets
   object-fit:cover on every img, hence the specificity here. */
body:has(#re-search) .snpsf-wrap .snpsf-scard img,
.res-vip-logo img,
.res-vipbar .res-vip-logo img{width:100%;height:100%;object-fit:contain !important;
  padding:4px;background:#fff;border-radius:8px}

/* ---------- banniere immobiliere ---------- */
.re-hero{position:relative;height:clamp(440px,52vh,520px);overflow:visible;background:#141210;
  color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;
  margin-bottom:0;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.re-hero-video{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.re-hero-video video{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:177.78vh;min-width:100%;height:56.25vw;min-height:100%;object-fit:cover}
.re-hero-video:after{content:"";position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(20,18,16,.58),rgba(20,18,16,.74))}
.re-hero-content{position:relative;z-index:5;width:100%;max-width:1040px;padding:0 5%;
  --heading-color:#fff}
.re-hero,.re-hero *{--heading-color:#fff}
.re-tag{display:inline-block;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);
  border-radius:20px;padding:4px 14px;font-size:11px;letter-spacing:.13em;font-weight:600}
#dj-classifieds .re-hero h1,
.re-hero h1{font-family:"Fraunces",Georgia,serif;
  font-size:clamp(28px,5vw,46px);color:#fff;
  text-shadow:0 2px 6px rgba(0,0,0,.55),0 4px 24px rgba(0,0,0,.45);margin:14px 0 8px;font-weight:600;letter-spacing:-.01em}
#dj-classifieds .re-hero p,
.re-hero p{margin:0 0 24px;color:rgba(255,255,255,.72);font-size:14px}
.re-sb{position:relative;display:flex;align-items:center;gap:4px;background:#fff;
  border:1px solid rgba(255,255,255,.25);border-radius:12px;padding:5px 5px 5px 6px;
  max-width:820px;margin:0 auto;box-shadow:0 18px 46px rgba(0,0,0,.32)}
.re-sb>input{flex:1;border:0;outline:none;padding:12px 14px;font:inherit;font-size:14px;
  background:transparent;color:#141210;min-width:130px;border-radius:10px}
.re-sb .sel{display:flex;align-items:center;gap:5px;padding:0 10px;color:#4A423B;
  border-left:1px solid #EFE8DC;align-self:center;height:26px}
.re-sb .sel svg{width:15px;height:15px;flex:none}
.re-sb .sel select{border:0;outline:none;background:transparent;font:inherit;font-size:14px;
  color:#141210;padding:12px 0;cursor:pointer;max-width:180px}
.re-hfilters{display:flex;align-items:center;gap:6px;padding:9px 14px;background:#FBEEE1;
  color:#EA7318;border:1px solid #F3DFC9;border-radius:10px;font:inherit;font-weight:600;
  font-size:13.5px;cursor:pointer;white-space:nowrap}
.re-hfilters:hover{background:#f8e2cd}
.re-hfilters svg{width:16px;height:16px}
.re-hfilters .cnt{background:#EA7318;color:#fff;border-radius:10px;padding:1px 7px;font-size:11px;
  min-width:20px;text-align:center}
.re-hgo{display:flex;align-items:center;gap:6px;padding:10px 20px;background:#EA7318;color:#fff;
  border:0;border-radius:10px;font:inherit;font-weight:600;font-size:13.5px;cursor:pointer;
  letter-spacing:.02em;white-space:nowrap}
.re-hgo:hover{background:#d9660f}
.re-hero svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
/* the panel unfolds under this bar, over the page */
.re-sb .res-panel{position:absolute;top:calc(100% + 10px);left:0;right:0;z-index:60;
  max-width:1040px;margin:0 auto;text-align:left}
.re-sb .res-panel>.res-pin{max-height:min(66vh,540px);overflow-y:auto;overflow-x:hidden;
  background:#FFFDF9;border:1px solid #E2D9CB;box-shadow:0 26px 60px rgba(0,0,0,.30)}
@media(max-width:900px){.re-sb{flex-wrap:wrap}.re-sb .sel,.re-hfilters{border-left:0;flex:1}
  .re-sb .res-panel{position:static;margin-top:10px}}

/* Request prompt: sits ON the video, so it stays light — no opaque slab.
   One line of text, one button. */
.re-reqcard{display:flex;align-items:center;justify-content:center;gap:14px;
  flex-wrap:wrap;max-width:960px;margin:14px auto 0;padding:0}
.re-reqtxt{display:flex;flex-direction:column;gap:1px;text-align:right}
.re-reqtxt strong{font-size:14px;color:#fff;font-weight:600;
  text-shadow:0 1px 6px rgba(0,0,0,.5)}
.re-reqtxt span{font-size:12px;color:rgba(255,255,255,.66);
  text-shadow:0 1px 5px rgba(0,0,0,.45)}
.re-reqbtn{display:flex;align-items:center;gap:7px;padding:9px 18px;
  background:rgba(255,255,255,.10);color:#fff;border:1px solid rgba(255,255,255,.42);
  border-radius:10px;font:inherit;font-weight:600;font-size:13px;cursor:pointer;
  white-space:nowrap;backdrop-filter:blur(6px);transition:background .2s,border-color .2s}
.re-reqbtn:hover{background:#EA7318;border-color:#EA7318}
.re-reqbtn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
@media(max-width:640px){.re-reqcard{flex-direction:column;text-align:center}
  .re-reqtxt{text-align:center}}
/* the form itself sits below the banner, on the page ground */
body:has(#re-search) .snpsf-wrap{min-height:0;padding:0;margin:0}
body:has(#re-search) .snpsf-wrap .snpsf-wrap{padding:0;margin:0;min-height:0}
/* visibility stays under the module inline style, toggled by the link */

/* Site rule: no emoji. Replace the module s category glyphs with SVG. */
body:has(#re-search) .snpsf-step-card-ico{font-size:0;line-height:0;width:34px;height:34px;
  margin:0 auto 8px;background-repeat:no-repeat;background-position:center;background-size:30px 30px;
  opacity:.85;transition:opacity .15s}
body:has(#re-search) .snpsf-step-card:hover .snpsf-step-card-ico,
body:has(#re-search) .snpsf-step-card.selected .snpsf-step-card-ico{opacity:1}
body:has(#re-search) .snpsf-step-card[data-val="1"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M5 17h14M6 17l1-5h10l1 5"/><circle cx="8" cy="17" r="1.6"/><circle cx="16" cy="17" r="1.6"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="9"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="m3 10 9-7 9 7"/><path d="M5 9v11h14V9"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="17"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="7" width="18" height="13" rx="2"/><path d="M9 7V5h6v2"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="19"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><rect x="7" y="3" width="10" height="18" rx="2"/><path d="M11 18h2"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="20"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3h8l2 4-3 1v13H9V8L6 7z"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="21"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M3 18v-5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v5"/><path d="M3 18h18M6 11V8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v3"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="23"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="9" r="2"/><circle cx="16" cy="9" r="2"/><path d="M6 20c0-4 3-6 6-6s6 2 6 6z"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="26"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><circle cx="9" cy="10" r="1.3"/><circle cx="15" cy="10" r="1.3"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="76"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M9 3h6v4a3 3 0 0 1-6 0z"/><path d="M7 21v-6a5 5 0 0 1 10 0v6"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="79"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v6M9 6l3-3 3 3"/><path d="M5 21c0-5 3-8 7-8s7 3 7 8z"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="80"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12 12 3h9v9l-9 9z"/><circle cx="17" cy="7" r="1.4"/></svg>')}
body:has(#re-search) .snpsf-step-card[data-val="81"] .snpsf-step-card-ico{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%231B2A4A" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="3"/><circle cx="16" cy="10" r="2.4"/><path d="M3 20c0-3 3-5 6-5s6 2 6 5M15 20c0-2 2-3.5 4-3.5s3 1 3 3.5"/></svg>')}

/* ---------- formulaire SnapRequest : mise en charte ----------
   The module ships its own white card; reframe it to the site palette
   without touching the shared template. */
body:has(#re-search) .snpsf-wrap .snpsf-reqwrap{display:block;max-width:820px;
  margin:26px auto 34px;padding:0 18px}
body:has(#re-search) .snpsf-stepform{background:#FFFDF9;border:1px solid #E2D9CB;
  border-radius:16px;padding:26px 28px;box-shadow:0 14px 44px rgba(20,18,16,.10)}
/* header row */
body:has(#re-search) .snpsf-step-head{margin-bottom:16px}
body:has(#re-search) .snpsf-step-pill{background:#FBEEE1;color:#EA7318;
  border:1px solid #F3DFC9;border-radius:20px;font-size:11.5px;font-weight:600;padding:4px 12px}
/* progress */
body:has(#re-search) .snpsf-step-progress{background:#EFE8DC;border-radius:99px;height:5px}
body:has(#re-search) .snpsf-step-progbar{background:#EA7318;border-radius:99px}
body:has(#re-search) .snpsf-step-counter{color:#8A8078;font-size:12px;margin-top:6px}
/* titles */
body:has(#re-search) .snpsf-step-title{font-family:"Fraunces",Georgia,serif;
  font-size:22px;font-weight:600;color:#1B2A4A;letter-spacing:-.01em;margin:14px 0 4px}
body:has(#re-search) .snpsf-step-sub{color:#8A8078;font-size:13px;margin-bottom:16px}
/* category cards */
body:has(#re-search) .snpsf-step-card{background:#fff;border:1px solid #E2D9CB;
  border-radius:11px;padding:14px 10px;transition:border-color .15s,background .15s}
body:has(#re-search) .snpsf-step-card:hover{border-color:#EA7318;background:#FFFDF9}
body:has(#re-search) .snpsf-step-card.selected{border-color:#EA7318;background:#FBEEE1}
body:has(#re-search) .snpsf-step-card-lbl{font-size:12.5px;color:#4A423B;font-weight:500}
body:has(#re-search) .snpsf-step-card.selected .snpsf-step-card-lbl{color:#EA7318;font-weight:600}
/* fields */
body:has(#re-search) .snpsf-step-field label{font-size:12px;color:#8A8078;font-weight:600;
  letter-spacing:.02em;margin-bottom:5px;display:block}
body:has(#re-search) .snpsf-step-field input,
body:has(#re-search) .snpsf-step-field select,
body:has(#re-search) .snpsf-step-field textarea{width:100%;background:#fff;
  border:1px solid #E2D9CB;border-radius:9px;padding:10px 12px;font:inherit;
  font-size:13.5px;color:#141210;outline:none}
body:has(#re-search) .snpsf-step-field input:focus,
body:has(#re-search) .snpsf-step-field select:focus,
body:has(#re-search) .snpsf-step-field textarea:focus{border-color:#EA7318}
/* pills */
body:has(#re-search) .snpsf-step-pillbtn{background:#F0EAE0;color:#4A423B;border-radius:8px;
  padding:7px 14px;font-size:13px;cursor:pointer;border:1px solid transparent}
body:has(#re-search) .snpsf-step-pillbtn.active{background:#1B2A4A;color:#fff}
/* nav buttons */
body:has(#re-search) .snpsf-step-nav{margin-top:20px;padding-top:16px;border-top:1px solid #EFE8DC}
body:has(#re-search) .snpsf-step-next{background:#EA7318;color:#fff;border:0;border-radius:10px;
  padding:11px 24px;font:inherit;font-weight:600;font-size:13.5px;cursor:pointer}
body:has(#re-search) .snpsf-step-next:hover{background:#d9660f}
body:has(#re-search) .snpsf-step-back{background:none;color:#8A8078;border:1px solid #E2D9CB;
  border-radius:10px;padding:10px 18px;font:inherit;font-size:13px;cursor:pointer}
body:has(#re-search) .snpsf-step-back:hover{border-color:#8A8078;color:#4A423B}

/* the results header already states the count */
body:has(#re-search) .search_res_details,
body:has(#re-search) #dj-classifieds .search_res_details{display:none}

/* ---------- regroupement de marqueurs ---------- */
.marker-cluster,.marker-cluster div{background:none;border:0;box-shadow:none}
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:none}
.leaflet-cluster-anim .leaflet-marker-icon,
.leaflet-cluster-anim .leaflet-marker-shadow{transition:transform .25s ease,opacity .25s ease}
.leaflet-cluster-spider-leg{stroke:var(--res-brand);stroke-opacity:.55;stroke-width:1.5}

/* collapse control for the request form */
body:has(#re-search) .re-reqclose{display:flex;align-items:center;gap:6px;margin:18px auto 0;
  background:none;border:1px solid #E2D9CB;border-radius:9px;padding:7px 14px;
  font:inherit;font-size:12.5px;color:#8A8078;cursor:pointer;transition:border-color .15s,color .15s}
body:has(#re-search) .re-reqclose:hover{border-color:#EA7318;color:#EA7318}
body:has(#re-search) .re-reqclose svg{width:14px;height:14px;fill:none;stroke:currentColor;
  stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
/* the banner button reflects the open state */
.re-reqbtn.on{background:#EA7318;border-color:#EA7318}

/* ---------- confirmation de favori ---------- */
.res-toast{position:fixed;left:20px;bottom:20px;z-index:900;display:flex;align-items:center;
  gap:12px;background:#1B2A4A;color:#fff;border-radius:11px;padding:12px 18px;
  font-family:var(--res-sans);font-size:13.5px;box-shadow:0 12px 34px rgba(20,18,16,.34);
  opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .22s,transform .22s}
.res-toast.on{opacity:1;transform:translateY(0);pointer-events:auto}
.res-toast a{color:#EA7318;font-weight:600;text-decoration:none;white-space:nowrap}
.res-toast a:hover{text-decoration:underline}
@media(max-width:600px){.res-toast{left:12px;right:12px;bottom:12px}}
@media(prefers-reduced-motion:reduce){.res-toast{transition:none}}

/* Country pills: every market we cover stays listed, with what this
   category holds. An empty one is dimmed, not hidden — the visitor still
   sees the site is not single-country. */
.res-opt .n{font-size:11px;color:var(--res-muted);margin-left:5px;
  font-variant-numeric:tabular-nums}
.res-opt.on .n{color:rgba(255,255,255,.72)}
.res-opt.empty{opacity:.5}
.res-opt.empty:hover{opacity:1}

/* ---------- nommer une recherche (remplace window.prompt) ---------- */
.res-namebox{position:fixed;inset:0;z-index:1200;display:flex;align-items:center;
  justify-content:center;padding:20px;background:rgba(20,18,16,.52);
  backdrop-filter:blur(2px)}
.res-namebox .nb-card{width:100%;max-width:420px;background:var(--res-surface);
  border:1px solid var(--res-line);border-radius:14px;padding:22px 24px;
  box-shadow:0 24px 60px rgba(20,18,16,.34);display:flex;flex-direction:column;gap:10px}
.res-namebox .nb-t{font-family:var(--res-serif);font-size:18px;font-weight:600;
  color:var(--res-navy)}
.res-namebox .nb-s{font-size:12.5px;color:var(--res-muted);line-height:1.45}
.res-namebox .nb-i{width:100%;background:#fff;border:1px solid var(--res-line);
  border-radius:9px;padding:11px 13px;font:inherit;font-size:14px;color:var(--res-ink);
  outline:none;margin-top:4px}
.res-namebox .nb-i:focus{border-color:var(--res-brand)}
.res-namebox .nb-a{display:flex;justify-content:flex-end;gap:9px;margin-top:6px}
.res-namebox .nb-cancel,.res-namebox .nb-ok{padding:10px 18px;border-radius:9px;
  font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.res-namebox .nb-cancel{background:none;border:1px solid var(--res-line);color:var(--res-ink2)}
.res-namebox .nb-cancel:hover{border-color:var(--res-muted)}
.res-namebox .nb-ok{background:var(--res-brand);border:0;color:#fff}
.res-namebox .nb-ok:hover{background:#d9660f}
