(function(){
'use strict';
var cfg = window.ADS_CONFIG || {};
var slots = cfg.slots || {};
/* Ratio → percentage for padding-top intrinsic sizing */
var RATIO_PAD = {
'1:1': '100%', /* 1/1 = 1.000 */
'16:9': '56.25%', /* 9/16 = 0.5625 */
'9:16': '177.78%' /* 16/9 = 1.7778 */
};
/* ── GTM ── */
if (cfg.gtm && cfg.gtm.enabled && cfg.gtm.id && cfg.gtm.id.indexOf('XXXXXXX') === -1) {
var gtmS = document.createElement('script');
gtmS.innerHTML = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','"+cfg.gtm.id+"');";
document.head.appendChild(gtmS);
var ns = document.getElementById('gtm-noscript');
if (ns) ns.innerHTML = '';
}
/* ── Build inner content node ── */
function buildContent(type, slotCfg) {
var wrap = document.createElement('div');
wrap.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;overflow:hidden;';
var placeholder = function(bg, color, msg) {
wrap.style.cssText += 'display:flex;align-items:center;justify-content:center;background:'+bg+';';
wrap.innerHTML = ''+msg+'';
};
if (type === 'image') {
var img = slotCfg.image || {};
var src = (img.src || '').trim();
if (!src) { placeholder('#f0f0ee','#aaa','No image uploaded yet'); return wrap; }
var a = document.createElement('a');
a.href = img.href || '#';
a.target = '_blank';
a.rel = 'noopener noreferrer';
a.style.cssText = 'display:block;width:100%;height:100%;';
var image = document.createElement('img');
image.src = src;
image.alt = img.alt || 'Advertisement';
image.style.cssText = 'width:100%;height:100%;object-fit:cover;display:block;';
image.onerror = function() {
wrap.innerHTML = 'Image not found.
Check the file path in admin.';
wrap.style.background = '#fff0f0';
wrap.style.display = 'flex';
wrap.style.alignItems = 'center';
wrap.style.justifyContent = 'center';
};
a.appendChild(image);
wrap.appendChild(a);
} else if (type === 'adsense') {
var asCfg = slotCfg.adsense || {};
var code = (asCfg.code || '').trim();
if (!code) { placeholder('#f0f7ff','#555','Paste AdSense code
in the admin panel'); return wrap; }
wrap.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center;';
var inner = document.createElement('div');
inner.style.cssText = 'width:100%;text-align:center;';
/* Parse and re-create nodes so