/* ImmoDem — Site public (v4) */

/* ==========================================================================
   En-tête
   ========================================================================== */
.site-header{ position:sticky; top:0; z-index:60; background:#fff; border-bottom:1px solid var(--line); }
.site-header .bar{ position:relative; min-height:var(--header-h); display:flex; align-items:center; gap:28px; }
.brand{ display:inline-flex; align-items:center; flex:none; line-height:0; }
/* .brand-logo{ height:64px; width:auto; display:block; margin-block:6px; position:relative; top:10px; }
@media (max-width:1080px){ .brand-logo{ height:56px; } }
@media (max-width:520px){ .brand-logo{ height:48px; } } */
.brand-logo{ position: relative; top: 10px}
.header-menu{ display:contents; }
.nav{ display:flex; align-items:center; gap:4px; margin-inline:auto 0; margin-right:auto; }
.nav-link{ position:relative; display:inline-flex; align-items:center; gap:.35rem; padding:.55rem .85rem; font-weight:500; color:var(--ink-2); font-size:1rem; }
.nav-link:hover{ color:var(--ink); }
body[data-page="home"] .nav-link[data-nav="home"],
body[data-page="annonces"] .nav-link[data-nav="annonces"],
body[data-page="services"] .nav-link[data-nav="services"],
body[data-page="contact"] .nav-link[data-nav="contact"]{ color:var(--ink); font-weight:700; }
@media (min-width:1081px){
  body[data-page="home"] .nav-link[data-nav="home"]::before,
  body[data-page="annonces"] .nav-link[data-nav="annonces"]::before,
  body[data-page="services"] .nav-link[data-nav="services"]::before,
  body[data-page="contact"] .nav-link[data-nav="contact"]::before{
    content:""; position:absolute; left:.85rem; right:.85rem; bottom:-26px; height:2px; background:var(--brand); }
}
/* petit chevron dessiné en CSS pour les menus déroulants */
.has-sub > .nav-link::after{ content:""; width:6px; height:6px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-2px) rotate(45deg); margin-left:.2rem; opacity:.6; transition:transform .15s; }
.nav-item:hover > .nav-link::after{ transform:translateY(1px) rotate(225deg); }
.header-actions{ display:flex; align-items:center; gap:10px; flex:none; }
.header-actions .btn{ --bh:42px; }
.nav-toggle{ display:none; width:44px; height:44px; border:1px solid var(--line-2); border-radius:var(--r-sm); background:#fff; align-items:center; justify-content:center; margin-left:auto; font-size:1.15rem; color:var(--ink); flex:none; }

.nav-item{ position:relative; }
.sub{ position:absolute; top:calc(100% + 10px); left:0; min-width:240px; background:#fff; border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-2); padding:6px; opacity:0; visibility:hidden; transform:translateY(4px); transition:.14s; z-index:70; }
.sub::before{ content:""; position:absolute; left:0; right:0; top:-12px; height:12px; }
.nav-item:hover .sub,.nav-item:focus-within .sub{ opacity:1; visibility:visible; transform:none; }
.sub a{ display:block; padding:.6rem .8rem; border-radius:var(--r-sm); font-size:.97rem; color:var(--ink-2); }
.sub a:hover{ background:var(--mist); color:var(--ink); }

@media (max-width:1080px){
  .nav-toggle{ display:inline-flex; }
  .header-menu{ display:block; position:absolute; left:0; right:0; top:100%;
    background:#fff; border-top:1px solid var(--line); box-shadow:var(--sh-2);
    padding:10px clamp(16px,5vw,24px) 18px; margin:0;
    opacity:0; visibility:hidden; transition:opacity .16s, visibility .16s;
    max-height:calc(100dvh - var(--header-h)); overflow-y:auto; }
  .site-header.mobile-open .header-menu{ opacity:1; visibility:visible; }
  .nav{ flex-direction:column; align-items:stretch; gap:0; margin:0; }
  .nav-link{ padding:.9rem .2rem; font-size:1.08rem; border-bottom:1px solid var(--line); width:100%; }
  .has-sub > .nav-link{ justify-content:space-between; }
  .header-actions{ margin-top:16px; flex-direction:column; align-items:stretch; gap:10px; }
  .header-actions .btn{ width:100%; }
  .mobile-open .nav .nav-item{ width:100%; }
  .mobile-open .nav .sub{ position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:0; padding:4px 0 10px 12px; display:none; min-width:0; }
  .mobile-open .nav .nav-item.open .sub{ display:block; }
}

/* Bouton « Déposer une annonce » : animation adoucie (une respiration lente) */
@keyframes deposerBreath{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.035); } }
.btn-deposer{ animation:deposerBreath 2.6s ease-in-out infinite; }
.btn-deposer:hover{ animation-play-state:paused; }

/* ==========================================================================
   Pied de page
   ========================================================================== */
.site-footer{ background:var(--forest); color:var(--forest-ink); font-size:.95rem; }
.site-footer a:hover{ color:#fff; }
.footer-cta{ padding-block:clamp(32px,4vw,48px); border-bottom:1px solid rgba(255,255,255,.12);
  display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; }
.footer-cta h3{ color:#fff; font-size:1.45rem; }
.footer-cta p{ margin-top:.3rem; max-width:52ch; }
.footer-top{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1.25fr; gap:40px; padding-block:clamp(44px,5vw,64px); }
.footer-brand .brand-logo{ background:#fff; padding:10px 14px; border-radius:var(--r-sm); height:72px; box-sizing:content-box; margin:0; top:0; }
.footer-brand .fb-contact{ margin-top:1.5rem; display:flex; flex-direction:column; gap:.35rem; color:#eeeef1; }
.footer-col h4{ color:#fff; font-size:.98rem; font-weight:700; margin-bottom:1rem; letter-spacing:0; }
.footer-col li{ margin-bottom:.55rem; }
.footer-col a{ color:var(--forest-ink); }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); padding-block:22px; display:flex; align-items:center;
  justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:.88rem; color:#b9b8be; }
.footer-bottom .socials{ display:flex; gap:6px; }
.footer-bottom .socials a{ width:38px; height:38px; border-radius:var(--r-sm); display:grid; place-items:center; color:#e6e5ea; font-size:1.05rem; }
.footer-bottom .socials a:hover{ background:rgba(255,255,255,.1); }
.store-badges{ display:flex; gap:10px; margin-top:1.5rem; flex-wrap:wrap; }
.store-badge{ display:inline-flex; align-items:center; gap:.6rem; padding:.45rem .9rem; border:1px solid rgba(255,255,255,.3); border-radius:var(--r-sm); color:#fff; }
.store-badge i{ font-size:1.4rem; }
.store-badge span{ display:flex; flex-direction:column; line-height:1.15; font-weight:700; font-size:.92rem; }
.store-badge small{ font-weight:400; font-size:.7rem; color:var(--forest-ink); }
.store-badge:hover{ border-color:#fff; }
@media (max-width:900px){ .footer-top{ grid-template-columns:1fr 1fr; gap:32px; } .footer-brand{ grid-column:1 / -1; } }
@media (max-width:560px){ .footer-top{ grid-template-columns:1fr; } }

/* Boutons flottants */
.floaties{ position:fixed; right:18px; bottom:18px; z-index:75; display:flex; flex-direction:column; gap:10px; }
.fab{ width:52px; height:52px; border-radius:50%; display:grid; place-items:center; border:0; box-shadow:var(--sh-2); font-size:1.45rem; cursor:pointer; }
.fab-wa{ background:#25d366; color:#fff; position:relative; }
.fab-wa .fab-ping{ display:none; }
.fab-top{ background:#fff; color:var(--ink); border:1px solid var(--line-2); opacity:0; pointer-events:none; transition:opacity .2s; box-shadow:none; }
.fab-top.show{ opacity:1; pointer-events:auto; }
.fab-top svg{ display:block; }

/* ==========================================================================
   Fil d'Ariane et en-têtes de pages intérieures
   ========================================================================== */
.crumbs{ display:flex; align-items:center; gap:.5rem; font-size:.9rem; color:var(--muted); flex-wrap:wrap; }
.crumbs > a::after{ content:"/"; margin-left:.5rem; opacity:.5; }
.crumbs a:hover{ color:var(--ink); text-decoration:underline; }
.crumbs [aria-current]{ color:var(--ink); font-weight:600; }

.page-hero{ background:var(--mist); padding-block:clamp(34px,4.5vw,60px); }
.page-hero h1{ font-size:clamp(1.9rem,1.35rem+1.9vw,2.7rem); font-weight:700; letter-spacing:-.022em; line-height:1.1; }
.page-hero .lede{ margin-top:.8rem; }

/* Bandeau photo (pages intérieures) : la photo est visible, le texte est posé en bas */
.photo-band{ position:relative; color:#fff; overflow:hidden; background:var(--ink); }
.photo-band .pb-media{ position:absolute; inset:0; z-index:0; }
.photo-band .pb-media img{ width:100%; height:100%; object-fit:cover; }
.photo-band .pb-media::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(14,26,43,.25) 0%,rgba(14,26,43,.15) 35%,rgba(14,26,43,.78) 100%); }
.photo-band .wrap,.photo-band .wrap-narrow{ position:relative; z-index:2; }
.photo-band .lede{ color:#ececef; }
.page-hero.photo-band{ min-height:clamp(300px,42vw,460px); display:flex; align-items:flex-end; padding-block:clamp(28px,4vw,48px); background:var(--ink); }
.page-hero.photo-band > .wrap{ width:min(100% - var(--gut)*2, var(--wrap)); }
.page-hero.photo-band h1,.page-hero.photo-band .banner-title{ color:#fff; }
.page-hero.photo-band .eyebrow{ color:#ececef; }
.page-hero.photo-band .crumbs,.page-hero.photo-band .crumbs a,.page-hero.photo-band .crumbs [aria-current]{ color:#f1f1f3; }
.page-hero.photo-band .banner-title{ font-weight:700; letter-spacing:-.022em; margin-top:.6rem; font-size:clamp(1.9rem,1.3rem+2.2vw,3rem); line-height:1.05; }

/* ==========================================================================
   Accueil : héros
   ========================================================================== */
.hero{ position:relative; background:var(--ink); color:#fff; overflow:hidden; }
.hero-slider{ display:grid; min-height:clamp(560px,86vh,820px); }
.hero-slide{ grid-area:1 / 1; position:relative; min-width:0; display:flex; align-items:flex-end; opacity:0; visibility:hidden; transition:opacity .9s ease, visibility .9s; }
.hero-slide > .wrap{ width:min(100% - var(--gut)*2, var(--wrap)); }
.hero-slide.is-active{ opacity:1; visibility:visible; z-index:1; }
.hero-media{ position:absolute; inset:0; z-index:0; background:#26303f; }
.hero-media img{ width:100%; height:100%; object-fit:cover; }
.hero-media.no-img img{ display:none; }
.hero-media::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(14,26,43,.35) 0%, rgba(14,26,43,0) 28%, rgba(14,26,43,.15) 55%, rgba(14,26,43,.78) 100%); }
.hero-inner{ position:relative; z-index:2; padding-bottom:clamp(150px,15vw,190px); max-width:860px; }
.hero-kicker{ font-size:1rem; font-weight:500; color:#f4f4f6; margin-bottom:1rem; }
.hero h1{ max-width:14ch; text-wrap:balance; }
.hero .lede{ color:#f1f1f3; max-width:48ch; margin-top:1.2rem; font-size:clamp(1.05rem,1rem+.35vw,1.22rem); }
.hero-dots-wrap{ position:absolute; left:0; right:0; bottom:clamp(118px,11vw,138px); z-index:4; pointer-events:none; display:flex; justify-content:flex-end; margin-inline:auto; }
.hero-dots{ display:flex; gap:8px; pointer-events:auto; }
.hero-dot{ width:28px; height:3px; border:0; background:rgba(255,255,255,.4); cursor:pointer; padding:0; transition:background .2s; }
.hero-dot:hover{ background:rgba(255,255,255,.75); }
.hero-dot.is-active{ background:#fff; }

/* Barre de recherche posée sur le bord de la photo */
.search-dock{ position:relative; z-index:5; }
.searchbar{ position:relative; background:#fff; color:var(--ink); border-radius:var(--r-lg) var(--r-lg) 0 0;
  padding:16px 16px 14px; display:grid; grid-template-columns:auto 1fr 1fr 1.3fr auto; gap:6px; align-items:center; }
.search-lift{ margin-top:-104px; }
.search-field{ padding:.2rem 1rem; }
.search-field label{ display:block; font-size:.84rem; font-weight:600; color:var(--muted); margin-bottom:2px; }
.search-field .control{ display:flex; align-items:center; gap:.5rem; }
.search-field select,.search-field input{ border:0; padding:0; height:30px; width:100%; background:transparent; font-weight:600; font-size:1.02rem; color:var(--ink); }
.search-field select{ appearance:none; -webkit-appearance:none; cursor:pointer;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 24 24' fill='none' stroke='%230e1a2b' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right center no-repeat; padding-right:1.4rem; }
.search-field select:focus,.search-field input:focus{ outline:none; }
.search-field + .search-field{ border-left:1px solid var(--line); }
.searchbar .btn-search{ --bh:56px; padding:0 1.8rem; font-size:1.02rem; }
/* Accueil : bouton « Plus » et critères avancés */
.searchbar.has-more{ grid-template-columns:auto 1fr 1fr 1.3fr auto auto; }
.btn-more{ display:inline-flex; align-items:center; gap:.45rem; height:56px; padding:0 1.1rem; border:1px solid var(--line-2); border-radius:var(--r); background:#fff; color:var(--ink); font-weight:600; font-size:.98rem; cursor:pointer; }
.btn-more:hover, .btn-more[aria-expanded="true"]{ border-color:var(--ink); }
.btn-more i{ color:var(--brand); }
.home-adv{ grid-column:1 / -1; display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:16px 28px; padding:16px 1rem 6px; margin-top:8px; border-top:1px solid var(--line); }
.home-adv[hidden]{ display:none; }
.home-adv .lbl{ display:block; font-size:.84rem; font-weight:600; color:var(--muted); margin-bottom:6px; }
.home-adv .input{ height:42px; }
.home-adv .ha-foot{ grid-column:1 / -1; margin:0; font-size:.86rem; color:var(--muted); }
.home-adv .ha-foot a{ color:var(--brand-deep, var(--brand)); font-weight:600; }
.search-budget .range{ width:100%; }
.search-budget .range input[type=range]{ margin:4px 0 0; }
.quick-tags{ display:flex; gap:6px 16px; flex-wrap:wrap; margin-top:1.1rem; align-items:center; font-size:.93rem; }
.quick-tags .qt-label{ color:var(--muted); }
.quick-tags a{ font-weight:600; color:var(--ink); text-decoration:underline; text-decoration-color:var(--line-2); text-underline-offset:.25em; }
.quick-tags a:hover{ text-decoration-color:var(--brand); }
@media (max-width:900px){
  .searchbar{ grid-template-columns:1fr 1fr; border-radius:var(--r-lg); padding:14px; box-shadow:var(--sh-2); }
  .search-lift{ margin-top:-72px; }
  .searchbar .seg{ grid-column:1 / -1; }
  .search-field{ padding:.5rem .3rem; }
  .search-field + .search-field{ border-left:0; }
  .search-budget{ grid-column:1 / -1; }
  .searchbar .btn-search{ grid-column:1 / -1; width:100%; }
  .searchbar.has-more{ grid-template-columns:1fr 1fr; }
  .btn-more{ grid-column:1 / -1; justify-content:center; width:100%; height:48px; }
  .home-adv{ grid-template-columns:1fr 1fr; padding:14px .3rem 4px; }
  .searchbar.has-more .home-adv{ order:1; } .searchbar.has-more .btn-search{ order:2; } /* critères avant le bouton Rechercher */
  .hero-inner{ padding-bottom:120px; }
  .hero-dots-wrap{ bottom:92px; }
}
@media (max-width:520px){ .searchbar, .searchbar.has-more, .home-adv{ grid-template-columns:1fr; } .hero-slider{ min-height:clamp(520px,84vh,680px); } }

/* ==========================================================================
   Carte annonce : la photo d'abord, le texte simple en dessous
   ========================================================================== */
.card-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr)); gap:clamp(18px,2vw,26px); }
.card-grid-home{ grid-template-columns:repeat(3,1fr); }
@media (max-width:900px){ .card-grid-home{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px){ .card-grid-home{ grid-template-columns:1fr; } }
.pcard{ display:flex; flex-direction:column; color:var(--ink); background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; transition:border-color .15s ease, box-shadow .15s ease; }
.pcard:hover{ border-color:var(--line-2); box-shadow:var(--sh-2); }
.pcard .media{ position:relative; aspect-ratio:4/3; overflow:hidden; flex:none; }
.pcard .media .ph{ position:absolute; inset:0; }
.pcard .media img{ transition:transform .5s ease; }
.pcard:hover .media img{ transform:scale(1.03); }
.pcard .deal{ position:absolute; top:12px; left:12px; z-index:2; background:#fff; color:var(--ink); font-size:.8rem; font-weight:600; padding:.25rem .6rem; border-radius:var(--r-xs); }
.pcard .fav{ position:absolute; top:10px; right:10px; z-index:2; width:40px; height:40px; border-radius:50%;
  background:rgba(255,255,255,.94); border:0; display:grid; place-items:center; color:var(--ink); font-size:1.05rem; }
.pcard .fav:hover,.pcard .fav[aria-pressed="true"]{ color:var(--brand); }
.pcard .body{ padding:16px 18px 0; display:flex; flex-direction:column; gap:.2rem; flex:1; }
.pcard .loc{ font-size:.86rem; color:var(--muted); }
.pcard .title{ font-weight:600; font-size:1.04rem; line-height:1.35; }
.pcard .specs{ display:flex; align-items:center; gap:.6rem; font-size:.88rem; color:var(--ink-2); margin-top:.2rem; }
.pcard .specs .sep{ width:1px; height:12px; background:var(--line-2); }
.pcard .price{ font-weight:700; font-size:1.18rem; letter-spacing:-.01em; margin-top:auto; padding-top:.7rem; font-variant-numeric:tabular-nums; }
.pcard .price small{ font-weight:500; font-size:.85rem; color:var(--muted); }
.pcard .meta{ display:flex; gap:.9rem; flex-wrap:wrap; font-size:.82rem; color:var(--muted); margin:12px -18px 0; padding:11px 18px; border-top:1px solid var(--line); background:var(--mist); min-height:43px; }
.pcard .meta .verified{ color:var(--ok); font-weight:600; }
/* Annonce vedette : photo à gauche, informations à droite */
.pcard-feature{ grid-column:span 2; flex-direction:row; }
.pcard-feature .media{ aspect-ratio:auto; flex:1.35; min-height:320px; }
.pcard-feature .body{ flex:1; padding:24px 24px 0; }
.pcard-feature .title{ font-size:1.3rem; }
.pcard-feature .price{ font-size:1.45rem; }
.pcard-feature .meta{ margin-inline:-24px; padding-inline:24px; }
@media (max-width:760px){ .pcard-feature{ grid-column:span 1; flex-direction:column; } .pcard-feature .media{ aspect-ratio:4/3; flex:none; min-height:0; } .pcard-feature .body{ padding:16px 18px 0; } .pcard-feature .meta{ margin-inline:-18px; padding-inline:18px; } }

/* ==========================================================================
   Accueil : étapes, confiance, quartiers, villes, services, témoignages
   ========================================================================== */
.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(18px,2vw,28px); counter-reset:none; }
@media (max-width:900px){ .steps{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .steps{ grid-template-columns:1fr 1fr; gap:22px 14px; } .step h3{ font-size:1.05rem; } .step p{ font-size:.9rem; } }
.step-ph{ aspect-ratio:4/5; border-radius:var(--r); margin-bottom:1.1rem; }
.step h3{ display:flex; align-items:baseline; gap:.6rem; font-size:1.2rem; margin-bottom:.4rem; }
.step .num{ color:var(--brand); font-weight:800; font-variant-numeric:tabular-nums; }
.step p{ color:var(--muted); font-size:.97rem; }

.split{ display:grid; grid-template-columns:.85fr 1fr; gap:clamp(28px,5vw,72px); align-items:center; }
.split-ph{ aspect-ratio:4/3; border-radius:var(--r); max-height:440px; }
.split-body .h-xl{ max-width:16ch; }
.facts{ margin:clamp(22px,3vw,36px) 0 clamp(24px,3vw,36px); }
.facts > div{ padding:18px 0; border-top:1px solid var(--line); }
.facts > div:last-child{ border-bottom:1px solid var(--line); }
.facts dt{ font-weight:700; font-size:1.1rem; }
.facts dd{ margin:.3rem 0 0; color:var(--muted); max-width:52ch; }
@media (max-width:860px){ .split{ grid-template-columns:1fr; } .split-ph{ aspect-ratio:4/3; } }

.mosaic{ display:grid; grid-template-columns:2fr 1fr 1fr; grid-template-rows:repeat(2, clamp(180px,20vw,260px)); gap:10px; }
.tile{ position:relative; display:block; border-radius:var(--r); overflow:hidden; color:#fff; }
.tile .ph{ position:absolute; inset:0; }
.tile .ph::after{ content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(0,0,0,.62) 100%); }
.tile img{ transition:transform .6s ease; }
.tile:hover img{ transform:scale(1.04); }
.tile-lg{ grid-row:span 2; }
.tile-wide{ grid-column:span 2; }
.tile-cap{ position:absolute; left:18px; right:18px; bottom:14px; z-index:2; display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.tile-cap b{ font-size:clamp(1.15rem,1rem+.6vw,1.55rem); font-weight:700; letter-spacing:-.01em; }
.tile-cap span{ font-size:.9rem; color:#f1f1f3; }
@media (max-width:760px){
  .mosaic{ grid-template-columns:1fr 1fr; grid-template-rows:none; grid-auto-rows:180px; }
  .tile-lg{ grid-column:span 2; grid-row:span 1; }
}

.cities{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(16px,2vw,24px); }
@media (max-width:900px){ .cities{ grid-template-columns:repeat(2,1fr); } }
.city{ display:block; }
.city .ph{ aspect-ratio:3/2; border-radius:var(--r); margin-bottom:.8rem; }
.city b{ display:block; font-size:1.08rem; }
.city span{ font-size:.9rem; color:var(--muted); }
.city:hover b{ text-decoration:underline; text-underline-offset:.2em; }

.svc-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2.4vw,32px); }
@media (max-width:860px){ .svc-grid{ grid-template-columns:1fr; } }
.svc-card{ display:block; color:inherit; }
.svc-card .svc-media{ aspect-ratio:4/3; border-radius:var(--r); margin-bottom:1rem; }
.svc-card img{ transition:transform .6s ease; }
.svc-card:hover img{ transform:scale(1.03); }
.svc-card h3{ font-size:1.25rem; margin-bottom:.35rem; }
.svc-card:hover h3{ text-decoration:underline; text-underline-offset:.2em; text-decoration-thickness:1px; }
.svc-card p{ color:var(--muted); max-width:44ch; }

.quotes{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; }
@media (max-width:860px){ .quotes{ grid-template-columns:1fr; } }
.tmoi{ margin:0; padding:0 clamp(18px,2.5vw,36px); border-left:1px solid rgba(255,255,255,.18); display:flex; flex-direction:column; justify-content:space-between; gap:1.6rem; }
.tmoi:first-child{ padding-left:0; border-left:0; }
@media (max-width:860px){ .tmoi{ padding:26px 0; border-left:0; border-top:1px solid rgba(255,255,255,.18); } .tmoi:first-child{ border-top:0; padding-top:0; } }
.tmoi blockquote{ margin:0; color:#fff; font-size:clamp(1.08rem,1rem+.35vw,1.28rem); line-height:1.5; font-weight:500; letter-spacing:-.005em; }
.tmoi figcaption{ display:flex; align-items:center; gap:.85rem; }
.tmoi .face{ position:relative; width:52px; height:52px; border-radius:50%; overflow:hidden; background:var(--forest-2); flex:none; }
.tmoi .face img{ width:100%; height:100%; object-fit:cover; }
.tmoi .face img[data-broken]{ display:none; }
.tmoi figcaption b{ color:#fff; display:block; }
.tmoi figcaption span span{ color:var(--forest-ink); font-size:.9rem; }

.partners{ text-align:center; }
.partners-title{ font-size:1rem; font-weight:600; color:var(--muted); margin-bottom:1.6rem; }
.partners-row{ display:flex; align-items:center; justify-content:center; gap:clamp(28px,6vw,80px); flex-wrap:wrap; }
.partners-row img{ max-height:64px; width:auto; max-width:180px; object-fit:contain; }
.partner-logo{ display:grid; place-items:center; padding:10px; }
.partner-logo img{ max-height:60px; max-width:80%; width:auto; object-fit:contain; }

.cta-photo{ position:relative; color:#fff; min-height:clamp(380px,44vw,520px); display:flex; align-items:flex-end; background:var(--ink); }
.cta-ph{ position:absolute; inset:0; }
.cta-ph::after{ content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(14,26,43,.78) 0%,rgba(14,26,43,.45) 55%,rgba(14,26,43,.1) 100%); }
.cta-inner{ position:relative; z-index:2; padding-block:clamp(40px,6vw,80px); }
.cta-inner .h-xl{ max-width:18ch; }
.cta-inner p{ color:#ececef; max-width:46ch; margin:.9rem 0 1.6rem; font-size:1.08rem; }

/* Ancienne bande « appel à l'action » (pages intérieures) */
.cta-band{ background:var(--mist); color:var(--ink); border-radius:var(--r-lg); padding:clamp(28px,4vw,52px); display:flex; align-items:center; justify-content:space-between; gap:28px; flex-wrap:wrap; }
.cta-band h2{ max-width:24ch; }
.cta-band p{ color:var(--muted); margin-top:.6rem; max-width:48ch; }
.cta-band .btn-onink{ background:var(--brand); color:#fff; }
.cta-band .btn-onink:hover{ background:var(--brand-deep); }
.cta-band .btn-onink-ghost{ color:var(--ink); border-color:var(--line-2); }

/* ==========================================================================
   Liste d'annonces + filtres
   ========================================================================== */
.results-layout{ display:grid; grid-template-columns:290px 1fr; gap:clamp(24px,3.5vw,48px); align-items:start; }
.results-layout > *{ min-width:0; }
@media (max-width:960px){ .results-layout{ grid-template-columns:1fr; } }
.filters{ position:sticky; top:calc(var(--header-h) + 20px); background:#fff; }
.filters h3{ font-size:1.1rem; }
.filter-block{ padding-block:18px; border-bottom:1px solid var(--line); }
.filter-block:last-child{ border-bottom:0; }
.filter-block > .lbl{ margin-bottom:.7rem; }
.range-row{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.checks{ display:flex; flex-direction:column; gap:.6rem; }
.tag-choices{ display:flex; flex-wrap:wrap; gap:6px; }
.tag-choice{ border:1px solid var(--line-2); background:#fff; border-radius:var(--r-sm); padding:.4rem .75rem; font-size:.9rem; font-weight:500; color:var(--ink-2); }
.tag-choice[aria-pressed="true"]{ background:var(--ink); border-color:var(--ink); color:#fff; }
.results-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:24px; flex-wrap:wrap; }
.filters-mobile-toggle{ display:none; }
.filters-close{ display:none; }
@media (max-width:960px){
  .filters{ position:fixed; inset:0; z-index:80; overflow:auto; transform:translateX(-100%); transition:transform .25s ease; width:min(360px,88vw); padding:20px; }
  .filters.open{ transform:none; box-shadow:var(--sh-3); }
  .filters-mobile-toggle{ display:inline-flex; }
  .filters-close{ display:inline-grid !important; }
}

/* ==========================================================================
   Fiche annonce
   ========================================================================== */
.gallery{ display:grid; grid-template-columns:2fr 1fr 1fr; grid-auto-rows:1fr; gap:6px; border-radius:var(--r-lg); overflow:hidden; }
.gallery .g-main{ grid-row:span 2; grid-column:1; }
.gallery .ph{ aspect-ratio:16/11; cursor:zoom-in; }
.gallery .g-main .ph{ aspect-ratio:auto; height:100%; }
.gallery .g-more{ position:relative; }
.gallery .g-more .btn{ position:absolute; right:12px; bottom:12px; z-index:3; }
@media (max-width:760px){ .gallery{ grid-template-columns:1fr 1fr; } .gallery .g-main{ grid-column:1 / -1; grid-row:auto; } .gallery .g-hide{ display:none; } }

.detail-layout{ display:grid; grid-template-columns:1fr 360px; gap:clamp(28px,4vw,64px); align-items:start; margin-top:clamp(24px,3vw,40px); }
@media (max-width:960px){ .detail-layout{ grid-template-columns:1fr; } }
.detail-title{ display:flex; align-items:flex-start; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.detail-title h1{ font-size:clamp(1.6rem,1.2rem+1.3vw,2.2rem); }
.detail-loc{ color:var(--muted); margin-top:.5rem; font-size:1.02rem; }
.detail-price{ font-weight:700; font-size:clamp(1.5rem,1.2rem+1.1vw,2rem); color:var(--ink); white-space:nowrap; letter-spacing:-.015em; font-variant-numeric:tabular-nums; }
.detail-price small{ font-size:.92rem; color:var(--muted); font-weight:500; }
.keyfacts{ display:grid; grid-template-columns:repeat(4,1fr); margin-block:26px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
@media (max-width:560px){ .keyfacts{ grid-template-columns:repeat(2,1fr); } }
.keyfact{ padding:16px 16px 16px 0; }
.keyfact + .keyfact{ padding-left:16px; border-left:1px solid var(--line); }
@media (max-width:560px){ .keyfact:nth-child(3){ border-left:0; padding-left:0; } }
.keyfact .v{ font-weight:700; font-size:1.2rem; }
.keyfact .k{ font-size:.86rem; color:var(--muted); }
.amenities{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:0 2rem; }
.amenities li{ padding:.6rem 0; border-bottom:1px solid var(--line); font-size:.98rem; }
.detail-section{ padding-block:clamp(26px,3vw,40px); border-top:1px solid var(--line); }
.detail-section h2{ margin-bottom:1rem; }
.detail-bar{ display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:14px 0; border-bottom:1px solid var(--line); }
.detail-bar .dm{ display:flex; gap:22px; flex-wrap:wrap; color:var(--muted); font-size:.92rem; }
.detail-bar .dm b{ color:var(--ink); }
.share{ display:flex; align-items:center; gap:4px; }
.share-label{ font-size:.9rem; color:var(--muted); margin-right:6px; }
.share-btn{ width:38px; height:38px; border-radius:var(--r-sm); border:0; background:transparent; display:grid; place-items:center; color:var(--ink); font-size:1.05rem; }
.share-btn:hover{ background:var(--mist); }

.contact-panel{ position:sticky; top:calc(var(--header-h) + 20px); background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:24px; }
.agency-head{ display:flex; align-items:center; gap:.9rem; padding-bottom:16px; border-bottom:1px solid var(--line); margin-bottom:16px; }
.agency-logo{ width:50px; height:50px; border-radius:50%; background:var(--forest); display:grid; place-items:center; font-weight:700; font-size:1.05rem; color:#fff; flex:none; }
.agency-head .n{ font-weight:700; }
.agency-head .r{ font-size:.86rem; color:var(--muted); }
.contact-panel .price-line{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:16px; }
.mapbox{ aspect-ratio:16/9; border-radius:var(--r); overflow:hidden; position:relative; background:#e4e5e8; }
.mapbox::before{ content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(255,255,255,.7) 2px, transparent 2px), linear-gradient(90deg, rgba(255,255,255,.7) 2px, transparent 2px);
  background-size:64px 48px; transform:rotate(-8deg) scale(1.3); }
.mapbox::after{ content:""; position:absolute; left:50%; top:50%; width:18px; height:18px; margin:-9px 0 0 -9px; border-radius:50%; background:var(--brand); box-shadow:0 0 0 6px rgba(224,85,26,.25); }
.agency-mini{ display:flex; align-items:center; gap:.9rem; padding:14px; background:var(--mist); border-radius:var(--r); }
.agency-mini .agency-logo{ width:44px; height:44px; }

/* Encart « Louez en sécurité » */
.safe-band{ background:var(--mist); border-radius:var(--r-lg); padding:clamp(22px,3vw,32px); }
.safe-band-head{ margin-bottom:18px; }
.safe-band-head h3{ font-size:1.25rem; }
.safe-band-head p{ color:var(--muted); margin-top:.25rem; }
.safe-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; }
@media (max-width:760px){ .safe-grid{ grid-template-columns:1fr; } }
.safe-item{ padding:14px 18px 4px 0; }
.safe-item + .safe-item{ padding-left:18px; border-left:1px solid var(--line-2); }
@media (max-width:760px){ .safe-item + .safe-item{ padding-left:0; border-left:0; border-top:1px solid var(--line-2); } }
.safe-item .t{ font-weight:700; margin-bottom:.25rem; }
.safe-item .d{ font-size:.92rem; color:var(--muted); line-height:1.55; }

/* Lightbox */
.lightbox{ background:rgba(10,12,11,.94); }
.lb-figure{ margin:0; max-width:min(1100px,92vw); max-height:84vh; }
.lb-figure img{ display:block; width:100%; max-height:84vh; object-fit:contain; background:#111; }
.lb-btn{ position:absolute; background:rgba(255,255,255,.12); color:#fff; border:0; width:50px; height:50px; border-radius:50%; display:grid; place-items:center; font-size:1.2rem; cursor:pointer; }
.lb-btn:hover{ background:rgba(255,255,255,.26); }
.lb-close{ top:20px; right:20px; }
.lb-prev{ left:22px; top:50%; transform:translateY(-50%); }
.lb-next{ right:22px; top:50%; transform:translateY(-50%); }
.lb-count{ position:absolute; bottom:22px; left:50%; transform:translateX(-50%); color:#fff; font-weight:600; font-size:.92rem; }
@media (max-width:560px){ .lb-prev{ left:8px; } .lb-next{ right:8px; } .lb-btn{ width:44px; height:44px; } }

/* ==========================================================================
   Services
   ========================================================================== */
.svc-row{ display:grid; grid-template-columns:1.1fr 1fr; gap:clamp(28px,5vw,72px); align-items:center; }
.svc-row.rev > .svc-media{ order:2; }
.svc-row > .svc-media{ aspect-ratio:5/4; border-radius:var(--r); }
.svc-row .amenities{ grid-template-columns:1fr 1fr !important; }
@media (max-width:820px){ .svc-row{ grid-template-columns:1fr; } .svc-row.rev > .svc-media{ order:0; } }

.dm-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0 clamp(20px,3vw,40px); }
@media (max-width:900px){ .dm-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .dm-grid{ grid-template-columns:1fr; } }
.dm-card{ display:grid; align-content:start; grid-template-columns:2.2rem 1fr; column-gap:.4rem; padding:20px 0; border-top:1px solid var(--line); }
.dm-card:hover h3{ text-decoration:underline; text-underline-offset:.2em; text-decoration-thickness:1px; }
.dm-n{ grid-row:span 2; font-weight:700; color:var(--brand); font-variant-numeric:tabular-nums; padding-top:.1rem; }
.dm-card h3{ font-size:1.08rem; margin:0 0 .25rem; }
.dm-card p{ font-size:.94rem; color:var(--muted); }
.dm-cta{ display:block; background:var(--forest); color:#fff; padding:20px; border-radius:var(--r); border-top:0; margin-top:14px; align-self:start; }
.dm-cta h3{ color:#fff; } .dm-cta p{ color:var(--forest-ink); }
.dm-cta .link-arrow{ margin-top:10px; color:#fff; text-decoration-color:rgba(255,255,255,.5); }

.plan{ background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:26px; display:flex; flex-direction:column; position:relative; }
.plan.hot{ border:2px solid var(--ink); }
.plan .ptag{ position:absolute; top:-12px; left:24px; background:var(--ink); color:#fff; font-size:.8rem; font-weight:600; padding:.15rem .6rem; border-radius:var(--r-xs); }
.plan .pp{ font-weight:800; font-size:2rem; letter-spacing:-.02em; margin:.4rem 0 .2rem; }
.plan .pp small{ font-size:.9rem; font-weight:500; color:var(--muted); }
.plan ul{ margin:16px 0 22px; display:flex; flex-direction:column; }
.plan ul li{ padding:.5rem 0; border-top:1px solid var(--line); font-size:.95rem; }

.sv-list{ display:flex; flex-direction:column; margin-top:18px; }
.sv-list li{ padding:.65rem 0; border-top:1px solid var(--line); font-size:1rem; color:var(--ink-2); }
.sv-list li:last-child{ border-bottom:1px solid var(--line); }

/* ==========================================================================
   Forfaits
   ========================================================================== */
.packs{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; align-items:stretch; }
@media (max-width:940px){ .packs{ grid-template-columns:1fr; max-width:480px; margin-inline:auto; } }
.pack{ position:relative; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:28px 26px; display:flex; flex-direction:column; }
.pack.featured{ border:2px solid var(--ink); }
.pack-flag{ position:absolute; top:-12px; left:24px; background:var(--ink); color:#fff; font-size:.8rem; font-weight:600; padding:.15rem .6rem; border-radius:var(--r-xs); }
.pack-head{ padding-bottom:18px; border-bottom:1px solid var(--line); }
.pack-head h2{ font-size:1.35rem; font-weight:800; letter-spacing:.01em; }
.pack-price{ display:flex; align-items:baseline; gap:.55rem; margin-top:.6rem; flex-wrap:wrap; }
.pack-price .new{ font-size:1.8rem; font-weight:800; letter-spacing:-.02em; }
.pack-price .old{ font-size:.95rem; color:var(--muted-2); text-decoration:line-through; }
.pack-valid{ font-size:.88rem; color:var(--muted); margin-top:.3rem; }
.pack-feats{ display:flex; flex-direction:column; padding:10px 0 22px; flex:1; }
.pack-feats li{ display:flex; align-items:baseline; gap:.5rem; padding:.55rem 0; border-bottom:1px solid var(--line); font-size:.94rem; color:var(--ink-2); }
.pack-feats li b{ color:var(--ink); min-width:1.4em; }
.pack-feats li.no{ color:var(--muted-2); text-decoration:line-through; text-decoration-color:var(--line-2); }
.pack-trial{ display:flex; justify-content:center; margin-top:12px; font-size:.92rem; }

/* ==========================================================================
   Accordéon (FAQ)
   ========================================================================== */
.acc{ border-top:1px solid var(--line); }
.acc-item{ border-bottom:1px solid var(--line); }
.acc-head{ width:100%; text-align:left; background:transparent; border:0; padding:20px 0; display:flex; align-items:center; justify-content:space-between; gap:16px; font-weight:600; font-size:1.06rem; color:var(--ink); }
.acc-head:hover{ color:var(--brand-deep); }
.acc-head .ico{ position:relative; width:14px; height:14px; flex:none; }
.acc-head .ico::before,.acc-head .ico::after{ content:""; position:absolute; left:0; right:0; top:6px; height:2px; background:currentColor; transition:transform .2s ease; }
.acc-head .ico::after{ transform:rotate(90deg); }
.acc-head[aria-expanded="true"] .ico::after{ transform:rotate(0); }
.acc-body{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .24s ease; }
.acc-body > div{ overflow:hidden; }
.acc-item.open .acc-body{ grid-template-rows:1fr; }
.acc-body p{ padding:0 0 22px; color:var(--muted); max-width:72ch; }

/* ==========================================================================
   Connexion / inscription
   ========================================================================== */
.auth{ min-height:calc(100vh - var(--header-h)); display:grid; grid-template-columns:1fr 1fr; }
@media (max-width:860px){ .auth{ grid-template-columns:1fr; } }
.auth-aside{ background:var(--ink); color:#fff; position:relative; overflow:hidden; display:flex; }
.auth-aside .auth-media{ position:absolute; inset:0; }
.auth-aside .auth-media img{ width:100%; height:100%; object-fit:cover; }
.auth-aside .auth-media::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(14,26,43,0) 40%,rgba(14,26,43,.8) 100%); }
.auth-aside .inner{ position:relative; z-index:2; padding:clamp(32px,5vw,64px); margin-top:auto; }
.auth-aside blockquote{ margin:0; font-weight:600; font-size:clamp(1.3rem,1.1rem+.8vw,1.75rem); line-height:1.3; letter-spacing:-.015em; max-width:26ch; }
.auth-aside cite{ display:block; margin-top:1rem; font-style:normal; color:#e3e3e7; font-size:.95rem; }
.auth-aside .badge-verified{ margin-bottom:1.2rem; }
@media (max-width:860px){ .auth-aside{ display:none; } }
.auth-form{ display:flex; align-items:center; justify-content:center; padding:clamp(28px,5vw,56px); }
.auth-form .box{ width:min(100%,420px); }
.role-pick{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.role-card{ border:1px solid var(--line-2); border-radius:var(--r); padding:16px; cursor:pointer; text-align:left; background:#fff; }
.role-card:hover{ border-color:var(--ink-3); }
.role-card[aria-pressed="true"]{ border:2px solid var(--ink); padding:15px; }
.role-card .t{ font-weight:700; font-size:1rem; }
.role-card .d{ font-size:.86rem; color:var(--muted); margin-top:.2rem; }

.stepper{ display:flex; gap:6px; margin-bottom:28px; }
.stepper .s{ flex:1; position:relative; padding-top:14px; font-size:.92rem; color:var(--muted); font-weight:600; }
.stepper .s::before{ content:""; position:absolute; top:0; left:0; right:0; height:3px; background:var(--line); }
.stepper .s.done::before,.stepper .s.active::before{ background:var(--ink); }
.stepper .s.active{ color:var(--ink); }

/* ==========================================================================
   Pages diverses : dépôt, contact, à propos, textes légaux
   ========================================================================== */
.deposer-layout{ grid-template-columns:1.6fr 1fr; }
@media (max-width:900px){ .deposer-layout{ grid-template-columns:1fr; } }
.step-n{ width:30px; height:30px; border-radius:50%; background:var(--ink); color:#fff; font-weight:700; font-size:.9rem; display:grid; place-items:center; flex:none; }
.gate-card{ max-width:600px; margin:0 auto 8px; }
.verified-card{ background:var(--mist); border-radius:var(--r-lg); }
.verified-head{ display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.verified-card .badge-brand{ margin-bottom:10px; }
.verified-card p{ font-size:.95rem; color:var(--ink-2); line-height:1.6; margin-bottom:12px; }

.contact-grid{ display:grid; grid-template-columns:1.3fr 1fr; gap:clamp(24px,4vw,56px); align-items:start; }
@media(max-width:860px){ .contact-grid{ grid-template-columns:1fr; } }
.info-line{ display:block; padding:16px 0; border-bottom:1px solid var(--line); }
.info-line:last-child{ border-bottom:0; }
.info-line .ico{ display:none; }
.map-embed{ position:relative; aspect-ratio:16/11; border-radius:var(--r-lg); overflow:hidden; }
.map-embed iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }

.team-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(18px,2vw,28px); }
@media (max-width:900px){ .team-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:420px){ .team-grid{ grid-template-columns:1fr; } }
.member{ margin:0; }
.mphoto{ width:100%; aspect-ratio:4/5; background:var(--mist-2); overflow:hidden; border-radius:var(--r); }
.mphoto img{ width:100%; height:100%; object-fit:cover; object-position:top center; }
.mphoto.na{ display:grid; place-items:center; background:var(--forest); }
.mphoto.na span{ color:#fff; font-weight:800; font-size:2.4rem; }
.member figcaption{ padding-top:12px; }
.member .n{ font-weight:700; font-size:1.06rem; }
.member .role{ font-size:.92rem; color:var(--muted); }

.values-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:0 clamp(20px,3vw,40px); }
@media (max-width:900px){ .values-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .values-grid{ grid-template-columns:1fr; } }
.value-card{ padding:22px 0; border-top:2px solid var(--ink); }
.vnum{ display:none; }
.value-card h3{ font-size:1.15rem; margin:0 0 .45rem; }
.value-card p{ color:var(--muted); font-size:.95rem; line-height:1.6; }

.legal h2{ font-size:1.25rem; font-weight:700; margin:2rem 0 .7rem; }
.legal h2:first-child{ margin-top:0; }
.legal p{ color:var(--ink-2); line-height:1.75; margin-bottom:.9rem; max-width:72ch; }
.legal ul{ margin:0 0 1rem 1.1rem; list-style:disc; display:flex; flex-direction:column; gap:.4rem; }
.legal ul li{ color:var(--ink-2); padding-left:.2rem; }
.legal ul li::marker{ color:var(--muted-2); }

/* Blocs réassurance génériques */
.assur{ display:grid; grid-template-columns:repeat(4,1fr); gap:0 28px; }
@media (max-width:820px){ .assur{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:480px){ .assur{ grid-template-columns:1fr; } }
.assur-item{ padding:16px 0; border-top:1px solid var(--line); }
.assur-item .t{ font-weight:700; }
.assur-item .d{ font-size:.92rem; color:var(--muted); margin-top:.2rem; }

.trust{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,3vw,40px); }
@media (max-width:760px){ .trust{ grid-template-columns:1fr; } }
.trust-item{ padding-top:16px; border-top:1px solid rgba(255,255,255,.25); }
.trust-item h3{ color:#fff; font-size:1.12rem; margin-bottom:.35rem; }
.trust-item p{ color:#e3e3e7; font-size:.95rem; }

.svc{ padding:22px 0; border-top:2px solid var(--ink); display:flex; flex-direction:column; gap:.6rem; height:100%; }
.svc h3{ font-size:1.2rem; }
.svc p{ color:var(--muted); }
.svc ul li{ padding:.35rem 0; font-size:.95rem; }

/* Panneau blanc générique (formulaires publics) */
.panel{ background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); }
.panel-pad{ padding:clamp(18px,2.4vw,28px); }
body[data-page="home"] .footer-cta{ display:none; }

/* En-tête de fiche annonce : titre simple, la galerie fait office de bannière */
.detail-head{ padding-top:clamp(26px,3vw,40px); }
.detail-h1{ margin-top:.7rem; font-size:clamp(1.7rem,1.25rem+1.6vw,2.5rem); font-weight:700; letter-spacing:-.022em; line-height:1.1; }
.page-hero .crumbs{ margin-bottom:1rem; }
/* Annonce vedette : informations centrées verticalement, bandeau du bas collé en bas */
@media (min-width:761px){
  .pcard-feature .loc{ margin-top:auto; }
  .pcard-feature .price{ margin-top:0; padding-top:.9rem; }
  .pcard-feature .meta{ margin-top:auto; }
  .pcard-feature .title{ font-size:1.45rem; }
}

/* Annonce vedette : description */
.pcard .desc{ color:var(--muted); font-size:.93rem; line-height:1.6; margin-top:.6rem; display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden; }

/* Services : carrousel avec boutons de navigation */
.car-nav{ display:flex; align-items:center; gap:10px; flex:none; }
.car-nav .link-arrow{ margin-right:10px; }
.car-btn{ width:46px; height:46px; border-radius:50%; border:1px solid var(--line-2); background:#fff; color:var(--ink); display:grid; place-items:center; font-size:1rem; transition:background .15s, border-color .15s, color .15s; }
.car-btn:hover:not(:disabled){ background:var(--ink); border-color:var(--ink); color:#fff; }
.car-btn:disabled{ opacity:.35; cursor:default; }
.svc-track{ display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - 2*24px)/3); column-gap:24px;
  overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; scrollbar-width:none; padding-bottom:4px; }
.svc-track::-webkit-scrollbar{ display:none; }
.svc-track .svc-card{ scroll-snap-align:start; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; padding-bottom:20px; }
.svc-track .svc-card .svc-media{ border-radius:0; margin-bottom:16px; }
.svc-track .svc-card h3,.svc-track .svc-card p{ padding-inline:20px; }
@media (max-width:900px){ .svc-track{ grid-auto-columns:calc((100% - 20px)/2); column-gap:20px; } }
@media (max-width:600px){ .svc-track{ grid-auto-columns:82%; column-gap:14px; } .car-nav .link-arrow{ display:none; } }

/* Partenaires : défilement continu */
.partners{ text-align:left; overflow:hidden; }
.partners-head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:clamp(22px,3vw,36px); }
.marquee{ position:relative; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent); }
.marquee-track{ display:flex; gap:20px; width:max-content; animation:marquee 32s linear infinite; }
.marquee:hover .marquee-track{ animation-play-state:paused; }
@keyframes marquee{ to{ transform:translateX(calc(-50% - 10px)); } }
.partner{ flex:none; width:220px; height:112px; display:grid; place-items:center; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:18px 26px; }
.partner img{ max-width:100%; max-height:70px; width:auto; height:auto; object-fit:contain; }
.partner a{ display:grid; place-items:center; width:100%; height:100%; }
.partner:has(a):hover{ border-color:var(--ink); }
@media (prefers-reduced-motion: reduce){ .marquee-track{ animation:none; flex-wrap:wrap; width:auto; } .marquee{ -webkit-mask-image:none; mask-image:none; } .partner[aria-hidden="true"]{ display:none; } }

/* ---------- V2 : pages de signature, inscription agence, mentions ---------- */
.hp-field{ position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }
.alert-box{ border-radius:12px; padding:12px 14px; font-size:.9rem; line-height:1.5; margin-bottom:1rem; display:flex; gap:.6rem; align-items:flex-start; }
.alert-box.warn{ background:var(--warn-tint); color:#6b4a0e; } .alert-box.info{ background:var(--info-tint); color:#23385c; } .alert-box.bad{ background:var(--danger-tint); color:#7a2317; } .alert-box.ok{ background:var(--ok-tint); color:#1d5b3b; }
.alert-box i{ margin-top:3px; }
.otp{ display:flex; gap:8px; }
.otp input{ width:48px; height:56px; text-align:center; font-size:1.4rem; font-weight:700; border:1.5px solid var(--line-2); border-radius:12px; font-family:inherit; }
.otp input:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.sign-shell{ max-width:820px; margin:0 auto; padding:40px 20px 80px; }
.sign-steps{ display:flex; gap:6px; margin:18px 0 22px; }
.sign-steps li{ flex:1; font-size:.8rem; font-weight:600; color:var(--muted); border-top:3px solid var(--line); padding-top:8px; }
.sign-steps li.done{ border-color:var(--ok); color:var(--ink); } .sign-steps li.active{ border-color:var(--brand); color:var(--brand-deep); }
.sign-card{ background:#fff; border:1px solid var(--line); border-radius:18px; padding:26px; box-shadow:var(--sh-1); }
.kv2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 20px; }
.kv2 div span{ display:block; font-size:.78rem; color:var(--muted); } .kv2 div b{ font-size:.95rem; }
@media (max-width:560px){ .kv2{ grid-template-columns:1fr; } .sign-card{ padding:18px; } .otp input{ width:40px; height:50px; } }

.slot-pick{ display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:8px; max-height:220px; overflow:auto; }
.file-row{ display:flex; align-items:center; gap:10px; border:1px solid var(--line); border-radius:10px; padding:8px 12px; font-size:.86rem; }
.file-row b{ flex:1; font-weight:600; } .file-row .ok{ color:var(--ok); } .file-row small{ color:var(--muted); }
.legal-body h2{ font-size:1.2rem; margin:1.8rem 0 .6rem; } .legal-body p, .legal-body li{ color:var(--ink-2); line-height:1.75; } .legal-body ul{ list-style:disc; padding-left:1.3rem; }
.legal-body .todo{ background:var(--warn-tint); border-radius:4px; padding:0 4px; }
.pw-list{ display:grid; grid-template-columns:1fr 1fr; gap:3px 12px; font-size:.8rem; color:var(--muted); margin-top:8px; }
.pw-list li.ok{ color:var(--ok); }

/* ---------- V2.1 : formulaires, services, annonces, choix de l'agent ---------- */
.field.has-error .input, .field.has-error .select, .field.has-error .textarea{ border-color:var(--danger); box-shadow:0 0 0 3px var(--danger-tint); }
.modal-lbl{ display:flex; align-items:baseline; gap:.5rem; font-weight:600; font-size:.95rem; margin-bottom:.7rem; }
.modal-lbl small{ font-weight:500; color:var(--muted); font-size:.8rem; }
.agent-pick{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; }
.agent-opt{ position:relative; display:flex; align-items:center; gap:12px; border:1px solid var(--line-2); border-radius:14px; padding:10px 12px; cursor:pointer; background:#fff; transition:border-color .15s, box-shadow .15s; }
.agent-opt:hover{ border-color:var(--ink-3); }
.agent-opt:has(input:checked){ border-color:var(--brand); box-shadow:0 0 0 1px var(--brand); }
.agent-opt:has(input:focus-visible){ outline:2px solid var(--brand); outline-offset:2px; }
.agent-opt input{ position:absolute; opacity:0; pointer-events:none; }
.agent-av{ width:48px; height:48px; border-radius:50%; background:var(--sand-2); color:var(--ink-2); display:grid; place-items:center; font-weight:700; font-size:.9rem; overflow:hidden; flex:none; }
.agent-av img{ width:100%; height:100%; object-fit:cover; object-position:center 20%; }
.agent-any{ background:var(--sand); color:var(--ink-3); font-size:1rem; }
.agent-txt b{ display:block; font-size:.9rem; font-weight:600; line-height:1.3; }
.agent-txt small{ display:block; color:var(--muted); font-size:.78rem; margin-top:2px; }
.slot-pick .slot{ font-family:inherit; }

.pager{ display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-top:36px; font-size:.9rem; }
.pager [disabled]{ opacity:.45; pointer-events:none; }
.empty-results{ grid-column:1/-1; text-align:center; padding:56px 20px; border:1px dashed var(--line-2); border-radius:16px; }
.empty-results h3{ font-size:1.1rem; margin-bottom:.4rem; } .empty-results p{ color:var(--muted); margin-bottom:1rem; }
.map-view{ display:grid; grid-template-columns:340px minmax(0,1fr); gap:16px; height:620px; }
.map-view-list{ overflow:auto; display:grid; gap:10px; align-content:start; padding-right:4px; }
.map-view-map{ border-radius:16px; overflow:hidden; border:1px solid var(--line); background:var(--sand-2); }
.map-item{ display:grid; grid-template-columns:88px minmax(0,1fr); gap:12px; padding:10px; border:1px solid var(--line); border-radius:14px; background:#fff; cursor:pointer; transition:border-color .15s; }
.map-item.on{ border-color:var(--ink); }
.map-item img{ width:88px; height:72px; object-fit:cover; border-radius:10px; background:var(--sand-2); }
.map-item b{ display:block; font-size:.9rem; font-weight:600; line-height:1.3; }
.map-item small{ display:block; color:var(--muted); font-size:.8rem; margin-top:2px; }
.map-item em{ display:block; font-style:normal; font-weight:700; font-size:.9rem; margin-top:4px; }
.map-item a{ display:inline-block; font-size:.8rem; font-weight:600; color:var(--brand-deep); margin-top:4px; }
@media (max-width:900px){ .map-view{ grid-template-columns:1fr; height:auto; } .map-view-map{ height:360px; order:-1; } }

/* ---------- Dépôt d'annonce : forfait, compte, annonce ---------- */
.dp-stepper{ max-width:760px; margin:0 auto 40px; }
.dp-note{ margin-top:22px; }
.dp-account{ max-width:880px; margin:0 auto; }
.dp-sel{ display:flex; align-items:center; gap:14px; font-size:.92rem; font-weight:600; }
.dp-sel span{ padding:.4rem .8rem; border-radius:var(--r-pill); background:var(--sand); }
.dp-panel{ padding:0; overflow:hidden; }
.dp-row{ padding:24px 28px; border-bottom:1px solid var(--line); }
.dp-label{ display:block; font-size:.9rem; font-weight:600; margin-bottom:12px; }
.dp-mode{ max-width:520px; }
.dp-mode button{ height:44px; }
.dp-account .role-pick{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.dp-foot{ display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 28px; background:var(--mist, #fafaf9); }
.dp-foot p{ font-size:.88rem; max-width:52ch; }
.dp-foot .btn{ flex:none; }
.dp-recap{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:20px; }
.pack .pack-trial{ width:100%; }
button.link-arrow{ background:none; border:0; padding:0; font:inherit; font-weight:600; cursor:pointer; color:inherit; }
@media (max-width:760px){ .dp-account .role-pick{ grid-template-columns:1fr; } .dp-row, .dp-foot{ padding:18px; } .dp-foot{ flex-direction:column; align-items:stretch; } .dp-foot .btn{ width:100%; } }

/* Carte d'annonce : lien étendu sur le titre, le bouton favori reste un bouton distinct (HTML valide) */
.pcard{ position:relative; }
.pcard-link{ color:inherit; }
.pcard-link::after{ content:""; position:absolute; inset:0; z-index:1; border-radius:inherit; }
.pcard-link:focus-visible{ outline:none; }
.pcard:has(.pcard-link:focus-visible){ outline:2px solid var(--brand); outline-offset:2px; }
.pcard .title{ display:block; }
@media (max-width:560px){ .dp-mode{ flex-direction:column; height:auto; } .dp-mode button{ width:100%; } }
@media (max-width:560px){ .dp-mode{ width:100%; max-width:none; } }

/* ==========================================================================
   Recherche avancée (revue front-office du 09/10/2026)
   ========================================================================== */
.filters{ max-height:calc(100vh - var(--header-h) - 40px); overflow:auto; overscroll-behavior:contain; padding-right:6px; scrollbar-width:thin; }
@media (max-width:960px){ .filters{ max-height:none; } }
.filters .hint{ font-size:.8rem; color:var(--ink-3); margin-top:.45rem; line-height:1.45; }
.filters .select{ height:44px; }
.filters .range-row .input{ height:42px; }
.affix-sm{ position:relative; }
.affix-sm .input{ padding-right:3rem; }
.affix-sm > span{ position:absolute; right:.7rem; top:50%; transform:translateY(-50%); font-size:.76rem; color:var(--ink-3); pointer-events:none; }
.budget-chips .tag-choice{ font-size:.84rem; padding:.35rem .6rem; }
.checks-scroll{ max-height:190px; overflow:auto; display:grid; gap:8px; padding-right:4px; scrollbar-width:thin; }
.filters-actions{ position:sticky; bottom:0; display:flex; gap:8px; padding:14px 0 6px; background:linear-gradient(to bottom, rgba(255,255,255,0), #fff 30%); }

/* Bouton et panneau « Avancé » */
.adv-block{ padding-block:10px; }
.adv-toggle{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:.75rem .9rem; border:1px solid var(--line-2); border-radius:var(--r-sm); background:var(--mist); font-weight:700; color:var(--ink); }
.adv-toggle:hover{ border-color:var(--ink); }
.adv-toggle i:first-child{ margin-right:.45rem; color:var(--brand); }
.adv-toggle[aria-expanded="true"]{ background:#fff; border-color:var(--ink); }
.adv-chev{ transition:transform .2s ease; font-size:.8rem; }
.adv-toggle[aria-expanded="true"] .adv-chev{ transform:rotate(180deg); }
.adv-n{ display:inline-grid; place-items:center; min-width:22px; height:22px; padding:0 6px; margin-left:.35rem; border-radius:var(--r-pill); background:var(--brand); color:#fff; font-size:.75rem; }
.adv-panel{ padding-top:6px; }
.adv-sec{ padding-block:14px; border-bottom:1px dashed var(--line); }
.adv-sec:last-child{ border-bottom:0; }
.adv-sec > .lbl{ margin-bottom:.6rem; }

/* Pastilles à cocher */
.chip-checks{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.chip-break{ flex-basis:100%; height:0; }
.chip-check{ position:relative; display:inline-flex; cursor:pointer; }
.chip-check input{ position:absolute; opacity:0; width:1px; height:1px; }
.chip-check span{ display:inline-flex; align-items:center; gap:.4rem; padding:.36rem .65rem; border:1px solid var(--line-2); border-radius:var(--r-sm); background:#fff; font-size:.85rem; color:var(--ink-2); line-height:1.25; transition:background .12s ease, border-color .12s ease; }
.chip-check span i{ color:var(--ink-3); font-size:.82rem; }
.chip-check:hover span{ border-color:var(--ink); }
.chip-check input:checked + span{ background:var(--ink); border-color:var(--ink); color:#fff; }
.chip-check input:checked + span i{ color:#fff; }
.chip-check input:focus-visible + span{ outline:2px solid var(--brand); outline-offset:2px; }
.input.input-sm{ height:34px; width:auto; padding:0 .55rem; font-size:.85rem; }

/* Quartiers multiples */
.tags-input{ display:grid; gap:8px; }
.tags-list{ display:flex; flex-wrap:wrap; gap:6px; }
.tags-list:empty{ display:none; }
.tag-pill{ display:inline-flex; align-items:center; gap:.3rem; padding:.28rem .3rem .28rem .65rem; border-radius:var(--r-pill); background:var(--brand-tint); color:var(--brand-ink); font-size:.85rem; font-weight:600; }
.tag-pill button{ display:inline-grid; place-items:center; width:22px; height:22px; border:0; border-radius:50%; background:transparent; color:inherit; }
.tag-pill button:hover{ background:var(--brand-tint2); }
.tags-input .input{ height:42px; }

/* Filtres actifs au-dessus des résultats */
.active-filters{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:-8px 0 22px; }
.af-pill{ display:inline-flex; align-items:center; gap:.45rem; padding:.34rem .7rem; border:1px solid var(--line-2); border-radius:var(--r-pill); font-size:.85rem; font-weight:600; color:var(--ink-2); background:#fff; }
.af-pill i{ font-size:.75rem; color:var(--ink-3); }
.af-pill:hover{ border-color:var(--brand); color:var(--brand-deep); }
.af-pill:hover i{ color:var(--brand); }
.af-clear{ font-size:.85rem; font-weight:600; color:var(--ink-3); text-decoration:underline; text-underline-offset:.25em; margin-left:4px; }

/* Carte commerciale (services ImmoDem après une action) */
.upsell{ display:grid; grid-template-columns:auto 1fr; gap:18px; align-items:start; margin-top:32px; padding:22px 24px; border-radius:var(--r-lg); background:linear-gradient(120deg, var(--brand-tint) 0%, #fff 75%); border:1px solid var(--brand-tint2); }
.upsell-ico{ display:grid; place-items:center; width:48px; height:48px; border-radius:12px; background:var(--brand); color:#fff; font-size:1.2rem; box-shadow:0 10px 22px -12px rgba(224,85,26,.8); }
.upsell-kicker{ display:block; font-size:.72rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--brand-deep); margin-bottom:2px; }
.upsell-body b{ display:block; font-size:1.05rem; color:var(--ink); }
.upsell-body p{ margin:.35rem 0 0; color:var(--ink-2); font-size:.92rem; line-height:1.55; max-width:62ch; }
.upsell-cta{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
@media (max-width:560px){ .upsell{ grid-template-columns:1fr; } }

/* Accueil : tranche de budget */
.search-budget select{ width:100%; }

/* Fiche annonce : caractéristiques cochées */
.feat-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px 2rem; list-style:none; padding:0; }
.feat-list li{ display:flex; align-items:center; gap:.7rem; padding:.55rem 0; border-bottom:1px solid var(--line); font-size:.96rem; }
.feat-list li i{ width:30px; height:30px; flex:none; display:grid; place-items:center; border-radius:8px; background:var(--mist); color:var(--ink-2); font-size:.85rem; }
.price-m2{ display:block; font-size:.85rem; font-weight:600; color:var(--ink-3); margin-top:2px; }
.alert-box + .upsell{ margin:0 0 24px; }

/* Galerie de la fiche annonce : disposition selon le nombre de photos (jamais de photo répétée) */
.gallery .g-main{ position:relative; }
.gallery .g-main .gallery-more{ position:absolute; right:12px; bottom:12px; z-index:3; }
.gallery .g-plus{ position:absolute; inset:0; z-index:2; display:grid; place-items:center; background:rgba(14,26,43,.55); color:#fff; font-size:1.6rem; font-weight:700; pointer-events:none; }
.gallery.g-n1{ grid-template-columns:1fr; }
.gallery.g-n1 .g-main{ grid-row:auto; }
.gallery.g-n1 .g-main .ph{ aspect-ratio:16/8; height:auto; max-height:560px; }
.gallery.g-n2{ grid-template-columns:1fr 1fr; }
.gallery.g-n2 .g-main{ grid-row:auto; }
.gallery.g-n2 .g-main .ph, .gallery.g-n2 > .ph{ aspect-ratio:4/3; height:auto; }
.gallery.g-n3{ grid-template-columns:2fr 1fr; }
.gallery.g-n4{ grid-template-columns:2fr 1fr 1fr; }
.gallery.g-n4 > .ph:last-child{ grid-column:2 / span 2; aspect-ratio:auto; }
@media (max-width:760px){
  .gallery.g-n1, .gallery.g-n2, .gallery.g-n3, .gallery.g-n4{ grid-template-columns:1fr 1fr; }
  .gallery.g-n1 .g-main, .gallery.g-n3 .g-main, .gallery.g-n4 .g-main{ grid-column:1 / -1; }
  .gallery.g-n2 .g-main{ grid-column:auto; }
  .gallery.g-n4 > .ph:last-child{ grid-column:auto; }
}
.mapbox[data-map]{ position:relative; z-index:0; }

/* Sous-rubriques des équipements et du confort (filtres, dépôt d'annonce, fiche) */
.sub-lbl{ display:block; font-size:.78rem; font-weight:600; letter-spacing:.02em; color:var(--muted); margin:12px 0 6px; }
.sub-lbl:first-of-type{ margin-top:4px; }

/* Demande de devis (page Contact) : détail des prestations sous la liste */
.devis-tbl{ width:100%; border-collapse:collapse; font-size:.9rem; border:1px solid var(--line); border-radius:var(--r); overflow:hidden; }
.devis-tbl th{ text-align:left; font-size:.78rem; font-weight:600; color:var(--muted); background:var(--sand, #f6f2ec); padding:8px 12px; }
.devis-tbl td{ padding:10px 12px; border-top:1px solid var(--line); vertical-align:top; }
.devis-tbl td:first-child{ font-weight:600; white-space:nowrap; }
.devis-tbl tr[data-pre]{ cursor:pointer; }
.devis-tbl tr[data-pre]:hover td{ background:#fbfaf7; }
.devis-tbl tr.is-sel td{ background:#fff4ec; }
.devis-tbl tr.is-sel td:first-child{ box-shadow:inset 3px 0 0 var(--brand); }
@media (max-width:640px){ .devis-tbl td:first-child{ white-space:normal; } }

/* Disponibilité du bien : réservé, loué, vendu */
.pcard .avail-tag{ position:absolute; right:12px; bottom:12px; z-index:2; padding:.25rem .65rem; border-radius:var(--r-xs); font-size:.78rem; font-weight:700; letter-spacing:.02em; text-transform:uppercase; background:#b7791f; color:#fff; }
.pcard .avail-tag.is-3, .pcard .avail-tag.is-4{ background:var(--ink); }
.avail-chip{ display:inline-flex; align-items:center; padding:.3rem .75rem; border-radius:999px; font-size:.85rem; font-weight:700; background:var(--warn-tint); color:#6b4a0e; }
.avail-chip.is-3, .avail-chip.is-4{ background:var(--ink); color:#fff; }
.avail-banner{ display:flex; align-items:center; gap:.8rem; flex-wrap:wrap; padding:14px 16px; margin-bottom:18px; border-radius:12px; background:var(--info-tint); color:#23385c; font-size:.95rem; line-height:1.5; }
.avail-banner > div{ flex:1 1 320px; }
.avail-banner.is-2{ background:var(--warn-tint); color:#6b4a0e; }
.avail-note{ margin:0 0 4px; font-size:.92rem; color:var(--muted); }
.pcard.is-gone .ph img{ filter:grayscale(.55); opacity:.85; }
