ignis8 icon
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<!-- =========================================================================
IGNIS-8 Emblem: Simplified Fire & Wireless Remote Favicon Shield
Palette: 100% Strict Gruvbox Dark Match
Style: Vibrant, Geometric, Cyber-Tactical, High-Contrast
OUTSIDE TRANSPARENT, INSIDE DARK GRAY.
Previously a borderless rectangle in Gruvbox bg0 (#282828) sat under
the entire image. The emblem thus carried a gray plate that remained
visible next to the frame — in the light GitHub theme as a gray box,
in the header of the control view as an edge against its own
background.
The gray now sits exclusively INSIDE the border/outline: It is the
fill of exactly the same rectangle that also carries the green
contour. The fill edge thereby lies under the inner half of the
contour and is not visible; beyond the contour the area stays free.
For the maskable PWA purpose that is unsuitable — there the home
screen cuts its own shape out of the image and needs a full-surface
plate. This version therefore lives separately in
favicon-maskable.svg, see manifest.json.
========================================================================= -->
<defs>
<!-- Silhouette of the emblem: the OUTER EDGE of the border/outline.
x/y 12 and 488 x 488 result from the frame rectangle (24, 464)
plus half the contour width (12); the radius correspondingly 48 + 12.
The clipping is not decoration. The shield group extends roughly
10 units beyond the outer edge at the bottom — on a gray background
that would look like a shield overlapping the frame, without a
background it would be a freely floating yellow tip. -->
<clipPath id="ignis8-frame">
<rect x="12" y="12" width="488" height="488" rx="60" />
</clipPath>
</defs>
<g clip-path="url(#ignis8-frame)">
<!-- 1. Border/outline (Gruvbox Bright Green #b8bb26) with dark gray
inner surface (Gruvbox bg0). Both on ONE element so that the
fill edge necessarily lies under the contour. -->
<rect x="24" y="24" width="464" height="464" rx="48"
fill="#282828"
stroke="#b8bb26"
stroke-width="24" />
<!-- 2. Radio waves in the upper right corner (Gruvbox Bright Green #b8bb26) -->
<g id="wireless-corner" fill="none" stroke="#b8bb26" stroke-width="16" stroke-linecap="round">
<!-- Signal center (corner point) -->
<circle cx="430" cy="82" r="12" fill="#b8bb26" stroke="none" />
<!-- First radio wave -->
<path d="M 370 82 A 60 60 0 0 0 430 142" />
<!-- Second radio wave -->
<path d="M 310 82 A 120 120 0 0 0 430 202" stroke-width="18" />
<!-- Third radio wave -->
<path d="M 250 82 A 180 180 0 0 0 430 262" stroke-width="20" />
</g>
<!--
3. Shield & fire group (Slightly offset toward the lower left,
to perfectly balance the radio waves at the top right)
-->
<g id="shield-core-group" transform="translate(-35, 35) scale(0.92)">
<!-- Fire brigade shield (Gruvbox Dark Hard #1d2021) with yellow border (#fabd2f) -->
<path d="M 256 120
C 200 110, 150 135, 110 155
C 95 245, 95 335, 120 395
C 145 455, 210 492, 256 507
C 302 492, 367 455, 392 395
C 417 335, 417 245, 402 155
C 362 135, 312 110, 256 120 Z"
fill="#1d2021"
stroke="#fabd2f"
stroke-width="20"
stroke-linejoin="round" />
<!--
Vibrant, intensely glowing fire (Pure Gruvbox accents)
Outer: Bright Red (#fb4934) | Middle: Bright Orange (#fe8019) | Inner: Bright Yellow (#fabd2f)
-->
<g id="vibrant-fire">
<!-- Outer flame (Gruvbox Red) -->
<path d="M 256 180
C 190 250, 150 290, 150 360
C 150 415, 190 435, 256 435
C 322 435, 362 415, 362 360
C 362 290, 322 250, 256 180 Z"
fill="#fb4934" />
<!-- Middle flame (Gruvbox Orange) -->
<path d="M 256 215
C 205 275, 175 310, 175 370
C 175 415, 205 425, 256 425
C 307 425, 337 415, 337 370
C 337 310, 307 275, 256 215 Z"
fill="#fe8019" />
<!-- Inner flame (Gruvbox Yellow) -->
<path d="M 256 250
C 220 295, 200 325, 200 375
C 200 410, 222 415, 256 415
C 290 415, 312 410, 312 375
C 312 325, 292 295, 256 250 Z"
fill="#fabd2f" />
</g>
<!-- The "8" as an endless ribbon (Gruvbox Light-Cream #fbf1c7) -->
<g id="number-eight">
<!-- Dark mask for optical separation from the bright fire (#1d2021) -->
<path d="M 256 310
C 228 310, 228 250, 256 250
C 284 250, 284 310, 256 310
C 220 310, 220 395, 256 395
C 292 395, 292 310, 256 310"
fill="none"
stroke="#1d2021"
stroke-width="56"
stroke-linecap="round"
stroke-linejoin="round" />
<!-- Foreground loop -->
<path d="M 256 310
C 228 310, 228 250, 256 250
C 284 250, 284 310, 256 310
C 220 310, 220 395, 256 395
C 292 395, 292 310, 256 310"
fill="none"
stroke="#fbf1c7"
stroke-width="26"
stroke-linecap="round"
stroke-linejoin="round" />
</g>
</g>
</g>
</svg>