let country = 'US'; let payingCustomer = false; // Nach 5 Sekunden prüfen, ob Datum vor dem 01.12.2025 23:59:59 ist setTimeout(() => { const now = new Date(); const cutoff = new Date(2025, 11, 1, 23, 59, 59); if (document.location.href.indexOf('/login') > -1 || document.location.href.indexOf('/pricing') > -1) return; if (now < cutoff) { run(); } }, 6000); function run() { const MESSAGE_VIEW_LIMIT = 100; const HIDE_DURATION_DAYS = 1; const MAX_DISMISSALS_FOR_PAYING = 3; function getStorageData(key) { return JSON.parse(localStorage.getItem(key)) || {}; } function setStorageData(key, data) { localStorage.setItem(key, JSON.stringify(data)); } const storageKey = "modalState"; const state = getStorageData(storageKey); const now = Date.now(); const lastDismissed = state.lastDismissed || 0; const viewCount = state.viewCount || 0; const dismissCount = state.dismissCount || 0; // payingCustomer muss global definiert sein, sonst wird einfach normal angezeigt if (typeof payingCustomer !== 'undefined' && payingCustomer) return; if (viewCount >= MESSAGE_VIEW_LIMIT || now - lastDismissed < HIDE_DURATION_DAYS * 86400000) return; state.viewCount = viewCount + 1; setStorageData(storageKey, state); injectStyles(); createModal(); countupFomo(); function injectStyles() { const css = ` #promoModalOverlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.85); display: flex; justify-content: center; align-items: center; z-index: 9999; padding: 20px; /* Fade-In Startzustand */ opacity: 0; pointer-events: none; transition: opacity 0.4s ease; } #promoModalOverlay.visible { opacity: 1; pointer-events: auto; } #promoModal { background: #0b0b0b; border-radius: 16px; padding: 30px 26px 24px; max-width: 520px; width: 100%; box-shadow: 0 18px 45px rgba(0,0,0,0.8); font-family: var(--bs-font-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); text-align: center; position: relative; line-height: 1.4; color: #f5f5f5; border: 1px solid rgba(255,255,255,0.08); /* Modal selbst: Startzustand */ opacity: 0; transform: translateY(12px); transition: opacity 0.4s ease, transform 0.4s ease; box-shadow: 0 0 55px rgba(255,255,255,0.12), 0 0 120px rgba(255,255,255,0.08); } #promoModalOverlay.visible #promoModal { opacity: 1; transform: translateY(0); } #promoModal::before { content: ""; position: absolute; inset: -2px; border-radius: inherit; background: radial-gradient(circle at top left, rgba(255,255,255,0.2), transparent 55%); opacity: 0.35; pointer-events: none; z-index: -1; } #promoModal h2 { margin-top: 0; font-size: 26px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; color: #ffffff; } #promoModal h2 span.highlight { display: block; font-size: 14px; font-weight: 600; color: #ffeb3b; letter-spacing: 0.25em; margin-bottom: 4px; } #promoModal p { margin: 12px 0; font-size: 15px; color: #e0e0e0; } #promoModal p strong { color: #ffeb3b; } #promoModal p.tagline { font-size: 16px; font-weight: 600; margin-top: 4px; color: #ffffff; } #promoModal a.cta-btn { display: inline-block; width: 80%; padding: 13px 24px; margin-top: 16px; background: linear-gradient(135deg, #ffeb3b, #ff9800); color: #000; font-weight: 800; font-size: 16px; text-decoration: none; border-radius: 999px; text-transform: uppercase; letter-spacing: 0.08em; transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease; box-shadow: 0 10px 25px rgba(0,0,0,0.7); } #promoModal a.cta-btn:hover { transform: translateY(-1px) scale(1.01); box-shadow: 0 14px 35px rgba(0,0,0,0.9); filter: brightness(1.05); } #promoModal a.cta-btn:active { transform: translateY(0) scale(0.99); box-shadow: 0 8px 20px rgba(0,0,0,0.6); } #promoModal p.fomo { font-size: 13px; color: #bdbdbd; margin-top: 14px; } #promoModal p.fomo span { color: #ffeb3b; font-weight: 700; } #dismissMessage { margin-top: 14px; font-size: 12px; cursor: pointer; color: #9e9e9e; display: inline-block; opacity: 0.85; } #dismissMessage span { text-decoration: none; display: inline-block; margin-right: 5px; color: #f44336; } #dismissMessage:hover { color: #ffffff; opacity: 1; } #promoModalClose { position: absolute; top: 10px; right: 10px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.15); font-size: 18px; font-weight: 700; color: #f5f5f5; border-radius: 999px; width: 30px; height: 30px; cursor: pointer; line-height: 1; display: flex; align-items: center; justify-content: center; transition: background 0.15s ease, transform 0.15s ease; } #promoModalClose:hover { background: rgba(255,255,255,0.16); transform: scale(1.04); } `; const style = document.createElement("style"); style.textContent = css; document.head.appendChild(style); } function createModal() { const overlay = document.createElement("div"); overlay.id = "promoModalOverlay"; overlay.innerHTML = `

BLACK WEEKS ImagR – Mega Deal

⚡ Get 33% OFF on ImagR ⚡

Perfect time to level up your engravings, templates and production speed – while the price is still down.

✅ CLAIM THE BLACK WEEKS DEAL NOW »

🚀 632 creators grabbed this Black Weeks deal in the last 24 hours.

`; document.body.appendChild(overlay); // sanfter Fade-In: Klasse "visible" leicht verzögert setzen setTimeout(() => { overlay.classList.add('visible'); }, 30); function closeOverlay(withDismissUpdate) { overlay.classList.remove('visible'); setTimeout(() => { overlay.remove(); if (withDismissUpdate) { state.lastDismissed = Date.now(); state.dismissCount = dismissCount + 1; setStorageData(storageKey, state); } }, 400); // entspricht der transition-Dauer aus CSS } document.getElementById("promoModalClose").addEventListener("click", () => { closeOverlay(false); }); document.getElementById("dismissMessage").addEventListener("click", () => { closeOverlay(true); }); document.getElementById('claimBtn').addEventListener('click', function () { // country muss global existieren, wie in deinem ursprünglichen Code fetch('https://wiegner.gmbh/announcement/log.php?country=' + country + '&clicked=true') .catch(() => {}); }); fetch('https://wiegner.gmbh/announcement/log.php?country=' + country); } function countupFomo() { const COUNTER_KEY = 'fomoCounterValue'; const START_VALUE = 632; const MIN_MS = 2000; const MAX_MS = 20000; const MAX_INCREMENT = 999; let currentValue = parseInt(localStorage.getItem(COUNTER_KEY)) || START_VALUE; const fomoEl = document.getElementById("fomoCounter"); if (!fomoEl) return; fomoEl.textContent = currentValue; function scheduleNext() { const delay = Math.floor(Math.random() * (MAX_MS - MIN_MS + 1)) + MIN_MS; setTimeout(() => { if (currentValue < MAX_INCREMENT) { currentValue++; fomoEl.textContent = currentValue; localStorage.setItem(COUNTER_KEY, currentValue.toString()); scheduleNext(); } }, delay); } scheduleNext(); } }