diff --git a/apps/web/app/[locale]/(public)/search/page.tsx b/apps/web/app/[locale]/(public)/search/page.tsx
index 76b386c..1b35c37 100644
--- a/apps/web/app/[locale]/(public)/search/page.tsx
+++ b/apps/web/app/[locale]/(public)/search/page.tsx
@@ -351,15 +351,19 @@ function SearchContent() {
- {/* Desktop horizontal filter bar */}
-
-
-
+ {/* Desktop horizontal filter bar — only when there's no sidebar
+ (i.e. full-width map view). Showing it alongside the sidebar in
+ list/split mode would just duplicate every control. */}
+ {viewMode === 'map' && (
+
+
+
+ )}
{/* Mobile filter panel */}
{showMobileFilters && (
diff --git a/apps/web/components/map/listing-map.tsx b/apps/web/components/map/listing-map.tsx
index 7bca2bb..8d1e069 100644
--- a/apps/web/components/map/listing-map.tsx
+++ b/apps/web/components/map/listing-map.tsx
@@ -198,7 +198,9 @@ function ListingMapInner({
clusterRadius: 50,
});
- // Cluster circles
+ // Cluster circles. Mapbox-gl's color parser rejects `hsl(var(--…))` —
+ // it only accepts literal CSS colors. We use hex constants tuned to
+ // match the design-system primary/accent palette in dark mode.
map.addLayer({
id: CLUSTER_LAYER_ID,
type: 'circle',
@@ -208,7 +210,7 @@ function ListingMapInner({
'circle-color': [
'step',
['get', 'point_count'],
- 'hsl(var(--primary))',
+ '#22c55e', // primary (emerald-500)
10,
'#f1a928',
30,
@@ -248,8 +250,8 @@ function ListingMapInner({
'text-allow-overlap': true,
},
paint: {
- 'text-color': 'hsl(var(--card-foreground))',
- 'text-halo-color': 'hsl(var(--card))',
+ 'text-color': '#f5f5f4', // card-foreground (stone-100)
+ 'text-halo-color': '#1c1917', // card (stone-900)
'text-halo-width': 8,
},
});
@@ -269,8 +271,8 @@ function ListingMapInner({
'text-allow-overlap': true,
},
paint: {
- 'text-color': 'hsl(var(--primary-foreground))',
- 'text-halo-color': 'hsl(var(--primary))',
+ 'text-color': '#ffffff', // primary-foreground (high-contrast on emerald)
+ 'text-halo-color': '#22c55e', // primary (emerald-500)
'text-halo-width': 10,
},
});