$('#themeToggle').addEventListener('click', () => { state.theme = state.theme === 'dark' ? 'light' : 'dark'; applyTheme(); });
attachRipple($('#themeToggle'));
$('#logoBtn').addEventListener('click', closeTool);
const searchInput = $('#searchInput');
searchInput.addEventListener('input', () => { state.query = searchInput.value; renderGrid(); });
document.addEventListener('keydown', e => {
if(e.key === '/' && document.activeElement.tagName !== 'INPUT' && document.activeElement.tagName !== 'TEXTAREA'){
e.preventDefault(); searchInput.focus();
}
if(e.key === 'Escape'){
if(!$('#toolView').hidden) closeTool();
else if(document.activeElement === searchInput) searchInput.blur();
}
});
}
init();