diff --git a/brand/README.md b/brand/README.md
index 2c1cd6935..07178157b 100644
--- a/brand/README.md
+++ b/brand/README.md
@@ -41,13 +41,15 @@ polygons). The Windows `.ico` and the favicons render each size from the vector,
| `brand/profile/github-org-512.png` | organisation avatar | github.com/igneum-network (uploaded by hand from the Igneum Chrome profile) |
| `brand/profile/x-banner-1500x500.png` | X header | the mark centred on obsidian |
| `brand/igneum-icon-512.png`, `igneum-icon-1024.png` | the square at 512 and 1024 | the same as the profile files; kept for links that already point here |
+| `site/og-small.png` (256 square), `og-square.png` (1024), `og-coin.png` and `og.png` (1200 x 630 card: mark left, IGNEUM wordmark, tagline) | share images, `?v=2` in every `og:image` and `twitter:image` | index, live, litepaper (`og-small`); bench, evidence, `build.mjs` (`og`) |
+| `brand/profile/github-social-1280x640.png` | repository social preview | github.com/igneum-network/igneum settings (by hand) |
+| `brand/profile/vercel-avatar-512.png` | Vercel team or project avatar | by hand |
Inline SVG favicons (the `data:` link in every page head) carry the same square and mark, so a page shows the right icon
before the `.ico` loads.
## Not regenerated
-- `site/og-small.png`, `og-square.png`, `og-coin.png`: the social card design, left as it was by instruction (4 October 2026).
- `brand/igneum-coin-1024.png`: the old ringed coin. Retired as a source; nothing reads it now.
- `brand/igneum-mark-transparent-1024.png`, the wordmark PNGs and `Unbounded.ttf`: unchanged.
diff --git a/brand/icons/make-icons.py b/brand/icons/make-icons.py
index cf6474514..9c21ea5c6 100644
--- a/brand/icons/make-icons.py
+++ b/brand/icons/make-icons.py
@@ -22,6 +22,8 @@ Outputs:
brand/profile/ profile-400.png, profile-512.png, profile-1024.png (X, Discord, Telegram, LinkedIn), github-org-512.png,
x-banner-1500x500.png (the mark centred on obsidian)
brand/igneum-icon-512.png and igneum-icon-1024.png are refreshed from the master as well.
+ site/og-small.png (256), og-square.png (1024), og-coin.png and og.png (1200x630 card), brand/profile/github-social-1280x640.png,
+ vercel-avatar-512.png: the share images (make_social), the mark on obsidian, never the old ringed coin.
Rendering: rsvg-convert when it is installed (brew install librsvg), else Pillow draws the master's rect and polygons
itself at 4x to 16x supersampling (the mark is two polygons, so this is exact). cairosvg is not used: the conda build on
@@ -270,6 +272,32 @@ def make_profile():
out.append(save_png(render(1024).convert('RGB'), os.path.join(BRAND, 'igneum-icon-1024.png')))
return out
+def card(w, h, tile, cx, cy, title_x):
+ """The share-card layout: the mark on obsidian at (cx, cy), the IGNEUM wordmark, tagline and subline to the right.
+ Same layout as the old og-coin.png; the ringed coin and its glow are replaced by the master mark (the square merges
+ with the ground, so nothing but the mark shows: no ring, no edge)."""
+ im = Image.new('RGBA', (w, h), OBSIDIAN + (255,))
+ paste_centre(im, render(tile), cx, cy)
+ k = h / 630
+ im.alpha_composite(wordmark('IGNEUM', int(84 * k), BONE, 'Bold'), (title_x, int(cy - 92 * k)))
+ im.alpha_composite(wordmark('Mined by GPUs. Proven by fire.', int(31 * k), MOLTEN, 'SemiBold'), (title_x, int(cy + 20 * k)))
+ im.alpha_composite(wordmark('The GPU-mined layer 1 \u00b7 igneum.network', int(19 * k), (150, 148, 145), 'Regular'), (title_x, int(cy + 72 * k)))
+ return im.convert('RGB')
+
+def make_social():
+ """Share images. og-small.png stays a 256 square (the compact card chat apps show; its pages declare 256x256 and
+ twitter:card summary), og-square.png 1024 square, og-coin.png and og.png the 1200x630 card (og.png is what bench.html,
+ evidence.html and build.mjs reference), github-social-1280x640.png the repository social preview."""
+ out = []
+ out.append(save_png(render(256).convert('RGB'), os.path.join(SITE, 'og-small.png')))
+ out.append(save_png(render(1024).convert('RGB'), os.path.join(SITE, 'og-square.png')))
+ c = card(1200, 630, 300, 276, 315, 532)
+ out.append(save_png(c, os.path.join(SITE, 'og-coin.png')))
+ out.append(save_png(c, os.path.join(SITE, 'og.png')))
+ out.append(save_png(card(1280, 640, 306, 300, 320, 560), os.path.join(PROFILE, 'github-social-1280x640.png')))
+ out.append(save_png(render(512).convert('RGB'), os.path.join(PROFILE, 'vercel-avatar-512.png')))
+ return out
+
def main():
made = []
made.append(save_png(render(256), os.path.join(HERE, 'igneum-256.png')))
@@ -284,6 +312,7 @@ def main():
made += make_site(SITE)
made += make_site(RELAY, full=False)
made += make_profile()
+ made += make_social()
for f in sorted(os.listdir(HERE)):
p = os.path.join(HERE, f)
if os.path.isfile(p) and not f.endswith('.py'):
diff --git a/brand/profile/github-social-1280x640.png b/brand/profile/github-social-1280x640.png
new file mode 100644
index 000000000..226a2679f
Binary files /dev/null and b/brand/profile/github-social-1280x640.png differ
diff --git a/brand/profile/vercel-avatar-512.png b/brand/profile/vercel-avatar-512.png
new file mode 100644
index 000000000..d6cd427e2
Binary files /dev/null and b/brand/profile/vercel-avatar-512.png differ
diff --git a/site/bench.html b/site/bench.html
index 489a83fda..ad0e323d3 100644
--- a/site/bench.html
+++ b/site/bench.html
@@ -12,14 +12,14 @@
-
-
-
+
+
+
-
+
-
+
diff --git a/site/build.mjs b/site/build.mjs
index 6069634ae..18b21a518 100644
--- a/site/build.mjs
+++ b/site/build.mjs
@@ -58,14 +58,14 @@ function meta(title, desc, path) {
-
-
-
+
+
+
-
+
-
+
diff --git a/site/evidence.html b/site/evidence.html
index 504cd1ec2..b32ba8755 100644
--- a/site/evidence.html
+++ b/site/evidence.html
@@ -12,14 +12,14 @@
-
-
-
+
+
+
-
+
-
+
diff --git a/site/index.html b/site/index.html
index 224bb7ce5..edb6a1bf8 100644
--- a/site/index.html
+++ b/site/index.html
@@ -12,14 +12,14 @@
-
+
-
+
diff --git a/site/litepaper.html b/site/litepaper.html
index c2802ef5d..f92145b58 100644
--- a/site/litepaper.html
+++ b/site/litepaper.html
@@ -12,14 +12,14 @@
-
+
-
+
diff --git a/site/live.html b/site/live.html
index 584029433..1cbb86be4 100644
--- a/site/live.html
+++ b/site/live.html
@@ -12,14 +12,14 @@
-
+
-
+
diff --git a/site/og-coin.png b/site/og-coin.png
index 2e4e0dbaf..f38ddc727 100644
Binary files a/site/og-coin.png and b/site/og-coin.png differ
diff --git a/site/og-small.png b/site/og-small.png
index 2eea54acf..3694c6936 100644
Binary files a/site/og-small.png and b/site/og-small.png differ
diff --git a/site/og-square.png b/site/og-square.png
index 900b01f23..5123c561c 100644
Binary files a/site/og-square.png and b/site/og-square.png differ
diff --git a/site/og.png b/site/og.png
new file mode 100644
index 000000000..f38ddc727
Binary files /dev/null and b/site/og.png differ