ClearScene Atelier

Your constellation

Followed ideas, gathered in one place.

This private browser view remembers the modules you marked for a later return.

Browse more modules Continue to cart
`; const footerHTML = ``; document.getElementById('site-header').innerHTML = headerHTML; document.getElementById('site-footer').innerHTML = footerHTML; const list = document.getElementById('followed-list'); function getIds() { return JSON.parse(localStorage.getItem('clearSceneFollows') || '[]'); } function setIds(ids) { localStorage.setItem('clearSceneFollows', JSON.stringify(ids)); } function render(data) { const chosen = data.filter(p => getIds().includes(p.id)); if (chosen.length) { list.innerHTML = chosen.map(p => `

${p.category}

${p.title}

${p.shortDescription}

Add to cart
`).join(''); } else { list.innerHTML = `

Your constellation is waiting.

Follow a catalog item and it will appear here.

Browse catalog
`; } } fetch('./catalog.json').then(r => r.json()).then(render).catch(() => { list.innerHTML = `

Your constellation is waiting.

Follow a catalog item and it will appear here.

Browse catalog
`; }); document.addEventListener('click', e => { if (e.target.dataset.remove) { const newIds = getIds().filter(x => x !== e.target.dataset.remove); setIds(newIds); fetch('./catalog.json').then(r => r.json()).then(render); } }); (function initHeaderFooter() { const nav = document.getElementById('main-navigation'); const mobile = document.getElementById('mobile-navigation'); const toggle = document.getElementById('mobile-menu-toggle'); const themeBtn = document.getElementById('theme-toggle'); if (toggle) toggle.addEventListener('click', () => mobile.classList.toggle('hidden')); document.querySelectorAll('[data-modal-open]').forEach(b => b.addEventListener('click', () => { const m = document.getElementById(b.dataset.modalOpen); if (m) m.classList.replace('hidden', 'flex'); })); document.querySelectorAll('[data-modal-close]').forEach(b => b.addEventListener('click', () => { const m = document.getElementById(b.dataset.modalClose); if (m) m.classList.replace('flex', 'hidden'); })); if (themeBtn) { const root = document.documentElement; const saved = localStorage.getItem('clearSceneTheme'); if (saved === 'light') { root.classList.add('bg-white', 'text-slate-950'); root.classList.remove('bg-slate-950', 'text-slate-100'); } themeBtn.addEventListener('click', () => { if (root.classList.contains('bg-white')) { root.classList.remove('bg-white', 'text-slate-950'); root.classList.add('bg-slate-950', 'text-slate-100'); localStorage.setItem('clearSceneTheme', 'dark'); } else { root.classList.add('bg-white', 'text-slate-950'); root.classList.remove('bg-slate-950', 'text-slate-100'); localStorage.setItem('clearSceneTheme', 'light'); } }); } const cookie = document.getElementById('cookie-banner'); if (localStorage.getItem('clearSceneCookies') === 'accepted' && cookie) cookie.remove(); const cookieClose = document.getElementById('cookie-close'); if (cookieClose) cookieClose.addEventListener('click', () => { localStorage.setItem('clearSceneCookies', 'accepted'); if (cookie) cookie.remove(); }); document.querySelectorAll('#auth-modal form, #register-modal form').forEach(f => f.addEventListener('submit', e => { e.preventDefault(); const modal = f.closest('[id$="-modal"]'); if (modal) modal.classList.replace('flex', 'hidden'); alert('Action completed for learning purposes.'); })); })();