(() => {
  'use strict';
  const status = document.getElementById('pwaStatus');
  const installButton = document.getElementById('installBtn');
  let deferredPrompt = null;

  function setStatus(text) {
    if (status) status.textContent = text;
  }

  const standalone = window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true;
  setStatus(standalone ? 'App-Modus' : (location.protocol === 'file:' ? 'Datei-Modus' : 'Browser-Modus'));

  if ('serviceWorker' in navigator && location.protocol !== 'file:') {
    window.addEventListener('load', () => {
      navigator.serviceWorker.register('./service-worker.js')
        .then(() => setStatus(standalone ? 'App-Modus · offline bereit' : 'Offline bereit'))
        .catch(() => setStatus('Browser-Modus'));
    });
  }

  window.addEventListener('beforeinstallprompt', event => {
    event.preventDefault();
    deferredPrompt = event;
    if (installButton) installButton.hidden = false;
  });

  if (installButton) {
    installButton.addEventListener('click', async () => {
      if (deferredPrompt) {
        deferredPrompt.prompt();
        await deferredPrompt.userChoice;
        deferredPrompt = null;
        installButton.hidden = true;
      } else {
        alert('Auf dem iPad: In Safari auf Teilen tippen und „Zum Home-Bildschirm“ wählen. Die Installation benötigt eine HTTPS-Adresse oder einen lokalen Webserver.');
      }
    });
  }

  window.addEventListener('appinstalled', () => {
    setStatus('Installiert · offline bereit');
    if (installButton) installButton.hidden = true;
  });
})();
