diff --git a/public/nodes.js b/public/nodes.js
index bedcf7a4..d820c9ae 100644
--- a/public/nodes.js
+++ b/public/nodes.js
@@ -502,17 +502,19 @@
panel.innerHTML = `
- ${hasLoc ? `
` : ''}
${escapeHtml(n.name || '(unnamed)')}
${n.role} ${n.hash_size ? `
${n.public_key.slice(0, n.hash_size * 2).toUpperCase()}` : ''} ${statusLabel}
🔍 Details
📊 Analytics
+ ${hasLoc ? `
` : `
`}
+
-
Public Key
-
${n.public_key}
-
+
${n.public_key}
diff --git a/public/style.css b/public/style.css
index 902c71de..126eb68f 100644
--- a/public/style.css
+++ b/public/style.css
@@ -1113,9 +1113,12 @@ button.ch-item.ch-item-encrypted .ch-badge { filter: grayscale(0.6); }
}
.observer-selector { display: flex; gap: 4px; margin-bottom: 12px; flex-wrap: wrap; }
.node-qr { text-align: center; margin-top: 8px; }
-.node-qr svg { max-width: 140px; border-radius: 4px; }
+.node-qr svg { max-width: 100px; border-radius: 4px; }
[data-theme="dark"] .node-qr svg rect[fill="#ffffff"] { fill: var(--card-bg); }
[data-theme="dark"] .node-qr svg rect[fill="#000000"] { fill: var(--text); }
+.node-map-qr-wrap { position: relative; }
+.node-map-qr-overlay { position: absolute; bottom: 8px; right: 8px; z-index: 400; background: var(--card-bg); border: 1px solid var(--border); border-radius: 6px; padding: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.2); }
+.node-map-qr-overlay svg { max-width: 64px; display: block; }
/* Replay on Live Map button in packet detail */
.detail-actions {
@@ -1389,7 +1392,7 @@ tr[data-hops]:hover { background: rgba(59,130,246,0.1); }
.node-top-row { display: flex; gap: 16px; margin-bottom: 12px; }
.node-top-row .node-map-wrap { flex: 3; min-height: 200px; border-radius: 8px; overflow: hidden; }
.node-top-row .node-map-wrap .node-detail-map { height: 100%; }
-.node-top-row .node-qr-wrap { flex: 1; min-width: 140px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--card-bg); border: 1px solid var(--border); border-radius: 8px; padding: 16px; }
+.node-top-row .node-qr-wrap { flex: 1; min-width: 120px; max-width: 160px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--card-bg); border: 1px solid var(--border); border-radius: 8px; padding: 12px; }
.node-qr-wrap--full { max-width: 240px; margin: 0 auto; }
.node-stats-table { width: 100%; border-collapse: collapse; font-size: 13px; background: var(--card-bg); border: 1px solid var(--border); border-radius: 8px; overflow: hidden; margin-bottom: 12px; }
.node-stats-table td { padding: 6px 12px; border-bottom: 1px solid var(--border); }