The manifest registers .odt/.ott/.docx/.dotx as file handlers and a
launchQueue consumer opens what the OS passes, keeping the handle so the
first Save writes that file. A .dotx now reads like an .ott: Word's
importer, but never bound as the file to save over.
An embedded prefers-color-scheme media query swaps the ink stem and
leaf fills for the app's own dark-theme tokens, so the near-black
stem no longer vanishes on a dark tab bar.
Nothing here talks to a server at runtime, so a cached shell is the whole
editor. The worker reads the build's hashed asset names out of the entry
document, which precaches without a build step; the document itself stays
network-first, or it would keep naming the assets of the build it was
cached with. Matching ignores Vary: a precached asset is fetched without
the page's Origin, and a server answering "Vary: Origin" never matches it.
Verified in a headless Chromium with the network cut.
Two asymmetric blades on a ground line, in the slate/clay brand
colors, replace the old page-lines icon. The old favicon is kept as
favicon-old.svg. The About dialog shows it above the wordmark.