SchOS/docs/branding/uberblock.svg
Nexoniarz c9790df04c site, branding: skeuomorphic marks, and the new Niveus components
The marks are now drawn the way Niveus draws its keys: one light from the
upper left, gloss on the faces that catch it, a specular line on the edges
that face it, and soft contact shadows.

- Shift: shaded slabs, each casting onto the one below. shift-mask.svg is
  untouched, so the kernel's logo.h coverage mask is unchanged.
- Uberblock: bevelled slots in a groove; the newest slot and the root glow.
- USB stick: moulded body, steel connector, a lit activity LED.
- Pride flag: cloth folds and a hem over the flag's own colours.

The pages use the components the new Niveus added: both terminals are
.nv-window frames, the origin and first-boot sequences are .nv-steps, the
numbers are a .nv-stat-group, and each feature card has an .nv-tile glyph.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
2026-10-23 15:17:34 +02:00

107 lines
5.9 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
<title>SchFS — Uberblock</title>
<desc>The uberblock ring: slots written round-robin, one of them newest.
Mount takes the highest-numbered slot that validates, which is the whole
consistency argument for the format.
Every slot is an explicit annular sector. An earlier version drew them with
stroke-dasharray on a circle, which is shorter to write and wrong in two ways:
a dash centred on the path start straddles the closure and renders as TWO
pieces with a seam between them, and the normal slot underneath the marked one
still drew, showing through. Neither can happen here -- the marked slot is one
shape and the slot it replaces is simply not emitted.
12 slots at 20 degrees of ink and 10 of gap, which closes at 360 exactly. The
marked slot is index 1, counting clockwise from the top.
It is marked twice over: it carries the accent, the same colour as the root at
the centre, and it reaches outward past the ring while sharing the inner edge
with every other slot. The colour is the reading on screen; the size is what
survives include/gfx/logo.h, which is a single coverage channel and keeps no
colour at all.
Drawn as Niveus draws a dial: the slots are raised keys set into a groove
cut into the surface, bevelled by one light from the upper left, and the
newest slot and the root are lit from inside. The geometry is unchanged.
Stands alone, with no reference to SchOS, as projects/schfs-linux/README.md
requires.</desc>
<defs>
<!-- one light for the whole dial, so every slot is lit from the same side -->
<linearGradient id="slot" gradientUnits="userSpaceOnUse" x1="20" y1="20" x2="180" y2="180">
<stop offset="0" stop-color="#5A47B0"/>
<stop offset="0.5" stop-color="#3C2E85"/>
<stop offset="1" stop-color="#2A2066"/>
</linearGradient>
<linearGradient id="lit" gradientUnits="userSpaceOnUse" x1="120" y1="10" x2="160" y2="56">
<stop offset="0" stop-color="#B09CFF"/>
<stop offset="0.5" stop-color="#7C5CFF"/>
<stop offset="1" stop-color="#5A3BE0"/>
</linearGradient>
<radialGradient id="root" cx="0.38" cy="0.34" r="0.7">
<stop offset="0" stop-color="#E4DCFF"/>
<stop offset="0.3" stop-color="#9F86FF"/>
<stop offset="0.75" stop-color="#7C5CFF"/>
<stop offset="1" stop-color="#4E32C8"/>
</radialGradient>
<radialGradient id="groove" cx="0.5" cy="0.5" r="0.5">
<stop offset="0.5" stop-color="#0E0B1E" stop-opacity="0"/>
<stop offset="0.62" stop-color="#0E0B1E" stop-opacity="0.55"/>
<stop offset="0.92" stop-color="#0E0B1E" stop-opacity="0.55"/>
<stop offset="1" stop-color="#0E0B1E" stop-opacity="0"/>
</radialGradient>
<radialGradient id="halo" cx="0.5" cy="0.5" r="0.5">
<stop offset="0" stop-color="#9F86FF" stop-opacity="0.55"/>
<stop offset="1" stop-color="#7C5CFF" stop-opacity="0"/>
</radialGradient>
<!-- The bevel: the shape's own alpha, blurred into a height map and lit
from the upper left, added back over the fill. -->
<filter id="bevel" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur in="SourceAlpha" stdDeviation="1.6" result="h"/>
<feSpecularLighting in="h" surfaceScale="3" specularConstant="0.85"
specularExponent="16" lighting-color="#FFFFFF" result="s">
<feDistantLight azimuth="225" elevation="40"/>
</feSpecularLighting>
<feComposite in="s" in2="SourceAlpha" operator="in" result="sa"/>
<feComposite in="SourceGraphic" in2="sa" operator="arithmetic" k2="1" k3="0.55"/>
</filter>
<filter id="drop" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur in="SourceAlpha" stdDeviation="2.5"/>
<feOffset dx="1.5" dy="2.5" result="o"/>
<feComponentTransfer><feFuncA type="linear" slope="0.5"/></feComponentTransfer>
<feMerge><feMergeNode/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
</defs>
<!-- the groove the slots sit in -->
<circle cx="100" cy="100" r="86" fill="url(#groove)"/>
<g filter="url(#drop)">
<g fill="url(#slot)" filter="url(#bevel)">
<path d="M85.93 20.23 A81.00 81.00 0 0 1 114.07 20.23 L110.25 41.90 A59.00 59.00 0 0 0 89.75 41.90 Z"/>
<path d="M162.05 47.93 A81.00 81.00 0 0 1 176.12 72.30 L155.44 79.82 A59.00 59.00 0 0 0 145.20 62.08 Z"/>
<path d="M179.77 85.93 A81.00 81.00 0 0 1 179.77 114.07 L158.10 110.25 A59.00 59.00 0 0 0 158.10 89.75 Z"/>
<path d="M176.12 127.70 A81.00 81.00 0 0 1 162.05 152.07 L145.20 137.92 A59.00 59.00 0 0 0 155.44 120.18 Z"/>
<path d="M152.07 162.05 A81.00 81.00 0 0 1 127.70 176.12 L120.18 155.44 A59.00 59.00 0 0 0 137.92 145.20 Z"/>
<path d="M114.07 179.77 A81.00 81.00 0 0 1 85.93 179.77 L89.75 158.10 A59.00 59.00 0 0 0 110.25 158.10 Z"/>
<path d="M72.30 176.12 A81.00 81.00 0 0 1 47.93 162.05 L62.08 145.20 A59.00 59.00 0 0 0 79.82 155.44 Z"/>
<path d="M37.95 152.07 A81.00 81.00 0 0 1 23.88 127.70 L44.56 120.18 A59.00 59.00 0 0 0 54.80 137.92 Z"/>
<path d="M20.23 114.07 A81.00 81.00 0 0 1 20.23 85.93 L41.90 89.75 A59.00 59.00 0 0 0 41.90 110.25 Z"/>
<path d="M23.88 72.30 A81.00 81.00 0 0 1 37.95 47.93 L54.80 62.08 A59.00 59.00 0 0 0 44.56 79.82 Z"/>
<path d="M47.93 37.95 A81.00 81.00 0 0 1 72.30 23.88 L79.82 44.56 A59.00 59.00 0 0 0 62.08 54.80 Z"/>
</g>
</g>
<!-- the newest slot and the root it names, lit from inside -->
<circle cx="141" cy="36" r="32" fill="url(#halo)"/>
<circle cx="100" cy="100" r="34" fill="url(#halo)"/>
<g filter="url(#drop)">
<g filter="url(#bevel)">
<path fill="url(#lit)" d="M132.15 11.67 A94.00 94.00 0 0 1 160.42 27.99 L137.92 54.80 A59.00 59.00 0 0 0 120.18 44.56 Z"/>
<circle cx="100" cy="100" r="20" fill="url(#root)"/>
</g>
</g>
<ellipse cx="93" cy="92" rx="6.5" ry="4" fill="#FFFFFF" opacity="0.55"/>
</svg>