Can you just do these as a series of complete images and just swap the entire image depending on the status? The status can be stored in an attribute and you can use conditional visibility to display the correct image.
There is a widget in the app store that displays a vertical timeline, I guess it would be possible to change it to a horizontal timeline.
If you have some styling knowledge, creating a horizontal timeline from a list view shouldn’t be too hard as well. You won’t even need the widget and do the styling in CSS. There are some examples if you google for it (e.g.: https://jsfiddle.net/uer3gxeo/1/)
Regarding the different shades of gray, I would suggest adding the text element twice, once with conditional visibility and class for dark gray, once for the lighter gray. Use as condition the expression with ArrivalDate <= CurrentDate or ArrivalDate > CurrentDate