:root {
--pp-tx-duration: 180ms;
--pp-tx-easing: cubic-bezier(0.16, 1, 0.3, 1);
--pp-tx-fade-duration: 180ms;
--pp-tx-fade-easing: cubic-bezier(0.16, 1, 0.3, 1);
--pp-tx-collapse-duration: 180ms;
--pp-tx-collapse-easing: cubic-bezier(0.4, 0, 0.2, 1);
--pp-tx-flip-duration: 320ms;
--pp-tx-flip-easing: cubic-bezier(0.16, 1, 0.3, 1);
}
.pp-tx-fade-base {
transition: opacity var(--pp-tx-fade-duration, var(--pp-tx-duration))
var(--pp-tx-fade-easing, var(--pp-tx-easing));
will-change: opacity;
}
.pp-tx-fade-from { opacity: 0; }
.pp-tx-fade-to { opacity: 1; }
.pp-tx-scale-base {
transition: opacity var(--pp-tx-scale-duration, var(--pp-tx-duration))
var(--pp-tx-scale-easing, var(--pp-tx-easing)),
transform var(--pp-tx-scale-duration, var(--pp-tx-duration))
var(--pp-tx-scale-easing, var(--pp-tx-easing));
}
.pp-tx-scale-from { opacity: 0; transform: scale(0.95); }
.pp-tx-scale-to { opacity: 1; transform: scale(1); }
.pp-tx-fade-scale-base {
transition: opacity var(--pp-tx-fade-scale-duration, var(--pp-tx-duration))
var(--pp-tx-fade-scale-easing, var(--pp-tx-easing)),
transform var(--pp-tx-fade-scale-duration, var(--pp-tx-duration))
var(--pp-tx-fade-scale-easing, var(--pp-tx-easing));
transform-origin: center;
will-change: opacity, transform;
}
.pp-tx-fade-scale-from { opacity: 0; transform: scale(0.94); }
.pp-tx-fade-scale-to { opacity: 1; transform: scale(1); }
.pp-tx-zoom-base {
transition: opacity var(--pp-tx-zoom-duration, var(--pp-tx-duration))
var(--pp-tx-zoom-easing, var(--pp-tx-easing)),
transform var(--pp-tx-zoom-duration, var(--pp-tx-duration))
var(--pp-tx-zoom-easing, var(--pp-tx-easing));
}
.pp-tx-zoom-from { opacity: 0; transform: scale(0.80); }
.pp-tx-zoom-to { opacity: 1; transform: scale(1); }
.pp-tx-slide-up-base {
transition: opacity var(--pp-tx-slide-up-duration, var(--pp-tx-duration))
var(--pp-tx-slide-up-easing, var(--pp-tx-easing)),
transform var(--pp-tx-slide-up-duration, var(--pp-tx-duration))
var(--pp-tx-slide-up-easing, var(--pp-tx-easing));
}
.pp-tx-slide-up-from { opacity: 0; transform: translateY(8px); }
.pp-tx-slide-up-to { opacity: 1; transform: translateY(0); }
.pp-tx-slide-down-base {
transition: opacity var(--pp-tx-slide-down-duration, var(--pp-tx-duration))
var(--pp-tx-slide-down-easing, var(--pp-tx-easing)),
transform var(--pp-tx-slide-down-duration, var(--pp-tx-duration))
var(--pp-tx-slide-down-easing, var(--pp-tx-easing));
}
.pp-tx-slide-down-from { opacity: 0; transform: translateY(-8px); }
.pp-tx-slide-down-to { opacity: 1; transform: translateY(0); }
.pp-tx-slide-left-base {
transition: opacity var(--pp-tx-slide-left-duration, var(--pp-tx-duration))
var(--pp-tx-slide-left-easing, var(--pp-tx-easing)),
transform var(--pp-tx-slide-left-duration, var(--pp-tx-duration))
var(--pp-tx-slide-left-easing, var(--pp-tx-easing));
}
.pp-tx-slide-left-from { opacity: 0; transform: translateX(8px); }
.pp-tx-slide-left-to { opacity: 1; transform: translateX(0); }
.pp-tx-slide-right-base {
transition: opacity var(--pp-tx-slide-right-duration, var(--pp-tx-duration))
var(--pp-tx-slide-right-easing, var(--pp-tx-easing)),
transform var(--pp-tx-slide-right-duration, var(--pp-tx-duration))
var(--pp-tx-slide-right-easing, var(--pp-tx-easing));
}
.pp-tx-slide-right-from { opacity: 0; transform: translateX(-8px); }
.pp-tx-slide-right-to { opacity: 1; transform: translateX(0); }
.pp-tx-collapse-base,
.pp-tx-collapse-from {
display: grid;
grid-template-rows: minmax(0, 1fr);
}
.pp-tx-collapse-base > *,
.pp-tx-collapse-from > * {
min-height: 0;
overflow: hidden;
}
.pp-tx-collapse-base {
transition: grid-template-rows var(--pp-tx-collapse-duration)
var(--pp-tx-collapse-easing),
opacity var(--pp-tx-collapse-duration)
var(--pp-tx-collapse-easing);
}
.pp-tx-collapse-from { grid-template-rows: minmax(0, 0fr); opacity: 0; }
.pp-tx-collapse-to { grid-template-rows: minmax(0, 1fr); opacity: 1; }
.pp-tx-flip-base {
transition: transform var(--pp-tx-flip-duration)
var(--pp-tx-flip-easing);
will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
:root:not([data-pp-motion="always"]) {
--pp-tx-duration: 1ms;
--pp-tx-flip-duration: 1ms;
}
[data-pp-motion="always"] {
}
}