# 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 uses `A` arc 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`.
