{
	"decls": [
		["@keyframes", "fade-in", { "opacity": 0 }, { "opacity": 1 }],
		["@keyframes", "fade-out", { "opacity": 1 }, { "opacity": 0 }],
		["@keyframes", "spin", { "rotate": 0 }, { "rotate": "1turn" }],
		[
			"@keyframes",
			"shrink",
			{ "height": "var(--mcss-shrink-size)" },
			{ "height": 0 }
		]
	],
	"vars": {
		"anim": ["animation"],
		"transition": ["transition"]
	},
	"specs": [
		{
			"doc": {
				"group": "animation / transition",
				"desc": "direction"
			},
			"name": "anim-<v>",
			"props": "animation-direction",
			"values": ["normal", "reverse", "alternate", "alternate-reverse"]
		},
		{
			"doc": { "group": "animation / transition" },
			"name": "anim-<k>",
			"props": "animation-play-state",
			"values": { "pause": "paused", "play": "running" }
		},
		{
			"doc": {
				"group": "animation / transition",
				"desc": "timing function"
			},
			"name": "<vid>-<v>",
			"props": "<var>-timing-function",
			"values": ["ease", "ease-in", "ease-out", "ease-in-out", "linear"],
			"vars": ["anim", "transition"]
		},
		{
			"doc": {
				"group": "animation / transition",
				"desc": "<v>"
			},
			"name": "transition-<k>",
			"props": "transition-property",
			"values": {
				"all": "all",
				"bg": "background-color",
				"color": "color",
				"none": "none",
				"width": "width",
				"height": "height"
			}
		}
	],
	"templates": [
		{
			"doc": {
				"group": "animation / transition",
				"args": ["duration: in seconds"],
				"desc": "Animation to change opacity"
			},
			"name": "fade-<vid>",
			"props": { "animation": "fade-<vid> {0}s ease-in-out forwards" },
			"vars": ["in", "out"]
		},
		{
			"doc": {
				"group": "animation / transition",
				"args": ["duration: in seconds"],
				"desc": "Transition to tween background color"
			},
			"name": "bg-anim",
			"props": { "transition": "{0}s background-color ease-in-out" }
		},
		{
			"doc": {
				"group": "animation / transition",
				"args": ["duration: in seconds"],
				"desc": "Animation which rotates element a full turn, looping indefinitely"
			},
			"name": "spin",
			"props": { "animation": "spin {0}s linear infinite" }
		},
		{
			"doc": {
				"group": "animation / transition",
				"args": [
					"duration: in seconds",
					"height: initial height (incl. units)"
				],
				"desc": "Animation which shrinks the height from given initial value to zero. Target element must NOT have padding (use a wrapper if necessary)."
			},
			"name": "shrink",
			"props": {
				"--mcss-shrink-size": "{1}",
				"animation": "shrink {0}s ease-out forwards"
			}
		},
		{
			"doc": {
				"group": "animation / transition",
				"args": ["duration: time (in seconds)"]
			},
			"name": "<vid>-duration",
			"props": "<var>-duration",
			"unit": "second",
			"vars": ["anim", "transition"]
		},
		{
			"doc": {
				"group": "animation / transition",
				"args": ["delay: time (in seconds)"]
			},
			"name": "<vid>-delay",
			"props": "<var>-delay",
			"unit": "second",
			"vars": ["anim", "transition"]
		},
		{
			"doc": {
				"group": "animation / transition",
				"desc": "Sets <var>-timing-function to `steps(num)`",
				"args": ["num: number of steps"]
			},
			"name": "<vid>-steps",
			"props": { "<var>-timing-function": "steps({0})" },
			"vars": ["anim", "transition"]
		},
		{
			"doc": {
				"group": "animation / transition",
				"args": ["iter: number of iterations"]
			},
			"name": "anim-iter",
			"props": "animation-iteration-count"
		}
	]
}
