diff --git a/index.html b/index.html
index 1525d15..73e87ea 100644
--- a/index.html
+++ b/index.html
@@ -2022,6 +2022,7 @@
}
// Show loading indicator and defer pathfinding to allow UI update
+ ensurePopupInBody('routeOverlay');
document.getElementById('routeOverlay').style.display = 'flex';
document.getElementById('navInfo').style.display = 'none';
@@ -2727,6 +2728,16 @@
}, 100);
}
+ // Helper function to ensure popups are in body
+ function ensurePopupInBody(elementId) {
+ const element = document.getElementById(elementId);
+ if (element && element.parentElement !== document.body) {
+ console.log(`Moving ${elementId} to body from:`, element.parentElement.id || element.parentElement.className);
+ document.body.appendChild(element);
+ }
+ return element;
+ }
+
function showGeocacheDialog(geocache, isNew = false) {
// In nav mode, check if user is close enough to view/interact
let userDistance = Infinity;
@@ -2736,7 +2747,8 @@
}
currentGeocache = geocache;
- const dialog = document.getElementById('geocacheDialog');
+ // Ensure dialog is in body
+ const dialog = ensurePopupInBody('geocacheDialog');
const messagesDiv = document.getElementById('geocacheMessages');
const deleteBtn = document.getElementById('geocacheDelete');
const submitBtn = document.getElementById('geocacheSubmit');
@@ -4966,6 +4978,7 @@
// Show confirmation dialog
const message = `Navigate to ${nearest.track.name}?`;
document.getElementById('navConfirmMessage').textContent = message;
+ ensurePopupInBody('navConfirmDialog');
document.getElementById('navConfirmDialog').style.display = 'flex';
isPressing = false;
}
@@ -5047,6 +5060,7 @@
document.getElementById('pressHoldIndicator').style.display = 'none';
const message = `Navigate to ${pendingDestination.track.name}?`;
document.getElementById('navConfirmMessage').textContent = message;
+ ensurePopupInBody('navConfirmDialog');
document.getElementById('navConfirmDialog').style.display = 'flex';
lastTapTime = 0; // Reset to prevent triple tap
@@ -5138,6 +5152,7 @@
pendingDestination = nearest;
const message = `Navigate to ${nearest.track.name}?`;
document.getElementById('navConfirmMessage').textContent = message;
+ ensurePopupInBody('navConfirmDialog');
document.getElementById('navConfirmDialog').style.display = 'flex';
}
} else if (currentTool === 'draw' && isDrawing) {
@@ -6048,6 +6063,7 @@
document.getElementById('remeshDetails').innerHTML =
`Selected tracks: ${trackNames}
` +
`Current total points: ${totalPoints}`;
+ ensurePopupInBody('remeshDialog');
document.getElementById('remeshDialog').style.display = 'flex';
});
@@ -6382,6 +6398,7 @@
if (savedDestination && savedNavMode === 'true') {
// Show resume navigation dialog
+ ensurePopupInBody('resumeNavDialog');
document.getElementById('resumeNavDialog').style.display = 'flex';
} else {
// Start in navigate mode by default if no saved state