+
+ // Implement theme picker
+ function applyTheme() {
+ const savedTheme = localStorage.getItem('theme');
+ const prefersDark = matchMedia('(prefers-color-scheme: dark)').matches;
+ if ((savedTheme === 'dark' && prefersDark) || (savedTheme === 'light' && !prefersDark)) { localStorage.removeItem('theme'); }
+ document.documentElement.dataset.theme = savedTheme ?? (prefersDark ? 'dark' : 'light');
+ }
+ applyTheme();
+ const toggle = document.querySelector('#theme-toggle');
+ toggle.checked = document.documentElement.dataset.theme === 'dark';
+ toggle.addEventListener('change', () => {
+ if (localStorage.getItem('theme') !== null) { localStorage.removeItem('theme'); }
+ else { localStorage.setItem('theme', matchMedia('(prefers-color-scheme: dark)').matches ? 'light' : 'dark'); }
+ applyTheme();
+ });