add_action(‘wp_enqueue_scripts’, function () {
wp_register_style(‘busr-wc-calculator-style’, false);
wp_enqueue_style(‘busr-wc-calculator-style’);
wp_add_inline_style(‘busr-wc-calculator-style’, <<<'CSS' #busr-wc-app{font-family:Arial,Helvetica,sans-serif;background:#f4f7fb;color:#102033;padding:22px;border-radius:18px;max-width:1320px;margin:0 auto;box-sizing:border-box} #busr-wc-app *{box-sizing:border-box} .bwc-hero{background:linear-gradient(135deg,#eaf4ff,#f8fbff);border:1px solid #cfe3f8;border-radius:18px;padding:24px;margin-bottom:18px;display:flex;gap:18px;align-items:center;justify-content:space-between} .bwc-hero h1{margin:0 0 8px;font-size:34px;line-height:1.1;color:#113b68}.bwc-hero p{margin:0;color:#4b637a;font-size:15px}.bwc-trophy{width:82px;height:auto;object-fit:contain}.bwc-actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 18px}.bwc-btn{border:0;border-radius:10px;padding:11px 15px;background:#57b7ff;color:#082640;font-weight:700;cursor:pointer}.bwc-btn.gray{background:#d9e2ec;color:#22384f}.bwc-layout{display:grid;grid-template-columns:minmax(360px,420px) 1fr;gap:18px}.bwc-panel{background:#fff;border:1px solid #dce8f4;border-radius:16px;padding:14px;box-shadow:0 8px 22px rgba(16,32,51,.05)}.bwc-groups{display:flex;flex-direction:column;gap:12px;max-height:900px;overflow:auto;padding-right:4px}.bwc-group h3,.bwc-panel h2{margin:0 0 10px;color:#113b68}.bwc-match{display:grid;grid-template-columns:1fr 46px 20px 46px 1fr;gap:6px;align-items:center;margin:7px 0;font-size:12px}.bwc-team{display:flex;align-items:center;gap:6px;min-width:0}.bwc-team img{width:22px;height:15px;object-fit:cover;border:1px solid #d6dde6}.bwc-team span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bwc-match input{width:46px;border:1px solid #ccd9e6;border-radius:8px;padding:6px;text-align:center}.bwc-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px}.bwc-table th,.bwc-table td{border-bottom:1px solid #edf2f7;padding:6px;text-align:center}.bwc-table th:first-child,.bwc-table td:first-child{text-align:left}.bwc-q{font-weight:700;color:#1375b7}.bwc-third{font-weight:700;color:#64748b}.bwc-bracket{overflow:auto;padding-bottom:10px}.bwc-bracket-inner{min-width:900px;display:grid;grid-template-columns:repeat(5,1fr);gap:18px;align-items:stretch}.bwc-round{display:flex;flex-direction:column;justify-content:space-around;gap:14px}.bwc-round-title{text-align:center;font-weight:800;color:#113b68;margin-bottom:8px}.bwc-game{background:#f8fbff;border:1px solid #cfe3f8;border-radius:12px;padding:8px;position:relative;min-height:76px}.bwc-game-title{font-size:11px;color:#64748b;margin-bottom:5px;font-weight:700}.bwc-pick{display:flex;align-items:center;gap:6px;width:100%;border:1px solid #dce8f4;background:#fff;border-radius:8px;padding:6px;margin:4px 0;cursor:pointer;text-align:left;color:#102033}.bwc-pick img{width:22px;height:15px;object-fit:cover;border:1px solid #d6dde6}.bwc-pick.active{background:#eaf6ff;border-color:#57b7ff;font-weight:800}.bwc-pick.empty{cursor:default;color:#94a3b8}.bwc-champion{margin-top:16px;background:#eaf6ff;border:1px solid #57b7ff;border-radius:16px;padding:16px;text-align:center}.bwc-champion strong{font-size:24px;color:#113b68}.bwc-note{font-size:12px;color:#64748b;margin-top:10px}.bwc-error{background:#fff4f4;border:1px solid #ffb4b4;color:#7a1111;padding:12px;border-radius:10px;margin:12px 0;font-weight:700}@media(max-width:900px){.bwc-layout{grid-template-columns:1fr}.bwc-hero{align-items:flex-start}.bwc-hero h1{font-size:26px}.bwc-trophy{width:60px}} CSS);wp_register_script('busr-wc-calculator-script', false, array(), null, true); wp_enqueue_script('busr-wc-calculator-script'); wp_add_inline_script('busr-wc-calculator-script', <<<'JS' document.addEventListener('DOMContentLoaded',function(){ (function(){ try{ var teams={ MEX:{name:"Mexico",flag:"mx"},RSA:{name:"South Africa",flag:"za"},KOR:{name:"South Korea",flag:"kr"},CZE:{name:"Czechia",flag:"cz"}, CAN:{name:"Canada",flag:"ca"},BIH:{name:"Bosnia and Herzegovina",flag:"ba"},QAT:{name:"Qatar",flag:"qa"},SUI:{name:"Switzerland",flag:"ch"}, BRA:{name:"Brazil",flag:"br"},MAR:{name:"Morocco",flag:"ma"},HTI:{name:"Haiti",flag:"ht"},SCO:{name:"Scotland",flag:"gb-sct"}, USA:{name:"United States",flag:"us"},PAR:{name:"Paraguay",flag:"py"},AUS:{name:"Australia",flag:"au"},TUR:{name:"Turkey",flag:"tr"}, GER:{name:"Germany",flag:"de"},CUW:{name:"Curacao",flag:"cw"},CIV:{name:"Ivory Coast",flag:"ci"},ECU:{name:"Ecuador",flag:"ec"}, NED:{name:"Netherlands",flag:"nl"},JPN:{name:"Japan",flag:"jp"},SWE:{name:"Sweden",flag:"se"},TUN:{name:"Tunisia",flag:"tn"}, BEL:{name:"Belgium",flag:"be"},EGY:{name:"Egypt",flag:"eg"},IRI:{name:"Iran",flag:"ir"},NZL:{name:"New Zealand",flag:"nz"}, ESP:{name:"Spain",flag:"es"},CPV:{name:"Cape Verde",flag:"cv"},KSA:{name:"Saudi Arabia",flag:"sa"},URU:{name:"Uruguay",flag:"uy"}, FRA:{name:"France",flag:"fr"},SEN:{name:"Senegal",flag:"sn"},IRQ:{name:"Iraq",flag:"iq"},NOR:{name:"Norway",flag:"no"}, ARG:{name:"Argentina",flag:"ar"},DZA:{name:"Algeria",flag:"dz"},AUT:{name:"Austria",flag:"at"},JOR:{name:"Jordan",flag:"jo"}, POR:{name:"Portugal",flag:"pt"},COD:{name:"DR Congo",flag:"cd"},UZB:{name:"Uzbekistan",flag:"uz"},COL:{name:"Colombia",flag:"co"}, ENG:{name:"England",flag:"gb-eng"},CRO:{name:"Croatia",flag:"hr"},GHA:{name:"Ghana",flag:"gh"},PAN:{name:"Panama",flag:"pa"} }; var groupTeams={A:["MEX","RSA","KOR","CZE"],B:["CAN","BIH","QAT","SUI"],C:["BRA","MAR","HTI","SCO"],D:["USA","PAR","AUS","TUR"],E:["GER","CUW","CIV","ECU"],F:["NED","JPN","SWE","TUN"],G:["BEL","EGY","IRI","NZL"],H:["ESP","CPV","KSA","URU"],I:["FRA","SEN","IRQ","NOR"],J:["ARG","DZA","AUT","JOR"],K:["POR","COD","UZB","COL"],L:["ENG","CRO","GHA","PAN"]}; var scores={}; var bracketWinners={}; function flag(code){return "https://flagcdn.com/24x18/"+teams[code].flag+".png";} function teamLabel(code){if(!code){return "TBD";}return teams[code].name;} function teamButton(code,matchId){if(!code){return '‘; }return ‘‘;}
function makeMatches(arr){return [[arr[0],arr[1]],[arr[2],arr[3]],[arr[0],arr[2]],[arr[3],arr[1]],[arr[3],arr[0]],[arr[1],arr[2]]];}
function resetData(){scores={};Object.keys(groupTeams).forEach(function(g){scores[g]=[[null,null],[null,null],[null,null],[null,null],[null,null],[null,null]];});bracketWinners={};}
function renderGroups(){var box=document.getElementById(“bwc-groups”);var html=””;Object.keys(groupTeams).forEach(function(g){var ms=makeMatches(groupTeams[g]);html+=’

Group ‘+g+’

‘;ms.forEach(function(m,i){var s=scores[g][i];html+=’

‘+teamLabel(m[0])+’

vs

‘+teamLabel(m[1])+’

‘;});html+=’

‘;});box.innerHTML=html;box.querySelectorAll(“input”).forEach(function(inp){inp.addEventListener(“input”,function(){var v=this.value===””?null:parseInt(this.value,10);scores[this.getAttribute(“data-g”)][parseInt(this.getAttribute(“data-i”),10)][parseInt(this.getAttribute(“data-side”),10)]=isNaN(v)?null:v;calculate();});});}
function tableFor(g){var rows={};groupTeams[g].forEach(function(c){rows[c]={code:c,p:0,w:0,d:0,l:0,gf:0,ga:0,gd:0,pts:0};});var ms=makeMatches(groupTeams[g]);ms.forEach(function(m,i){var a=m[0],b=m[1],sa=scores[g][i][0],sb=scores[g][i][1];if(sa===null||sb===null){return;}rows[a].p++;rows[b].p++;rows[a].gf+=sa;rows[a].ga+=sb;rows[b].gf+=sb;rows[b].ga+=sa;if(sa>sb){rows[a].w++;rows[b].l++;rows[a].pts+=3;}else if(sb>sa){rows[b].w++;rows[a].l++;rows[b].pts+=3;}else{rows[a].d++;rows[b].d++;rows[a].pts++;rows[b].pts++;}});var out=Object.keys(rows).map(function(k){rows[k].gd=rows[k].gf-rows[k].ga;return rows[k];});out.sort(function(a,b){return b.pts-a.pts||b.gd-a.gd||b.gf-a.gf||teamLabel(a.code).localeCompare(teamLabel(b.code));});return out;}
function renderTable(g,rows){var html=’

‘;rows.forEach(function(r,i){html+=’

‘;});html+=’

TeamPGDPts
‘+(i+1)+’. ‘+teamLabel(r.code)+’‘+r.p+’‘+r.gd+’‘+r.pts+’

‘;document.getElementById(“bwc-table-“+g).innerHTML=html;}
function calculate(){var standings={},thirds=[];Object.keys(groupTeams).forEach(function(g){var rows=tableFor(g);standings[g]=rows;renderTable(g,rows);thirds.push({group:g,code:rows[2].code,pts:rows[2].pts,gd:rows[2].gd,gf:rows[2].gf});});thirds.sort(function(a,b){return b.pts-a.pts||b.gd-a.gd||b.gf-a.gf||teamLabel(a.code).localeCompare(teamLabel(b.code));});renderThirds(thirds);renderBracket(standings,thirds.slice(0,8));}
function renderThirds(thirds){var html=’

‘;thirds.forEach(function(t,i){html+=’

‘;});html+=’

RankTeamGroupPtsStatus
‘+(i+1)+’‘+teamLabel(t.code)+’‘+t.group+’‘+t.pts+’‘+(i<8?"Advances":"Out")+'

‘;document.getElementById(“bwc-thirds”).innerHTML=html;}
function winner(id,a,b){var w=bracketWinners[id];if(w===a||w===b){return w;}return null;}
function renderMatch(id,a,b,title){var w=winner(id,a,b);return ‘

‘+title+’

‘+teamButton(a,id)+teamButton(b,id)+’

‘;}
function renderBracket(st,thirds){var pool=thirds.map(function(t){return t.code;});function n3(){return pool.shift()||null;}function g(pos,grp){return st[grp][pos-1].code;}var r32=[[g(2,”A”),g(2,”B”)],[g(1,”C”),g(2,”F”)],[g(1,”E”),n3()],[g(1,”I”),n3()],[g(1,”A”),n3()],[g(2,”E”),g(2,”I”)],[g(1,”F”),g(2,”C”)],[g(1,”L”),n3()],[g(1,”G”),n3()],[g(1,”D”),n3()],[g(1,”J”),g(2,”H”)],[g(1,”K”),n3()],[g(2,”D”),g(2,”G”)],[g(1,”B”),n3()],[g(2,”J”),g(2,”K”)],[g(2,”L”),g(2,”A”)]];var r32w=[];for(var i=0;i<16;i++){r32w[i]=winner("r32-"+i,r32[i][0],r32[i][1]);}var r16Pairs=[[r32w[0],r32w[1]],[r32w[2],r32w[3]],[r32w[4],r32w[5]],[r32w[6],r32w[7]],[r32w[8],r32w[9]],[r32w[10],r32w[11]],[r32w[12],r32w[13]],[r32w[14],r32w[15]]];var r16w=[];for(i=0;i<8;i++){r16w[i]=winner("r16-"+i,r16Pairs[i][0],r16Pairs[i][1]);}var qfPairs=[[r16w[0],r16w[1]],[r16w[2],r16w[3]],[r16w[4],r16w[5]],[r16w[6],r16w[7]]];var qfw=[];for(i=0;i<4;i++){qfw[i]=winner("qf-"+i,qfPairs[i][0],qfPairs[i][1]);}var sfPairs=[[qfw[0],qfw[1]],[qfw[2],qfw[3]]];var sfw=[];for(i=0;i<2;i++){sfw[i]=winner("sf-"+i,sfPairs[i][0],sfPairs[i][1]);}var finalPair=[sfw[0],sfw[1]];var champ=winner("final-0",finalPair[0],finalPair[1]);var html='

Round of 32

‘;r32.forEach(function(p,i){html+=renderMatch(“r32-“+i,p[0],p[1],”Match “+(i+1));});html+=’

Round of 16

‘;r16Pairs.forEach(function(p,i){html+=renderMatch(“r16-“+i,p[0],p[1],”Match “+(i+1));});html+=’

Quarterfinals

‘;qfPairs.forEach(function(p,i){html+=renderMatch(“qf-“+i,p[0],p[1],”QF “+(i+1));});html+=’

Semifinals

‘;sfPairs.forEach(function(p,i){html+=renderMatch(“sf-“+i,p[0],p[1],”SF “+(i+1));});html+=’

Final

‘+renderMatch(“final-0″,finalPair[0],finalPair[1],”Final”)+’

‘;document.getElementById(“bwc-bracket”).innerHTML=html;document.getElementById(“bwc-champion”).innerHTML=’Champion: ‘+(champ?teamLabel(champ):”TBD”)+’‘;document.querySelectorAll(“.bwc-pick[data-match]”).forEach(function(btn){if(bracketWinners[btn.getAttribute(“data-match”)]===btn.getAttribute(“data-team”)){btn.className+=” active”;}btn.addEventListener(“click”,function(){bracketWinners[this.getAttribute(“data-match”)]=this.getAttribute(“data-team”);calculate();});});}
document.getElementById(“bwc-update”).addEventListener(“click”,calculate);document.getElementById(“bwc-reset”).addEventListener(“click”,function(){resetData();renderGroups();calculate();});resetData();renderGroups();calculate();
}catch(e){document.getElementById(“bwc-error”).innerHTML=’

Calculator error: ‘+e.message+’

‘;}
})();
});
JS);
});

add_shortcode(‘busr_world_cup_calculator’, function () {
return <<<'HTML'

2026 FIFA World Cup Calculator

Simulate group results, best third-place qualifiers, and the full knockout bracket.

World Cup Trophy


Group Stage

Loading groups…

Best Third-Place Teams

Loading third-place table…

Top two teams from each group advance, plus the eight best third-place teams.

Projected Knockout Bracket

Champion: TBD

Click a team in any knockout match to advance it. Bracket updates automatically.

HTML;
});