if (lat === 0 && lon === 0) return; // ignore bogus origin until GPS fix
      marker.setLatLng([lat, lon]);
      map.panTo([lat, lon], { animate: false });
      lastFix.textContent = new Date().toLocaleTimeString();
      if (qs.ll) qs.ll.textContent = lat.toFixed(6) + ", " + lon.toFixed(6);
    }

    // ---------- indicators (teocci lib) ----------
    const mk = (el, type, opts={}) => new FlightIndicators(
      document.querySelector(el),
      type,
      Object.assign({ size: 220, imagesDirectory: 