/* One persistent overview; browser zoom never rebuilds the map. */
.map-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;max-width:1280px;margin:0 auto 16px}.map-tools p{font:400 12px/1.5 var(--body);color:var(--mute);flex:1;min-width:180px}.map-controls{display:flex;gap:6px}.map-controls button{min-width:44px;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:50%;background:var(--glass);color:#fff;font:400 20px var(--body);cursor:pointer}.map-controls button:last-child{font-size:12px;border-radius:99px}.map-controls button:disabled{opacity:.35;cursor:default}
.map-scroll.map-overview{display:block;position:relative;isolation:isolate;width:100%;max-width:1280px;height:clamp(360px,72svh,850px);margin:auto;overflow:auto;contain:inline-size;border:1px solid var(--line);border-radius:24px;background:#050505;scrollbar-width:thin;scrollbar-color:#555 #111;overscroll-behavior-x:contain;touch-action:pan-x pan-y pinch-zoom;scroll-behavior:auto;overflow-anchor:none}
.map-overview .map-stage{position:relative;padding:0;margin-left:auto;margin-right:auto;flex:none}
.map-overview .map-stage .mafia-map{position:absolute!important;width:1800px!important;height:1800px!important;max-width:none!important;margin:0!important;transform:scale(var(--map-scale,1));transform-origin:0 0}
.map-overview .node,.map-overview .node.inner{max-width:150px;gap:6px}
.map-overview .node .av,.map-overview .node.inner .av{width:84px!important;height:84px!important}
.map-overview .node b,.map-overview .node.inner b{display:block!important;font-size:12px!important;line-height:1.15;max-width:150px;overflow-wrap:normal}
.map-overview .node small,.map-overview .node.inner small{display:block;font-size:11px}
.map-overview.is-zoomed{cursor:grab}.map-overview.is-zoomed:active{cursor:grabbing}.map-overview .node{cursor:pointer}
@media(max-width:560px){.map-scroll.map-overview{height:clamp(360px,65svh,600px)}.map-tools{margin-left:8px;margin-right:8px}}

.map-overview,.map-overview *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.map-overview img{-webkit-user-drag:none;user-drag:none}

.map-overview .node.boss .av{width:180px!important;height:180px!important}.map-overview .node.boss b{font-size:20px!important}.map-fullscreen{position:fixed;inset:0;z-index:100;background:#000;display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.map-fullscreen .map-tools{width:100%;max-width:none;flex:none;margin:0 0 12px}.map-fullscreen .map-scroll.map-overview{flex:1;min-height:0;height:auto;max-width:none;width:100%;margin:0}.map-fullscreen .bio{z-index:120}.map-fullscreen .map-controls button:last-child{white-space:nowrap}.map-fullscreen .map-stage{padding:0}@media(max-width:560px){.map-fullscreen{padding:8px}.map-fullscreen .map-tools p{font-size:11px;min-width:110px}.map-fullscreen .map-tools{gap:8px}.map-fullscreen .map-controls{gap:4px}.map-fullscreen .map-controls button{padding:0 10px}}

/* Reduce paint work during zoom and keep touch gestures inside the map. */
.map-overview{touch-action:pan-y}.map-overview.is-zoomed{touch-action:none}.map-overview.is-zoomed .node .av img{filter:none!important;box-shadow:none!important;transition:none!important}.map-overview.is-zoomed .ring{animation:none!important}.map-overview.is-zoomed .node,.map-overview.is-zoomed .node .av{transition:none!important}.map-overview .map-stage{overscroll-behavior:contain}@media(max-width:560px){.map-fullscreen .map-tools p{font-size:11px;line-height:1.35}.map-fullscreen .map-scroll.map-overview{border-radius:18px}.map-controls button{min-width:44px;min-height:44px}}

/* Explicit label bounds prevent text overflow into adjacent portraits. */
.map-overview .node:not(.boss),.map-overview .node.inner{width:120px!important;max-width:120px!important;gap:10px!important}.map-overview .node:not(.boss) b{width:120px!important;max-width:120px!important;white-space:normal;overflow-wrap:break-word;line-height:1.25!important;text-align:center}.map-overview .node small,.map-overview .node.inner small{display:none!important}.map-overview .node .av{flex:none}.map-overview .node[data-name="blessedthug"] b{white-space:nowrap}
