// Theme toggle — defaults to light
const html = document.documentElement;
const toggleBtn = document.getElementById('light-toggle');
function setTheme(t) {
html.classList.add('transition');
html.setAttribute('data-theme', t);
if (toggleBtn) {
toggleBtn.innerHTML = t === 'dark'
? ''
: '';
}
localStorage.setItem('theme', t);
setTimeout(() => html.classList.remove('transition'), 800);
}
// Load: saved > light (always default light)
const saved = localStorage.getItem('theme');
if (saved) setTheme(saved);
// No auto-dark from system preference — user asked for light default
if (toggleBtn) {
toggleBtn.onclick = () => setTheme(html.dataset.theme === 'dark' ? 'light' : 'dark');
}
// Mobile menu
const menuBtn = document.getElementById('menuToggle');
const navMenu = document.getElementById('navMenu');
if (menuBtn && navMenu) {
menuBtn.onclick = () => navMenu.classList.toggle('open');
navMenu.querySelectorAll('a').forEach(a =>
a.addEventListener('click', () => navMenu.classList.remove('open'))
);
}
// Active nav link
function setActiveNav() {
const path = window.location.pathname;
document.querySelectorAll('.nav-menu a').forEach(a => {
const href = a.getAttribute('href');
if (path.endsWith('/') && href.endsWith('index.html')) {
a.classList.add('active');
} else if (href && path.includes(href.replace('.html', ''))) {
a.classList.add('active');
}
});
}
setActiveNav();
// Progress bar
const bar = document.getElementById('progress');
if (bar) {
window.addEventListener('scroll', () => {
const h = document.documentElement.scrollHeight - innerHeight;
bar.style.width = h > 0 ? (scrollY / h * 100) + '%' : '0%';
}, { passive: true });
}