const q = (document.getElementById('q')||{}).value?.toLowerCase()||''; const cat = (document.getElementById('cat')||{}).value||'all'; const sort = (document.getElementById('sort')||{}).value||'karma-desc'; const resEl = document.getElementById('results'); const catSel = document.getElementById('cat'); document.addEventListener('DOMContentLoaded', ()=>{ renderDirectory(); renderKarma(); renderResources(); bindCheckout(); }); const name = document.getElementById('new_name').value.trim(); const category = document.getElementById('new_category').value.trim(); const city = document.getElementById('new_city').value.trim(); const url = document.getElementById('new_url').value.trim(); const tags = document.getElementById('new_tags').value.split(',').map(s=>s.trim()).filter(Boolean); const desc = document.getElementById('new_desc').value.trim(); document.getElementById('new_output').value = JSON.stringify(obj, null, 2); const kconf = document.getElementById('kconf'); const kboard = document.getElementById('kboard'); const gbp = document.getElementById('f_gbp').value==='yes' ? 1 : 0; const cwvSel = document.getElementById('f_cwv').value; const stars = Math.max(1, Math.min(5, parseFloat(document.getElementById('f_stars').value||"0"))); const reviews = Math.max(0, parseInt(document.getElementById('f_reviews').value||"0",10)); const last = parseInt(document.getElementById('f_update').value,10); const schema = document.getElementById('f_schema').value==='yes' ? 1 : 0; document.getElementById('hc_score').textContent = `Karma ${(score*100).toFixed(0)}`; document.getElementById('hc_json').textContent = JSON.stringify(snapshot,null,2); const tbl = document.querySelector('#resources_table tbody'); document.querySelectorAll('[data-checkout]').forEach(btn=>{ btn.addEventListener('click', ()=>{ document.addEventListener('DOMContentLoaded', () => { const toggle = document.getElementById('nav-toggle'); const menu = document.getElementById('nav-menu'); toggle.addEventListener('click', (e) => { menu.addEventListener('click', (e) => { document.addEventListener('keydown', (e) => {