diff --git a/app/templates/base.html b/app/templates/base.html index 80591ee..01b5e51 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -326,14 +326,6 @@ -
@@ -954,7 +946,37 @@ const html = document.documentElement; const current = html.getAttribute('data-theme'); html.setAttribute('data-theme', current === 'dark' ? 'light' : 'dark'); - localStorage.setItem('theme', current === 'dark' ? 'light' : 'dark'); + localStorage.setItem('fd_theme', current === 'dark' ? 'light' : 'dark'); + if (current === 'dark') { + // Switching to light + html.style.setProperty('--bg-primary', '#FFFFFF'); + html.style.setProperty('--bg-secondary', '#F7F6F3'); + html.style.setProperty('--bg-tertiary', '#EDECE9'); + html.style.setProperty('--text', '#37352F'); + html.style.setProperty('--text-secondary', '#6B6966'); + html.style.setProperty('--text-dim', '#9B9A97'); + html.style.setProperty('--border', '#E0DFDC'); + html.style.setProperty('--border-strong', '#CCCBC8'); + } else { + // Switching to dark — remove overrides, use CSS defaults + ['bg-primary','bg-secondary','bg-tertiary','text','text-secondary','text-dim','border','border-strong'].forEach(function(v) { + html.style.removeProperty('--'+v); + }); + } + }, + initTheme() { + var saved = localStorage.getItem('fd_theme') || 'dark'; + if (saved === 'light') { + document.documentElement.setAttribute('data-theme', 'light'); + document.documentElement.style.setProperty('--bg-primary', '#FFFFFF'); + document.documentElement.style.setProperty('--bg-secondary', '#F7F6F3'); + document.documentElement.style.setProperty('--bg-tertiary', '#EDECE9'); + document.documentElement.style.setProperty('--text', '#37352F'); + document.documentElement.style.setProperty('--text-secondary', '#6B6966'); + document.documentElement.style.setProperty('--text-dim', '#9B9A97'); + document.documentElement.style.setProperty('--border', '#E0DFDC'); + document.documentElement.style.setProperty('--border-strong', '#CCCBC8'); + } } }; } @@ -978,6 +1000,23 @@ if (active) active.scrollIntoView({ block: 'nearest', behavior: 'smooth' }); }, 300); }); + + // Apply saved theme on page load + (function() { + var saved = localStorage.getItem('fd_theme') || 'dark'; + if (saved === 'light') { + var h = document.documentElement; + h.setAttribute('data-theme', 'light'); + h.style.setProperty('--bg-primary', '#FFFFFF'); + h.style.setProperty('--bg-secondary', '#F7F6F3'); + h.style.setProperty('--bg-tertiary', '#EDECE9'); + h.style.setProperty('--text', '#37352F'); + h.style.setProperty('--text-secondary', '#6B6966'); + h.style.setProperty('--text-dim', '#9B9A97'); + h.style.setProperty('--border', '#E0DFDC'); + h.style.setProperty('--border-strong', '#CCCBC8'); + } + })(); {% block scripts %}{% endblock %} diff --git a/app/templates/settings.html b/app/templates/settings.html index 65b3791..24918f4 100644 --- a/app/templates/settings.html +++ b/app/templates/settings.html @@ -193,6 +193,38 @@ + + +