// progress-bar.js (function() { const progressBar = document.querySelector('.reading-progress'); if (!progressBar) return; // Only enable on pages with substantial content const mainContent = document.querySelector('main'); if (!mainContent) return; function updateProgress() { // Calculate scroll percentage const windowHeight = window.innerHeight; const docHeight = document.documentElement.scrollHeight - windowHeight; const scrolled = window.scrollY; const percent = docHeight > 0 ? (scrolled / docHeight) * 100 : 0; progressBar.style.width = percent + '%'; } // Mark body as scrollable if there's significant content const contentHeight = mainContent.offsetHeight; if (contentHeight > window.innerHeight * 1.5) { document.body.classList.add('scrollable'); } // Use requestAnimationFrame for smooth updates let ticking = false; window.addEventListener('scroll', function() { if (!ticking) { requestAnimationFrame(updateProgress); ticking = true; setTimeout(() => { ticking = false; }, 100); } }, { passive: true }); // Initial update updateProgress(); })();