As 20 derrotas mais humilhantes da história das Copas

` : ”;
return `

${iconHtml}

${s.value || ”}

${s.label || ”}

`;
}).join(”);

heroFirstItem.innerHTML = `

${firstItem.id}.

${firstItem.name || ”}

${firstItem.textTop ? `

${firstItem.textTop}

` : ”}

${firstItem.img ? “ : ”}

${firstItem.textBottom ? `

${firstItem.textBottom}

` : ”}

${visibleStats.length ? `

${statsHtml}

` : ”}
`;
} else {
heroFirstItem.style.display = ‘none’;
}
}

// Build article items
data.items.forEach((d, index) => {
const nextDriver = data.items[index + 1];
const nextId = nextDriver ? nextDriver.id : null;

// Nav button
const btn = document.createElement(‘button’);
btn.className=”scores-nav-button”;
btn.textContent = d.id;
btn.dataset.articleId = String(d.id);
btn.onclick = () => scrollToSection(d.id);
nav.appendChild(btn);

// ToC entry
const tocBtn = document.createElement(‘button’);
tocBtn.style=”display:block; width:100%; text-align:left; padding:12px; margin-bottom:8px; border:none; background:var(–soft); cursor:pointer; border-radius:12px; font-weight:700; color:var(–text);”;
tocBtn.textContent = `${d.id}. ${d.name}`;
tocBtn.onclick = () => { scrollToSection(d.id); toggleToC(false); };
tocList.appendChild(tocBtn);

if (index === 0) return;

// Stats HTML
const visibleStats = (d.stats || []).filter(s => s && (
String(s.icon || ”).trim() ||
String(s.value || ”).trim() ||
String(s.label || ”).trim()
));

const statsHtml = visibleStats.map(s => {
const hasIcon = Boolean(String(s.icon || ”).trim());
const iconHtml = hasIcon ? `

${s.label || ''}

` : ”;

return `

${iconHtml}

${s.value || ”}

${s.label || ”}

`;
}).join(”);

// Card
const sect = document.createElement(‘section’);
sect.className=”scores-section-shell”;
sect.id = `article-item-${d.id}`;
sect.innerHTML = `

${d.textTop}

${d.img ? `

${d.name}

` : ”}

${d.textBottom}

${visibleStats.length ? `

${statsHtml}

` : ”}
${nextId ? `` : ”}

`;
sections.appendChild(sect);
});

// ToC controls
function toggleToC(open) {
document.getElementById(‘js-toc-drawer’).classList.toggle(‘is-open’, open);
document.getElementById(‘js-toc-overlay’).classList.toggle(‘is-open’, open);
}
document.getElementById(‘js-toc-open’).onclick = () => toggleToC(true);
document.getElementById(‘js-toc-close’).onclick = () => toggleToC(false);
document.getElementById(‘js-toc-overlay’).onclick = () => toggleToC(false);
document.getElementById(‘js-start’).onclick = () => { if (data.items.length > 1) scrollToSection(data.items[1].id); else if (data.items.length) scrollToSection(data.items[0].id); };

// Active nav highlight for manual scrolling only. Clicks set the active state immediately.
const observer = new IntersectionObserver((entries) => {
if (scoresProgrammaticScroll) return;

entries.forEach(entry => {
if (entry.isIntersecting) {
const id = entry.target.id.replace(‘article-item-‘, ”);
setActiveNavButton(id);
}
});
}, { rootMargin: ‘-20% 0px -70% 0px’ });

const observedHero = document.querySelector(‘.scores-hero[id^=”article-item-“]’);
if (observedHero) observer.observe(observedHero);
document.querySelectorAll(‘.scores-section-shell’).forEach(s => observer.observe(s));
});

Últimas

Champions League: Uefa define sedes das finais de 2028 e 2029

A Uefa definiu nesta terça-feira (15) as sedes de...

Escalação do São Paulo hoje: O time contra o Boca Juniors

O aguardado duelo entre São Paulo e Boca Juniors...

Escalação do Fluminense hoje: veja o time contra o Platense

Foto: Marcelo Gonçalves/Fluminense O Fluminense entra em campo...

Escalação do Vasco hoje: veja o time contra o Santa Fe

O Vasco entra em campo nesta terça-feira (15), às...

Atualizações

Em alta

Cristiano Ronaldo indica aposentadoria do futebol

Prestetes a completar 41 anos, Cristiano Ronaldo soltou uma...

Górnik Zabrze x Monaco: onde assistir ao jogo e escalações

Gornik Zabrze e Monaco entram em campo nesta quinta-feira...

Palpite: Man Utd vs Leeds – 13/04/26 – Premier League

O Manchester United recebe o Leeds United em Old...

Müller, Hummels e Sommer compram Estrela da Amadora por 40M€

O futebol português volta a atrair grande investimento estrangeiro,...

Champions League: Uefa define sedes das finais de 2028 e 2029

A Uefa definiu nesta terça-feira (15) as sedes de diversas finais de suas competições para os próximos anos. ➡️ Champions League: Confira a lista...

Escalação do São Paulo hoje: O time contra o Boca Juniors

O aguardado duelo entre São Paulo e Boca Juniors acontece nesta terça-feira, 15 de setembro, às 21h30 (de Brasília), no estádio MorumBIS. O confronto...

Escalação do Fluminense hoje: veja o time contra o Platense

Foto: Marcelo Gonçalves/Fluminense O Fluminense entra em campo nesta terça-feira (15), às 19h (horário de Brasília), para encarar o Platense no Estádio Ciudad...

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui