let fontStep = localStorage.getItem("fontStep") 
  ? parseInt(localStorage.getItem("fontStep")) 
  : 0;

// Apply on load
applyFontChange(fontStep);

function changeFont(step) {
  fontStep += step;

  // Limit range
  if (fontStep < -4) fontStep = -4;
  if (fontStep > 6) fontStep = 6;

  applyFontChange(fontStep);
  localStorage.setItem("fontStep", fontStep);
}

function resetFont() {
  fontStep = 0;
  applyFontChange(fontStep);
  localStorage.setItem("fontStep", fontStep);
}

function applyFontChange(step) {
  const elements = document.querySelectorAll("body *");

  elements.forEach(el => {
    const style = window.getComputedStyle(el);
    const fontSize = parseFloat(style.fontSize);

    // Store original font size once
    if (!el.dataset.originalSize) {
      el.dataset.originalSize = fontSize;
    }

    const newSize = parseFloat(el.dataset.originalSize) + step;

    el.style.fontSize = newSize + "px";
  });
}