Skip to main content
TailMotion ships no palette. Every effect derives its color from the element’s own currentColor, so it matches whatever Tailwind already put there.

The color tokens

Override any of them with an exact value — alpha included, and it is preserved:
Or per element, which is usually what you want:

Why shimmer splits color from strength

--tm-shimmer-color and --tm-shimmer-opacity are separate on purpose. Browsers drop gradient interpolation hints from any gradient holding a color-mix() stop, which visibly banded the sweep. Keeping strength in its own variable avoids the color-mix() in that one gradient.

Fallbacks

Derived colors use color-mix(in oklab, …), with a plain --tm-color fallback where color-mix() is unavailable:
Gradient effects interpolate in oklab where supported and fall back to sRGB otherwise. Neither fallback hides anything; both just look slightly flatter.

Dark mode

There is nothing to do. Effects inherit currentColor, and your dark-mode text color is already correct. If you override a token globally, override it in both themes:

The two classes that own their appearance

tm-hold-delete and tm-liquid-btn pre-date the motion-only rule and choose their own colors, padding and radius. They are kept working for compatibility and are superseded by motion-only replacements: Both legacy classes also expose named color presets — tm-liquid-blue, tm-liquid-rose and so on. Using a preset is opt-in and nothing else in the library does this.

What stays yours

Color, contrast, theming and component appearance are your responsibility, and TailMotion deliberately gives you no help with them beyond inheriting what you already chose.
Never let a TailMotion effect be the only signal of a state. Pair it with a label, an icon or a focus ring, and verify any color you supply on its actual light and dark backgrounds. Motion disappears entirely under prefers-reduced-motion, and never existed for a user who cannot perceive it.