function openCoinModal(coin) {
  if (typeof coin === 'string') coin = JSON.parse(coin);
  const modal = document.getElementById('tokenModal');
  modal.classList.add('active');
  document.body.classList.add('modal-open');
  
  modal.onclick = (e) => {
    if (e.target === modal) closeModal();
  };
  
  document.getElementById('m-logo').src = coin.image;
  document.getElementById('m-name').textContent = coin.name;
  document.getElementById('m-sym').textContent = coin.symbol;
  document.getElementById('m-price').textContent = '$' + formatPrice(coin.price);
  document.getElementById('m-chg').textContent = `${coin.change>0?'+':''}${coin.change.toFixed(2)}%`;
  document.getElementById('m-chg').style.color = coin.change>0?'#00d395':'#ff5050';
  document.getElementById('m-vol').textContent = '$' + formatNum(coin.volume);
  document.getElementById('m-liq').textContent = '$' + formatNum(coin.liquidity);
  document.getElementById('m-mc').textContent = '$' + formatNum(coin.marketCap);
  document.getElementById('m-addr').textContent = coin.address;
  
  document.getElementById('m-links').innerHTML = `
    <a href="https://dexscreener.com/solana/${coin.address}" target="_blank">DexScreener</a>
    <a href="https://solscan.io/token/${coin.address}" target="_blank">Solscan</a>
    <a href="https://jup.ag/swap/SOL-${coin.address}" target="_blank">Comprar</a>
  `;
  
  loadChart(coin.address);
}

function closeModal() {
  const modal = document.getElementById('tokenModal');
  modal.classList.remove('active');
  modal.onclick = null;
  document.body.classList.remove('modal-open');
  document.querySelector('.custom-chart-wrap').innerHTML = '';
}

async function loadChart(address) {
  const wrap = document.querySelector('.custom-chart-wrap');
  wrap.innerHTML = `
    <iframe 
      src="https://dexscreener.com/solana/${address}?embed=1&theme=light&trades=0&info=0" 
      style="width:100%;height:250px;border:0;border-radius:8px" 
      frameborder="0">
    </iframe>
  `;
}
