function rebuildIndex() {
    openModal({ title: 'Rebuilding search index…', body: 'Walking the wiki tree.' });
    fetch('/_reindex', { method: 'POST' })
        .then(function (resp) {
            if (!resp.ok) throw new Error('rebuild failed: ' + resp.status);
            window.location.href = window.location.href;
        })
        .catch(function (err) {
            closeModal();
            openModal({ title: 'Rebuild failed', body: String(err), confirm: { label: 'OK' } });
        });
}

document.addEventListener('DOMContentLoaded', function () {
    wireDropdown(document.querySelector('[data-action="actions-drop"]'));

    // Focus the search input on results pages so Tab steps directly into the
    // first match — the input sits immediately before the results in DOM
    // order, so the natural tab sequence is input → first result → next, …
    var input = document.querySelector('.search-input');
    if (input && input.value) {
        input.focus();
        var end = input.value.length;
        try { input.setSelectionRange(end, end); } catch (e) {}
    }
});
