fn ease_in_out(t: f32) -> f32
EaseInOut S-curve used for the default transition. Slower at the endpoints, faster in the middle — softer to the eye than a strict linear crossfade.