Blurred brand-coloured gradient blobs drifting on closed sine paths, loop-exact at the last frame
This is the format it was composed for. Switch above to see it lay itself out for another: same animation, re-arranged for the frame.
Everything below can be changed without touching the animation. Hand the list to an agent, or edit the values at the bottom of the component file.
How many gradient circles make up the mesh. 3 is an open, airy field; 5 is the balanced default; 6 closes the bottom of the frame and reads denser. They are added in a fixed order, so every count is a composed frame rather than a random handful.
now: 5
How strongly the colour reads, 0 to 1. Around 0.6 is the sweet spot: clearly branded, still quiet enough for a headline to sit on. Past 0.85 the field starts competing with type. Use that only when nothing is layered over it.
now: 0.62
Drift speed. Quantised on purpose: each step is an integer multiple of the blobs' harmonics, which is what keeps the loop exact at the last frame. 'still' freezes the mesh into a static gradient wallpaper; 'slow' is barely perceptible and right behind dialogue or type; 'brisk' is for a title card you only hold for a beat.
now: slow
Where in the drift cycle the field starts, in turns (0 to 1). Nudge it to pick a different arrangement of the same mesh, or to de-sync two scenes that both use this background so the cut doesn't repeat itself.
now: 0.18
Corner falloff, 0 to 1. Kept subtle by design. It pulls the eye to the middle third and hides the blur seams at the frame edge. 0 for a perfectly even field; 1 is still gentle, roughly a 30% darkening in the corners.
now: 0.4
Strength of a gradient rising from the bottom edge, 0 to 1. This is the insurance policy for type placed low in the frame: it flattens whatever the mesh happens to be doing down there. Set 0 when exporting the bare background, or when your content sits in the upper half.
now: 0.35
Overlay a fixed, very fine noise texture. Large soft gradients band badly once they're encoded to 8-bit video; this dithers the ramps away. Leave it on unless you are compositing the frame further downstream.
now: true
Optional line of display type set over the mesh, lower-left, proof that the field stays readable, and a usable title card in its own right. Two to six words. Omit it to export the bare background as an underlay.
now: Quiet enough to read on
Small uppercase mono label above the headline, in the accent colour. One or two words. Ignored when there is no headline.
now: Ambient bed
Brand token id, one of the keys of BRANDS.
now: slate
No Tailwind, no CSS, no asset files. Inline styles only.
A soft gradient mesh background, four or five big blurred blobs in the brand colours drifting slowly behind everything, seamlessly looping, dim enough that a headline can sit on top of it and still be readable. Give me a knob for how strong it is.