fix(signin): stop betting sign-in on an undocumented offscreen API master
chrome.offscreen.hasDocument() is annotated Chrome 150+ in the published reference while the manifest floor is 110. That annotation is the date it was documented, not the date it became callable: it shipped with the offscreen API in 109 and stayed [nodoc] because a per-extension existence check does not survive multiple offscreen documents (crbug.com/1339382) — which has also put it up for removal. Verified callable and correct on Chrome 149. Unverifiable below, and a removal candidate above, is a poor thing for the sign-in path to depend on. Prefer the documented chrome.runtime.getContexts() (Chrome 116), fall back to hasDocument() for the 110-115 window, and let createDocument's own "only a single offscreen document" failure settle it when neither is usable. That also closes a real race: two concurrent sign-ins could both see no document and both try to create one.