Implemented only [server.py](C:/sd/latticesearch/server.py) and [ui.html](C:/sd/latticesearch/ui.html).

Changed:
- [server.py](C:/sd/latticesearch/server.py:140): added `/api/vault` to `MUTATING_PATHS`.
- [server.py](C:/sd/latticesearch/server.py:2143): added a narrow token exemption for read-only `GET /api/vault?op=status`.
- [server.py](C:/sd/latticesearch/server.py:2357): added `GET /api/vault?op=status&dir=...`.
- [server.py](C:/sd/latticesearch/server.py:2683): added `POST /api/vault` create handler using lazy `import vault`, preflight existing-vault `409`, and `run_job`.
- [ui.html](C:/sd/latticesearch/ui.html:91): added modal textarea/wizard/confirmation dialog styling.
- [ui.html](C:/sd/latticesearch/ui.html:1093): wired Vault tile to `openVaultWizard()`.
- [ui.html](C:/sd/latticesearch/ui.html:1351): refactored `dedupApply()` to use `confirmDialog()`.
- [ui.html](C:/sd/latticesearch/ui.html:1506): added `confirmDialog(...)`.
- [ui.html](C:/sd/latticesearch/ui.html:1516): added `splitPaths(...)`.
- [ui.html](C:/sd/latticesearch/ui.html:1517): added `openVaultWizard()`.

Verification passed:
- `server ok`
- `ui ok`

I also confirmed the old Vault CLI placeholder text and `--force` are not present in `ui.html` or `server.py`.