She stayed up late last night.

Literal

She [topic-は] last-night late [until-まで] was-awake.

起きている ('be awake, be up') uses the resulting-state ~ている: 起きる ('wake up, rise') in the resulting-state form means 'to be in the state of having woken up' = 'to be awake.' The past 起きていた marks the awake-state as an ongoing past condition. まで marks the temporal endpoint — 'until late.' A pattern useful across many late-night descriptions: 夜中まで起きていた ('was up until midnight'), 朝まで起きていた ('was up until morning').