diff --git a/tasks/enduro-trails/prototype/static/app.css b/tasks/enduro-trails/prototype/static/app.css
index e085194..d9de6a9 100644
--- a/tasks/enduro-trails/prototype/static/app.css
+++ b/tasks/enduro-trails/prototype/static/app.css
@@ -969,3 +969,63 @@ body.has-map-mode #sheet-backdrop.visible { pointer-events: none; }
margin-top: 2px;
}
+
+/* ─── Zoom controls ──────────────────────────────────────────────────────── */
+#zoom-controls {
+ position: fixed;
+ left: 12px;
+ top: 12px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 2px;
+ z-index: 400;
+}
+#zoom-controls .map-btn {
+ width: 40px;
+ height: 40px;
+ font-size: 20px;
+ font-weight: 700;
+ line-height: 1;
+}
+#zoom-level {
+ background: var(--surface, #1e1e1e);
+ color: var(--text, #fff);
+ border-radius: 6px;
+ padding: 4px 8px;
+ font-size: 13px;
+ font-weight: 600;
+ min-width: 32px;
+ text-align: center;
+ border: 1px solid rgba(255,255,255,0.1);
+}
+
+/* ─── Scale bar ──────────────────────────────────────────────────────────── */
+#scale-bar {
+ position: fixed;
+ bottom: calc(80px + env(safe-area-inset-bottom, 0px) + 16px);
+ left: 12px;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 3px;
+ z-index: 400;
+ pointer-events: none;
+}
+#scale-line {
+ height: 4px;
+ width: 100px;
+ background: #fff;
+ border: 1px solid rgba(0,0,0,0.6);
+ border-top: none;
+ border-left: 2px solid #fff;
+ border-right: 2px solid #fff;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.5);
+}
+#scale-label {
+ font-size: 11px;
+ color: #fff;
+ text-shadow: 0 1px 3px rgba(0,0,0,0.9), 0 0 4px rgba(0,0,0,0.7);
+ font-weight: 700;
+ letter-spacing: 0.3px;
+}
diff --git a/tasks/enduro-trails/prototype/static/index.html b/tasks/enduro-trails/prototype/static/index.html
index dbe379e..90c91ac 100644
--- a/tasks/enduro-trails/prototype/static/index.html
+++ b/tasks/enduro-trails/prototype/static/index.html
@@ -63,8 +63,8 @@
-