    const nm = el("input", {class:"inp", required:"required", placeholder:"e.g. Q1 invoices"});
    const ds = el("input", {class:"inp", placeholder:"Description (optional)"});
    openModal("New Recipient List", el("div",{class:"form"}, el("label",{},"List name"), nm, el("label",{},"Description"), ds), {
      buttons: [{ label:"Create", kind:"btn", onClick: async (close) => {
        await POST("/recipients/lists", { name: nm.value, description: ds.value });
        toast("List created", "ok"); close(); await loadLists();
      }}]
    });
  });
  $("#btnImport").addEventListener("click", () => {
    if (!state.lists.length) { toast("Create a list first", "warn"); return; }
    const sel = el("select", {class:"inp"}, ...state.lists.map(l => el("option",{value:l.id}, `${l.name} (${l.row_count})`)));
    openModal("Import into which list?", el("div",{class:"form"}, el("label",{},"Target list"), sel), {
      buttons: [{ label:"Continue", kind:"btn", onClick:(close)=>{ const id=+sel.value; close(); importModal(id); }}]
    });
  });
  $("#btnManual").addEventListener("click", () => {
    if (!state.lists.length) { toast("Create a list first", "warn"); return; }
    const sel = el("select", {class:"inp"}, ...state.lists.map(l => el("option",{value:l.id}, `${l.name} (${l.row_count})`)));
    openModal("Add to which list?", el("div",{class:"form"}, el("label",{},"Target list"), sel), {
      buttons: [{ label:"Continue", kind:"btn", onClick:(close)=>{ const id=+sel.value; close(); manualModal(id); }}]
    });
  });

  $("#listBody").addEventListener("click", (e) => {
    const b = e.target.closest("button"); if (!b) return;
    const id = +(b.dataset.view || b.dataset.import || b.dataset.clear || b.dataset.del);
    if (b.dataset.view) { state.cur = state.lists.find(l=>l.id===id); state.page=1; $("#recsCard").style.display=""; loadRecs(); }
    if (b.dataset.import) importModal(id);
    if (b.dataset.clear) confirmedAction("Remove ALL recipients from this list? The list itself is kept.", async () => {
      await POST(`/recipients/lists/${id}/clear`); toast("List cleared", "ok"); await loadLists(); if (state.cur) await loadRecs();
    });
    if (b.dataset.del) confirmedAction("Delete this list and ALL its recipients?", async () => {
      await api(`/recipients/lists/${id}`, { method:"DELETE" }); toast("List deleted", "ok");
      if (state.cur && state.cur.id === id) { state.cur=null; $("#recsCard").style.display="none"; }
      await loadLists();
    });
  });
  $("#recBody").addEventListener("click", async (e) => {
    const b = e.target.closest("button"); if (!b || !b.dataset.delrec) return;
    await api(`/recipients/${b.dataset.delrec}`, { method:"DELETE" });
    toast("Recipient deleted", "ok"); await loadRecs(); await loadLists();
  });
  $("#pager").addEventListener("click", (e) => {
    const b = e.target.closest("button"); if (!b || b.disabled) return;
    state.page = +b.dataset.pg; loadRecs();
  });
  $("#recSearch").addEventListener("input", debounce(() => { state.page=1; loadRecs(); }, 400));

  await loadLists();
};
