
/* =========================================================
   iOS Safari JS compatibility patch
   - Polyfill :scope in querySelector/querySelectorAll (older Safari)
   - Make window.scrollTo({top,left,behavior}) safe (older Safari)
   ========================================================= */

(function () {
  // ---- 1) :scope polyfill (only if needed)
  try {
    document.querySelector(":scope");
  } catch (e) {
    var proto = Element.prototype;
    var qsa = proto.querySelectorAll;
    var qs = proto.querySelector;

    function patchSelector(el, selector) {
      if (selector.indexOf(":scope") === -1) return selector;

      var needsId = !el.id;
      var id = el.id || ("__scope_" + Math.random().toString(36).slice(2));
      if (needsId) el.id = id;

      var patched = selector.replace(/:scope/g, "#" + id);

      return { patched: patched, cleanup: function () { if (needsId) el.removeAttribute("id"); } };
    }

    proto.querySelectorAll = function (selector) {
      var p = patchSelector(this, selector);
      if (typeof p === "string") return qsa.call(this, selector);
      var out = qsa.call(this, p.patched);
      p.cleanup();
      return out;
    };

    proto.querySelector = function (selector) {
      var p = patchSelector(this, selector);
      if (typeof p === "string") return qs.call(this, selector);
      var out = qs.call(this, p.patched);
      p.cleanup();
      return out;
    };
  }

  // ---- 2) scrollTo options object safe wrapper
  var _scrollTo = window.scrollTo;
  if (typeof _scrollTo === "function") {
    try {
      _scrollTo({ top: 0, left: 0 });
    } catch (e2) {
      window.scrollTo = function (x, y) {
        if (x && typeof x === "object") {
          return _scrollTo.call(window, x.left || 0, x.top || 0);
        }
        return _scrollTo.call(window, x || 0, y || 0);
      };
    }
  }
})();

