<style>
section[data-section-id="69639df21d733220ec82c8dc"] {
.tp-audio-scene{position:relative}
.tp-audio-overlay{position:absolute;inset:0}
.tp-audio-overlay .tp-pin{
  position:absolute;
  left:var(--px,50%);
  top:var(--py,50%);
  transform:translate(-50%,-50%);
}

.tp-audio-scene[data-mode="exterior"]{--axisY:50}
.tp-audio-scene[data-mode="exterior"] .tp-audio-overlay .tp-pin:nth-of-type(1){--dx:40px!important;--dyPct:-31!important}
.tp-audio-scene[data-mode="exterior"] .tp-audio-overlay .tp-pin:nth-of-type(2){--dx:90px!important;--dyPct:-21!important}
.tp-audio-scene[data-mode="exterior"] .tp-audio-overlay .tp-pin:nth-of-type(3){--dx:-60px!important;--dyPct:-15!important}
.tp-audio-scene[data-mode="exterior"] .tp-audio-overlay .tp-pin:nth-of-type(4){--dx:43px!important;--dyPct:-1.5!important}
.tp-audio-scene[data-mode="exterior"] .tp-audio-overlay .tp-pin:nth-of-type(5){--dx:4px!important;--dyPct:20!important}

.tp-audio-scene[data-mode="interior"]{--axisY:50}
.tp-audio-scene[data-mode="interior"] .tp-audio-overlay .tp-pin:nth-of-type(1){--dx:40px!important;--dyPct:-31!important}
.tp-audio-scene[data-mode="interior"] .tp-audio-overlay .tp-pin:nth-of-type(2){--dx:90px!important;--dyPct:-21!important}
.tp-audio-scene[data-mode="interior"] .tp-audio-overlay .tp-pin:nth-of-type(3){--dx:-60px!important;--dyPct:-15!important}
.tp-audio-scene[data-mode="interior"] .tp-audio-overlay .tp-pin:nth-of-type(4){--dx:43px!important;--dyPct:-1.5!important}
.tp-audio-scene[data-mode="interior"] .tp-audio-overlay .tp-pin:nth-of-type(5){--dx:4px!important;--dyPct:20!important}
}
</style>

<script>
(function(){
  var SECTION_SELECTOR = 'section[data-section-id="69639df21d733220ec82c8dc"]';

  function toNumber(v){
    v = parseFloat(v);
    return isFinite(v) ? v : 0;
  }

  var lastLayoutSignature = '';

  function updatePinPositions(){
    var section = document.querySelector(SECTION_SELECTOR);
    if(!section) return;

    var scene = section.querySelector('.tp-audio-scene');
    if(!scene) return;

    var image = scene.querySelector('img.tp-audio-bg');
    var overlay = scene.querySelector('.tp-audio-overlay');
    if(!image || !overlay) return;

    var sceneRect = scene.getBoundingClientRect();
    var imageRect = image.getBoundingClientRect();
    if(imageRect.width <= 0 || imageRect.height <= 0) return;

    var centerXInScene =
      (imageRect.left + imageRect.width / 2) - sceneRect.left;

    var axisY =
      toNumber(getComputedStyle(scene).getPropertyValue('--axisY')) || 50;

    var centerYInScene =
      (imageRect.top - sceneRect.top) + (axisY / 100) * imageRect.height;

    var pins = [].slice.call(overlay.querySelectorAll('.tp-pin'));

    for(var i = 0; i < pins.length; i++){
      var pinStyle = getComputedStyle(pins[i]);
      var dx = toNumber(pinStyle.getPropertyValue('--dx'));
      var dyPct = toNumber(pinStyle.getPropertyValue('--dyPct'));

      pins[i].style.setProperty('--px', (centerXInScene + dx) + 'px');
      pins[i].style.setProperty(
        '--py',
        (centerYInScene + (dyPct / 100) * imageRect.height) + 'px'
      );
    }
  }

  function buildLayoutSignature(){
    var section = document.querySelector(SECTION_SELECTOR);
    if(!section) return '';

    var scene = section.querySelector('.tp-audio-scene');
    if(!scene) return '';

    var overlay = scene.querySelector('.tp-audio-overlay');
    if(!overlay) return '';

    var mode = (scene.getAttribute('data-mode') || '').trim();
    var axisY =
      (getComputedStyle(scene).getPropertyValue('--axisY') || '').trim();

    var pins = [].slice.call(overlay.querySelectorAll('.tp-pin'));

    var signature = mode + '|' + axisY + '|' + pins.length + '|';

    for(var i = 0; i < pins.length; i++){
      var pinStyle = getComputedStyle(pins[i]);
      signature +=
        (pinStyle.getPropertyValue('--dx') || '').trim() + ',' +
        (pinStyle.getPropertyValue('--dyPct') || '').trim() + ';';
    }

    return signature;
  }

  function watchForConfigChanges(){
    var sig = buildLayoutSignature();
    if(sig && sig !== lastLayoutSignature){
      lastLayoutSignature = sig;
      updatePinPositions();
    }
    requestAnimationFrame(watchForConfigChanges);
  }

  function init(){
    updatePinPositions();
    lastLayoutSignature = buildLayoutSignature();

    window.addEventListener('resize', updatePinPositions, { passive:true });
    window.addEventListener('scroll', updatePinPositions, { passive:true });

    var section = document.querySelector(SECTION_SELECTOR);
    var scene = section && section.querySelector('.tp-audio-scene');

    if(scene){
      var image = scene.querySelector('img.tp-audio-bg');

      if(image && !image.complete){
        image.addEventListener('load', updatePinPositions, { once:true });
      }

      var resizeObserver = new ResizeObserver(updatePinPositions);
      resizeObserver.observe(scene);
      if(image) resizeObserver.observe(image);

      var mutationObserver = new MutationObserver(function(){
        updatePinPositions();
        lastLayoutSignature = buildLayoutSignature();
      });
      mutationObserver.observe(scene, {
        attributes:true,
        childList:true,
        subtree:true
      });
    }

    requestAnimationFrame(watchForConfigChanges);
  }

  if(document.readyState === 'loading'){
    document.addEventListener('DOMContentLoaded', init, { once:true });
  } else {
    init();
  }
})();
</script>

 

Buy me a coffee