(function(){"use strict";var ENDPOINT="https://atomictrackercollector-i5adxi4wfq-uc.a.run.app",VISITOR_KEY="atomic_pixel_visitor",SESSION_KEY="atomic_pixel_session",QUEUE_KEY="atomic_pixel_queue",SESSION_TIMEOUT_MS=18e5,MAX_BATCH_SIZE=25,FLUSH_INTERVAL_MS=5e3,flushInProgress=!1,flushTimer=null,pageViewId=null,sessionSequence=1,eventSequence=0,snapshotSequence=0;function now(){return Date.now()}function generateId(){return Math.random().toString(36).substring(2)+now().toString(36)}function generateEventId(eventType,sequence){return[pageViewId||getSessionId(),eventType,sequence||eventSequence+1,Math.random().toString(36).substring(2,10)].join("_")}function getVisitorId(){try{var visitor=localStorage.getItem(VISITOR_KEY);return visitor||(visitor=generateId(),localStorage.setItem(VISITOR_KEY,visitor)),visitor}catch(e){return generateId()}}function getSessionData(){try{return JSON.parse(localStorage.getItem(SESSION_KEY))||null}catch(e){return null}}function saveSessionData(data){localStorage.setItem(SESSION_KEY,JSON.stringify(data))}function createNewSession(){var s={id:generateId(),lastActivity:now(),pageViews:0};return saveSessionData(s),s}function getSessionId(){var s=getSessionData();return!s||now()-s.lastActivity>SESSION_TIMEOUT_MS?createNewSession().id:(s.lastActivity=now(),saveSessionData(s),s.id)}function registerPageView(){var s=getSessionData()||createNewSession();return s.pageViews=(Number(s.pageViews)||0)+1,s.lastActivity=now(),saveSessionData(s),s.pageViews}pageViewId=generateId().substring(0,64),sessionSequence=registerPageView();function getQueue(){try{return JSON.parse(localStorage.getItem(QUEUE_KEY))||[]}catch(e){return[]}}function saveQueue(arr){localStorage.setItem(QUEUE_KEY,JSON.stringify(arr))}function enqueue(eventObj){var q=getQueue();return q.push(eventObj),saveQueue(q),q.length}function cancelScheduledFlush(){flushTimer&&(clearTimeout(flushTimer),flushTimer=null)}function scheduleFlush(queueLength){if(queueLength>=MAX_BATCH_SIZE){cancelScheduledFlush(),flushQueue();return}flushTimer||(flushTimer=setTimeout(function(){flushTimer=null,flushQueue()},FLUSH_INTERVAL_MS))}function trySend(events,callback){if(!navigator.onLine||!events||!events.length){callback(!1);return}fetch(ENDPOINT,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(events)}).then(function(res){callback(res.ok)}).catch(function(){callback(!1)})}function removeSentFromQueue(sentEvents){var sentIds={};sentEvents.forEach(function(evt){evt&&evt.event_id&&(sentIds[evt.event_id]=!0)}),saveQueue(getQueue().filter(function(evt){return!evt||!evt.event_id||!sentIds[evt.event_id]}))}function flushQueueBeacon(){cancelScheduledFlush();var q=getQueue();if(q.length){var payload=JSON.stringify(q);if(navigator.sendBeacon)try{var sent=navigator.sendBeacon(ENDPOINT,new Blob([payload],{type:"application/json"}));if(sent){removeSentFromQueue(q);return}}catch(e){}try{fetch(ENDPOINT,{method:"POST",headers:{"Content-Type":"application/json"},body:payload,keepalive:!0}).then(function(res){res.ok&&removeSentFromQueue(q)})}catch(e){}}}function flushQueue(){cancelScheduledFlush();var q=getQueue();if(q.length){if(flushInProgress){scheduleFlush(0);return}flushInProgress=!0,trySend(q,function(success){flushInProgress=!1,success?(removeSentFromQueue(q),getQueue().length&&flushQueue()):scheduleFlush(0)})}}function hashString(str){for(var hash=5381,i=0;i>>0).toString(16)}function getFingerprintId(){var stored=localStorage.getItem("atomic_pixel_fingerprint");if(stored)return stored;var ua=navigator.userAgent||"",resolution=screen.width+"x"+screen.height,language=navigator.language||"",timezone=new Date().getTimezoneOffset(),str=ua+"|"+resolution+"|"+language+"|"+timezone,fp=hashString(str);return localStorage.setItem("atomic_pixel_fingerprint",fp),fp}function getBrowserName(ua){return ua=ua.toLowerCase(),ua.indexOf("fban")>-1||ua.indexOf("fbav")>-1?"Facebook Browser":ua.indexOf("instagram")>-1?"Instagram Browser":ua.indexOf("chrome")>-1&&ua.indexOf("edg")===-1&&ua.indexOf("opr")===-1?"Chrome":ua.indexOf("safari")>-1&&ua.indexOf("chrome")===-1?"Safari":ua.indexOf("firefox")>-1?"Firefox":ua.indexOf("edg")>-1?"Edge":ua.indexOf("opr")>-1?"Opera":"Unknown"}function getOSName(ua){return ua=ua.toLowerCase(),ua.indexOf("android")>-1?"Android":ua.indexOf("ios")>-1?"iOS":ua.indexOf("windows nt")>-1?"Windows":ua.indexOf("mac os x")>-1||ua.indexOf("macintosh")>-1?"Mac":ua.indexOf("linux")>-1?"Linux":"Unknown"}function getDeviceType(){var width=window.innerWidth||screen.width||0;return width<768?"mobile":width<1024?"tablet":"desktop"}function getOrigin(){var params={},urlParams=new URLSearchParams(window.location.search);return params.utm_source=urlParams.get("utm_source")||null,params.utm_medium=urlParams.get("utm_medium")||null,params.utm_campaign=urlParams.get("utm_campaign")||null,params.utm_term=urlParams.get("utm_term")||null,params.utm_content=urlParams.get("utm_content")||null,params.fbclid=urlParams.get("fbclid")||null,params.gclid=urlParams.get("gclid")||null,params.src=urlParams.get("src")||null,params.sck=urlParams.get("sck")||null,params.xcod=urlParams.get("xcod")||null,params}function getQueryParam(name){try{return new URLSearchParams(window.location.search).get(name)||null}catch(e){return null}}function getPageId(){return(document.body.getAttribute("data-page")||"").replace(/^_/,"")||null}function getPageVersion(){return document.body.getAttribute("data-page-version")||getPageId()}function sanitizeText(value,maxLength){return value?String(value).replace(/\s+/g," ").trim().substring(0,maxLength):null}function findClassValue(element,prefix){for(var current=element;current&¤t!==document.documentElement;){if(current.classList)for(var i=0;i=3,rage_click_count:sameElementClicks}}function isDeadClick(clickTarget){var tag=(clickTarget.tagName||"").toLowerCase();if(tag==="a"){var href=clickTarget.getAttribute("href");return!href||href==="#"||href==="javascript:void(0)"}return!clickTarget.closest("form")&&!clickTarget.getAttribute("onclick")&&!clickTarget.getAttribute("data-target")&&!(clickTarget.className&&String(clickTarget.className).indexOf("atomicat-modal-trigger-")>-1)}function buildClickData(event,clickTarget){var elementId=getElementId(event.target,clickTarget),pattern=getClickPattern(elementId);return{element_id:elementId,element_type:getElementType(clickTarget),element_content:getElementContent(clickTarget),click_type:getClickType(clickTarget),href:getClickHref(clickTarget),target:getClickTarget(clickTarget),text_hash:shortHash(getElementContent(clickTarget)||""),form_field_type:clickTarget.closest("form")?sanitizeText(clickTarget.getAttribute("type"),30):null,container_id:getContainerId(event.target),x_coordinate:Math.round(event.clientX||0),y_coordinate:Math.round(event.clientY||0),page_scroll_y:Math.round(window.pageYOffset||document.documentElement.scrollTop||0),viewport_width:window.innerWidth||null,viewport_height:window.innerHeight||null,is_dead_click:isDeadClick(clickTarget),is_rage_click:pattern.is_rage_click,rage_click_count:pattern.rage_click_count}}var SCROLL_MILESTONES=[25,50,75,90,100],sentScrollMilestones={},maxScrollDepth=0,maxScrollPixels=0,maxScrollReachedAt=null,lastSentScrollDepth=0,lastScrollY=window.pageYOffset||document.documentElement.scrollTop||0,scrollTimer=null;function getScrollMetrics(){var doc=document.documentElement,body=document.body||{},viewportHeight=window.innerHeight||doc.clientHeight||0,pageHeight=Math.max(body.scrollHeight||0,doc.scrollHeight||0,body.offsetHeight||0,doc.offsetHeight||0,body.clientHeight||0,doc.clientHeight||0),scrollTop=Math.max(window.pageYOffset||0,doc.scrollTop||0,body.scrollTop||0),maxScrollable=Math.max(pageHeight-viewportHeight,0),scrollPixels=Math.min(scrollTop+viewportHeight,pageHeight),scrollPercent=maxScrollable===0?100:Math.min(100,Math.max(0,Math.round(scrollPixels/pageHeight*100))),direction=scrollTop>=lastScrollY?"down":"up";return lastScrollY=scrollTop,scrollPercent>maxScrollDepth&&(maxScrollDepth=scrollPercent,maxScrollPixels=Math.round(scrollPixels),maxScrollReachedAt=now()),{scroll_depth_percentage:scrollPercent,scroll_depth_pixels:Math.round(scrollPixels),page_height:Math.round(pageHeight),viewport_height:Math.round(viewportHeight),scroll_direction:direction,is_excessive_scroll:scrollPercent>=90,time_to_max_scroll:maxScrollReachedAt?Math.max(0,Math.round(maxScrollReachedAt-pageEnterTime)):null}}function sendScrollEvent(metrics,trigger){metrics&&sendEvent("Scroll",{event_trigger:trigger||"manual",scroll_data:metrics})}function trackScrollMilestone(){getScrollMetrics()}function handleScroll(){scrollTimer||(scrollTimer=setTimeout(function(){scrollTimer=null,trackScrollMilestone()},250))}function sendScrollCheckpoint(trigger){var metrics=getScrollMetrics();maxScrollDepth>0&&maxScrollDepth>lastSentScrollDepth&&(metrics.scroll_depth_percentage=maxScrollDepth,metrics.scroll_depth_pixels=maxScrollPixels,metrics.is_excessive_scroll=maxScrollDepth>=90,metrics.time_to_max_scroll=maxScrollReachedAt?Math.max(0,Math.round(maxScrollReachedAt-pageEnterTime)):null,metrics.scroll_event_type=trigger==="pagehide"?"final":"checkpoint",sendScrollEvent(metrics,trigger),lastSentScrollDepth=maxScrollDepth)}var ATTENTION_BAND_COUNT=10,ATTENTION_MIN_DURATION=1e3,ATTENTION_MAX_ROWS=5,attentionBands=[],attentionTimer=null,attentionLastTick=null,lastAttentionSignature="";function getDocumentSize(){var doc=document.documentElement,body=document.body||{},viewportHeight=window.innerHeight||doc.clientHeight||0,pageHeight=Math.max(body.scrollHeight||0,doc.scrollHeight||0,body.offsetHeight||0,doc.offsetHeight||0,body.clientHeight||0,doc.clientHeight||0),scrollTop=Math.max(window.pageYOffset||0,doc.scrollTop||0,body.scrollTop||0);return{pageHeight:Math.max(pageHeight,viewportHeight,1),viewportHeight,scrollTop}}function ensureAttentionBands(pageHeight){if(attentionBands.length!==ATTENTION_BAND_COUNT){attentionBands=[];for(var i=0;i0&&size.viewportHeight>0&&(band.duration+=elapsed*Math.min(1,overlap/size.viewportHeight))})}}function startAttentionTracking(){attentionTimer||(attentionLastTick=now(),trackAttentionTick(),attentionTimer=window.setInterval(trackAttentionTick,1e3))}function resumeVisibleAttention(){attentionLastTick=now()}function sendAttentionCheckpoint(trigger){trackAttentionTick(!0);var rows=attentionBands.filter(function(band){return band.duration>=ATTENTION_MIN_DURATION}).sort(function(a,b){return b.duration-a.duration}).slice(0,ATTENTION_MAX_ROWS),signature=rows.map(function(band){return band.index+":"+Math.round(band.duration)}).join("|");if(!(!signature||signature===lastAttentionSignature)){lastAttentionSignature=signature;var eventGroupId=pageViewId+"_attention_"+ ++snapshotSequence;rows.forEach(function(band){sendEvent("Attention",{event_group_id:eventGroupId,event_trigger:trigger||"manual",attention_data:{element_id:null,container_id:null,attention_duration:Math.round(band.duration),area_top:band.area_top,area_bottom:band.area_bottom,area_left:0,area_right:window.innerWidth||document.documentElement.clientWidth||0,attention_type:"viewport_band",band_index:band.index}})})}}var pageEnterTime=now(),visibleSince=document.hidden?null:pageEnterTime,activeTimeOnPage=0,javascriptErrors=0,interactionSeen=!1,lastPerformanceSignature="",webVitals={largest_contentful_paint:null,first_input_delay:null,cumulative_layout_shift:null,first_contentful_paint:null,time_to_interactive:null,total_blocking_time:null};function trackVisibleTime(){visibleSince&&(activeTimeOnPage+=now()-visibleSince,visibleSince=null)}function resumeVisibleTime(){!document.hidden&&!visibleSince&&(visibleSince=now())}function getPageLoadTime(){try{var nav=performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(nav&&nav.loadEventEnd>0)return Math.round(nav.loadEventEnd);if(performance.timing&&performance.timing.loadEventEnd)return Math.round(performance.timing.loadEventEnd-performance.timing.navigationStart)}catch(e){}return null}function observePerformanceEntry(type,callback){if("PerformanceObserver"in window)try{var observer=new PerformanceObserver(function(list){list.getEntries().forEach(callback)});observer.observe({type,buffered:!0})}catch(e){}}function startPerformanceTracking(){window.addEventListener("error",function(){javascriptErrors+=1}),window.addEventListener("unhandledrejection",function(){javascriptErrors+=1}),observePerformanceEntry("paint",function(entry){entry.name==="first-contentful-paint"&&(webVitals.first_contentful_paint=Math.round(entry.startTime))}),observePerformanceEntry("largest-contentful-paint",function(entry){webVitals.largest_contentful_paint=Math.round(entry.startTime)}),observePerformanceEntry("first-input",function(entry){webVitals.first_input_delay=Math.round(entry.processingStart-entry.startTime)}),observePerformanceEntry("layout-shift",function(entry){entry.hadRecentInput||(webVitals.cumulative_layout_shift=Math.round(((webVitals.cumulative_layout_shift||0)+entry.value)*1e3)/1e3)}),observePerformanceEntry("longtask",function(entry){webVitals.total_blocking_time=Math.round((webVitals.total_blocking_time||0)+Math.max(0,entry.duration-50))})}function getCurrentEngagementTime(){return Math.round(activeTimeOnPage+(visibleSince?Math.max(0,now()-visibleSince):0))}function isEngagedSession(){return getCurrentEngagementTime()>=1e4||maxScrollDepth>=25||interactionSeen}function sendPerformanceCheckpoint(trigger){trackVisibleTime();var pageExitTime=now(),activeTime=Math.round(activeTimeOnPage),signature=[activeTime,javascriptErrors,Math.round(pageExitTime/1e3)].join("|");signature!==lastPerformanceSignature&&(lastPerformanceSignature=signature,sendEvent("Performance",{event_trigger:trigger||"manual",performance_data:{page_load_time:getPageLoadTime(),is_quick_back:pageExitTime-pageEnterTime<5e3,javascript_errors:javascriptErrors},web_vitals:webVitals,timing_data:{page_enter_time:new Date(pageEnterTime).toISOString(),page_exit_time:new Date(pageExitTime).toISOString(),active_time_on_page:activeTime}}))}var ACTIVE_EXPERIMENT_COOKIE="at_ab_active",EXPERIMENT_COOKIE_MAX_AGE=2592e3;function getCookie(name){try{for(var cookies=document.cookie?document.cookie.split("; "):[],i=0;i{const cls=[...el.classList].find(c=>c.startsWith("a-u-"));return cls&&el.dataset.hex?{v:el.dataset.hex,p:+cls.replace(/\D+/g,"")}:null}).filter(Boolean).sort((a,b)=>a.p-b.p).map(c=>c.v).join("");if(chunks)return chunks}catch(e){}return(_a=document.body.id)==null?void 0:_a.replace("_","")}function sendLifecycleCheckpoint(trigger){sendScrollCheckpoint(trigger),sendAttentionCheckpoint(trigger),sendPerformanceCheckpoint(trigger),flushQueueBeacon()}window.addEventListener("online",flushQueue),window.addEventListener("scroll",handleScroll,{passive:!0}),window.addEventListener("pagehide",function(){sendLifecycleCheckpoint("pagehide")}),document.addEventListener("visibilitychange",function(){document.hidden?(trackVisibleTime(),sendLifecycleCheckpoint("hidden")):(resumeVisibleTime(),resumeVisibleAttention(),flushQueue())}),document.addEventListener("freeze",function(){trackVisibleTime(),sendLifecycleCheckpoint("freeze")}),document.readyState==="complete"||document.readyState==="interactive"?sendEvent("PageView",{event_trigger:"initial"}):document.addEventListener("DOMContentLoaded",function(){sendEvent("PageView",{event_trigger:"initial"})}),document.addEventListener("click",function(e){var experimentContext=getExperimentContext(),goalSelector=experimentContext.goal_selector,matchesGoalSelector=elementMatchesGoalSelector(e.target,goalSelector),clickTarget=getImportantClickable(e.target);if(!(!clickTarget&&!matchesGoalSelector)){var targetForData=clickTarget||e.target,clickGoalId=resolveClickGoalId(experimentContext,clickTarget||e.target);sendEvent("Click",{event_trigger:"click",click_data:buildClickData(e,targetForData),goal_id:clickGoalId})}}),startPerformanceTracking(),document.readyState==="complete"||document.readyState==="interactive"?startAttentionTracking():document.addEventListener("DOMContentLoaded",startAttentionTracking);function debugLog(message,data=null){const debugKey="atomic_pixel_debug",debugMessage=`[${new Date().toISOString()}] ${message}`;try{let debugLogs=JSON.parse(localStorage.getItem(debugKey)||"[]");debugLogs.push(debugMessage),data&&debugLogs.push(JSON.stringify(data,null,2)),debugLogs.length>50&&(debugLogs=debugLogs.slice(-50)),localStorage.setItem(debugKey,JSON.stringify(debugLogs))}catch(e){console.error("Failed to save debug log:",e)}try{localStorage.getItem("atomic_pixel_debug_enabled")==="1"&&(console.log(debugMessage),data&&console.log(data))}catch(e){}}function buildInitiateCheckoutEvent(btn,experimentContext){var ua=navigator.userAgent,sequence=++eventSequence;interactionSeen=!0;var resolvedGoalId=resolveClickGoalId(experimentContext,btn);return{event_id:generateEventId("InitiateCheckout",sequence),page_view_id:pageViewId,event_group_id:null,event_sequence:sequence,event_trigger:"click",event_type:"InitiateCheckout",event_timestamp:now(),owner_id:getUid()||null,project_id:document.body.getAttribute("data-project")||null,funnel_id:document.body.getAttribute("data-funnel")||null,page_id:getPageId(),page_type:document.body.getAttribute("data-page-type")||null,page_category:document.body.getAttribute("data-page-category")||null,fingerprint_id:getFingerprintId(),session_id:getSessionId(),visitor_id:getVisitorId(),session_sequence:sessionSequence,ip:null,country:null,city:null,browser_name:getBrowserName(ua),os_name:getOSName(ua),user_agent:ua,device_type:getDeviceType(),screen_width:screen.width||null,screen_height:screen.height||null,viewport_width:window.innerWidth||document.documentElement.clientWidth||null,viewport_height:window.innerHeight||document.documentElement.clientHeight||null,language:navigator.language||null,timezone_offset:new Date().getTimezoneOffset(),engagement_time_msec:getCurrentEngagementTime(),is_engaged_session:isEngagedSession(),url:location.href||null,site:location.hostname||null,page_version:getPageVersion(),referrer:document.referrer||null,origin:getOrigin(),experiment_id:experimentContext.experiment_id,variant_id:experimentContext.variant_id,assignment_id:experimentContext.assignment_id,experiment_type:experimentContext.experiment_type,goal_id:resolvedGoalId!==void 0?resolvedGoalId:experimentContext.goal_id||null,event_value:experimentContext.event_value}}function sendCheckoutEventImmediate(evt){debugLog("[AtomicPixel] Sending checkout event",evt);var payload=JSON.stringify([evt]);try{var xhr=new XMLHttpRequest;if(xhr.open("POST",ENDPOINT,!1),xhr.setRequestHeader("Content-Type","application/json"),xhr.send(payload),xhr.status===200)return debugLog("[AtomicPixel] Checkout event sent successfully"),!0;debugLog("[AtomicPixel] Failed to send checkout event",{status:xhr.status})}catch(error){debugLog("[AtomicPixel] Error sending checkout event",error)}try{return fetch(ENDPOINT,{method:"POST",headers:{"Content-Type":"application/json"},body:payload,keepalive:!0}),debugLog("[AtomicPixel] Checkout event sent via keepalive fetch"),!0}catch(fetchError){debugLog("[AtomicPixel] keepalive fetch checkout failed",fetchError)}try{enqueue(evt),flushQueue()}catch(queueError){debugLog("[AtomicPixel] Checkout queue fallback failed",queueError)}return!1}document.addEventListener("click",function(e){var btn=e.target.closest(".atomicat-checkout-button");if(!btn)for(var parent=e.target.parentElement;parent;){if(parent.classList&&parent.classList.contains("atomicat-checkout-button")){btn=parent;break}parent=parent.parentElement}if(btn){debugLog("[AtomicPixel] Detected InitiateCheckout click");var experimentContext=getExperimentContext(),anchor=btn.tagName==="A"?btn:btn.querySelector("a"),opensInNewTab=!!anchor&&!!anchor.getAttribute("target")&&anchor.getAttribute("target")!=="_self",evt=buildInitiateCheckoutEvent(btn,experimentContext);if(e.preventDefault(),sendCheckoutEventImmediate(evt),!(!anchor||!anchor.href)){if(opensInNewTab){var newTab=null;try{newTab=window.open(anchor.href,"_blank","noopener,noreferrer")}catch(openError){debugLog("[AtomicPixel] window.open failed",openError)}newTab||(window.location.href=anchor.href);return}window.location.href=anchor.href}}}),window.addEventListener("pagehide",function(){flushQueueBeacon()}),window.AtomicPixel={track:function(type,properties){sendEvent(type,properties)},flush:flushQueue,debug:function(){const logs=JSON.parse(localStorage.getItem("atomic_pixel_debug")||"[]");return console.log("=== AtomicPixel Debug Logs ==="),logs.forEach(log=>console.log(log)),logs},clearDebug:function(){localStorage.removeItem("atomic_pixel_debug"),console.log("AtomicPixel debug logs cleared")},enableDebug:function(enabled){enabled===!1?(localStorage.removeItem("atomic_pixel_debug_enabled"),console.log("AtomicPixel live debug disabled")):(localStorage.setItem("atomic_pixel_debug_enabled","1"),console.log("AtomicPixel live debug enabled"))}}})();