Video is AVKit's; audio is the app's
AVPlayerViewController draws the whole video surface: glass transport, ±10s, scrubber, speed, AirPlay. put.io paints nothing on it.
A saved position opens an alert first: Continue watching or Start from the beginning.
The audio player shows the disco ball for every track, Berkeley Mono times (elapsed, speed, total), ±15s and an Up next card.
Video chrome
AVKit
presented, never rebuilt
Resume
alert
H:MM:SS position in the message
Artwork
disco ball
280pt, 1pt --border, every track
Title
GT America Md 22
the raw filename, two lines max
Slider
--yellow-solid
--solid track, system thumb
Times
Berkeley Mono Md 12
elapsed · speed · total
Transport
±15s · 66pt
SF skips --text-secondary, Phosphor play/pause --text
Up next
16pt card
1pt --border; “Nothing queued”