# Salvo brand assets

Generated by `scripts/salvo-assets-build.mjs`. Re-runnable:

```sh
npm install opentype.js          # or install to /tmp/node_modules
node scripts/salvo-assets-build.mjs
```

Every asset is **SVG first** — rects and outlined paths only. No embedded fonts, no
`@font-face`, so they render identically as `<img>`, as a favicon, on a CDN, in email,
in Illustrator and in Figma. PNGs are rasterised from the same SVGs with `rsvg-convert`.

## The mark (`/mark`)

A router matrix is a grid of crosspoints; a salvo is the set of points closed together.
The lit crosspoints spell the S — the mark is a letter and a diagram at once. 5×5 grid,
square pixels, 3:1 cell-to-gap ratio.

| File | Lit | Unlit | Use |
|---|---|---|---|
| `salvo-mark-on-light` | `#8B5CF6` | `#E4E4EA` | default — light backgrounds |
| `salvo-mark-on-dark` | `#A78BFA` | `#2A2A35` | dark UI, dark marketing |
| `salvo-mark-black` | `#141419` | `#D6D6DE` | neutral light grounds |
| `salvo-mark-mono-black` | `#000000` | — | single-colour print, silkscreen |
| `salvo-mark-mono-white` | `#FFFFFF` | — | overlay on photos, video burn-in |

Closed tiles — the app-icon build, 16% corner radius:

| File | Ground | Use |
|---|---|---|
| `salvo-tile-violet` | `#7C3AED` | operator app icon, favicon |
| `salvo-tile-dark` | `#141419` | anything sitting beside it on the same dock |
| `salvo-tile-light` | `#EDEDF0` | docs, installers |

Below 24px use a tile, not the open matrix — the violet field carries the brand while
the S carries the meaning.

## Wordmark (`/wordmark`)

IBM Plex Sans Condensed 700, uppercase, −0.015em, outlined to paths. Cropped to the cap
band, so it drops into a layout with no built-in padding.

| File | Fill | Use |
|---|---|---|
| `salvo-wordmark-on-light` | `#141419` | default |
| `salvo-wordmark-on-dark` | `#EDEDF0` | dark grounds |
| `salvo-wordmark-black` | `#000000` | mono repro |
| `salvo-wordmark-white` | `#FFFFFF` | mono repro |

**Never tint a letter of the wordmark.** Colour enters through the mark beside it and
the violet dot in the URL, never through a tinted glyph. There is no violet wordmark
and there will not be one.

## Lockups (`/lockup`)

Mark + wordmark. The mark sets to cap height, never taller; clear space between the two
equals one grid cell. Same four variants as the wordmark.

## Favicon (`/favicon`)

Square violet tile (`#7C3AED`), white crosspoints. No corner radius — browsers apply
their own masking.

| File | Size |
|---|---|
| `favicon.svg` | vector — preferred |
| `favicon.ico` | 16 / 32 / 48 |
| `favicon-16/32/48/192/512.png` | bitmap variants, PWA icons |
| `apple-touch-icon.png` | 180 × 180, rounded tile |

```html
<link rel="icon" type="image/svg+xml" href="/salvo-assets/favicon/favicon.svg">
<link rel="icon" href="/salvo-assets/favicon/favicon.ico" sizes="any">
<link rel="apple-touch-icon" href="/salvo-assets/favicon/apple-touch-icon.png">
```

## Legacy

`../lgl-os-assets/` holds the retired LGLOS wordmarks and favicon (Syne 800, hyphenless
`LGL` + violet `OS`). Kept for archive and for surfaces that have not cut over yet.
Nothing new should reference them.
