From db6aabfb7aa4460c8858fec0a51534ebe34786f7 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 18 May 2026 17:34:01 +0800
Subject: [PATCH] design: refine selected icon B shadow

---
 TODO.md                                                                 |    2 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg  |   52 ++++++++++++++++++++++++++
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg |   20 +++++++---
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.png  |    0 
 4 files changed, 67 insertions(+), 7 deletions(-)

diff --git a/TODO.md b/TODO.md
index af44586..ee9b1e3 100644
--- a/TODO.md
+++ b/TODO.md
@@ -11,7 +11,7 @@
 
 - [2026-05-18] 重做 VoiceSnap macOS 图标为 SVG 矢量母版。
   - 目标: 白色圆角方形底、蓝色麦克风,风格参考 TagLauncher,避免毛边、截图白边和尺寸忽大忽小。
-  - 当前调整: 先生成 5 个 SVG 矢量候选和一张对比预览图,用户选定后再替换进 App 并打包。
+  - 当前调整: 用户最终选择 B,先给 B 的中间麦克风加入轻微层次阴影并生成预览,确认后再替换进 App 并打包。
   - 已输出: `VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.png`
   - 已输出: `VoiceSnapGo/design/icon-candidates/voicesnap_icon_[A-E]_*.svg`
 
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.png
new file mode 100644
index 0000000..c5042dd
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg
new file mode 100644
index 0000000..637e239
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg
@@ -0,0 +1,52 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="552" height="418" viewBox="0 0 552 418">
+  <rect width="100%" height="100%" fill="#F5F5F7"/>
+  <rect x="40" y="54" width="472" height="260" rx="42" fill="#262628"/>
+  <g transform="translate(170 82) scale(0.20703125)">
+  <defs>
+    <linearGradient id="vBtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F8FBFF"/>
+    </linearGradient>
+    <linearGradient id="vBblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vBblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vBsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vBglyphShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="8" stdDeviation="10" flood-color="#0069DA" flood-opacity="0.10"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.08"/>
+    </filter>
+    <filter id="vBmicShadow" x="-35%" y="-35%" width="170%" height="175%">
+      <feDropShadow dx="0" dy="12" stdDeviation="12" flood-color="#006BDA" flood-opacity="0.18"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.10"/>
+    </filter>
+    <clipPath id="vBclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vBtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vBclip)"><circle cx="512" cy="544" r="330" fill="#EAF7FF" opacity="0.72"/><circle cx="282" cy="258" r="154" fill="#DDF8FF" opacity="0.62"/></g>
+      
+  <g>
+    <g filter="url(#vBmicShadow)">
+      <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="url(#vBblue)" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+      <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="url(#vBblue)" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+    </g>
+    <g filter="url(#vBglyphShadow)">
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="url(#vBblue)" stroke-width="48" stroke-linecap="round"/>
+    </g>
+  </g></g>
+  <text x="276" y="362" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Display, Helvetica, Arial" font-size="28" font-weight="750" fill="#1D1D1F">B</text>
+  <text x="276" y="392" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Text, Helvetica, Arial" font-size="16" font-weight="560" fill="#6E6E73">Thin Blue Glyph · subtle mic shadow</text>
+</svg>
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
index c2d3a85..f8a2e06 100644
--- a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
@@ -18,9 +18,13 @@
       <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
       <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
     </linearGradient>
-    <filter id="vBinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
-      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
-      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    <filter id="vBglyphShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="8" stdDeviation="10" flood-color="#0069DA" flood-opacity="0.10"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.08"/>
+    </filter>
+    <filter id="vBmicShadow" x="-35%" y="-35%" width="170%" height="175%">
+      <feDropShadow dx="0" dy="12" stdDeviation="12" flood-color="#006BDA" flood-opacity="0.18"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.10"/>
     </filter>
     <clipPath id="vBclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
   </defs>
@@ -29,10 +33,14 @@
 
       <g clip-path="url(#vBclip)"><circle cx="512" cy="544" r="330" fill="#EAF7FF" opacity="0.72"/><circle cx="282" cy="258" r="154" fill="#DDF8FF" opacity="0.62"/></g>
       
-  <g filter="url(#vBinnerShadow)">
-    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="url(#vBblue)" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+  <g>
+    <g filter="url(#vBmicShadow)">
+      <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="url(#vBblue)" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+      <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="url(#vBblue)" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+    </g>
+    <g filter="url(#vBglyphShadow)">
     <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
     <path d="M512 722v112" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
     <path d="M388 844h248" fill="none" stroke="url(#vBblue)" stroke-width="48" stroke-linecap="round"/>
-    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="url(#vBblue)" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+    </g>
   </g></svg>

--
Gitblit v1.9.3