document.addEventListener("DOMContentLoaded", () => {
  const removeClass = className => Array.from(document.getElementsByClassName(className)).forEach(e => e.classList.remove(className));
  removeClass("js-only");

  const cards = document.querySelectorAll("#cardscontainer a");
  const search = document.getElementById("search");
  const cardscontainer = document.getElementById("cardscontainer");

  search.addEventListener("input", () => {
    const normalizeText = text => text.toLowerCase().trim().normalize('NFD').replace(/\p{Diacritic}/gu, "");
    const searchTerms = normalizeText(search.value).split(" ");
    const hasFilter = searchTerms.length > 0;

    cardscontainer.classList.toggle("list-searched", hasFilter);

    cards.forEach(card => {
      const cardText = normalizeText(`${card.textContent} ${card.dataset.tags}`);
      const isMatch = searchTerms.every(term => cardText.includes(term));

      card.hidden = !isMatch;
      card.classList.toggle("matched-card", hasFilter && isMatch);
    });
  });
});