# SurveyStream — Logo

Production SVG lockup for the **Interlocking Loop / Active Signal** direction.

The wordmark is **outlined paths, not live text** — these files render identically with no
font installed, no webfont request, and no substitution risk.

## Files

| File | Use |
| --- | --- |
| `lockup-horizontal.svg` | **Primary.** Transparent ground, two-tone wordmark. |
| `lockup-horizontal-on-white.svg` | Same, with an opaque white plate for placing on imagery. |
| `lockup-horizontal-reversed.svg` | Dark grounds. Mist wordmark, Signal second half. |
| `lockup-horizontal-mono.svg` | One colour via `currentColor`. Heavier mark stroke so it holds. |
| `lockup-stacked.svg` | Narrow slots, square-ish placements. |
| `wordmark.svg` | Wordmark alone. |
| `icon.svg` | Mark alone, 128 px, full colour with pulse trail. |
| `icon-mono.svg` | Mark alone, `currentColor`, no trail. |
| `icon-reversed.svg` | Mark alone on Deepwater. |
| `app-icon.svg` | 512 px, rounded-rect Deepwater ground. iOS/Android/PWA. |
| `favicon-32.svg` / `favicon-16.svg` | Optimised cuts — trail removed, stroke thickened. |
| `construction.svg` | Geometry diagram. |
| `metrics.json` | Every measurement below, machine-readable. |

## Construction

The mark is **two tangent elliptical arcs** — nothing freehand:

- Upper bowl centred `(0, −20)`, lower at `(0, +20)`, both `rx 30 / ry 20`.
- They are tangent at the origin, which is where the stroke hands off.
- Each arc sweeps **230°**, from −38° to −268°, stroke width **12**.
- The pulse trail is three tapered dashes on a concentric ellipse offset 6 units outside
  the stroke edge, at 95% / 56% / 30% opacity.

`rx > ry` is the point. Circular bowls give an S with a **0.5** width-to-height aspect, which
looks spindly beside a Bold wordmark. Elliptical bowls give **0.7826**, which is what a
bold grotesk S actually measures.

## Wordmark

- **Archivo Bold**, outlines extracted from the static Omnibus-Type release.
- Tracking **-0.04em**, per the type system.
- GPOS pair kerning applied where the font defines it — one pair fired on this string (`re`, −10 units).
  A designer should still eyeball `yS` and `St` before final release.
- Cap height 68.6 units; wordmark width 635.4 units.
- Two-tone split after "Survey": `#04171F` then `#0A6E86`. The split is the medial capital,
  which is the structural device — see `../typography/TYPOGRAPHY.md` §4.

## Layout rules

- **Mark height** = 1.38 × cap height.
- **Gap** between mark and wordmark = 0.46 × cap height.
- **Alignment:** the mark's optical centre sits on the cap-height centre, not the baseline.
- **Clear space** = 0.5 × cap height on all sides on all four sides. The pulse trail may overhang into it;
  nothing else may enter.
- **Minimum width** = 96 px for the horizontal lockup; below that use icon.svg.

## One deliberate departure from the brief

The brief asked for an *interlocking* S. I built and rendered four interlocking constructions —
overlapping gapped rings, an overshoot self-crossing, a true over/under weave, and a wide-bowl
variant. Every one of them either produced a visible lump at the crossing or stopped reading as
an S. At icon scale a legible S and a visible interlock are in direct tension.

The shipped mark keeps the interlock **implied** rather than drawn: one continuous
cyan→mint gradient runs through the handoff, so the two halves meet without a seam. If the
literal interlock matters more than S-legibility, say so and I'll ship the closed-loop
(infinity) mark from the Flow & Lattice direction instead — that form carries a real crossing
because it is a single self-intersecting path.

## Reproducing

The generator is deterministic. Regenerate with the script in the session scratchpad; it needs
`Archivo-Bold.ttf` (fetched from Omnibus-Type) and emits every file above plus `metrics.json`.
Font licence: SIL Open Font Licence 1.1 — embedding and outlining are both permitted.


## Interlock variant

`interlock/` holds a parallel set with the same bowl geometry re-skinned as **a solid Ink loop
plus a thin Stream→Pulse flow line that crosses once at the waist**. It resolves the interlock
that was abandoned in the primary mark, and it carries a hard small-size rule: below ~40 px the
accent is dropped and the base thickened.

Not a replacement — see `interlock/README.md`.
