Close
Welcome back
This demonstration keeps account access local to your browser; no credentials are transmitted.
Ask about access
Our story
Financial education with a human scale.
Brelvia Ledger began with a simple observation: people often need a clear next question before they need another spreadsheet. We create learning materials that make room for context, uncertainty, and steady practice.
Our mission
We help adults build financial literacy through accurate explanations, practical exercises, and language that respects different lives and starting points.
Useful
Every lesson ends with a thoughtful action or question.
Honest
We explain limits, trade-offs, and when specialist advice may help.
Welcoming
Clear language replaces shame and unnecessary jargon.
The people behind the pages
Mara Chen
Curriculum editor focused on everyday budgeting and clear explanations.
Jon Bell
Learning designer who turns complex topics into manageable practice.
Priya Nair
Research lead who reviews educational accuracy and accessibility.
Explore the catalog
We use a small local preference to remember your theme and cookie choice.
Accept
`;
const footerHTML = `
We use a small local preference to remember your theme and cookie choice.
Accept
`;
document.getElementById('site-header').innerHTML = headerHTML;
document.getElementById('site-footer').innerHTML = footerHTML;
// Mobile menu
const mobileToggle = document.querySelector('[data-mobile-toggle]');
const mobileMenu = document.querySelector('[data-mobile-menu]');
if (mobileToggle && mobileMenu) {
mobileToggle.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
mobileMenu.classList.toggle('flex');
mobileMenu.classList.toggle('flex-col');
mobileMenu.classList.toggle('w-full');
mobileMenu.classList.toggle('mt-4');
});
}
// Theme toggle
const themeToggle = document.querySelector('[data-theme-toggle]');
if (themeToggle) {
const applyTheme = (theme) => {
if (theme === 'dark') {
document.documentElement.style.setProperty('--page-bg', '#2f211a');
document.documentElement.style.setProperty('--text', '#f5efe6');
document.body.style.backgroundColor = '#2f211a';
document.body.style.color = '#f5efe6';
} else {
document.documentElement.style.setProperty('--page-bg', '#f5efe6');
document.documentElement.style.setProperty('--text', '#2f211a');
document.body.style.backgroundColor = '#f5efe6';
document.body.style.color = '#2f211a';
}
};
const savedTheme = localStorage.getItem('bl-theme') || 'light';
applyTheme(savedTheme);
themeToggle.addEventListener('click', () => {
const current = localStorage.getItem('bl-theme') || 'light';
const next = current === 'light' ? 'dark' : 'light';
localStorage.setItem('bl-theme', next);
applyTheme(next);
});
}
// Auth modal
const authButtons = document.querySelectorAll('[data-auth]');
const authModal = document.querySelector('[data-auth-modal]');
const closeModal = document.querySelector('[data-close-modal]');
const authTitle = document.querySelector('[data-auth-title]');
if (authButtons.length && authModal && authTitle) {
authButtons.forEach(btn => {
btn.addEventListener('click', () => {
const mode = btn.getAttribute('data-auth');
authTitle.textContent = mode === 'login' ? 'Welcome back' : 'Create account';
authModal.classList.remove('hidden');
authModal.classList.add('grid');
});
});
if (closeModal) {
closeModal.addEventListener('click', () => {
authModal.classList.add('hidden');
authModal.classList.remove('grid');
});
}
authModal.addEventListener('click', (e) => {
if (e.target === authModal) {
authModal.classList.add('hidden');
authModal.classList.remove('grid');
}
});
}
// Cookie banner
const banner = document.querySelector('[data-cookie-banner]');
const closeBtn = document.querySelector('[data-cookie-close]');
if (banner && closeBtn) {
const consent = localStorage.getItem('bl-cookie-consent');
if (consent === 'accepted') {
banner.style.display = 'none';
} else {
banner.style.display = 'block';
}
closeBtn.addEventListener('click', () => {
localStorage.setItem('bl-cookie-consent', 'accepted');
banner.style.display = 'none';
});
}
})();