(() => {
  const cfg = Object.assign({
    GREETING: 'Hola, soy el asistente de Rescatando Sonrisas. ¿En qué puedo ayudarte?',
    FAQ: [
      ['¿Qué hace la ONG?', 'Protegemos y empoderamos a personas en situación de vulnerabilidad.'],
      ['¿Cómo puedo donar?', 'Visita la página Donaciones para ver cuentas y opciones.'],
      ['¿Cómo postulo a voluntariado?', 'Completa el formulario en Convocatorias -> Voluntariado.'],
      ['¿Dónde están ubicados?', 'Estamos en Arequipa, Perú. Contáctanos para visitas.']
    ],
    HANDOFF_EMAIL: 'contacto@rescatandosonrisas.org'
  }, window.APP_CONFIG?.CHATBOT || {});

  const fab = document.getElementById('chatbot-fab');
  const widget = document.getElementById('chatbot');
  const closeBtn = document.getElementById('chatbot-close');
  const form = document.getElementById('chatbot-form');
  const area = document.getElementById('chatbot-messages');

  function addMsg(text, who='bot'){
    if (!area) return;
    const div = document.createElement('div');
    div.className = `chatbot-msg ${who}`;
    div.textContent = text;
    area.appendChild(div);
    area.scrollTop = area.scrollHeight;
  }

  function greetOnce(){
    if (!area) return;
    if (!area.dataset.greeted) {
      addMsg(cfg.GREETING, 'bot');
      addMsg('Preguntas rápidas: ' + cfg.FAQ.map(([q])=> q).join(' · '), 'bot');
      area.dataset.greeted = '1';
    }
  }

  fab?.addEventListener('click', () => {
    widget.classList.toggle('hidden');
    if (!widget.classList.contains('hidden')) greetOnce();
  });
  closeBtn?.addEventListener('click', () => widget.classList.add('hidden'));

  form?.addEventListener('submit', (e)=>{
    e.preventDefault();
    const data = new FormData(form);
    const msg = (data.get('message') || '').toString().trim();
    if (!msg) return;
    addMsg(msg, 'user');
    form.reset();

    const hit = cfg.FAQ.find(([q]) => q.toLowerCase().includes(msg.toLowerCase()) || msg.toLowerCase().includes(q.toLowerCase()));
    if (hit) {
      addMsg(hit[1], 'bot');
    } else {
      addMsg('Gracias por tu mensaje. Te responderemos por correo si es necesario. También puedes escribir a ' + cfg.HANDOFF_EMAIL, 'bot');
    }
  });
})();
