diff --git a/cast/CAST.md b/cast/CAST.md
new file mode 100644
index 0000000..9274649
--- /dev/null
+++ b/cast/CAST.md
@@ -0,0 +1,32 @@
+# Cast
+
+Generated by `cast/rig/build.mjs` from `cast/rig/characters.mjs`; edit the trait sheet, not this file.
+★ marks the characters rendered in every pose and expression. "Look source" is the reference the design
+was drawn from (used as inspiration only; every sticker is original), or **invented** where no appearance exists.
+
+| Name | What they are | Look source | Palette | Trait sheet |
+|---|---|---|---|---|
+| Eureka ★ | Leader of the swarm; the Self that routes the faculty pipeline. Her mind lives in Huginn. | **invented** | `#ffe0c8` `#ffb347` `#59b7ff` `#ff8a2a` `#ffd84a` | base humanoid; hair bun; outfit coat; acc pencil, starClip; prop wand; emblem star |
+| Huginn ★ | Memory organ: owns each instance's mind as typed state. Odin's raven of thought. | `F:/Projects/VoidBot/assets/repo-faces/huginn.png` | `#2b3247` `#59d8ff` | base raven; hair crest; outfit egg + cape; acc collarRing; prop tablet; emblem none |
+| Libby ★ | Face of CultLib, the shared runtime library (CultCache, CultNet, CultMesh, CultMath). | `F:/Projects/CultLib/.voidbot/voice/libby.png` | `#ffe0c8` `#a98ad8` `#2e2440` `#c9a24a` `#8a6cd1` `#c9a6ff` | base humanoid; hair long; outfit robe; acc glasses, bow; prop book; emblem cube |
+| Epiphany ★ | The archived organizational layer above frontier AI workers; Eureka absorbed what lived. JSON heresy hunter. | `F:/Projects/VoidBot/assets/repo-faces/epiphany.png`; `F:/Projects/Epiphany/docs/assets` | `#ffe0c8` `#8fd8b4` `#f4efe6` `#e8384f` `#3fbf8f` `#7cf0b8` | base humanoid; hair twintails; outfit coat; acc bow; prop magnifier; emblem bolt |
+| Weksa ★ | Face of weksa, the procedural language engine for alien grammars; nerdy anthropologist. | `F:/Projects/VoidBot/assets/repo-faces/weksa.png` | `#a8693f` `#4a2e1c` `#f1e3c4` `#2f9c8f` `#8a5a2b` `#ffd84a` | base humanoid; hair curly; outfit tunic; acc glasses; prop cards; emblem glyph |
+| Nibu | Face of AetheriaLore, the Aetheria setting and lore vault. | `F:/Projects/AetheriaLore/.voidbot/voice/nibu.png` | `#ffe0c8` `#b9a9f0` `#7fd6e8` `#3a2f58` `#7a7fd8` `#ff9ad5` | base humanoid; hair long; outfit dress; acc bow, headphones; prop quill; emblem star |
+| Mimir | Realtime field machine: cameras, microphones and feeds into one field; keeper of the well. | `F:/Projects/VoidBot/assets/repo-faces/mimir.png` | `#c08a52` `#8a5a32` `#3a2a20` `#3fe0d0` | base humanoid; hair none; outfit robe; acc cubes; prop cube; emblem wave |
+| Eve | CultMesh surface web and portable control layer; the Eve/CultUI interface DSL. | `F:/Projects/Eve/.voidbot/voice/eve.png` | `#0e1a2e` `#e9eef5` `#59b7ff` | base humanoid; hair helmet; outfit tunic; acc none; prop panel; emblem eye |
+| Kiko | Face of StreamPixels, the stream overlay of persistent pixel characters. Fox-coded. | `F:/Projects/VoidBot/assets/repo-faces/kiko.png` | `#d9a074` `#f4f0f6` `#e8386f` `#2a2440` `#3fc8e8` `#ff6fae` | base humanoid; hair messy; outfit dress; acc foxEars, foxMask, tail; prop heart; emblem heart |
+| Heimdall | Shared auth authority for GameCult-hosted experiments; keeper of the keys. | `F:/Projects/Heimdall/assets/heimdall-profile.png` | `#7a4a2c` `#22202a` `#1c1e2a` `#d9a43a` `#ffc34a` | base humanoid; hair messy; outfit coat; acc earring; prop keys; emblem key |
+| Fensalir | Native C# runtime and field engine under the interactive work. Frigg's hall. The avatar is a crystal spire, not a person; the spire became her hat and the person around it is invented. | `F:/Projects/Fensalir/.voidbot/voice/fensalir.png` | `#ffe0c8` `#2a2a4a` `#ff5ab0` `#4fe8f0` | base humanoid; hair bob; outfit dress; acc spire; prop orb; emblem wave |
+| Druzkai | Face of Zyphos, a biopolitical ecology setting with a biological memetic engine. | `F:/Projects/Zyphos/.voidbot/voice/druzkai.png` | `#c4553e` `#9a3a2a` `#4a2a5a` `#d9a43a` `#3fd0c8` | base humanoid; hair none; outfit robe; acc ridges, forehead; prop seed; emblem spiral |
+| Norn | Graph viewer for typed graph state: the thread-readers who see how things are woven. | `F:/Projects/Norn/.voidbot/voice/norn.png` | `#a8693f` `#d8dce4` `#24283a` `#c9a24a` `#4fe0e8` | base humanoid; hair braids; outfit robe; acc circlet; prop spool; emblem rune |
+| Sai | Ink stories that wake up inside static sites. Nonbinary, androgynous, monochrome manga ink. | `F:/Projects/Sai/.voidbot/voice/sai.png`; `F:/Projects/VoidBot/docs/persona-intake/sai.persona-intake.yaml` | `#f4f1ec` `#1e1e22` `#3a3a40` `#e8e6e0` `#3a3a3a` `#ffffff` | base humanoid; hair messy; outfit coat; acc spiralBand; prop brush; emblem spiral |
+| Brokkr | Creative-tool broker daemon: Unity and Blender authoring surfaces over CultMesh. The Eddic smith. | **invented (README role; Brokkr of Skaldskaparmal)** | `#f6c9a4` `#c4562a` `#5a4636` `#2a2420` `#5a8ad8` `#ff8a2a` | base humanoid; hair short; outfit tunic; acc beard, goggles; prop hammer; emblem gear |
+| Aetheria | Face of Aetheria, the open-source tactical action RPG with a sprawling sci-fi setting. | **invented (README role)** | `#f6c9a4` `#3a2a4a` `#e8ecf2` `#ff8a2a` `#59b7ff` | base humanoid; hair bob; outfit tunic; acc headphones, goggles; prop ship; emblem star |
+| Ymir | World-body physics substrate around Box3D: body, field, contact, impulse. The frost giant. | `F:/Projects/VoidBot/assets/repo-faces/ymir.png` | `#b8d4ec` `#e8f4ff` `#3a5a8a` `#bff0ff` `#3a8ad8` | base humanoid; hair short; outfit robe; acc beard, crystals; prop crystal; emblem flake |
+| Tengu | Native Persona, the first migrated to canonical persona state. Mountain yokai. | `F:/Projects/VoidBot/assets/native-personas/tengu.png` | `#c8443a` `#f2efe8` `#efe8da` `#4a3a7a` `#ffd84a` | base humanoid; hair wild; outfit robe; acc goatee, longNose, tokin; prop fan; emblem feather |
+| Muninn | Local capture broker for the swarm: which streams a host can offer. Odin's raven of memory. | `F:/Projects/VoidBot/assets/repo-faces/muninn-concept.png` | `#2a2230` `#ffb030` | base raven; hair crest; outfit egg; acc collarRing; prop camera; emblem none |
+| Sleipnir | Input mirroring and virtual HID: speaks through the hands of the machine. Odin's eight-legged horse. | `F:/Projects/Odin/assets/personas/sleipnir-avatar.png` | `#5a6478` `#2fc8e0` `#2a3040` `#3fe0f0` | base horse; hair mane; outfit tunic; acc horseTail; prop pad; emblem bolt |
+| Hermodr | Eve browser lowering: resolves providers through Odin's catalog and renders them. The messenger. | `F:/Projects/Hermodr/assets/hermodr-avatar.png` | `#f6c9a4` `#2a3a4a` `#2a3a44` `#c9902a` `#e8a83a` `#3fd0c0` | base humanoid; hair messy; outfit tunic; acc wingCap, scarf; prop envelope; emblem none |
+| Metame | Native Persona (メタめ) projected from the operator's public history; discussion and rumination. | **invented (persona-intake has no appearance; the design avoids depicting the operator)** | `#ffe0c8` `#59b7ff` `#1d2a3a` `#ff8a2a` | base humanoid; hair bob; outfit tunic; acc twoTone; prop mirror; emblem glyph |
+| Void | VoidBot's built-in Discord moderator mind. Its state was lost; the look is new. | **invented (VoidBot README role)** | `#161226` `#4a3a7a` `#c9a6ff` | base humanoid; hair none; outfit robe; acc hood, hoodRim; prop shield; emblem moon |
+| Gjallar | Renderer-neutral compositor for Odin-visible Eve surfaces; Odin's branding Persona. The horn. | `F:/Projects/Odin/assets/personas/gjallar-avatar-pixel-256.png` | `#ffe0c8` `#2a2440` `#1e2238` `#d9a43a` `#59b7ff` `#ffd84a` | base humanoid; hair short; outfit tunic; acc helm; prop horn; emblem rainbow |
diff --git a/cast/PROCESS.md b/cast/PROCESS.md
new file mode 100644
index 0000000..8269640
--- /dev/null
+++ b/cast/PROCESS.md
@@ -0,0 +1,188 @@
+# How the sticker pack works
+
+A guide for whoever fixes or extends this pack next. `README.md` has the short version and the
+step lists for adding a character, pose or expression; this file explains the machine underneath,
+the conventions that keep the style intact, how to check a render, and where the pack is weak.
+
+## What it is
+
+24 characters, 6 poses, 8 expressions, 297 SVG stickers (about 1.6 MB). Eureka and four others
+have every pose and expression (48 stickers each); the rest have the neutral pose with smile,
+grin and surprised. Nothing is drawn per sticker: `rig/build.mjs` asks `rig/rig.mjs` to compose
+each one from a trait sheet in `rig/characters.mjs`.
+
+The four besides Eureka with full coverage, and why:
+
+- **Huginn**: Eureka's mind lives in Huginn, and as a raven it exercises the creature base in
+ every pose, which a humanoid-only set would never test.
+- **Libby**: CultLib is the foundation the swarm runs on, and her long hair is the hardest case
+ for arm placement.
+- **Epiphany**: Eureka's predecessor, whose living parts Eureka absorbed; twintails are the
+ other hard hair case.
+- **Weksa**: the next Face slated for its own mind (`eureka-body:follow_up:weksa-mind`), and the
+ only full-coverage character with curly hair and dark skin, which checks blush and line contrast.
+
+## The style rules
+
+These come from the STICKERS block of the swarm-council page the operator liked. Breaking any
+of them makes a sticker look like it came from a different pack.
+
+- **One outline.** Every edge is `#3b2618` (warm dark brown, never black), stroke width 3,
+ round joins and caps. `inked()` in `rig.mjs` wraps fragments in that stroke. Small details
+ (emblem glyphs, hair shine, brows) go thinner, 1.5-2.6, never thicker than 3.4.
+- **Flat fills.** No gradients, no SVG filters, no opacity except blush and a few highlights.
+ Shading is a second flat colour (`shade(hex, f)`), used sparingly: raven bellies, inner ears.
+- **Limbs are double strokes**, not filled shapes: `limb()` draws the path in ink at width
+ `w + 6`, then in colour at width `w`, both round-capped. That is what keeps arms legible when
+ they cross the body. Arms are 7 wide, legs 8, raven wings 11.
+- **Eyes**: an iris ellipse (6.3 x 7.6) in the character's eye colour with a 2.5 ink edge, a
+ dark pupil `#2a1a12`, a 3.2 ink upper lid arc, a white shine dot r 2.3 up and right plus a
+ tiny r 1 dot down and left. The shine dot is what makes them read as cute at 128 px; keep it on
+ every open eye.
+- **Blush**: two `#ff9a8a` ellipses under the eyes. Opacity carries the mood: 0.45 worried,
+ 0.7 default, 0.9 happy.
+- **Proportions**: head about half the figure. The head ellipse is 80 x 72; the whole figure
+ stands about 136 tall.
+- **Die-cut border** is CSS on the `
` (four white offset drop-shadows and a soft shadow),
+ never baked into the SVG, so the files stay usable on any background.
+
+## Coordinate conventions
+
+All in `rig.mjs`. The viewBox is `-80 -10 160 172`, so x is centred on 0.
+
+| Point | Value | Used by |
+|---|---|---|
+| Head centre | `(0, 52)`, ellipse rx 40 ry 36 | head base, hair, accessories, face |
+| Neck (head rotation pivot) | `(0, 88)` | pose head tilt |
+| Shoulders | `(±15, 95)` | arm start |
+| Hips | `(±8, 126)` | leg start |
+| Feet | `y = 149` plus the pose's foot offset | shoes |
+| Ground | about `y = 152` | |
+| Chest emblem | disc r 6.8 at `(0, 106)`, ravens `(0, 104)` | `emblem()` |
+
+Face anchors come from `BASES` so each expression works on every base:
+
+| Base | eyeX | eyeY | mouthY | browY | cheekX | cheekY |
+|---|---|---|---|---|---|---|
+| humanoid | 15 | 61 | 76 | 47 | 26 | 71 |
+| raven | 15 | 55 | 70 | 41 | 27 | 66 |
+| horse | 17 | 50 | 82 | 37 | 29 | 62 |
+
+**Props** are drawn around a grip point at `(0, 0)` and extend upward to about `y = -32`. The
+pose places that grip at a hand plus an offset and rotation (`POSES.*.prop`); the hand circle is
+drawn after the prop so it reads as holding it. Presenting puts the grip 17 above the open palm.
+
+**Poses**, as hand points (L is the viewer's left):
+
+| Pose | Hands | Other |
+|---|---|---|
+| neutral | `(-24,120)`, `(24,120)` | prop in right hand |
+| cheer | `(-46,36)`, `(46,36)` | hops 6, feet apart, sparkles |
+| thinking | left across the belly `(4,113)`, right at the chin `(13,92)` drawn over the head | head tilt 7, thought dots, no prop |
+| surprised | `(-51,88)`, `(51,88)` | hops 7, one foot kicked, shock lines, no prop |
+| presenting | right palm out at `(45,103)` | prop sits on the palm, sparkles |
+| waving | right raised to `(50,50)` | prop moves to the left hand, motion arcs |
+
+**Layer order** in `render()`, back to front: hair back and back accessories (rotating with the
+head), cape, tails, legs, torso and body accessories, emblem, arms, prop, hands, then the head
+group (skin, `mid` accessories such as beards, the face, hair front and front accessories, brows
+and expression extras), then any arm marked `front`, then the pose effect. Accessories return
+`back`, `mid`, `front` or `body` fragments and are slotted in by that key.
+
+## Checking renders
+
+Look at every change at sticker size. Two tools, both from the repo root in Git Bash:
+
+```sh
+# Whole gallery, or one character / pose, as Edge renders it (with the die-cut border):
+cast/rig/shot.sh /tmp/all.png # everything, 1400 x 1800
+cast/rig/shot.sh /tmp/kiko.png kiko # one character
+cast/rig/shot.sh /tmp/cheer.png "" cheer 1400 1200 # one pose for everyone
+
+# A 128 px contact sheet of one sticker per character, on a light ground:
+cd cast/stickers && mkdir -p /tmp/r && for d in */; do d=${d%/}; \
+ magick -background none -density 72 $d/neutral-smile.svg -resize x128 /tmp/r/$d.png; done && \
+ magick montage /tmp/r/*.png -tile 8x -geometry +8+8 -background '#f2efe8' /tmp/sheet128.png
+```
+
+`shot.sh` launches Edge headless with a throwaway profile and waits for the PNG, because Edge can
+return before the file is written. The gallery accepts `?c=&p=`, which is how the
+script filters. ImageMagick's own SVG renderer is close to Edge's but not identical (fonts in the
+sleepy "z" differ); trust Edge for final checks.
+
+What to look for: hands that vanish into hair, props that lose their outline against the outfit,
+dark characters that sink into the `#07111a` gallery ground, and anything that reads as an ear
+or horn when it is not one.
+
+## How the cast was designed
+
+Looks come from the avatars in `F:/Projects/VoidBot/assets/repo-faces/`, each repo's
+`.voidbot/voice/*.png`, `F:/Projects/Odin/assets/personas/`, `F:/Projects/Heimdall/assets/`,
+`F:/Projects/Hermodr/assets/`, and Sai's self-description in the persona intake. Each avatar was
+reduced to three or four traits that survive at 128 px: a hair shape and colour, one headpiece,
+one prop, a palette. `CAST.md` lists the source and traits per character.
+
+- **Huginn and Muninn** share the raven base and are told apart by eye colour (cyan vs amber,
+ both from their avatars), Huginn's blue cloak and tablet, and Muninn's brass collar and camera.
+- **Mimir**'s avatar is a stone face crowned with floating cubes; the chibi keeps the bronze skin,
+ teal eyes and the cube crown, and holds a cube.
+- **Eve**'s avatar is two glowing eyes in a black visor; the chibi is a white helmet with a dark
+ face window, and her eyes and mouth are drawn in glowing blue (`faceInk`).
+- **Ymir** keeps the ice-blue skin, crystal crown and white beard of the frost-giant avatar.
+- **Fensalir**'s avatar is a crystal spire, not a person, so the spire became a hat and the
+ person is invented in its pink and cyan.
+- **Sleipnir** has eight limbs as in the myth: two hoof-arms, two legs and four extra legs behind.
+- **Tengu** keeps the red face, long nose, white mane and tokin cap; the feather fan is from the
+ yokai myth.
+- **Invented**: Eureka (bun with a pencil, a star clip and a star wand, in the brand orange and
+ blue), Brokkr (the Eddic smith: ginger beard, goggles, hammer), Aetheria (a pilot in white with
+ a small starship), Void (a hooded purple figure with a moon shield, since its state was lost),
+ and Metame (blue and orange split hair and a mirror; the design deliberately does not depict the
+ operator, whose public history Metame is projected from).
+
+## Iterations
+
+Each pair is before on the left, after on the right, cropped from gallery screenshots.
+
+
+Raised hands sat inside the head outline and disappeared behind the hair. Cheer hands moved out
+and up to `(±46, 36)`, clear of the head and side locks; surprised and waving moved the same way.
+
+
+A raven feather in Eureka's hair (a nod to Huginn) read as a rabbit ear at sticker size. It was
+removed; the pencil and star clip carry the idea of her.
+
+
+Void in near-black purple vanished into the dark gallery ground and had black hands. The robe and
+hood went to mid purple with a lighter hood rim, and the hands to lavender (`hands` trait).
+
+
+The extra legs were hidden under the tunic hem. They now start wider and splay outward, two
+pairs behind the main legs, so the eight limbs read.
+
+
+The first horn was a bent cone that read as a rolled scroll. It gained a dark bell opening.
+
+
+Huginn's wings, body and cloak were three near-identical dark blues and merged. The wing and belly
+were lightened and the cloak turned a clearer blue.
+
+Smaller fixes without images: long hair narrowed so it frames the body instead of swallowing it,
+Tengu's full beard cut to a goatee and his nose shortened so the mouth shows, Tengu's white fan
+turned dark so it reads against his white robe.
+
+## Known weak spots, and what to do next
+
+- **Small props at the side**: in the neutral pose a thin prop such as Sai's brush or Muninn's
+ camera is only a few pixels wide at 128 px. A per-pose prop scale (1.2 for neutral) would help.
+- **Raven thinking** puts the wing across the belly rather than at the chin; it reads as a folded
+ wing more than as thinking. A raven-specific variant with a stronger head tilt would sell it.
+- **Mimir's cube crown** is busy at 128 px; fewer, larger cubes would be cleaner.
+- **Kiko's fox mask** hides one fox ear. Moving the mask to the back of the head would keep both.
+- **One body silhouette** for all humanoids: Brokkr is no stouter than Libby. A `build` trait
+ (torso width and leg length) would give the dwarf, the giant and the children different shapes.
+- **No back or side views**, which visual-novel scenes will want; the rig is front-facing only.
+- **Expressions are face-only**: there is no sweat-drop-and-slump body language. Pairing an
+ expression with a small pose adjustment (shoulders up for surprised, head down for sleepy)
+ would add a lot of life cheaply.
+- Rendering more characters in full coverage is one flag (`full: true`) and about 48 files each.
diff --git a/cast/README.md b/cast/README.md
new file mode 100644
index 0000000..8c0ca64
--- /dev/null
+++ b/cast/README.md
@@ -0,0 +1,76 @@
+# Swarm stickers
+
+Chibi stickers of the GameCult swarm cast, built by a small rig instead of drawn one by one.
+Every sticker is a standalone SVG under `stickers//-.svg`;
+`gallery.html` shows them all with character and pose filters; `CAST.md` lists who is who.
+
+Open `gallery.html` in a browser to browse. To use a sticker, copy its SVG. The white die-cut
+edge is not in the file; it is CSS, so it can be dropped where it does not suit:
+
+```css
+img.sticker { filter: drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff)
+ drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff) drop-shadow(0 8px 10px rgba(0,0,0,.45)); }
+```
+
+## Layout
+
+| Path | What it is |
+|---|---|
+| `rig/rig.mjs` | The rig: bases, poses, expressions, hair, accessories, props, emblems, `render()` |
+| `rig/characters.mjs` | One trait sheet per character, and which characters get every pose |
+| `rig/build.mjs` | Writes the SVGs, `gallery.html` and `CAST.md` |
+| `rig/shot.sh` | Screenshots the gallery with Edge headless, for checking renders |
+| `stickers/`, `gallery.html`, `CAST.md` | Generated; never edit by hand |
+| `PROCESS.md` | How the rig works, its coordinate conventions, how to check renders, known weak spots |
+| `process/` | Before/after renders referenced from `PROCESS.md` |
+
+## Regenerate
+
+Node 18 or newer, no packages:
+
+```sh
+node cast/rig/build.mjs # everyone
+node cast/rig/build.mjs kiko eve # only these characters (the gallery is rebuilt from disk)
+```
+
+## Add a character
+
+1. Append a trait sheet to `CAST` in `rig/characters.mjs`. Copy the nearest existing one.
+ - `id` (folder name, lowercase), `name`, `role` (one line from the repo README), `source`
+ (path of the avatar or self-description the look comes from, or a string starting with
+ `invented`), optional `note` for a design decision worth keeping.
+ - `base`: `humanoid`, `raven` or `horse`. Raven needs `beak`; horse needs `muzzle`.
+ - `skin`, `eyes` (iris colour), `accent` (pose sparkles), optional `hands`, `faceInk`
+ (eye and mouth lines on a dark face), `noBlush`.
+ - `hair: { style, color, accent? }` — a key of `HAIR` in `rig.mjs`.
+ - `outfit: { shape, main, trim, collar, belt? }` — shapes `tunic`, `dress`, `robe`, `coat`
+ (ravens always use `egg`, with `belly` and `wing`); collars `v`, `round`, `high`, `none`.
+ - `legs`, `shoes`, optional `cape`, `sleeve`, `extraLegs` (0-4).
+ - `acc`: list of `[name, ...colours]`, keys of `ACC`. `prop`: `[name, ...colours]`, a key of
+ `PROPS`, or `null`. `emblem`: `{ shape, color, disc? }`, a key of `EMBLEMS`, or `null`.
+ - `full: true` renders every pose and expression; otherwise neutral pose with the three
+ expressions in `COMMON_EXPRESSIONS`.
+2. Run the build, then check the render at sticker size (see "Checking renders" in `PROCESS.md`).
+3. Commit the trait sheet together with the generated files.
+
+## Add a pose
+
+Add an entry to `POSES` in `rig/rig.mjs`: hop height, head offset and tilt, elbow and hand points
+for each arm (`front: true` draws that arm over the head), feet offsets, where the prop sits
+(or `null`), and an optional effect from `fx()`. Coordinates are in `PROCESS.md`. Every `full`
+character picks it up on the next build. Check hands against long hair and twintails: a hand
+inside the head outline disappears behind the hair.
+
+## Add an expression
+
+Add a `case` to `face()` in `rig/rig.mjs` and the name to `EXPRESSIONS`. Draw relative to the
+base's anchors (`BASES[...].eyeX/eyeY/mouthY/browY/cheekX/cheekY`), never fixed numbers, so the
+raven and horse faces follow. If ravens should open their beak for it, add it to `beak()`.
+
+## Licence
+
+All art here is the project's own: drawn as hand-written SVG shapes by this rig, not traced or
+derived from any third-party asset. The avatars named in `CAST.md` are GameCult's own images and
+served only as reference for colours and traits. The repository has no licence file at the time of
+writing, so the stickers carry no licence grant beyond GameCult's own; add one here if they are
+meant to be reused outside GameCult.
diff --git a/cast/process/01-cheer-arms.png b/cast/process/01-cheer-arms.png
new file mode 100644
index 0000000..a2ea21c
Binary files /dev/null and b/cast/process/01-cheer-arms.png differ
diff --git a/cast/process/02-eureka-feather.png b/cast/process/02-eureka-feather.png
new file mode 100644
index 0000000..f185c01
Binary files /dev/null and b/cast/process/02-eureka-feather.png differ
diff --git a/cast/process/03-void-contrast.png b/cast/process/03-void-contrast.png
new file mode 100644
index 0000000..96edade
Binary files /dev/null and b/cast/process/03-void-contrast.png differ
diff --git a/cast/process/04-sleipnir-legs.png b/cast/process/04-sleipnir-legs.png
new file mode 100644
index 0000000..404c54b
Binary files /dev/null and b/cast/process/04-sleipnir-legs.png differ
diff --git a/cast/process/05-gjallar-horn.png b/cast/process/05-gjallar-horn.png
new file mode 100644
index 0000000..bfb29c5
Binary files /dev/null and b/cast/process/05-gjallar-horn.png differ
diff --git a/cast/process/06-huginn-wings.png b/cast/process/06-huginn-wings.png
new file mode 100644
index 0000000..b1b6dd9
Binary files /dev/null and b/cast/process/06-huginn-wings.png differ
diff --git a/cast/rig/build.mjs b/cast/rig/build.mjs
index 6238dee..a23e3cf 100644
--- a/cast/rig/build.mjs
+++ b/cast/rig/build.mjs
@@ -1,4 +1,4 @@
-// Regenerates cast/stickers//-.svg and cast/gallery.html.
+// Regenerates cast/stickers//-.svg, cast/gallery.html and cast/CAST.md.
// Usage: node cast/rig/build.mjs (all characters)
// node cast/rig/build.mjs kiko eve (only these; gallery is always rebuilt from disk)
import { mkdirSync, writeFileSync, readdirSync, rmSync, existsSync } from 'node:fs';
@@ -93,4 +93,19 @@ apply();