Entrances
Fade In Down Animation
Fades in while dropping into place from above.
Card title
Supporting copy goes here.
Opens with this animation loaded. Nothing is uploaded — the scene travels in the link.
.fade-in-down {
transform: translate3d(130px, 90px, 0);
box-shadow: 0px 10px 30px 0px #00000059;
width: 220px;
height: 140px;
background: #1c1e2a;
border-radius: 18px;
color: #e7e9ee;
font-size: 14px;
animation: fade-in-down-anim 700ms linear 0ms infinite both;
will-change: transform, opacity;
}
@keyframes fade-in-down-anim {
0% {
transform: translate3d(130px, 42px, 0);
opacity: 0;
animation-timing-function: ease-out;
}
100% {
transform: translate3d(130px, 90px, 0);
opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.fade-in-down {
animation: none;
transition: none;
}
}Why it is built this way
Downward entrances read as something arriving from off-screen above — a notification or a dropdown. Upward entrances read as content settling into place. Pick the direction that matches where the element conceptually comes from, not whichever looks nicer in isolation.
What it animates
2 properties across 2 CSS declarations. The bar shows when each one is moving.
opacitytransformWhat it costs to run
Opacity and y are handled by the compositor: no layout, no repaint, and the work can run off the main thread. This is the cheap end of CSS animation, which is why it stays smooth on a slow phone where other properties will not.
It runs for 0.70s across 4 keyframe stops, with every property moving over the same window.
One curve throughout: Ease Out on a card. Keeping a single easing across every property is what makes a multi-property animation read as one movement rather than several things happening at once.
Accessibility
Starting at opacity 0 makes the reduced-motion guard load-bearing rather than polite: strip it and a reader who asked for less movement gets no content at all, because nothing ever fades it in. It fades over 0.70s alongside y, and the guard skips all of it together. The generated CSS ends on the resting state, so skipping straight there is safe.