/* Content is visible by default. Only the initialized runtime adds these states.
 * CSS extensions can override --bm-from-* using [data-bm-effect="your-slug"]. */
[data-bm-effect] {
	--bm-from-opacity: 0;
	--bm-from-x: 0px;
	--bm-from-y: 0px;
	--bm-from-scale: 1;
}
[data-bm-effect="fade-up"], [data-bm-effect="slide-up"] { --bm-from-y: var(--bm-distance, 28px); }
[data-bm-effect="fade-down"] { --bm-from-y: calc(-1 * var(--bm-distance, 28px)); }
[data-bm-effect="fade-left"], [data-bm-effect="slide-left"] { --bm-from-x: calc(-1 * var(--bm-inline-distance, var(--bm-distance, 28px))); }
[data-bm-effect="fade-right"], [data-bm-effect="slide-right"] { --bm-from-x: var(--bm-inline-distance, var(--bm-distance, 28px)); }
[data-bm-effect^="slide-"] { --bm-from-opacity: 1; }
[data-bm-effect="zoom-in"] { --bm-from-scale: .96; }
[data-bm-effect="zoom-out"] { --bm-from-scale: 1.04; }
/* Individual transform properties preserve a theme's existing transform. */
/* Pending is bookkeeping only: waiting content stays visible to renderers that never scroll. */
.bm-running {
	animation: bm-enter var(--bm-duration, 600ms) var(--bm-easing, ease-out) var(--bm-delay, 0ms) both;
}
@keyframes bm-enter {
	from { opacity: var(--bm-from-opacity, 0); translate: var(--bm-from-x, 0px) var(--bm-from-y, 0px); scale: var(--bm-from-scale, 1); }
}
/* Always visible for accessibility, printing, and in the editor canvas. */
@media (prefers-reduced-motion: reduce) {
	.bm-pending, .bm-running { opacity: revert !important; animation: none !important; translate: none !important; scale: none !important; }
}
@media print {
	.bm-pending, .bm-running { opacity: revert !important; animation: none !important; translate: none !important; scale: none !important; }
}
.editor-styles-wrapper .bm-pending, .editor-styles-wrapper .bm-running { opacity: revert !important; animation: none !important; }
