# Flung brand files

Generated by `scripts/brand/build.py` and `scripts/brand/render.mjs`; do not edit by hand. The mark is G9: a post, as a speech
bubble tilted 14 degrees and leaving, with a peach upper speed line and a sky lower one. The wordmark is Funnel Display at
750, tracking -0.025 em, traced to outlines. Colours: ink `#16141C`, paper `#F7F6F3`, peach `#FFA584`, sky `#86C0FF`.

## Logo

| File | Size (px) | Use |
|---|---|---|
| `logo/flung-mark-on-light.svg` | vector | The mark on light grounds |
| `logo/flung-mark-on-light-512.png` | 512 x 512 | The mark on light grounds |
| `logo/flung-mark-on-light-1024.png` | 1024 x 1024 | The mark on light grounds |
| `logo/flung-mark-on-light-2048.png` | 2048 x 2048 | The mark on light grounds |
| `logo/flung-mark-on-dark.svg` | vector | The mark on dark grounds |
| `logo/flung-mark-on-dark-512.png` | 512 x 512 | The mark on dark grounds |
| `logo/flung-mark-on-dark-1024.png` | 1024 x 1024 | The mark on dark grounds |
| `logo/flung-mark-on-dark-2048.png` | 2048 x 2048 | The mark on dark grounds |
| `logo/flung-mark-black.svg` | vector | One colour, black |
| `logo/flung-mark-black-512.png` | 512 x 512 | One colour, black |
| `logo/flung-mark-black-1024.png` | 1024 x 1024 | One colour, black |
| `logo/flung-mark-black-2048.png` | 2048 x 2048 | One colour, black |
| `logo/flung-mark-white.svg` | vector | One colour, white, on photos or dark fills |
| `logo/flung-mark-white-512.png` | 512 x 512 | One colour, white, on photos or dark fills |
| `logo/flung-mark-white-1024.png` | 1024 x 1024 | One colour, white, on photos or dark fills |
| `logo/flung-mark-white-2048.png` | 2048 x 2048 | One colour, white, on photos or dark fills |
| `logo/flung-mark-tile.svg` | vector | App icon with rounded corners |
| `logo/flung-mark-tile-512.png` | 512 x 512 | App icon with rounded corners |
| `logo/flung-mark-tile-1024.png` | 1024 x 1024 | App icon with rounded corners |
| `logo/flung-mark-tile-2048.png` | 2048 x 2048 | App icon with rounded corners |
| `logo/flung-mark-tile-square.svg` | vector | Full-bleed app icon, for stores and launchers that round corners themselves |
| `logo/flung-mark-tile-square-512.png` | 512 x 512 | Full-bleed app icon, for stores and launchers that round corners themselves |
| `logo/flung-mark-tile-square-1024.png` | 1024 x 1024 | Full-bleed app icon, for stores and launchers that round corners themselves |
| `logo/flung-mark-tile-square-2048.png` | 2048 x 2048 | Full-bleed app icon, for stores and launchers that round corners themselves |
| `logo/flung-lockup-on-light.svg` | vector | Mark and name, on light grounds |
| `logo/flung-lockup-on-light-512.png` | 512 x 175 | Mark and name, on light grounds |
| `logo/flung-lockup-on-light-1024.png` | 1024 x 349 | Mark and name, on light grounds |
| `logo/flung-lockup-on-light-2048.png` | 2048 x 698 | Mark and name, on light grounds |
| `logo/flung-lockup-on-dark.svg` | vector | Mark and name, on dark grounds |
| `logo/flung-lockup-on-dark-512.png` | 512 x 175 | Mark and name, on dark grounds |
| `logo/flung-lockup-on-dark-1024.png` | 1024 x 349 | Mark and name, on dark grounds |
| `logo/flung-lockup-on-dark-2048.png` | 2048 x 698 | Mark and name, on dark grounds |
| `logo/flung-lockup-black.svg` | vector | Mark and name, one colour black |
| `logo/flung-lockup-black-512.png` | 512 x 175 | Mark and name, one colour black |
| `logo/flung-lockup-black-1024.png` | 1024 x 349 | Mark and name, one colour black |
| `logo/flung-lockup-black-2048.png` | 2048 x 698 | Mark and name, one colour black |
| `logo/flung-lockup-white.svg` | vector | Mark and name, one colour white |
| `logo/flung-lockup-white-512.png` | 512 x 175 | Mark and name, one colour white |
| `logo/flung-lockup-white-1024.png` | 1024 x 349 | Mark and name, one colour white |
| `logo/flung-lockup-white-2048.png` | 2048 x 698 | Mark and name, one colour white |
| `logo/flung-lockup-stacked-on-light.svg` | vector | Mark over name, on light grounds |
| `logo/flung-lockup-stacked-on-light-512.png` | 512 x 527 | Mark over name, on light grounds |
| `logo/flung-lockup-stacked-on-light-1024.png` | 1024 x 1055 | Mark over name, on light grounds |
| `logo/flung-lockup-stacked-on-light-2048.png` | 2048 x 2110 | Mark over name, on light grounds |
| `logo/flung-lockup-stacked-on-dark.svg` | vector | Mark over name, on dark grounds |
| `logo/flung-lockup-stacked-on-dark-512.png` | 512 x 527 | Mark over name, on dark grounds |
| `logo/flung-lockup-stacked-on-dark-1024.png` | 1024 x 1055 | Mark over name, on dark grounds |
| `logo/flung-lockup-stacked-on-dark-2048.png` | 2048 x 2110 | Mark over name, on dark grounds |
| `logo/flung-lockup-stacked-black.svg` | vector | Mark over name, black |
| `logo/flung-lockup-stacked-black-512.png` | 512 x 527 | Mark over name, black |
| `logo/flung-lockup-stacked-black-1024.png` | 1024 x 1055 | Mark over name, black |
| `logo/flung-lockup-stacked-black-2048.png` | 2048 x 2110 | Mark over name, black |
| `logo/flung-lockup-stacked-white.svg` | vector | Mark over name, white |
| `logo/flung-lockup-stacked-white-512.png` | 512 x 527 | Mark over name, white |
| `logo/flung-lockup-stacked-white-1024.png` | 1024 x 1055 | Mark over name, white |
| `logo/flung-lockup-stacked-white-2048.png` | 2048 x 2110 | Mark over name, white |

## Icons

| File | Size (px) | Use |
|---|---|---|
| `favicon.svg` | vector | `<link rel="icon" type="image/svg+xml">`; ink on a light tab, paper on a dark one |
| `favicon-32.png` | 32 x 32 | `<link rel="icon" sizes="32x32">` for browsers without SVG icons |
| `apple-touch-icon.png` | 180 x 180 | `<link rel="apple-touch-icon">` |
| `icon-512.png` | 512 x 512 | Web app manifest icon |

## Social

Each cover comes in three patterns and two tones, as SVG (the source), PNG and JPEG (smaller, for networks that cap uploads):
`social/flung-<network>-<pattern>-<tone>.png`, with `<pattern>` one of `ripples`, `tiles`, `lines` and `<tone>` `light` or `dark`.
The files without a pattern in their name (`social/flung-<network>-<tone>.png`) are the default pattern, ripples. The words sit
inside the safe area each network leaves clear of its avatar and its phone crop.

| Pattern | Looks like |
|---|---|
| `ripples` (default) | Ripples: The bubble's rounded rectangle, without its tail, in widening rings, as if a post had just landed. |
| `tiles` | Tiles: Soft-cornered squares with the bubble's corner radius, on a grid turned to the mark's lean. |
| `lines` | Lines: The mark's speed lines as rows of capsules, in a fixed rhythm of lengths, cut into the ground. |

| Network | Files | Size (px) | Where it goes |
|---|---|---|---|
| LinkedIn | `social/flung-linkedin-company-<pattern>-<tone>.png`, `social/flung-linkedin-company-<tone>.png` (+ .svg, .jpg) | 1128 x 191 | Company page: Edit page, Header, Cover image |
| LinkedIn | `social/flung-linkedin-profile-<pattern>-<tone>.png`, `social/flung-linkedin-profile-<tone>.png` (+ .svg, .jpg) | 1584 x 396 | Personal profile: the pencil on the background photo |
| X, Mastodon, Farcaster | `social/flung-x-<pattern>-<tone>.png`, `social/flung-x-<tone>.png` (+ .svg, .jpg) | 1500 x 500 | X: Edit profile, header. Mastodon: Preferences, Public profile, Header. Farcaster: Edit profile, banner |
| YouTube | `social/flung-youtube-<pattern>-<tone>.png`, `social/flung-youtube-<tone>.png` (+ .svg, .jpg) | 2560 x 1440 | YouTube Studio: Customisation, Branding, Banner image |
| Bluesky | `social/flung-bluesky-<pattern>-<tone>.png`, `social/flung-bluesky-<tone>.png` (+ .svg, .jpg) | 3000 x 1000 | Edit profile, banner (upload the .jpg: Bluesky takes at most 1 MB) |
| Facebook | `social/flung-facebook-<pattern>-<tone>.png`, `social/flung-facebook-<tone>.png` (+ .svg, .jpg) | 1640 x 624 | Page: Edit cover photo, Upload photo |
| GitHub | `social/flung-github-<pattern>-<tone>.png`, `social/flung-github-<tone>.png` (+ .svg, .jpg) | 1280 x 640 | Repository Settings, General, Social preview (the organisation picture is the avatar) |
| Discord | `social/flung-discord-<pattern>-<tone>.png`, `social/flung-discord-<tone>.png` (+ .svg, .jpg) | 960 x 540 | Server Settings, Server Profile, Server banner background |
| Pinterest | `social/flung-pinterest-<pattern>-<tone>.png`, `social/flung-pinterest-<tone>.png` (+ .svg, .jpg) | 1920 x 1080 | Edit profile, Profile cover (16:9) |
| Open Graph | `social/flung-og-<pattern>-<tone>.png`, `social/flung-og-<tone>.png` (+ .svg, .jpg) | 1200 x 630 | `og:image` and `twitter:image` on flung.dev pages |
| Every network, Threads and TikTok included | `social/flung-avatar-light.png`, `social/flung-avatar-dark.png` (+ .svg, .jpg) | 1024 x 1024 | Profile picture. The mark sits inside the circle every network cuts. Threads and TikTok have no cover, only this |

## Patterns

The three patterns alone on the flat ground (paper or ink), as seamless tiles to repeat behind a page or a slide. The shapes
run past each edge before they are embossed, so tiles meet without a seam.

| File | Size (px) | Use |
|---|---|---|
| `pattern/flung-pattern-ripples-light.svg` | vector, 1200 x 1200 | Ripples, light: repeat as a background |
| `pattern/flung-pattern-ripples-light-2048.png` | 2048 x 2048 | Ripples, light: the same tile as a picture |
| `pattern/flung-pattern-ripples-dark.svg` | vector, 1200 x 1200 | Ripples, dark: repeat as a background |
| `pattern/flung-pattern-ripples-dark-2048.png` | 2048 x 2048 | Ripples, dark: the same tile as a picture |
| `pattern/flung-pattern-tiles-light.svg` | vector, 1138 x 1138 | Tiles, light: repeat as a background |
| `pattern/flung-pattern-tiles-light-2048.png` | 2048 x 2048 | Tiles, light: the same tile as a picture |
| `pattern/flung-pattern-tiles-dark.svg` | vector, 1138 x 1138 | Tiles, dark: repeat as a background |
| `pattern/flung-pattern-tiles-dark-2048.png` | 2048 x 2048 | Tiles, dark: the same tile as a picture |
| `pattern/flung-pattern-lines-light.svg` | vector, 1215 x 1133 | Lines, light: repeat as a background |
| `pattern/flung-pattern-lines-light-2048.png` | 2048 x 1909 | Lines, light: the same tile as a picture |
| `pattern/flung-pattern-lines-dark.svg` | vector, 1215 x 1133 | Lines, dark: repeat as a background |
| `pattern/flung-pattern-lines-dark-2048.png` | 2048 x 1909 | Lines, dark: the same tile as a picture |

## Flungies

Flung's generated avatars: each person's is a plush speech bubble caught mid-throw, drawn from their id by
[`@flung.dev/flungies`](https://github.com/flung-official/flung-sdk/tree/main/packages/flungies) (907,200 discrete trait sets). A seed's
Flungie never changes. These files are samples for decks and pages; an app draws its own with the package.
Drawn by `scripts/brand/flungies.mjs` from flung-sdk 5f654e0.

| File | Size (px) | Use |
|---|---|---|
| `flungies/flungie-<seed>-<tone>.svg` | vector, 256 x 256 | 24 sample Flungies, light and dark: `usr-8f3k2`, `usr-01hzx3k9qv`, `usr-7d1c0b`, `usr-a`, `usr-b`, `sacha-flung-dev`, `maya-northwind-studio`, `flung`, `creator`, `mem-1`, `mem-2`, `org-demo`, `ws-northwind`, `42`, `creator-5`, `creator-a`, `creator-h`, `creator-r`, `creator-u`, `creator-z`, `creator-11`, `creator-12`, `creator-15`, `creator-1d` |
| `flungies/flungie-usr-8f3k2-<tone>-512.png` | 512 x 512 | Ocean wobbly with crown, as a picture |
| `flungies/flungie-sacha-flung-dev-<tone>-512.png` | 512 x 512 | Ink puffy with bow, as a picture |
| `flungies/flungie-maya-northwind-studio-<tone>-512.png` | 512 x 512 | Ocean tall with ring light, as a picture |
| `flungies/flungie-creator-<tone>-512.png` | 512 x 512 | Moss squat with round glasses, as a picture |
| `flungies/flungies-traits-<tone>.svg` | vector, 976 x 1588 | The trait sheet: every accessory, body, colour, eyes, mouth and pair of speed lines |
| `flungies/flungies-traits-<tone>.png` | 1952 x 3176 | The trait sheet as a picture |

Animated, as the WebGL hero of `@flung.dev/flungies/gl` draws them: the felted body, fuzz and all, breathing twice and
blinking once in a 7.2 s loop at 30 fps that repeats without a seam, drawn frame by frame by
`scripts/brand/flungies-motion.mjs`, for `flung`, `creator`, `maya-northwind-studio`, `sacha-flung-dev`, `usr-8f3k2`, `usr-01hzx3k9qv`, `usr-7d1c0b`, `mem-1`.

| File | Size (px) | Use |
|---|---|---|
| `flungies/motion/flungie-<seed>-<tone>.webp` | 512 x 512 | Animated WebP with alpha, for pages and chats |
| `flungies/motion/flungie-<seed>-<tone>-256.webp` | 256 x 256 | The same, smaller |
| `flungies/motion/flungie-<seed>-<tone>.webm` | 512 x 512 | VP9 with alpha, for a `<video>` |
| `flungies/motion/flungie-<seed>-<tone>.mp4` | 512 x 512 | H.264 on paper (light) or ink (dark) |
| `flungies/motion/flungie-<seed>-<tone>-poster.png` | 512 x 512 | The first frame, with alpha |

## Workspace marks

Flung's generated workspace avatars: each workspace's is a squircle pressed with tiles, lines or ripples in a two-tone pair,
with its initials, drawn from its id by [`@flung.dev/flungies/marks`](https://github.com/flung-official/flung-sdk/tree/main/packages/flungies)
(25,200 discrete trait sets). People are round Flungies; workspaces are squared marks. A seed's mark never changes.
These files are samples for decks and pages; an app draws its own with the package. Drawn by `scripts/brand/marks.mjs` from flung-sdk 3c57201.

| File | Size (px) | Use |
|---|---|---|
| `marks/mark-<seed>-<tone>.svg` | vector, 256 x 256 | 24 sample marks, light and dark, every colour pair: `ws-7hq2m0x4kd9wza`, `ws-northwind`, `ws-k2v9d3m8qp1tnb`, `ws-c4r8x2wq7j0hsm`, `ws-p0n6t3z9b5vy2e`, `ws-e9j3w5r1x8kq4d`, `ws-1`, `ws-2`, `ws-7`, `ws-9`, `ws-134`, `ws-other`, `org-demo`, `flung`, `ws-sample-f`, `ws-sample-m`, `ws-sample-n`, `ws-sample-o`, `ws-sample-p`, `ws-sample-q`, `ws-sample-r`, `ws-sample-s`, `ws-sample-t`, `ws-sample-u` |
| `marks/mark-ws-7hq2m0x4kd9wza-<tone>-512.png` | 512 x 512 | maya@northwind.studio's workspace: Ink into plum tiles, as a picture |
| `marks/mark-ws-northwind-<tone>-512.png` | 512 x 512 | Northwind Studio: Mint into sky lines, as a picture |
| `marks/mark-ws-9-<tone>-512.png` | 512 x 512 | Sandbox: Sand into peach ripples, as a picture |
| `marks/mark-ws-134-<tone>-512.png` | 512 x 512 | Cloud Nine: Cloud into sky ripples, as a picture |
| `marks/marks-traits-<tone>.svg` | vector, 976 x 2016 | The trait sheet: every pattern, colour pair, finish, scale, angle, ripple centre, line rhythm, signature and size tier |
| `marks/marks-traits-<tone>.png` | 1952 x 4032 | The trait sheet as a picture |

## Motion

Animations of the mark, rendered frame by frame from the WebGL modules in `scripts/brand/motion/` by
`scripts/brand/render-motion.mjs`. Each comes for a light ground and a dark one (`<tone>` is `light` or `dark`); a loop has
exactly duration x fps frames, so it repeats without a seam. Opaque clips are MP4 (H.264) and WebM (VP9); transparent ones
are WebM with alpha, plus an MP4 on paper or ink and, for the square ones, a 128 px GIF. Every clip has a `-poster.jpg`.

| Animation | Kind | Length | Files | Use |
|---|---|---|---|---|
| Throw | loader | 1.4 s loop | `motion/flung-loader-throw-<tone>`: `.webm`, `.mp4`, `-128.gif`; 1080 x 1080, 50 fps | Inline loading: buttons, table rows, the composer while a post is prepared. The bubble winds up, is thrown, and springs home as the speed lines streak. |
| Ripple | loader | 1.6 s loop | `motion/flung-loader-ripple-<tone>`: `.webm`, `.mp4`, `-128.gif`; 1080 x 1080, 50 fps | Longer waits where the loader sits alone: page loads, empty states, a post fanning out to every network. The lines draw in, the bubble pops, a ring of reach spreads. |
| Send | loader | 2.4 s, once per send | `motion/flung-send-<tone>`: `.webm`, `.mp4`, `-128.gif`; 1080 x 1080, 50 fps | The success state after a post goes out. Flung off to the right with motion blur, it leaves ripples behind and sweeps back home. |
| Intro sting | film | 4.4 s, ends on a 1 s hold | `motion/flung-sting-<tone>`: `.mp4`, `.webm`; 1920 x 1080, 60 fps | Opens product films, launch videos and talks. Thrown in on an arc, it lands, the camera eases back and the wordmark rises letter by letter. The last second is still, so an editor can cut on it. |
| End card | film | 3.6 s, holds on the card | `motion/flung-endcard-<tone>` (also `-ripples-<tone>`, `-tiles-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 60 fps | Closes films and recorded demos. The lockup comes into focus over a pattern pressed into the ground and lit by a travelling light, with the address beneath. |
| Ambient | film | 10 s seamless loop | `motion/flung-ambient-<tone>` (also `-lines-<tone>`, `-tiles-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | Holding screens for streams, talks and events. The ripples drift out one ring per loop while a light circles, so it can repeat for hours without a visible seam. |
| Wave | background | 8 s seamless loop | `motion/flung-bg-wave-<tone>` (also `-lines-<tone>`, `-ripples-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | A swell crosses the pressed pattern: each tile rises out of the ground as the crest reaches it, stands proud and casts a soft shadow, then sinks back. For slides and keynote backdrops. |
| Flow | background | 10 s seamless loop | `motion/flung-bg-flow-<tone>`: `.mp4`, `.webm`; 1920 x 1080, 30 fps | Speed lines running across the pressed surface in two depths, the far layer slower and out of focus. Momentum without distraction behind a talking head or a product demo. |
| Breathe | background | 10 s seamless loop | `motion/flung-bg-breathe-<tone>`: `.mp4`, `.webm`; 1920 x 1080, 30 fps | Ripples from a point right of centre, drifting outward with two slow swells of depth and a circling light. Composed like the social covers, with the left kept calm for words. |
| Spotlight | background | 12 s seamless loop | `motion/flung-bg-spotlight-<tone>` (also `-lines-<tone>`, `-ripples-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | A low, soft light glides over a still pattern like a cursor, and the relief appears where it rakes across. Made for website heroes, behind a headline. |
| Deboss | background | 10 s seamless loop | `motion/flung-bg-deboss-<tone>` (also `-none-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | The mark pressed into the ground, tone on tone, with a trace of peach and sky in its speed lines and a light circling it. For a waiting screen or the back of a stage. |
| Dolly | background | 12 s seamless loop | `motion/flung-bg-dolly-<tone>` (also `-lines-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | A slow camera move low over a wide field of the pattern, sharp in the middle distance and soft near and far. The most cinematic of the set: titles over it read well. |
| Every network | network | 4.8 s seamless loop | `motion/flung-extra-broadcast-<tone>` (also `-square-<tone>`, `-vertical-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 60 fps | What Flung does, in one move: the post splits into seven small posts that fly out to the edges, each landing with a ring, then they fly home and flow back into one. For explainers and pitch decks. |
| Hub | network | 6 s seamless loop | `motion/flung-net-hub-<tone>` (also `-square-<tone>`, `-vertical-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | The post at the centre of twelve networks: twice a loop a small post runs down every spoke at once, and each network lights as one lands. For product pages and explainers. |
| Schedule | network | 6 s seamless loop | `motion/flung-net-schedule-<tone>` (also `-square-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | Posts wait on a timeline sliding toward a "now" line, and each is flung away as it reaches it. For scheduling features and queue views. |
| One post, every network | network | 6 s at 9:16, holds from 3.9 s | `motion/flung-net-story-<tone>`: `.mp4`, `.webm`; 1080 x 1920, 30 fps | "One post." The post splits into twelve that drop into a grid of networks, "Every network." rises, and the address settles at the foot. For Stories, Reels and Shorts. |
| Refresh | network | 1.8 s loop | `motion/flung-net-refresh-<tone>`: `.webm`, `.mp4`, `-128.gif`; 1080 x 1080, 50 fps | Reconnecting and syncing states: the two speed lines chase each other round the post as arcs, then settle back into the logo. Transparent, like the loaders. |
| Title card | film | 4 s, holds from 1.4 s | `motion/flung-film-title-<tone>`: `.mp4`, `.webm`; 1920 x 1080, 30 fps | A chapter or section title: the speed lines draw out as a bullet, the eyebrow fades up and the title rises through a mask. Takes eyebrow and title text. |
| Call to action | film | 4.5 s, holds from 1.8 s | `motion/flung-film-cta-<tone>` (also `-docs-<tone>`, `-subscribe-<tone>`, `-try-<tone>`, `-vertical-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | An end card that asks for one thing: the install command, the docs, the free trial, or a subscribe-style outro. Takes headline and action text. |
| Countdown | film | 4 s, ends on the mark | `motion/flung-film-countdown-<tone>` (also `-square-<tone>`, `-vertical-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 60 fps | 3, 2, 1 inside a ring that runs down with each second, then the mark lands. For live starts, launches and premieres. |
| Stat | film | 4.5 s, holds from 2.6 s | `motion/flung-film-stat-<tone>` (also `-vertical-<tone>`): `.mp4`, `.webm`; 1920 x 1080, 30 fps | A number rolls up like an odometer with its label beneath. Takes value and label. |
| Vertical reveal | film | 4 s at 9:16, holds from 2.4 s | `motion/flung-film-vertical-<tone>`: `.mp4`, `.webm`; 1080 x 1920, 60 fps | The logo reveal for Reels, TikTok and Shorts: thrown up from the bottom, it lands and the wordmark rises beneath it into the stacked lockup. |
| Wipe | film | 1.2 s, covers the frame at 0.6 s | `motion/flung-film-wipe-<tone>` (also `-lines-<tone>`): `.webm`, `.mp4`; 1920 x 1080, 60 fps | A scene transition on a transparent ground: lay it over a cut at 0.6 s. A giant post sweeps across, or the two speed lines streak through as bands. |
| Banner loop | social | 8 s seamless loop | `motion/flung-banner-loop-<tone>` (also `-linkedin-<tone>`, `-youtube-<tone>`): `.mp4`, `.webm`; 1500 x 500, 30 fps | A video header composed like the social covers: the lockup and tagline in the safe area, the ripples drifting at the right. X and LinkedIn headers, and a 16:9 channel bumper. |
| Lower third | extra | 2.5 s, holds from 1.3 s | `motion/flung-extra-lowerthird-<tone>`: `.webm`, `.mp4`; 1500 x 500, 60 fps | A compact lockup reveal on a transparent ground, cropped tight, to lay over footage. The bubble is tossed in, the lines draw out, the wordmark slides from behind it. |
| Pulse | loader | 2 s seamless loop | `motion/flung-extra-pulse-<tone>`: `.webm`, `.mp4`, `-128.gif`; 1080 x 1080, 50 fps | A calm two-beat pulse with one soft ring per loop, on a transparent ground, for the corner of a live stream. Nothing flickers or jumps. |

## The gallery and the manifest

`index.html` (served at `https://assets.flung.dev/brand/`) shows every file above with its downloads, the colours, the type
and the rules for using the logo. It draws itself from `manifest.json`, which lists every file with its address, pixel size,
byte size and use, so another site (the marketing site) can show the same section from the same list.

To rebuild: `python3 scripts/brand/build.py && node scripts/brand/render.mjs <folder with playwright-core>` (see `scripts/brand/README.md`).
