/* Global Footprint Map - responsive map with zoom and vertical callouts */
.gfm-map{--gfm-ink:#222;--gfm-muted:#777;width:100%;color:var(--gfm-ink);font-family:inherit}
.gfm-map,.gfm-map *{box-sizing:border-box}
.gfm-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin:0 0 24px;padding:0 0 13px;border-bottom:1px solid #dedede}
.gfm-filter{position:relative;display:inline-flex;align-items:center;gap:8px;padding:8px 0;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:#666;font:inherit;font-size:14px;line-height:1.4;cursor:pointer;transition:color .2s ease,border-color .2s ease}
.gfm-filter:hover,.gfm-filter.is-active{color:#171717}.gfm-filter.is-active{border-bottom-color:var(--gfm-category-color,#d71920);font-weight:600}
.gfm-filter-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--gfm-category-color,#d71920)}
.gfm-stage{position:relative;width:100%;overflow:hidden;isolation:isolate;background:#fff;touch-action:pan-y;cursor:grab;}
.gfm-stage.is-dragging{cursor:grabbing;user-select:none}
.gfm-viewport{position:relative;width:100%;transform-origin:0 0;will-change:transform}
.gfm-world{display:block;width:100%;height:auto;max-width:none;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}
.gfm-markers{position:absolute;inset:0;z-index:2;pointer-events:none}
.gfm-marker{position:absolute;display:grid;place-items:center;width:18px;height:18px;padding:0;border:0;border-radius:50%;background:transparent;transform:translate(-50%,-50%);cursor:pointer;pointer-events:auto;z-index:3;-webkit-tap-highlight-color:transparent}
.gfm-marker-core{position:relative;z-index:2;display:block;width:10px;height:10px;border:2px solid #fff;border-radius:50%;background:var(--gfm-marker-color,#d71920);box-shadow:0 1px 5px rgba(0,0,0,.35);transition:transform .18s ease,box-shadow .18s ease}
.gfm-marker-pulse{position:absolute;inset:0;border:1px solid var(--gfm-marker-color,#d71920);border-radius:50%;opacity:0;transform:scale(.55);transition:transform .2s ease,opacity .2s ease}
.gfm-marker:hover .gfm-marker-core,.gfm-marker.is-selected .gfm-marker-core{transform:scale(1.35);box-shadow:0 0 0 3px rgba(255,255,255,.85),0 1px 7px rgba(0,0,0,.3)}
.gfm-marker.is-selected .gfm-marker-pulse{opacity:.5;transform:scale(1.45)}
.gfm-location-callout{position:absolute;z-index:5;display:flex;justify-content:center;align-items:flex-start;min-width:90px;max-width:min(260px,calc(100% - 12px));transform:translateX(-50%);pointer-events:none;animation:gfm-callout-in .18s ease-out}
.gfm-location-callout[hidden]{display:none!important}
.gfm-callout-label{position:relative;z-index:2;display:block;padding:7px 29px 7px 11px;background:#fff;color:#202020;box-shadow:0 3px 16px rgba(0,0,0,.16);font-size:13px;font-weight:600;line-height:1.35;overflow-wrap:anywhere;white-space:normal}
.gfm-callout-line{position:absolute;z-index:1;top:var(--gfm-line-top,30px);left:50%;width:1px;height:var(--gfm-line-height,30px);background:var(--gfm-callout-color,#d71920);transform:translateX(-50%)}
.gfm-callout-close{position:absolute;z-index:3;top:4px;right:4px;width:21px;height:21px;padding:0;border:0;border-radius:50%;background:transparent;color:#666;font-size:19px;line-height:19px;cursor:pointer;pointer-events:auto}
.gfm-callout-close:hover{background:#f1f1f1;color:#111}
.gfm-zoom-controls{position:absolute;z-index:10;top:12px;right:12px;display:flex;flex-direction:column;gap:5px}
.gfm-zoom-controls button{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #ddd;border-radius:3px;background:rgba(255,255,255,.96);color:#333;font-family:Arial,sans-serif;font-size:22px;line-height:1;box-shadow:0 1px 5px rgba(0,0,0,.12);cursor:pointer}
.gfm-zoom-controls button:hover:not(:disabled){background:#f4f4f4;color:#111}
.gfm-zoom-controls button:disabled{opacity:.4;cursor:not-allowed}
@keyframes gfm-callout-in{from{opacity:0;transform:translateX(-50%) translateY(3px)}to{opacity:1;transform:translateX(-50%)}}
@media(max-width:767px){.gfm-filters{gap:6px 16px;margin-bottom:15px}.gfm-filter{font-size:13px}.gfm-marker{width:22px;height:22px}.gfm-marker-core{width:9px;height:9px}.gfm-callout-label{font-size:12px;padding:6px 27px 6px 9px}.gfm-zoom-controls{top:8px;right:8px;gap:4px}.gfm-zoom-controls button{width:30px;height:30px;font-size:20px}}
