diff --git a/index.html b/index.html
index 071408e..70a0046 100644
--- a/index.html
+++ b/index.html
@@ -10,6 +10,15 @@
keeps its name, and a favicon is held longer than anything else. Bump it
(date + letter, never a counter) whenever public/favicon.ico changes. -->
+
+
+
+
+
+
inbuxa Admin
diff --git a/public/img/apple-touch-icon.png b/public/img/apple-touch-icon.png
new file mode 100644
index 0000000..fadfab0
Binary files /dev/null and b/public/img/apple-touch-icon.png differ
diff --git a/public/img/icon-192.png b/public/img/icon-192.png
new file mode 100644
index 0000000..78dd593
Binary files /dev/null and b/public/img/icon-192.png differ
diff --git a/public/img/icon-512.png b/public/img/icon-512.png
new file mode 100644
index 0000000..1527e01
Binary files /dev/null and b/public/img/icon-512.png differ
diff --git a/public/img/icon-maskable.png b/public/img/icon-maskable.png
new file mode 100644
index 0000000..67dcf86
Binary files /dev/null and b/public/img/icon-maskable.png differ
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000..c95512e
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,32 @@
+{
+ "name": "inbuxa Admin",
+ "short_name": "inbuxa Admin",
+ "description": "Administration for the inbuxa mail server",
+ "_comment": "JSON has no comments, so: every URL below is relative on purpose. The server mounts this one bundle at /admin and at /account, and manifest members resolve against the manifest's own address, so each mount installs as its own app with nothing substituted at build time. It is .json rather than .webmanifest because the server's bundle loader types files by extension and knows json but not webmanifest.",
+ "_comment_id": "There is deliberately no `id`. The spec resolves it against the origin of start_url rather than this file, so it cannot name a mount; the default id is start_url, which already can. Adding one later gives every installed copy a new identity and orphans it.",
+ "start_url": "./",
+ "scope": "./",
+ "display": "standalone",
+ "orientation": "any",
+ "categories": ["productivity", "utilities"],
+ "background_color": "#fbfaf7",
+ "theme_color": "#0d8a82",
+ "icons": [
+ {
+ "src": "img/icon-192.png?v=2026-09-27a",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "img/icon-512.png?v=2026-09-27a",
+ "sizes": "512x512",
+ "type": "image/png"
+ },
+ {
+ "src": "img/icon-maskable.png?v=2026-09-27a",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ]
+}