feat(brand): new logo — brand-blue shield with bold check + verified ping

Replaces the generic round-shield-with-thin-check mark with a logo that
matches the actual brand palette:

- Shield body uses the vulncheck-blue (#0066FF) primary token with a
  subtle vertical gradient to deeper royal blue. Reads well on the
  bg-gray-900 sidebar and the bg-gray-50 login screen alike.
- Bold white check (44pt stroke) with a soft inner highlight — no toy /
  crosshair vibe.
- Small securis-success (#10B981) ping at the check terminus = the
  "vulnerability verified / cleared" semantic.
- Stays crisp at 24px (favicon, browser tab) up to 240px (login).

No code changes required — all consumers (layout.tsx favicon, login
page, AppShell, Drawer) already point at /logo.svg.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 08:23:31 +02:00
parent 68ed824d5f
commit 4ed1beab8e
+68 -8
View File
@@ -1,10 +1,70 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Shield outer shape -->
<path d="M256 28C256 28 480 88 480 176V288C480 420 256 492 256 492C256 492 32 420 32 288V176C32 88 256 28 256 28Z" fill="#0066FF"/>
<!-- Shield inner highlight (gradient feel) -->
<path d="M256 28C256 28 480 88 480 176V288C480 420 256 492 256 492V28Z" fill="#0052CC" opacity="0.4"/>
<!-- Shield border/outline -->
<path d="M256 56C256 56 456 108 456 184V280C456 398 256 464 256 464C256 464 56 398 56 280V184C56 108 256 56 256 56Z" stroke="white" stroke-width="6" stroke-opacity="0.25" fill="none"/>
<!-- Checkmark -->
<path d="M355 190C363 180 377.5 178.5 387.5 186.5C397.5 194.5 399 209 391 219L243 403C234 414.5 217 414.5 208 403L121 280C113 270 114.5 255.5 124.5 247.5C134.5 239.5 149 241 157 251L225.5 340L355 190Z" fill="white"/>
<defs>
<linearGradient id="brandShield" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#1E40AF"/>
<stop offset="45%" stop-color="#0066FF"/>
<stop offset="100%" stop-color="#0052CC"/>
</linearGradient>
<linearGradient id="rightFacet" x1="0" y1="0" x2="1" y2="0">
<stop offset="0%" stop-color="#FFFFFF" stop-opacity="0"/>
<stop offset="100%" stop-color="#FFFFFF" stop-opacity="0.10"/>
</linearGradient>
<linearGradient id="checkStroke" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#FFFFFF"/>
<stop offset="100%" stop-color="#E0F2FE"/>
</linearGradient>
</defs>
<!-- Shield body: subtle hex-influence, classic shield silhouette, brand blue -->
<path d="M256 36
C256 36 432 80 432 168
V288
C432 396 256 476 256 476
C256 476 80 396 80 288
V168
C80 80 256 36 256 36 Z"
fill="url(#brandShield)"/>
<!-- Right-side facet for subtle depth (not playful) -->
<path d="M256 36
C256 36 432 80 432 168
V288
C432 396 256 476 256 476
V36 Z"
fill="url(#rightFacet)"/>
<!-- Quiet inset outline -->
<path d="M256 64
C256 64 408 100 408 172
V284
C408 374 256 444 256 444
C256 444 104 374 104 284
V172
C104 100 256 64 256 64 Z"
stroke="#FFFFFF" stroke-opacity="0.16" stroke-width="2.5" fill="none"/>
<!-- The check — bold, confident, no toy vibe -->
<path d="M148 264
L222 340
L372 188"
stroke="url(#checkStroke)"
stroke-width="46"
stroke-linecap="round"
stroke-linejoin="round"
fill="none"/>
<!-- Soft inner highlight along the check (depth, not glow) -->
<path d="M148 264
L222 340
L372 188"
stroke="#FFFFFF" stroke-opacity="0.35"
stroke-width="12"
stroke-linecap="round"
stroke-linejoin="round"
fill="none"/>
<!-- Verified ping — small success-green accent at the check terminus -->
<circle cx="372" cy="188" r="14" fill="#0F172A" opacity="0.18"/>
<circle cx="372" cy="188" r="12" fill="#10B981"/>
<circle cx="372" cy="188" r="4" fill="#FFFFFF"/>
</svg>

Before

Width:  |  Height:  |  Size: 886 B

After

Width:  |  Height:  |  Size: 2.3 KiB