internal — not linked, not indexed

Wordmark lab

Six studies on the same drawn mark. Every one animates transform and opacity only, so all of them are compositor-driven. Nothing here loops.

Compare: 1a vs 1b vs the synthesis

The same three, stacked and played together at one scale. They differ mostly in timing, so watch the wave pass down the column rather than trying to hold one in memory while the next plays. Drop the speed slider to 0.35x to read the mechanics.

1a warp & weft
two phases
1b thread
one pass, arbitrary
1e one pass
one pass, derived

Weave, pushed

All four work on individual logs rather than whole letters. That is the real difference: a letter arriving is lettering, a thread arriving is weaving.

1a · Warp & weft

The 16 vertical threads are strung first, then the 14 horizontals pass through them. The order is not a stylistic choice — it is the order weaving happens in, and both sets are selected straight off the mark's own geometry.

520 + 560ms · two-phase

1b · Thread

Every log on its own, from alternating sides, sequenced left to right. The plain thread-level reading of the original.

600ms · 30 logs

1c · Shuttle

One pass crosses the loom and each thread drops as it is reached. Sequenced by true x position, so it travels at a constant rate instead of stuttering between unevenly spaced letters.

420ms · x-sequenced

1d · Pull tight

Threads arrive loose and out of true, then the cloth is pulled taut and everything snaps into alignment. The settle is the weave locking.

950ms · ease-move · overshoot

The original six

1 · Weave

Letters arrive from alternating sides and lock together. The mark is built from the same strip unit as the page, so it assembles the way cloth does.

620ms · ease-enter · uneven stagger

2 · Deal

Letters land in reading order with hand-tuned uneven delays. A uniform cascade reads as a template keyframe; the unevenness is what reads as dealt.

480ms · ease-enter

3 · Shutter

The whole mark snaps in from just under full size. It starts at 0.94, never 0 — nothing in the physical world appears from nothing.

900ms · exaggerated ease-out

4 · Tension

The threads open under load and settle back. Named for a real thing rather than for an optical property. A gesture, not an idle loop.

1100ms · ease-move

5 · Sweep

A spectrum passes through the mark letter by letter and stays. Each letter takes its own thread, so it reads as ten threads rather than one coloured wash.

700ms · opacity only

6 · Scan

The same spectrum reads across and leaves, the way a code is scanned. Identical to Sweep except that it does not stay.

900ms · linear · opacity only

Adding a study: give a .cell a new data-anim value and write the matching rules inside the prefers-reduced-motion: no-preference block. The replay wiring finds it automatically. Durations are authored at 1x and scaled by --lab-speed, so the slider stays honest about what would actually ship.