Documentdocs/logo/interlock/README.md
Logo — interlock variant
The brand-palette port of the interlock construction first built for the 600×140 alternate.
What changed from the primary mark
The primary mark (../lockup-horizontal.svg) is one element: a cyan→mint gradient S with
three pulse-trail dashes. This variant splits it into two:
| Primary | Interlock | |
|---|---|---|
| Loop | Gradient stroke, weight 12 | Solid Ink #04171F, weight 13 |
| Accent | Three trail dashes outside the bowl | A continuous flow line, weight 5.4, threading the loop |
| Crossings | None | One, at the waist |
| Reads as | A luminous letterform | Structure with flow moving through it |
The split is the point. A thin bright accent crossing a thick dark base resolves the problem that killed four earlier interlock attempts: when two strokes of equal weight and colour meet, the crossing reads as a lump. At 5.4 against 13 there is nothing ambiguous to resolve.
It also maps onto the archetype more directly than the gradient S did. §03 of the brand reference asks for “a disciplined grid with a streaming, transformative element passing through it” — the Ruler holding the frame, the Magician moving inside it. That is now literally the construction.
Construction
- Base: two tangent elliptical arcs,
rx 30 / ry 20, 230° each (−38° to −268°), stroke 13, solid Ink. Identical bowl geometry to the primary mark — this is a re-skin, not a redraw. - Flow: a concentric arc offset +11 outward. It runs outside the upper bowl, crosses the base at the waist through a G1-continuous cubic, then runs outside the lower bowl. Stroke 5.4, Stream → Pulse.
- Curves: exact arc-to-cubic,
α = 4/3·tan(Δt/4), three spans per bowl. Carried over from the 600×140 build — the primary set still usesAarc commands, which render identically but are harder to edit in a vector tool. - Aspect: 0.7849 base only, 0.9398 including the flow.
The small-size rule
Below roughly 40 px the accent is dropped and the base thickened. This is not optional. The whole mark is the base/accent separation, and at one device pixel that separation collapses into a blob — I rendered it at 32 px and it was illegible before the fallback was added.
favicon-32.svg,favicon-16.svg— base only, stroke thickened to 14 and 15.5.icon-mono.svg— base only. In a single colour the accent and base are the same value, so the crossing has nothing to distinguish it. Mono gets the base alone rather than a muddle.lockup-horizontal-mono.svg— same reasoning.
So the family has a genuine two-tier structure: the interlock at display sizes, the plain S below. That is normal for an identity, but it must be written down or someone will scale the full mark to 16 px and wonder why it looks broken.
Files
| File | Notes |
|---|---|
lockup-horizontal.svg | Primary. Ink base, Stream→Pulse flow. |
lockup-horizontal-on-white.svg | Opaque white plate. |
lockup-horizontal-reversed.svg | Mist base, Signal→Pulse flow, on Ink. |
lockup-horizontal-mono.svg | Base only, currentColor. |
lockup-stacked.svg | Narrow placements. |
icon.svg | Mark alone, 128 px. |
icon-reversed.svg | On Ink. |
icon-mono.svg | Base only. |
icon-no-pulse.svg | Stream→Signal instead of Stream→Pulse — see below. |
app-icon.svg | 512 px, rounded-rect Ink ground. |
favicon-32.svg / favicon-16.svg | Base only, thickened. |
construction.svg | Geometry diagram. |
metrics.json | Machine-readable measurements. |
Pulse is still an open decision
The default flow gradient is Stream #10BBD1 → Pulse #2FE3A2, which needs Pulse to enter
the palette. icon-no-pulse.svg shows the same mark on Stream → Signal #5FE3EC, entirely
inside the validated palette. Both read correctly; Pulse gives the accent a colour of its own,
Signal keeps it a tint of the existing accent.
Swapping is two hex values in the <linearGradient> of each file — no geometry changes.
Status
This is a parallel set, not a replacement. The primary lockup in ../ is still the approved
mark. If you adopt this one, the swap is a directory rename plus updating the three references in
../../index.html, ../../README.md and ../../standalone/index.html.