    body { overflow: hidden; height: 100vh; }
    .map-page {
      height: calc(100vh - var(--header-h));
      display: grid;
      grid-template-columns: 460px 1fr;
    }
    .map-list {
      background: var(--bg);
      border-right: 1px solid var(--border-soft);
      overflow-y: auto;
      padding: 22px 22px 40px;
    }
    [data-theme="dark"] .map-list { background: var(--bg); border-color: var(--border); }

    /* ============= MODE DE RECHERCHE GÉOGRAPHIQUE ============= */
    .loc-modes {
      background:
        radial-gradient(circle at 0% 100%, rgba(244,163,0,.10), transparent 60%),
        radial-gradient(circle at 100% 0%, rgba(231,111,81,.12), transparent 50%),
        var(--surface);
      border: 1px solid var(--border-soft);
      border-radius: 18px;
      padding: 6px;
      margin-bottom: 16px;
      box-shadow: 0 4px 14px -8px rgba(27,67,50,.18);
    }
    [data-theme="dark"] .loc-modes { background: var(--surface); border-color: var(--border); }

    .lm-tabs {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 4px;
      background: var(--bg-cream);
      border-radius: 14px;
      padding: 4px;
    }
    [data-theme="dark"] .lm-tabs { background: var(--bg-cream); }

    .lm-tab {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 4px;
      padding: 12px 8px 10px;
      border-radius: 11px;
      background: transparent;
      color: var(--text-soft);
      cursor: pointer;
      transition: background-color var(--t), color var(--t), box-shadow var(--t);
      text-align: center;
    }
    .lm-tab:hover { background: rgba(0,0,0,.03); color: var(--text); }
    [data-theme="dark"] .lm-tab:hover { background: rgba(255,255,255,.04); }
    .lm-tab.active {
      background: linear-gradient(135deg, var(--terra) 0%, var(--terra-dark) 100%);
      color: white;
      box-shadow: 0 6px 16px -4px rgba(231,111,81,.45);
    }
    .lm-tab .lm-ic {
      width: 30px; height: 30px;
      display: grid;
      place-items: center;
      border-radius: 50%;
      background: var(--bg-sand);
      color: var(--terra);
      font-size: 0.86rem;
      transition: background-color var(--t), color var(--t);
    }
    [data-theme="dark"] .lm-tab .lm-ic { background: rgba(255,255,255,.06); }
    .lm-tab.active .lm-ic { background: rgba(255,255,255,.20); color: white; }
    .lm-tab .lm-lbl {
      font-weight: 700;
      font-size: 0.78rem;
      letter-spacing: -0.005em;
    }
    .lm-tab .lm-sub {
      font-size: 0.62rem;
      font-weight: 600;
      opacity: .7;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .lm-detail {
      padding: 16px 14px 12px;
      animation: lmFadeIn .25s ease;
    }
    @keyframes lmFadeIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

    /* D2 W3 — Aide visible quand le mode "Point sur carte" est actif */
    .lm-mode-help {
      display: flex;
      align-items: flex-start;
      gap: 8px;
      margin: 0 14px;
      padding: 10px 12px;
      font-size: 0.82rem;
      line-height: 1.4;
      color: var(--forest);
      background: rgba(244, 163, 0, 0.10);
      border: 1px solid rgba(244, 163, 0, 0.30);
      border-radius: var(--r-sm);
      animation: lmFadeIn .25s ease;
    }
    .lm-mode-help i {
      color: var(--gold);
      margin-top: 2px;
      flex-shrink: 0;
    }
    [data-theme="dark"] .lm-mode-help { color: var(--text); }

    .lm-status {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 10px 12px;
      background: var(--bg-cream);
      border: 1px solid var(--border-soft);
      border-radius: 12px;
      font-size: 0.84rem;
      color: var(--text);
      margin-bottom: 14px;
      font-weight: 500;
    }
    [data-theme="dark"] .lm-status { background: var(--bg-cream); border-color: var(--border); }
    .lm-status .ic {
      width: 26px; height: 26px;
      border-radius: 50%;
      display: grid;
      place-items: center;
      flex-shrink: 0;
      font-size: 0.74rem;
    }
    .lm-status.ok .ic { background: rgba(45,106,79,.18); color: var(--success); }
    .lm-status.wait .ic { background: rgba(244,163,0,.18); color: var(--gold); animation: spin 1s linear infinite; }
    .lm-status.err .ic { background: rgba(193,63,46,.18); color: var(--danger); }
    .lm-status.info .ic { background: var(--terra-soft); color: var(--terra); }
    .lm-status.warn .ic { background: rgba(244,163,0,.20); color: var(--gold); }
    @keyframes spin { to { transform: rotate(360deg); } }
    .lm-status .meta { flex: 1; min-width: 0; line-height: 1.3; }
    .lm-status .title { font-weight: 700; font-size: 0.86rem; color: var(--text); }
    .lm-status .desc { font-size: 0.76rem; color: var(--text-soft); margin-top: 2px; }

    .lm-radius { margin-bottom: 12px; }
    .lm-radius-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 6px;
    }
    .lm-radius-lbl {
      font-size: 0.74rem;
      font-weight: 700;
      color: var(--text-soft);
      text-transform: uppercase;
      letter-spacing: 0.04em;
      display: inline-flex;
      align-items: center;
      gap: 6px;
    }
    .lm-radius-lbl i { color: var(--terra); font-size: 0.72rem; }
    .lm-radius-val {
      font-family: 'Fraunces', serif;
      font-weight: 700;
      font-size: 1.05rem;
      color: var(--terra);
      letter-spacing: -0.01em;
    }
    #lmRadiusInput {
      width: 100%;
      height: 6px;
      -webkit-appearance: none;
      appearance: none;
      background: linear-gradient(90deg, var(--terra) 0%, var(--terra) var(--fill, 10%), var(--bg-sand) var(--fill, 10%));
      border-radius: var(--r-full);
      outline: none;
      cursor: pointer;
    }
    [data-theme="dark"] #lmRadiusInput {
      background: linear-gradient(90deg, var(--terra) 0%, var(--terra) var(--fill, 10%), rgba(255,255,255,.08) var(--fill, 10%));
    }
    #lmRadiusInput::-webkit-slider-thumb {
      -webkit-appearance: none;
      appearance: none;
      width: 22px; height: 22px;
      background: white;
      border-radius: 50%;
      border: 3px solid var(--terra);
      box-shadow: 0 4px 10px rgba(231,111,81,.45);
      cursor: grab;
      transition: transform var(--t);
    }
    #lmRadiusInput::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.15); }
    #lmRadiusInput::-moz-range-thumb {
      width: 22px; height: 22px;
      background: white;
      border-radius: 50%;
      border: 3px solid var(--terra);
      box-shadow: 0 4px 10px rgba(231,111,81,.45);
      cursor: grab;
    }
    .lm-radius-ticks {
      display: flex;
      justify-content: space-between;
      font-size: 0.66rem;
      color: var(--text-mute);
      font-weight: 600;
      margin-top: 6px;
      padding: 0 4px;
    }

    .lm-actions {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-top: 12px;
    }
    .lm-action-btn {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      padding: 9px 14px;
      border-radius: var(--r-full);
      border: 1.5px solid var(--border);
      background: var(--surface);
      color: var(--text);
      font-weight: 600;
      font-size: 0.82rem;
      cursor: pointer;
      transition: background-color var(--t), border-color var(--t), color var(--t), box-shadow var(--t), transform var(--t);
      flex: 1;
      justify-content: center;
    }
    [data-theme="dark"] .lm-action-btn { background: var(--bg-cream); border-color: var(--border); }
    .lm-action-btn:hover { border-color: var(--terra); color: var(--terra); }
    .lm-action-btn.primary { background: var(--terra); color: white; border-color: var(--terra); }
    .lm-action-btn.primary:hover { background: var(--terra-dark); border-color: var(--terra-dark); color: white; transform: translateY(-1px); box-shadow: 0 6px 14px -4px rgba(231,111,81,.45); }

    /* Pin "centre de recherche" sur la carte */
    .map-center-pin {
      width: 44px; height: 44px;
      border-radius: 50%;
      background: linear-gradient(135deg, var(--terra) 0%, var(--terra-dark) 100%);
      color: white;
      display: grid;
      place-items: center;
      font-size: 1rem;
      box-shadow: 0 8px 24px -4px rgba(231,111,81,.55), 0 0 0 4px rgba(231,111,81,.20);
      transform: translate(-50%, -50%);
      position: relative;
      animation: centerPulse 2.4s ease-in-out infinite;
    }
    .map-center-pin::after {
      content: '';
      position: absolute;
      inset: -8px;
      border-radius: 50%;
      border: 2px solid var(--terra);
      opacity: .35;
      animation: centerRing 2.4s ease-out infinite;
    }
    @keyframes centerPulse { 0%, 100% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-50%, -50%) scale(1.06); } }
    @keyframes centerRing { 0% { transform: scale(.8); opacity: .5; } 100% { transform: scale(1.6); opacity: 0; } }

    .map-me-pin {
      width: 18px; height: 18px;
      border-radius: 50%;
      background: #2563EB;
      border: 3px solid white;
      box-shadow: 0 0 0 4px rgba(37,99,235,.25), 0 4px 10px rgba(37,99,235,.40);
      transform: translate(-50%, -50%);
      animation: mePulse 2s ease-in-out infinite;
    }
    @keyframes mePulse { 0%, 100% { box-shadow: 0 0 0 4px rgba(37,99,235,.25), 0 4px 10px rgba(37,99,235,.40); } 50% { box-shadow: 0 0 0 10px rgba(37,99,235,.10), 0 4px 10px rgba(37,99,235,.40); } }

    /* Mode "placer un point" : curseur crosshair sur la carte */
    .map-page.is-placing #map { cursor: crosshair; }
    .map-page.is-placing .fooy-dot { pointer-events: none; opacity: .5; }

    /* Distance affichée sur les mini-cards en mode "around" */
    .mini-distance {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      font-size: 0.7rem;
      font-weight: 700;
      color: var(--terra);
      background: var(--terra-soft);
      padding: 2px 8px;
      border-radius: var(--r-full);
      margin-top: 4px;
    }
    [data-theme="dark"] .mini-distance { background: rgba(231,111,81,.16); }

    /* ===== Search bar ===== */
    .map-search {
      display: flex;
      align-items: center;
      gap: 10px;
      border: 1.5px solid var(--border);
      border-radius: var(--r-full);
      padding: 11px 18px;
      width: 100%;
      background: var(--surface);
      transition: border-color var(--t), box-shadow var(--t);
    }
    [data-theme="dark"] .map-search { background: var(--surface); border-color: var(--border); }
    .map-search:focus-within {
      border-color: var(--terra);
      box-shadow: 0 0 0 4px rgba(231,111,81,.10);
    }
    .map-search i { color: var(--terra); }
    .map-search input {
      flex: 1;
      border: none;
      outline: none;
      background: transparent;
      font-size: 0.92rem;
      color: var(--text);
    }
    .map-search input::placeholder { color: var(--text-mute); }

    /* ===== Filtres chips ===== */
    .map-controls {
      display: flex;
      gap: 6px;
      flex-wrap: wrap;
      margin-top: 14px;
    }
    .map-chip {
      padding: 8px 14px;
      border: 1.5px solid var(--border);
      border-radius: var(--r-full);
      background: var(--surface);
      font-size: 0.84rem;
      font-weight: 600;
      color: var(--text);
      cursor: pointer;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      transition: background-color var(--t), color var(--t), border-color var(--t), transform var(--t);
    }
    [data-theme="dark"] .map-chip { background: var(--surface); border-color: var(--border); }
    .map-chip i { font-size: .76rem; color: var(--terra); }
    .map-chip:hover { border-color: var(--terra); transform: translateY(-1px); }
    .map-chip.active {
      background: var(--forest);
      color: var(--cream);
      border-color: var(--forest);
    }
    .map-chip.active i { color: var(--gold); }
    [data-theme="dark"] .map-chip.active { background: #1F4F37; border-color: #1F4F37; }

    /* ===== Bandeau infos résultats ===== */
    .map-info-bar {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin: 18px 0 12px;
      gap: 12px;
      flex-wrap: wrap;
    }
    .map-info {
      font-size: 0.95rem;
      color: var(--text);
      font-weight: 700;
    }
    .map-info strong { color: var(--terra); }
    .map-info span { color: var(--text-soft); font-weight: 500; margin-left: 4px; }
    .map-sort select {
      padding: 7px 28px 7px 12px;
      border: 1.5px solid var(--border);
      border-radius: var(--r-full);
      background: var(--bg-cream) url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='%235A615C' stroke-width='1.5' stroke-linecap='round' fill='none' d='M4 6l4 4 4-4'/%3e%3c/svg%3e") no-repeat right 8px center / 12px;
      color: var(--text);
      font-weight: 600;
      font-size: 0.82rem;
      outline: none;
    }
    .map-sort select:focus { border-color: var(--terra); }

    /* ===== Mini-card ===== */
    .mini-card {
      display: grid;
      grid-template-columns: 130px 1fr;
      gap: 14px;
      padding: 12px;
      border-radius: var(--r);
      border: 1px solid transparent;
      cursor: pointer;
      margin-bottom: 10px;
      transition: background-color var(--t), border-color var(--t), box-shadow var(--t), transform var(--t);
      position: relative;
    }
    .mini-card:hover {
      background: var(--surface);
      border-color: var(--border-soft);
      transform: translateY(-2px);
      box-shadow: 0 12px 28px -16px rgba(27,67,50,.18);
    }
    [data-theme="dark"] .mini-card:hover { background: var(--surface); border-color: var(--border); }
    .mini-card.active {
      background: var(--surface);
      border-color: var(--terra);
      box-shadow: 0 14px 32px -14px rgba(231,111,81,.30);
    }
    [data-theme="dark"] .mini-card.active { background: var(--surface); }
    .mini-img {
      position: relative;
      width: 100%;
      aspect-ratio: 4/3;
      border-radius: 12px;
      overflow: hidden;
      background: var(--bg-sand);
    }
    .mini-img img { width: 100%; height: 100%; object-fit: cover; }
    .mini-purpose {
      position: absolute;
      top: 6px; left: 6px;
      font-size: 0.62rem;
      font-weight: 700;
      padding: 3px 8px;
      border-radius: var(--r-full);
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }
    .mini-purpose.loc { background: var(--forest); color: var(--cream); }
    .mini-purpose.sale { background: var(--gold); color: var(--night); }

    .mini-fav {
      position: absolute;
      top: 6px; right: 6px;
      width: 28px; height: 28px;
      border-radius: 50%;
      background: rgba(255,255,255,.92);
      backdrop-filter: blur(8px);
      color: var(--text);
      display: grid; place-items: center;
      font-size: .72rem;
      transition: background-color var(--t), color var(--t), transform var(--t);
      z-index: 2;
    }
    [data-theme="dark"] .mini-fav { background: rgba(27,38,32,.92); color: var(--text); }
    .mini-fav:hover { transform: scale(1.08); }
    .mini-fav.active { background: var(--terra); color: white; }

    .mini-body { display: flex; flex-direction: column; min-width: 0; gap: 2px; }
    .mini-loc {
      font-weight: 700;
      font-size: 0.92rem;
      color: var(--text);
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .mini-title {
      color: var(--text-soft);
      font-size: 0.82rem;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .mini-feats {
      color: var(--text-soft);
      font-size: 0.78rem;
      margin-top: auto;
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }
    .mini-feats i { color: var(--forest-2); margin-right: 3px; }
    [data-theme="dark"] .mini-feats i { color: var(--forest-3); }
    .mini-price {
      font-family: 'Fraunces', serif;
      font-weight: 700;
      font-size: 1.05rem;
      margin-top: 4px;
      color: var(--forest);
      letter-spacing: -0.01em;
    }
    [data-theme="dark"] .mini-price { color: var(--text); }
    .mini-price .per {
      font-family: 'DM Sans', sans-serif;
      font-weight: 500;
      color: var(--text-soft);
      font-size: 0.78rem;
    }
    .mini-rate {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      font-size: 0.74rem;
      font-weight: 700;
      color: var(--text);
      background: rgba(244,163,0,.16);
      padding: 2px 7px;
      border-radius: var(--r-full);
      width: fit-content;
    }
    .mini-rate i { color: var(--gold); font-size: 0.7rem; }

    /* ===== Empty state ===== */
    .map-empty {
      text-align: center;
      padding: 60px 20px;
      color: var(--text-soft);
    }
    .map-empty i {
      font-size: 2.4rem;
      color: var(--terra);
      margin-bottom: 14px;
      opacity: .6;
    }
    .map-empty h3 {
      color: var(--forest);
      font-size: 1.15rem;
      margin-bottom: 8px;
    }
    [data-theme="dark"] .map-empty h3 { color: var(--text); }

    /* ===== Carte ===== */
    .map-canvas { position: relative; height: 100%; min-height: 0; overflow: visible; }
    #map {
      height: 100%; width: 100%; background: var(--bg-sand);
      /* La rotation 2 doigts s'applique sur #map via JS (transform: rotate()).
         transform-origin centré par défaut — overridé en JS au moment du geste.
         will-change: transform annonce au GPU qu'une transform est imminente. */
      will-change: transform;
      transform-origin: 50% 50%;
    }
    .leaflet-popup-content-wrapper {
      border-radius: var(--r) !important;
      padding: 0 !important;
      box-shadow: 0 16px 40px -10px rgba(27,67,50,.30) !important;
    }
    .leaflet-popup-content { margin: 14px !important; }
    .leaflet-popup-tip { background: white; }
    [data-theme="dark"] .leaflet-popup-content-wrapper { background: var(--surface) !important; color: var(--text); }
    [data-theme="dark"] .leaflet-popup-tip { background: var(--surface); }

    /* ============= POINTS / DOTS ============= */
    .fooy-dot-wrap { width: 16px; height: 16px; overflow: visible; }
    .fooy-dot {
      display: block;
      width: 16px; height: 16px;
      background: var(--terra);
      border: 2.5px solid white;
      border-radius: 50%;
      box-sizing: border-box;
      cursor: pointer;
      transition: background .2s, box-shadow .2s;
      box-shadow: 0 2px 8px rgba(231,111,81,.40);
      position: relative;
    }
    /* Zone hover invisible élargie — capture le survol même si la souris glisse
       vers le tooltip. Pas de transform sur le dot lui-même pour éviter que
       Leaflet déclenche un mouseleave au scale. */
    .fooy-dot::before {
      content: '';
      position: absolute;
      inset: -10px;
      border-radius: 50%;
    }
    [data-theme="dark"] .fooy-dot { border-color: var(--bg); }
    .fooy-dot::after {
      content: '';
      position: absolute;
      inset: -4px;
      border-radius: 50%;
      border: 2px solid var(--terra);
      opacity: 0;
      transition: opacity .25s, transform .25s;
    }
    .fooy-dot:hover {
      background: var(--terra-dark);
      box-shadow: 0 4px 14px rgba(231,111,81,.65), 0 0 0 6px rgba(231,111,81,.18);
      z-index: 999 !important;
    }
    .fooy-dot:hover::after { opacity: .35; }
    .fooy-dot.active {
      background: var(--forest);
      transform: scale(1.7);
      box-shadow: 0 4px 12px rgba(27,67,50,.55);
      z-index: 999 !important;
    }
    .fooy-dot.active::after {
      opacity: .55;
      border-color: var(--forest);
      animation: dotPulse 1.6s ease-out infinite;
    }
    @keyframes dotPulse {
      0% { opacity: .55; transform: scale(1); }
      100% { opacity: 0; transform: scale(2); }
    }
    /* Couleur par mode (vente/location/heatmap) */
    .fooy-dot.sale { background: var(--gold); box-shadow: 0 2px 8px rgba(244,163,0,.45); }
    .fooy-dot.sale:hover { background: #C57A05; }
    .fooy-dot.loc { background: var(--terra); }

    /* ============= TOOLTIP HOVER ============= */
    .leaflet-tooltip.fooy-tip {
      background: transparent;
      border: none;
      box-shadow: none;
      padding: 0;
      opacity: 0;
      transform: translateY(6px);
      animation: tipIn .22s cubic-bezier(.2,.8,.2,1) forwards;
    }
    @keyframes tipIn { to { opacity: 1; transform: none; } }
    .leaflet-tooltip.fooy-tip::before { display: none; }  /* retire la flèche par défaut */
    .fooy-tip-card {
      width: 220px;
      max-width: calc(100vw - 32px);
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius: var(--r);
      overflow: hidden;
      box-shadow: 0 18px 40px -10px rgba(27,67,50,.35);
      font-family: 'DM Sans', sans-serif;
    }
    [data-theme="dark"] .fooy-tip-card { background: var(--surface); border-color: var(--border); box-shadow: 0 18px 40px rgba(0,0,0,.55); }
    .fooy-tip-img {
      width: 100%; height: 130px;
      background-size: cover;
      background-position: center;
      position: relative;
    }
    .fooy-tip-img::after {
      content: '';
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, transparent 50%, rgba(15,27,22,.45) 100%);
    }
    .fooy-tip-purpose {
      position: absolute;
      top: 8px; left: 8px;
      padding: 3px 9px;
      border-radius: var(--r-full);
      font-size: 0.62rem;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      backdrop-filter: blur(6px);
      z-index: 2;
    }
    .fooy-tip-purpose.loc { background: rgba(27,67,50,.92); color: var(--cream); }
    .fooy-tip-purpose.sale { background: rgba(244,163,0,.92); color: var(--night); }
    .fooy-tip-rate {
      position: absolute;
      top: 8px; right: 8px;
      background: rgba(255,255,255,.94);
      color: var(--text);
      padding: 3px 9px;
      border-radius: var(--r-full);
      font-size: 0.66rem;
      font-weight: 700;
      display: flex;
      align-items: center;
      gap: 3px;
      backdrop-filter: blur(6px);
      z-index: 2;
    }
    .fooy-tip-rate i { color: var(--gold); font-size: 0.6rem; }
    .fooy-tip-body { padding: 12px 14px 14px; }
    .fooy-tip-eyebrow {
      font-size: 0.62rem;
      color: var(--terra);
      font-weight: 800;
      text-transform: uppercase;
      letter-spacing: 0.08em;
      margin-bottom: 4px;
    }
    .fooy-tip-title {
      font-family: 'Fraunces', serif;
      font-weight: 600;
      font-size: 0.94rem;
      color: var(--text);
      letter-spacing: -0.01em;
      line-height: 1.25;
      margin-bottom: 6px;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }
    .fooy-tip-feats {
      font-size: 0.74rem;
      color: var(--text-soft);
      margin-bottom: 8px;
    }
    .fooy-tip-price {
      font-family: 'Fraunces', serif;
      font-weight: 700;
      font-size: 1.05rem;
      color: var(--forest);
      letter-spacing: -0.015em;
    }
    [data-theme="dark"] .fooy-tip-price { color: var(--text); }
    .fooy-tip-price .per {
      font-family: 'DM Sans', sans-serif;
      font-weight: 500;
      color: var(--text-mute);
      font-size: 0.72rem;
    }

    /* ===== Légende sur la carte ===== */
    .map-legend {
      position: absolute;
      bottom: 20px;
      left: 20px;
      background: var(--surface);
      border: 1px solid var(--border-soft);
      border-radius: 14px;
      padding: 10px 14px;
      font-size: 0.78rem;
      color: var(--text-soft);
      display: flex;
      align-items: center;
      gap: 14px;
      z-index: 500;
      box-shadow: 0 8px 22px -10px rgba(27,67,50,.22);
    }
    [data-theme="dark"] .map-legend { background: var(--surface); border-color: var(--border); }
    .map-legend .item { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }
    .map-legend .dot {
      width: 10px; height: 10px; border-radius: 50%;
    }
    .map-legend .dot.idle { background: var(--surface); border: 2px solid var(--text-mute); }
    .map-legend .dot.hover { background: var(--terra); }
    .map-legend .dot.active { background: var(--forest); }
    [data-theme="dark"] .map-legend .dot.active { background: var(--forest-3); }

    /* Légende heatmap : gradient prix */
    .map-legend .heat-bar {
      display: inline-block;
      width: 80px;
      height: 8px;
      border-radius: var(--r-full);
      background: linear-gradient(90deg, rgb(27,67,50) 0%, rgb(244,163,0) 50%, rgb(231,111,81) 100%);
      vertical-align: middle;
    }
    .map-legend .heat-lbl { font-size: 0.74rem; color: var(--text-mute); font-weight: 600; }

    /* Highlight liste ↔ carte sync */
    .fooy-dot.is-highlighted {
      background: var(--gold) !important;
      box-shadow: 0 0 0 8px rgba(244,163,0,.30), 0 4px 14px rgba(244,163,0,.55) !important;
      z-index: 999 !important;
    }
    .mini-card.is-highlighted {
      border-color: var(--terra);
      box-shadow: 0 0 0 2px rgba(231,111,81,.30);
    }

    /* Bouton "Voir tous les biens" (fit bounds) */
    .map-fit-bar {
      display: flex;
      align-items: center;
      gap: 8px;
      margin: 0 0 12px;
    }
    .map-fit-btn {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      padding: 9px 14px;
      border-radius: var(--r-full);
      border: 1.5px solid var(--border);
      background: var(--surface);
      color: var(--text);
      font-weight: 600;
      font-size: 0.84rem;
      cursor: pointer;
      transition: border-color var(--t), color var(--t), transform var(--t);
    }
    [data-theme="dark"] .map-fit-btn { background: var(--bg-cream); border-color: var(--border); }
    .map-fit-btn:hover:not(:disabled) {
      border-color: var(--terra);
      color: var(--terra);
      transform: translateY(-1px);
    }
    .map-fit-btn:disabled { opacity: .4; cursor: not-allowed; }
    .map-fit-btn i { color: var(--terra); }

    @media (max-width: 1024px) {
      .map-page { grid-template-columns: 1fr; grid-template-rows: 320px 1fr; }
      .map-list { order: 2; }
      .map-legend { display: none; }
      .lm-tab { padding: 10px 6px 8px; }
      .lm-tab .lm-sub { display: none; }
      .lm-tab .lm-ic { width: 26px; height: 26px; font-size: 0.78rem; }
      .lm-tab .lm-lbl { font-size: 0.74rem; }
      .lm-detail { padding: 12px 10px 8px; }
      .lm-status { padding: 8px 10px; font-size: 0.78rem; }
      .lm-status .ic { width: 22px; height: 22px; font-size: 0.66rem; }
    }

    @media (prefers-reduced-motion: reduce) {
      .lm-detail,
      .lm-status.wait .ic,
      .map-center-pin,
      .map-center-pin::after,
      .map-me-pin,
      .leaflet-tooltip.fooy-tip,
      .fooy-dot.active::after {
        animation: none !important;
        transition: none !important;
      }
    }
