feat(frontend): restyle favicon with vintage film grain and mist

- keep black base and white mark unchanged
- add sparse white film-grain noise and radial white mist
- add short, straight, battle-worn scratch marks with rough edges

Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
zyycn
2026-08-01 01:16:58 +08:00
co-authored by Codex
parent 00bab8d390
commit 5a14b74ff2
2 changed files with 43 additions and 5 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"
/>
<link rel="icon" type="image/svg+xml" href="/favicon.svg?v=20260726" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg?v=20260801" />
<title>Codex Proxy RS</title>
</head>
<body>
+42 -4
View File
@@ -1,9 +1,47 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="48 48 416 416" role="img" aria-labelledby="title">
<title id="title">Codex Proxy</title>
<rect x="48" y="48" width="416" height="416" rx="88" fill="#1c2a3d" />
<defs>
<filter id="white-noise" x="0" y="0" width="100%" height="100%">
<feTurbulence type="fractalNoise" baseFrequency="1.7" numOctaves="2" seed="31" result="noise"/>
<feColorMatrix in="noise" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2.56 2.56 2.56 0 -4.76" result="speckle"/>
<feComposite operator="in" in="speckle" in2="SourceGraphic"/>
</filter>
<filter id="worn-lines" x="-12%" y="-12%" width="124%" height="124%">
<feTurbulence type="fractalNoise" baseFrequency="0.12" numOctaves="2" seed="41" result="n"/>
<feDisplacementMap in="SourceGraphic" in2="n" scale="2.2"/>
</filter>
<radialGradient id="mist" cx="0.5" cy="0.45" r="0.75">
<stop offset="0" stop-color="#fff" stop-opacity="0.22"/>
<stop offset="0.55" stop-color="#fff" stop-opacity="0.12"/>
<stop offset="1" stop-color="#fff" stop-opacity="0.04"/>
</radialGradient>
</defs>
<rect x="48" y="48" width="416" height="416" rx="88" fill="#000"/>
<g fill="none" stroke="#fff" stroke-linecap="round" stroke-width="36">
<path d="M156 307A112 112 0 0 1 307 156" />
<path d="M356 205A112 112 0 0 1 205 356" />
<path d="M156 307A112 112 0 0 1 307 156"/>
<path d="M356 205A112 112 0 0 1 205 356"/>
</g>
<path d="m407 105-119 153-183 149 124-157Z" fill="#fff" />
<path d="m407 105-119 153-183 149 124-157Z" fill="#fff"/>
<g filter="url(#worn-lines)" fill="none" stroke="#fff" stroke-linecap="square">
<path d="M92 170 136 148" stroke-width="1" opacity="0.38"/>
<path d="M98 178 142 156" stroke-width="0.5" opacity="0.3"/>
<path d="M308 398 346 378" stroke-width="0.9" opacity="0.36"/>
<path d="M314 406 352 386" stroke-width="0.5" opacity="0.3"/>
<path d="M364 132 398 118" stroke-width="0.9" opacity="0.38"/>
<path d="M402 118 410 126" stroke-width="0.5" opacity="0.28"/>
<path d="M108 350 142 334" stroke-width="1" opacity="0.4"/>
<path d="M158 238 190 226" stroke-width="0.8" opacity="0.34"/>
<path d="M296 292 320 280" stroke-width="0.7" opacity="0.3"/>
<path d="M126 118 136 110" stroke-width="0.6" opacity="0.26"/>
<path d="M400 96 410 88" stroke-width="0.6" opacity="0.24"/>
</g>
<g filter="url(#worn-lines)" fill="#fff">
<path d="M98 176 104 173 108 175 114 170 118 173 124 167 130 170 136 164 142 167 148 161 154 164 160 158Z" opacity="0.34"/>
<path d="M314 395 320 392 324 394 330 389 336 392 342 386 348 389 354 383Z" opacity="0.3"/>
</g>
<rect x="48" y="48" width="416" height="416" rx="88" fill="#fff" filter="url(#white-noise)" opacity="0.2"/>
<rect x="48" y="48" width="416" height="416" rx="88" fill="url(#mist)"/>
</svg>

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 2.6 KiB