# FLAYSH Brand

The complete brand of FLAYSH (Itay Flaysher), audiovisual artist from Tel Aviv: DJ, VJ, projection mapper, producer, software engineer.
This file is the human guide. The numbers live in `tokens/tokens.json`. Every ready-to-use file is in `build/`.

Locked 2026-10-15 after three option rounds with the artist (`decisions.json`, `lab/`). Visual guide: https://brand.flaysh.com (also `guide/FLAYSH-Brand-Guide.pdf`). AI agents: https://brand.flaysh.com/llms.txt.

---

## 1. Who and why

**Promise:** Technology that makes you feel.

FLAYSH fuses sound, visuals and code. The music is neurofunk and future DnB, with detours into IDM, 140 and downtempo. Sets are high energy and built for impact. The visuals are projection mapping, live VJing in Resolume and TouchDesigner, repurposed analog gear and AI scenes. They bend perception and blur the real and the imagined.

The theme running through everything is **nature, machine, human**: organic growth and biology meeting circuitry, glitch and ritual.

**Where FLAYSH stands in the scene.** The neuro and 140 scene's default look is red fire, demons, chrome lettering and cyan sci-fi portals. FLAYSH stands apart in four ways:
- red as emitted light, not fire
- a flat, never-chrome metal logo
- living systems documented like lab specimens
- real projection work as the content

## 2. Five pillars

Check every piece against these.

| Pillar | Idea | Do | Don't |
|---|---|---|---|
| **Void first** | Black is the material. Light is spent like a rite. | 55 to 90% near-black; cut to black before a hit; one glow, not many | Fill frames edge to edge; soft grey backgrounds; haze |
| **Red is a signal** | Red is the pulse: line, crack, glow, emitted light. Violet is its partner, never its equal. | Red on the one thing that must be seen; violet for halos and shapes | Red fire, embers or smoke; equal red and violet; rainbow |
| **Specimen** | Living things documented by a machine. | One organism plus real labels (BPM, coordinates, set times, file names) in Geist caps | Fake sci-fi jargon; HUD clutter with nothing real in it |
| **Thorned line** | One line grammar for every motif. | Hairline + tapered blade; hook, barb and blade terminals; mirror plus one broken element | Chrome + acid gradients; mandalas; gore, drips, antlers |
| **Alive** | Nothing rests. The music feeds the visuals. | Growth on the kick, symmetry on the drop, captions on the beat | Static decoration on loop; motion that ignores the music |

## 3. Colour: Electric Violet

Red leads, electric violet partners, and everything sits on void.

| Token | Hex | RGB | Use |
|---|---|---|---|
| `void` | `#050509` | 5 5 9 | Ground. Default background everywhere. |
| `surface` | `#10111A` | 16 17 26 | Raised dark: panels, cards, fields. |
| `ink` | `#F0F1F9` | 240 241 249 | Text, and the logo when it is not red. |
| `muted` | `#A5A9C4` | 165 169 196 | Secondary text: credits, dates. |
| `red` | `#F51D31` | 245 29 49 | **THE FLAYSH RED.** Logo, key word, the one thing to see. |
| `red-deep` | `#80041A` | 128 4 26 | Shadow of red: glows, gradients, pressed states. Never text. |
| `red-hot` | `#FFBFB2` | 255 191 178 | Hot core of a glow. Tiny amounts. |
| `violet` | `#5B54FC` | 91 84 252 | Partner: halos, shapes, second accent. **Large text only** (3.99:1). |
| `lavender` | `#B1B7FD` | 177 183 253 | Small coloured text, HUD lines, labels. |

**Ratios** (share of a frame; a guide, not a law):
- Socials: void 60, red 22, violet 12, ink 6.
- Merch: void 80, red 15, ink 5.
- Web: void 70, ink 15, red 10, violet 5.

**Contrast on void** (WCAG 2.1; the test suite enforces these):

| Colour | Ratio | Allowed for |
|---|---|---|
| ink | 18.1:1 | any text |
| muted | 8.8:1 | any text |
| lavender | 10.7:1 | any text |
| red | 4.95:1 | body text |
| violet | 3.99:1 | large text and shapes only |

**Rules:**
- Red is always the most visible colour. Violet sits behind it or around it.
- Ramps 50 to 950 for red, violet and neutral are in `build/css/flaysh.css` and `build/tailwind`. Use them for UI states, not to invent new brand colours.
- The brand violet is hue 277 and CTRL+F ED.04's is about 295. Keep FLAYSH bluer.
- **Visuals palette (show / Resolume):** parked. A wide palette for live visuals is the next round. Draft LUTs are in `lab/luts/` (not final). Brand colours do not limit the show.

## 4. Type: Anton + Geist

| Role | Font | Rules |
|---|---|---|
| **Title** | **Anton** | Captions, headlines, set names, posters. ALWAYS UPPERCASE. One weight. Tight: line height 0.92 to 1. One word or phrase in red. |
| **Text** | **Geist** | Everything else: body, dates, venues, credits, UI. Sentence case. Labels are Geist Medium UPPERCASE with 0.08em tracking (the lab-readout voice). |

Both are free (SIL Open Font License). Files are in `type/`: Anton, Geist variable, and static Geist Regular, Medium, SemiBold and Bold for apps that can't use variable fonts. They're on Google Fonts too.

**Type scale** (for a 1080px-wide social canvas; web sizes are in the tokens):

| Style | Font | Size |
|---|---|---|
| title-xl | Anton | 200px |
| title-l | Anton | 132px |
| caption | Anton | 120px |
| title-m | Anton | 88px |
| body | Geist | 36px |
| small | Geist | 28px |
| label | Geist Medium, caps | 24px |

**Reel captions:**
- Anton, 120 to 140px on 1080 wide, ink, with ONE word in red.
- Soft dark shadow, no outline. Centred at about 45% of the height.
- 1 to 3 words per screen, cut on the beat.
- See `templates/reel-caption.html`.

Hebrew: not used on FLAYSH socials, so there is no Hebrew face yet. If needed later, pick a partner for Geist, never Anton.

## 5. Logos

Two marks, two jobs. The vector sources are in `logo/svg/` (one colour, `currentColor`). Exports are in `build/logo/`.

| | Winged (death-metal) | Flame wordmark |
|---|---|---|
| Role | Hero mark: avatars, covers, merch, stage, big moments | Readable name: line-ups, posters, EPK, anywhere it must be read |
| Colours | red, ink, void | ink, red, void |
| Clear space | 25% of logo height, all sides | Height of the F's top bar (about 20% of logo height) |
| Minimum | 24px tall digital (a silhouette at 32px avatar); 15mm print | 80px wide digital; 25mm print |

**Never** (both marks):
- chrome or metallic finish
- gradients inside the letters
- outlines or strokes
- hard drop shadows
- stretching or rotating
- violet fill on void

A soft glow in the logo's own colour is fine.

The logos were never redrawn: they are the artist's originals, cleaned to one-colour SVG.

**Avatar:** `build/logo/avatar/flaysh-avatar-*.png`, the red winged mark on void, 76% wide, centred.

**Co-brand** (CTRL+F, venues, festivals): `build/logo/cobrand/flaysh-cobrand-lockup.svg`.
- Layout: flame wordmark, then a thin muted rule, then the partner logo at the same height.
- The FLAYSH logo stays ink or red. It never takes a partner's colours.

**CTRL+F** is FLAYSH's event series and a separate sub-brand.
- It has its own colour per edition and its own fonts (Secular One + Alef).
- FLAYSH appears on CTRL+F material only as the logo (lockup or "presented by").
- Don't merge the two. Don't use CTRL+F's violet or magenta for FLAYSH.

## 6. Motifs

These live in `build/motifs/`, as SVG with `currentColor` so any app can recolour them.

| Motif | Use |
|---|---|
| `thorn-spine-01` | The classic spine: posts, covers, stage centrepieces |
| `thorn-spine-02` | Tall vertebra column: stories, banners, side panels |
| `thorn-spine-03` | Wings: posters, wide headers |
| `thorn-spine-04` | Roots / nerves: backgrounds, overlays |
| `specimen-frame` | Crosshair + target box + leader lines, around a subject |
| `leader-label` | Point at something and label it with a Geist caps line |

**Thorned line grammar**, for drawing new motifs by hand or in code:
1. Two weights only: a hairline spine and a tapered blade. No middle weights.
2. Every stroke tapers. No blunt ends.
3. Terminals are hook, barb or blade, one per stroke.
4. One mirror axis, then break exactly one element ("balanced, not entirely symmetrical").
5. Branches get thinner than their parent and never cross.
6. Ink covers at most about 30% of an area. Negative space carries the shape.
7. Tone comes from dot density, never grey fills.

The motifs come from a code generator (`kit/motifs.py`). The same shapes animate in the Labs and can be grown on the kick in TouchDesigner.

## 7. Photo, footage and motion

**Grading:**
- Keep blacks deep (void). No warm haze, no lifted greys.
- Red and violet light belongs to the subject. Cool shadows are fine.

**Content:** real projection work beats renders. Your own mapped stages are the strongest covers in the scene, and nobody else does it.

**Motion:**
- Growth on the kick, reset on the drop, symmetry on for drops and off for breakdowns.
- Captions pop in over 150 to 250ms. No slow fades.
- Glitch only as a transition, never as a constant texture.
- Hand-made effects at 12 fps over a smooth base (the Arcane trick).
- Plan absence: cut to black so the next hit lands.

## 8. Voice

**Writing rules:**
- Plain words. No em-dashes anywhere.
- FLAYSH always in caps. Tag @flaysh_. Instagram is English only.

**Captions:**
- Open with a curious or funny first line about a visual surprise ("How many VJs do you need to light a building?"). Plain announcements underperform.
- Then 1 to 2 casual lines, then credits in the artist's format, then 4 to 5 tool hashtags.

**Rider rule:** "FLAYSH always in caps, official logo on the lineup, tag @flaysh_, approval before publishing."

## 9. Templates

`templates/*.html` are editable sources. Open them in a browser, change the marked text, and export. Rendered samples are in `templates/samples/`.

| Template | Size |
|---|---|
| `ig-post` | 1080 x 1350 |
| `ig-story-gig` | 1080 x 1920 (keeps IG UI zones clear) |
| `reel-cover` | 1080 x 1920 (title inside the grid crop) |
| `reel-caption` | 1080 x 1920, transparent: the caption style for editors |
| `lower-third` | 1920 x 1080, transparent: for set videos |
| `yt-thumb` | 1280 x 720 |
| `poster` | 1240 x 1754 (A-series; export at 2x for print) |
| `og-card` | 1200 x 630 link preview (websites, quote pages) |

Re-render the samples: `uv run tools/render_templates.py`.

## 10. Files

| Need | File |
|---|---|
| The numbers | `tokens/tokens.json` (only source; edit here) |
| Web / code | `build/css/flaysh-vars.css` + `build/webfonts/` (self-hosted), or `build/css/flaysh.css` (Google Fonts), `build/js/tokens.ts`, `build/tailwind/` |
| Design apps | `build/swatches/flaysh.ase` (Adobe), `.swatches` (Procreate), `.gpl` (GIMP / Krita / Inkscape), `flaysh-colours.txt`, `flaysh-colours.png` |
| Logos | `build/logo/svg`, `build/logo/png` (512 / 1024 / 2048, transparent), `build/logo/avatar`, `build/logo/cobrand` |
| Fonts | `type/` |
| Motifs | `build/motifs/` |
| Templates | `templates/` |
| Why things are the way they are | `decisions.json`, `docs/`, `research/`, `lab/` |

**Update the brand:**
1. Edit `tokens/tokens.json`.
2. Run `uv run build.py` and `uv run --group dev pytest`.
3. Commit. Never hand-edit `build/`.
4. Log the decision in `decisions.json`.
