(async function(){ try{ const r=await fetch('/api/public/config'); if(!r.ok)return; const c=await r.json(); document.title=`${c.siteName} | ${c.programName}`; const bn=document.getElementById('brandName');if(bn&&c.siteName)bn.textContent=c.siteName; const bp=document.getElementById('brandProgram');if(bp&&c.programName)bp.textContent=c.programName; const sub=document.getElementById('bridgeSubheadline'); if(sub&&c.bridgeSubheadline)sub.textContent=c.bridgeSubheadline; const h=document.getElementById('bridgeHeadline'); if(h&&c.bridgeHeadline)h.textContent=c.bridgeHeadline; const qs=window.location.search; if(qs){document.querySelectorAll('a[href="/start"]').forEach(a=>a.href='/start'+qs)} }catch(e){} // fill each generation's crowd from data-n; cap the rendered icons so the // deeper generations (up to 256) stay compact — the number label is the truth const ICON_CAP=12; document.querySelectorAll('.people[data-n]').forEach(node=>{ const n=parseInt(node.dataset.n,10)||0, show=Math.min(n,ICON_CAP); for(let i=0;iICON_CAP){const d=document.createElement('span');d.className='person-more';d.textContent='+';node.appendChild(d)} }); })();