diff --git a/README.md b/README.md
index 6b9e2e0..7181bfe 100644
--- a/README.md
+++ b/README.md
@@ -182,7 +182,7 @@ install.sh install / uninstall into a local prefix
bin/meetrec GUI launcher (installed into ~/.local/bin)
bin/meetrec-cli CLI launcher (installed into ~/.local/bin)
share/applications/meetrec.desktop XDG desktop entry
-share/icons/hicolor/ app icon (SVG + PNG fallbacks)
+share/icons/hicolor/ app icon (PNGs; source: icon/make_icon_v3.py)
android/ native Android app (Kotlin + whisper.cpp JNI)
```
diff --git a/android/app/src/main/res/drawable-nodpi/ic_launcher_bg.png b/android/app/src/main/res/drawable-nodpi/ic_launcher_bg.png
new file mode 100644
index 0000000..30fb91e
Binary files /dev/null and b/android/app/src/main/res/drawable-nodpi/ic_launcher_bg.png differ
diff --git a/android/app/src/main/res/drawable-nodpi/ic_launcher_fg.png b/android/app/src/main/res/drawable-nodpi/ic_launcher_fg.png
new file mode 100644
index 0000000..145a07d
Binary files /dev/null and b/android/app/src/main/res/drawable-nodpi/ic_launcher_fg.png differ
diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml
deleted file mode 100644
index 2a04521..0000000
--- a/android/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index 2d2852f..524a89f 100644
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,5 +1,8 @@
-
-
+
+
+
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 2d2852f..075e83f 100644
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml
deleted file mode 100644
index 1c86d4c..0000000
--- a/android/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #C0392B
-
\ No newline at end of file
diff --git a/icon/make_icon_v3.py b/icon/make_icon_v3.py
new file mode 100644
index 0000000..89b7bf7
--- /dev/null
+++ b/icon/make_icon_v3.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python3
+"""MeetRec icon v3 — mic/transcript glyph inside a big record button.
+Gradient tile + soft shadow + large red record circle; the mic whose
+capsule is a transcript card sits inside the button.
+"""
+import numpy as np
+from PIL import Image, ImageDraw, ImageFilter
+
+S = 512
+RADIUS = 116
+
+def vgrad(c_top, c_bot):
+ """Vertical gradient as an RGB ndarray (S, S, 3)."""
+ c_top = np.array(c_top, dtype=float)
+ c_bot = np.array(c_bot, dtype=float)
+ t = (np.arange(S)[:, None, None] / (S - 1))
+ arr = c_top[None, None, :] * (1 - t) + c_bot[None, None, :] * t
+ return np.repeat(arr, S, axis=1).astype(np.uint8)
+
+# --- Near-black tile background (subtle depth) ---
+bg = vgrad((0x18, 0x18, 0x18), (0x00, 0x00, 0x00))
+img = Image.fromarray(np.dstack([bg, np.full((S, S), 255, np.uint8)]), "RGBA")
+
+# --- Rounded-square mask (app tile) ---
+mask = Image.new("L", (S, S), 0)
+ImageDraw.Draw(mask).rounded_rectangle([0, 0, S - 1, S - 1], radius=RADIUS, fill=255)
+out = Image.new("RGBA", (S, S), (0, 0, 0, 0))
+out.paste(img, (0, 0), mask)
+
+# --- Big record button (red vertical gradient circle) ---
+CX, CY, R = 256, 256, 176
+red = vgrad((0xFF, 0x8A, 0x8A), (0xDD, 0x2B, 0x3A))
+red_img = Image.fromarray(np.dstack([red, np.full((S, S), 255, np.uint8)]), "RGBA")
+circ = Image.new("L", (S, S), 0)
+ImageDraw.Draw(circ).ellipse([CX - R, CY - R, CX + R, CY + R], fill=255)
+out.paste(red_img, (0, 0), circ)
+
+d = ImageDraw.Draw(out)
+WHITE = (255, 255, 255, 255)
+REDINK = (0xD9, 0x26, 0x37, 255) # red "text" on the white card
+
+# --- Button bezel ring ---
+d.ellipse([CX - R - 14, CY - R - 14, CX + R + 14, CY + R + 14],
+ outline=(255, 255, 255, 190), width=6)
+
+# --- Mic/transcript glyph (v2 design, centered in the button) ---
+# Capsule = transcript card
+d.rounded_rectangle([192, 117, 320, 277], radius=30, fill=WHITE)
+# Text lines + typing cursor
+d.rounded_rectangle([214, 149, 298, 161], radius=6, fill=REDINK)
+d.rounded_rectangle([214, 181, 298, 193], radius=6, fill=REDINK)
+d.rounded_rectangle([214, 213, 274, 225], radius=6, fill=REDINK)
+d.rounded_rectangle([214, 245, 254, 257], radius=6, fill=REDINK)
+d.rounded_rectangle([266, 242, 273, 260], radius=3, fill=REDINK)
+# Cradle, stem, base
+d.arc([178, 155, 334, 335], start=0, end=180, fill=WHITE, width=18)
+d.line([256, 333, 256, 369], fill=WHITE, width=18)
+d.rounded_rectangle([212, 365, 300, 387], radius=11, fill=WHITE)
+
+# --- Export sizes ---
+master = out.resize((1024, 1024), Image.LANCZOS)
+for sz in [1024, 512, 256, 128, 64, 32]:
+ master.resize((sz, sz), Image.LANCZOS).save(f"meetrec-icon-v3-{sz}.png")
+
+print("done")
diff --git a/icon/meetrec-icon-v3-1024.png b/icon/meetrec-icon-v3-1024.png
new file mode 100644
index 0000000..098023a
Binary files /dev/null and b/icon/meetrec-icon-v3-1024.png differ
diff --git a/icon/meetrec-icon-v3-128.png b/icon/meetrec-icon-v3-128.png
new file mode 100644
index 0000000..db58d1f
Binary files /dev/null and b/icon/meetrec-icon-v3-128.png differ
diff --git a/icon/meetrec-icon-v3-256.png b/icon/meetrec-icon-v3-256.png
new file mode 100644
index 0000000..3ac33be
Binary files /dev/null and b/icon/meetrec-icon-v3-256.png differ
diff --git a/icon/meetrec-icon-v3-32.png b/icon/meetrec-icon-v3-32.png
new file mode 100644
index 0000000..3c76517
Binary files /dev/null and b/icon/meetrec-icon-v3-32.png differ
diff --git a/icon/meetrec-icon-v3-512.png b/icon/meetrec-icon-v3-512.png
new file mode 100644
index 0000000..30fb91e
Binary files /dev/null and b/icon/meetrec-icon-v3-512.png differ
diff --git a/icon/meetrec-icon-v3-64.png b/icon/meetrec-icon-v3-64.png
new file mode 100644
index 0000000..4c655ca
Binary files /dev/null and b/icon/meetrec-icon-v3-64.png differ
diff --git a/share/icons/hicolor/128x128/apps/meetrec.png b/share/icons/hicolor/128x128/apps/meetrec.png
index b97e34d..db58d1f 100644
Binary files a/share/icons/hicolor/128x128/apps/meetrec.png and b/share/icons/hicolor/128x128/apps/meetrec.png differ
diff --git a/share/icons/hicolor/256x256/apps/meetrec.png b/share/icons/hicolor/256x256/apps/meetrec.png
index 9fc962b..3ac33be 100644
Binary files a/share/icons/hicolor/256x256/apps/meetrec.png and b/share/icons/hicolor/256x256/apps/meetrec.png differ
diff --git a/share/icons/hicolor/32x32/apps/meetrec.png b/share/icons/hicolor/32x32/apps/meetrec.png
new file mode 100644
index 0000000..3c76517
Binary files /dev/null and b/share/icons/hicolor/32x32/apps/meetrec.png differ
diff --git a/share/icons/hicolor/48x48/apps/meetrec.png b/share/icons/hicolor/48x48/apps/meetrec.png
index 36f3c51..429bff5 100644
Binary files a/share/icons/hicolor/48x48/apps/meetrec.png and b/share/icons/hicolor/48x48/apps/meetrec.png differ
diff --git a/share/icons/hicolor/512x512/apps/meetrec.png b/share/icons/hicolor/512x512/apps/meetrec.png
new file mode 100644
index 0000000..30fb91e
Binary files /dev/null and b/share/icons/hicolor/512x512/apps/meetrec.png differ
diff --git a/share/icons/hicolor/64x64/apps/meetrec.png b/share/icons/hicolor/64x64/apps/meetrec.png
index d53cc97..4c655ca 100644
Binary files a/share/icons/hicolor/64x64/apps/meetrec.png and b/share/icons/hicolor/64x64/apps/meetrec.png differ
diff --git a/share/icons/hicolor/scalable/apps/meetrec.svg b/share/icons/hicolor/scalable/apps/meetrec.svg
deleted file mode 100644
index 0911c5b..0000000
--- a/share/icons/hicolor/scalable/apps/meetrec.svg
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
\ No newline at end of file