The Chancellor's Gambit

Senate Rotunda & Sector Map Naboo Trade Embargo
Public Panic35%
Emergency Powers18%
Jedi Suspicion12%
Super generates helpful tools and automates fact-checking across the internet proactively. If you enjoyed this tool, build your own with Super and share it with a friend.
`; const blob = new Blob([html],{type:'text/html'}); const url = URL.createObjectURL(blob); window.open(url,'_blank'); toast("Printable summary opened"); } function openExportModal(){ const data = generateDossier(); document.getElementById('export-json').textContent = JSON.stringify(data,null,2); document.getElementById('export-modal').hidden = false; document.getElementById('export-modal').classList.add('open'); document.getElementById('btn-close-modal').focus(); } // ===== ACTION BUTTONS RENDER ===== function renderActionButtons(){ const sidiousGrid = document.getElementById('sidious-actions'); const palpatineGrid = document.getElementById('palpatine-actions'); sidiousGrid.innerHTML = ''; palpatineGrid.innerHTML = ''; SIDIOUS_ACTIONS.forEach(a=>{ const btn = document.createElement('button'); btn.type = 'button'; btn.className = 'action-btn sidious'; btn.id = a.id; btn.dataset.requiresPowers = 'false'; btn.innerHTML = `${a.icon}${a.label}${a.cost}`; btn.addEventListener('click',()=>executeAction(a,'Sidious')); sidiousGrid.appendChild(btn); }); PALPATINE_ACTIONS.forEach(a=>{ const btn = document.createElement('button'); btn.type = 'button'; btn.className = 'action-btn palpatine'; btn.id = a.id; btn.dataset.requiresPowers = a.id==='declare-empire' ? 'true' : 'false'; btn.innerHTML = `${a.icon}${a.label}${a.cost}`; btn.addEventListener('click',()=>executeAction(a,'Palpatine')); palpatineGrid.appendChild(btn); }); enableActions(); } // ===== KEYBOARD ===== function handleKey(e){ if(e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA') return; if(e.key==='s'||e.key==='S'){document.getElementById('droid-fleet')?.click()} else if(e.key==='p'||e.key==='P'){document.getElementById('emergency-powers')?.click()} else if(e.key==='r'||e.key==='R'){resetState()} else if(e.key==='m'||e.key==='M'){toggleReducedMotion()} } // ===== REDUCED MOTION ===== function toggleReducedMotion(){ state.reducedMotion = !state.reducedMotion; document.getElementById('btn-reduced').setAttribute('aria-pressed', state.reducedMotion); document.documentElement.style.setProperty('--transition-duration', state.reducedMotion ? '0.01ms' : ''); saveState(); toast(state.reducedMotion ? "Reduced motion enabled" : "Reduced motion disabled"); } // ===== EVENT BINDINGS ===== document.getElementById('btn-reset').addEventListener('click',resetState); document.getElementById('btn-replay').addEventListener('click',()=>{if(state.replayMode)exitReplay();else enterReplay()}); document.getElementById('btn-export').addEventListener('click',openExportModal); document.getElementById('btn-export-json').addEventListener('click',exportJSON); document.getElementById('btn-export-html').addEventListener('click',exportHTML); document.getElementById('btn-copy-json').addEventListener('click',()=>{navigator.clipboard.writeText(document.getElementById('export-json').textContent);toast("Copied to clipboard")}); document.getElementById('btn-close-modal').addEventListener('click',()=>{document.getElementById('export-modal').classList.remove('open');document.getElementById('export-modal').hidden=true}); document.getElementById('export-modal').addEventListener('click',e=>{if(e.target===e.currentTarget){document.getElementById('btn-close-modal').click()}}); document.getElementById('btn-clear-ledger').addEventListener('click',()=>{state.ledger=[];state.history=[];state.turn=0;renderLedger();updateReplayUI();saveState();toast("Ledger cleared")}); document.getElementById('replay-range').addEventListener('input',e=>{state.replayIndex=parseInt(e.target.value);applyReplayState(state.replayIndex)}); document.getElementById('btn-replay-step').addEventListener('click',replayStep); document.getElementById('btn-replay-play').addEventListener('click',replayPlay); document.getElementById('btn-victory-continue').addEventListener('click',()=>{document.getElementById('victory-banner').classList.remove('open');document.getElementById('victory-banner').hidden=true;enableActions()}); document.getElementById('btn-defeat-retry').addEventListener('click',()=>{document.getElementById('defeat-banner').classList.remove('open');document.getElementById('defeat-banner').hidden=true;resetState()}); document.addEventListener('keydown',handleKey); // ===== INIT ===== loadState(); renderPresets(); renderActionButtons(); renderLedger(); updateMeters(); updateReplayUI(); initPixi().catch(err=>{console.error(err);toast("Failed to initialize graphics engine")});