PdfGenerateConfig.AnimationProgress samples every animation at one point of its own run. This page is rendered at the start, the midpoint and the end. (docs/html-css-support.md#animations)
animation: fadeOut 10s ease-in-out infinite alternate on the first logo and fadeIn on the second.
width: 40px → 100%, linear: lengths of different units are mixed through calc().
background-color: #e63946 → #1d4ed8; color: #fff → #ffe066
transform: rotate(0deg) scale(1) → rotate(90deg) scale(1.4) with ease-in-out, and box-shadow mixed at the same time (two animations on one element).
margin-left: 0 → 240px with steps(4, end): the box jumps a quarter of the way at a time.
margin-left: 0 → 240px with linear(0, 1.25 40%, 0.9 70%, 1): the box overshoots the end, falls back past it and settles on it; the midpoint page shows it beyond the 240px it ends at.
border-color: #e63946 → currentcolor on blue text: currentcolor mixes as the box's own color, so the midpoint border is a purple half way between the red and the blue instead of a jump from one to the other.
background-image: linear-gradient(90deg, currentcolor, #e63946) → linear-gradient(90deg, #ffffff, currentcolor) on blue text: currentcolor is a gradient stop (the box's own color), and each stop mixes toward its counterpart.
background-color: oklch(0.75 0.17 50) → oklch(0.5 0.22 290): a pair with a non-legacy color is mixed in Oklab (premultiplied), as a browser does, so the middle is the color a browser shows, not the sRGB average of the two.
transform: rotate(0deg) → translateX(240px) rotate(90deg) scale(1.6): the two lists differ in their functions, so they are mixed through matrix decomposition (CSS Transforms 1 §13) - the box slides, turns and grows together instead of jumping from the first value to the second half way through.
stroke-dashoffset: 300 → 0 on a path with stroke-dasharray: 300: the line draws itself (a bare number is user units).
fill and opacity of a circle, a rotate() of a rect about its own centre (transform-box: fill-box), and a gradient's stop-color: an element of an inline SVG takes the value its animation has at the sampled point, as an HTML box does.