(()=>{'use strict';const $=s=>document.querySelector(s);const read=(k,session=false)=>{try{return(session?sessionStorage:localStorage).getItem(k)}catch{return null}};const store=(k,v,session=false)=>{try{(session?sessionStorage:localStorage).setItem(k,v)}catch{}};const menu=$('.menu-toggle');menu.addEventListener('click',()=>{const open=menu.getAttribute('aria-expanded')==='true';menu.setAttribute('aria-expanded',String(!open));menu.setAttribute('aria-label',open?'Open menu':'Close menu');$('#mobile-menu').hidden=open});document.addEventListener('keydown',e=>{if(e.key==='Escape'){menu.setAttribute('aria-expanded','false');menu.setAttribute('aria-label','Open menu');$('#mobile-menu').hidden=true}});const consent=$('#consent');consent.hidden=!!read('bx-consent');document.querySelectorAll('[data-consent]').forEach(b=>b.addEventListener('click',()=>{store('bx-consent',b.dataset.consent);consent.hidden=true}));document.querySelector('[data-preferences]').addEventListener('click',()=>{consent.hidden=false;consent.querySelector('button').focus()});const form=$('#scanner-form');if(form){let timer=null,step=0;const wallet=$('#wallet'),network=$('#network'),error=$('#wallet-error'),scanButton=$('#scan-button');const valid=/^0x[0-9a-fA-F]{40}$/;function lock(active){wallet.disabled=active;network.disabled=active;scanButton.disabled=active;$('.input-clear').disabled=active;form.setAttribute('aria-busy',String(active))}function reset(){clearInterval(timer);timer=null;lock(false);$('#scan-idle').hidden=false;$('#scan-progress').hidden=true;$('#scan-result').hidden=true;error.textContent='';wallet.removeAttribute('aria-invalid');$('.input-clear').hidden=!wallet.value;}wallet.addEventListener('input',reset);network.addEventListener('change',reset);$('.input-clear').addEventListener('click',()=>{wallet.value='';reset();wallet.focus()});$('#use-example').addEventListener('click',()=>{wallet.value='0x1111111111111111111111111111111111111111';reset();wallet.focus()});$('#scan-again').addEventListener('click',()=>{reset();wallet.focus()});$('#cancel-scan').addEventListener('click',()=>{reset();scanButton.focus()});form.addEventListener('submit',e=>{e.preventDefault();const value=wallet.value.trim();if(!valid.test(value)){error.textContent='Enter 0x followed by exactly 40 hexadecimal characters (0–9, a–f).';wallet.setAttribute('aria-invalid','true');wallet.focus();return}reset();wallet.value=value;lock(true);step=0;$('#scan-idle').hidden=true;$('#scan-progress').hidden=false;$('#progress').value=0;$('#progress-percent').textContent='0%';$('#scan-step').textContent='Preparing demonstration…';const stages=['Loading sample approvals…','Reviewing sample allowances…','Preparing sample report…'];timer=setInterval(()=>{step++;$('#progress').value=step*100/3;$('#progress-percent').textContent=Math.round(step*100/3)+'%';$('#scan-step').textContent=stages[Math.min(step-1,2)];if(step===3){clearInterval(timer);timer=null;store('bx-scan',JSON.stringify({address:value,network:network.value}),true);lock(false);$('#scan-progress').hidden=true;$('#scan-result').hidden=false;}},1000)});window.addEventListener('pagehide',()=>clearInterval(timer))}let context={address:null,network:'Ethereum'};try{const data=JSON.parse(read('bx-scan',true)||'null');if(data&&/^0x[0-9a-fA-F]{40}$/.test(data.address)&&['Ethereum','Arbitrum','Optimism','Polygon','BNB Chain','Avalanche'].includes(data.network))context=data}catch{}if($('#report-address')){if(context.address)$('#report-address').textContent=context.address;$('#report-network').textContent=context.network+' · sample';document.querySelectorAll('[data-filter]').forEach(button=>button.addEventListener('click',()=>{let count=0;document.querySelectorAll('[data-category]').forEach(row=>{row.hidden=button.dataset.filter!=='all'&&row.dataset.category!==button.dataset.filter;if(!row.hidden)count++});document.querySelectorAll('[data-filter]').forEach(b=>{const on=b===button;b.classList.toggle('active',on);b.setAttribute('aria-pressed',String(on))});$('#finding-count').textContent=count}));}const signup=$('#signup');if(signup){const p=new URLSearchParams(location.search).get('plan');if(['free','pro','enterprise'].includes(p))$('#plan').value=p;signup.addEventListener('submit',e=>{e.preventDefault();if(!signup.reportValidity())return;$('#signup-success').textContent='Demo complete. Your '+$('#plan').selectedOptions[0].textContent.split(' — ')[0]+' selection is ready. No account was created, no email was sent and no charge was made.';$('#signup-success').hidden=false});['email','plan'].forEach(id=>$('#'+id).addEventListener('input',()=>{$('#signup-success').hidden=true}))}})();