diff --git a/src/App.jsx b/src/App.jsx
index 7576c31..0d02c8f 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -96,8 +96,12 @@ export default function App() {
-
-
+
+ {/* Bottom-right map controls */}
+
+
+
+
)
}
diff --git a/src/components/LayerControl.jsx b/src/components/LayerControl.jsx
index cf2e34e..c67b5ae 100644
--- a/src/components/LayerControl.jsx
+++ b/src/components/LayerControl.jsx
@@ -271,7 +271,7 @@ export default function LayerControl({ mapRef }) {
title="Map layers"
aria-label="Toggle map layers"
>
-
+
{open && (
diff --git a/src/components/LocateButton.jsx b/src/components/LocateButton.jsx
index 3ec445f..55723cf 100644
--- a/src/components/LocateButton.jsx
+++ b/src/components/LocateButton.jsx
@@ -48,7 +48,7 @@ export default function LocateButton({ mapRef }) {
title="My location"
aria-label="Center map on my location"
>
-
+
)
}
diff --git a/src/index.css b/src/index.css
index 6a2bd4c..ac38dfe 100644
--- a/src/index.css
+++ b/src/index.css
@@ -236,42 +236,80 @@ body {
opacity: 1;
}
-/* ═══ LAYER CONTROL ═══ */
-.layer-control {
+/* ═══ BOTTOM-RIGHT MAP CONTROLS ═══ */
+.map-controls-br {
position: absolute;
- bottom: 32px;
+ bottom: 40px;
right: 10px;
z-index: 10;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
}
-.layer-control-btn {
- width: 36px;
- height: 36px;
+.map-control-btn {
+ width: 44px;
+ height: 44px;
display: flex;
align-items: center;
justify-content: center;
background: var(--bg-raised);
border: 1px solid var(--border);
- border-radius: 8px;
+ border-radius: 10px;
color: var(--text-secondary);
cursor: pointer;
box-shadow: var(--shadow);
- transition: color 0.1s, border-color 0.1s;
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
+}
+
+.map-control-btn:hover {
+ color: var(--text-primary);
+ border-color: var(--accent);
+ background: var(--bg-overlay);
+}
+
+.map-control-btn:active {
+ background: var(--bg-muted);
+}
+
+/* ═══ LAYER CONTROL ═══ */
+.layer-control {
+ position: relative;
+}
+
+.layer-control-btn {
+ width: 44px;
+ height: 44px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-raised);
+ border: 1px solid var(--border);
+ border-radius: 10px;
+ color: var(--text-secondary);
+ cursor: pointer;
+ box-shadow: var(--shadow);
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.layer-control-btn:hover {
color: var(--text-primary);
border-color: var(--accent);
+ background: var(--bg-overlay);
+}
+
+.layer-control-btn:active {
+ background: var(--bg-muted);
}
.layer-control-popover {
position: absolute;
- bottom: 44px;
- right: 0;
- min-width: 160px;
+ bottom: 0;
+ right: 52px;
+ min-width: 180px;
background: var(--bg-raised);
border: 1px solid var(--border);
- border-radius: 8px;
+ border-radius: 10px;
padding: 8px 0;
box-shadow: var(--shadow-lg);
}
@@ -367,27 +405,28 @@ body {
/* ═══ LOCATE BUTTON ═══ */
.locate-btn {
- position: absolute;
- bottom: 80px;
- right: 10px;
- z-index: 10;
- width: 36px;
- height: 36px;
+ width: 44px;
+ height: 44px;
display: flex;
align-items: center;
justify-content: center;
background: var(--bg-raised);
border: 1px solid var(--border);
- border-radius: 8px;
+ border-radius: 10px;
color: var(--text-secondary);
cursor: pointer;
box-shadow: var(--shadow);
- transition: color 0.1s, border-color 0.1s;
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.locate-btn:hover {
color: var(--text-primary);
border-color: var(--accent);
+ background: var(--bg-overlay);
+}
+
+.locate-btn:active {
+ background: var(--bg-muted);
}
/* ═══ STOP REMOVE BUTTON (touch-friendly) ═══ */
@@ -406,16 +445,15 @@ body {
overflow-x: hidden;
}
- .layer-control {
- bottom: auto;
- top: 120px;
- right: 10px;
+ .map-controls-br {
+ bottom: 24px;
+ right: 8px;
}
- .locate-btn {
- bottom: auto;
- top: 166px;
- right: 10px;
+ .layer-control-popover {
+ right: 52px;
+ max-height: 60vh;
+ overflow-y: auto;
}
.stop-remove-btn {
@@ -501,3 +539,14 @@ body {
line-height: 1.5;
text-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
}
+
+/* ═══ MAPLIBRE CONTROL POSITIONING ═══ */
+.maplibregl-ctrl-bottom-right {
+ bottom: 10px;
+ right: 10px;
+}
+
+.maplibregl-ctrl-bottom-right .maplibregl-ctrl-scale {
+ margin-right: 0;
+ margin-bottom: 0;
+}