diff --git a/plugin-designs/cities-internet/connectivity-map.vue b/plugin-designs/cities-internet/connectivity-map.vue index 9d5470e8f..27a63684d 100644 --- a/plugin-designs/cities-internet/connectivity-map.vue +++ b/plugin-designs/cities-internet/connectivity-map.vue @@ -478,7 +478,16 @@ useShadowStyles( // attribution among it, drawn below the card and clipped. Same class as the board's, and the same // fix it already carries: height:100% so a height-bounded slot decides, min-height as a floor so an // AUTO-height host still gets a usable map instead of a zero-height one that renders nothing. - ':host{display:block;width:100%;height:100%;min-height:420px}' + + // ★ position:relative IS LOAD-BEARING, and leaving it out made the rule above only HALF a fix. + // .gm below is position:absolute;inset:0, and absolute positioning resolves against the nearest + // POSITIONED ancestor — which :host was not. So on a partner page .gm resolved against whatever the + // PARTNER happened to have positioned, and the map sized itself to that rather than to this element. + // rega measured it in the hostbox run on ca07fc3c8: the element was CORRECT at 420px in a 420px box, + // while the canvas inside it stayed 900px and painted the pill and the attribution 478px below the + // box (538px in a 360px box), over the partner's own text. Giving the host a HEIGHT without making it + // a CONTAINING BLOCK fixes the box and not what is drawn inside it. + // prayer-walk-planner.vue:628 already carries this exact shape. + ':host{display:block;position:relative;width:100%;height:100%;min-height:420px}' + '.gm{position:absolute;inset:0;overflow:hidden}' + '.gm-map{position:absolute;inset:0}' + // LEGEND: a BOUNDED, left-anchored panel — NOT a full-width strip.