The evacuation of Ukrainian troops from Mariupol's Azovstal steelworks, after two months inside, is the latest setback in Ukraine's efforts to defend the port city.
Mariupol, in south-east Ukraine, has been encircled since the start of March and is now mostly under the control of Kremlin forces.
Control of Mariupol would give Russia a land bridge to Crimea and full control of the Sea of Azov, cutting off Ukraine's maritime trade. It would also deliver a propaganda coup for Vladimir Putin.
However, the process of capturing the city has been slow and bloody.
2 March: The blockade begins
Just days after Russia's invasion of Ukraine, Mariupol, a port city of some 430,000 people, found itself surrounded. From the start of Russia's invasion on 24 February, Mariupol had come under relentless shelling.
By 2 March, Russian troops were several kilometres from the city on all sides, deputy mayor Serhiy Orlov told the BBC. After 15 hours of continuous bombardment, Mariupol was already "near to a humanitarian catastrophe", he said.
Strikes to infrastructure had cut water and power supplies to parts of the city, he added, and there were also food shortages. Satellite photos showed civilian homes and buildings had been destroyed. One densely populated residential district had been "nearly totally destroyed", the deputy mayor said.
Sieges - an ancient tactic of warfare - were now a consistent feature of this 21st Century conflict. By this point the Russian military had also surrounded the country's second-largest city, Kharkiv, and the city of Kherson.
And in the weeks ahead, the invading forces would encircle Mariupol ever closer.
9 March: Maternity hospital hit
It was a sight that shocked the world - a maternity and children's hospital, hit by a Russian air strike.
There was widespread revulsion in the wake of the attack. President Volodymyr Zelensky described it as a war crime: "What kind of a country is Russia, that it is afraid of hospitals and maternity wards and destroys them?" he asked.
The image of heavily-pregnant Marianna Vyshemirsky, her face smeared with blood, as she stepped over rubble down a flight of stairs was also widely shared. The Russian embassy in the UK tweeted a conspiracy theory that Ms Vyshemirsky was an actress and the aftermath of the attack had been staged. But the BBC's disinformation team found evidence contradicting these unfounded claims and eventually spoke to Ms Vyshemirsky herself, after she had given birth to a daughter.
14 March: First evacuation and reports of mass graves
By mid-March, Mariupol's civilian death toll exceeded 2,100, according to the city council. But heavy Russian shelling had stood in the way of any mass evacuation.
On 14 March a humanitarian corridor was agreed with Russia and a convoy of at least 160 private cars managed to leave Mariupol. By mid-afternoon on 15 March, 2,000 cars had left.
But many more had not yet managed to leave. And so the BBC reported that improvised burial sites were now being dug in the city.
The deputy mayor was unable to quantify the number of bodies buried in this way. But he told the BBC there were 67 at one site alone.
"We can't bury [the victims] in private graves, as those are outside the city and the perimeter is controlled by Russian troops," Serhiy Orlov said. "Some we can't identify but some had documents."
With municipal services having collapsed, street cleaners and road repair teams were collecting bodies in the streets, Mr Orlov said, adding: "We've had no electricity, or heating, sanitation, water, food for 11 days."
Mariupol was not alone. There were reports of mass graves, too, in the town of Bucha, and the city of Chernihiv, both in the north of Ukraine. Later, a US satellite firm said it had identified a mass burial site containing about 200 graves near a village called Manhush, about 20km (12 miles) west of Mariupol.
For Ukrainians all this evoked memories of World War Two, when Jews and Soviet partisans were murdered by Nazis, and the Holodomor in the early 1930s, after Stalin forced Ukraine's peasants into collective farms and seized all their grain and livestock.
16 March: Theatre bombed
For days the Donetsk Regional Theatre of Drama had been a place of safety for civilians sheltering from Russia's aerial assault.
Then came an attack that, according to officials, killed 300 people - thought to be the worst known loss of life in a single strike since the invasion began.
The vast Soviet-era building in the middle of a square in the city centre had been clearly marked as a civilian shelter. According to an adviser to the mayor, some 600 people had been inside when it was hit.
At the time of the strike, the word "children" had been written in giant letters on the ground outside the theatre building in the centre of the city.
The BBC spoke to survivors who told of mothers searching for their children under the rubble and a five-year-old child screaming: "I don't want to die."
Russia denied that it had any role in attacking the theatre.
But there was widespread international condemnation of Moscow's actions. Russian Col-Gen Mikhail Mizintsev, who the British government described as the "Butcher of Mariupol" for his role in the bombardment of the city, was later sanctioned by the UK.
March 18: Russian troops close in
Russia said its forces had entered the centre of Mariupol. Mayor Vadym Boichenko said fighting in the city was "really active".
19 March: Claims of forced deportations
Then came the allegation that Russia had been forcibly relocating hundreds of civilians from Mariupol. On March 24, Mariupol authorities updated the figure to 15,000.
By 27 March, Russia was housing an estimated 5,000 at a temporary camp in Bezimenne, east of Mariupol, seen in satellite images.
In parts of Mariupol now under Russian control, reports suggested that civilians - without access to food, water and medicine - had little choice but to leave for Russian-controlled areas and Russia itself.
Some Ukrainian officials described Russia's actions as "deportations" to so-called filtration camps. A warring party deporting civilians to its territory is an internationally-recognised abuse of human rights.
Over time, accounts emerged of conditions inside these facilities. One couple described how they were driven to a refugee hub that was "like a true concentration camp", in which their phones were searched and elderly people slept in corridors without mattresses or blankets.
28 March: Rising death toll
The office of Mayor Boichenko, who had by this point left the city, estimated that nearly 5,000 people had been killed in Mariupol since the start of the siege. It also said 90% of buildings had been damaged and 40% destroyed. The estimated number of people who were thought to still be trapped numbered about 170,000.
31 March: Row over humanitarian corridors
By late March, weeks of relentless Russian shelling had reduced Mariupol to ruins.
But attempts to establish a ceasefire in the city to allow evacuations had collapsed amid accusations of bad faith on both sides of the conflict. Ukraine claimed that Russian troops had carried on shelling the evacuation routes.
Russia was then accused by Ukraine of blocking a bus convoy on its way to evacuate Mariupol.
Meanwhile, French officials said Vladimir Putin had agreed to consider plans to evacuate civilians from the city during an hour-long phone call with France's President Emmanuel Macron. But the Kremlin said the Russian leader had insisted that shelling of the city would only cease when Ukraine surrendered.
13 April: Claims of surrender
Russia's defence ministry said 1,026 soldiers of Ukraine's 36th Marine Brigade, including 162 officers, had surrendered in Mariupol. Two days later, the mayor told the Associated Press that an estimated 120,000 people still remained in the city.
18 April onwards: Last stand at the Azovstal plant
As Russian forces overwhelmed Mariupol, the Azovstal Iron and Steel Works - a massive, four sq-mile (10 sq km) plant in the south-east of the city - became its last centre of the Ukrainian resistance.
On 18 April the city's council said there were still 1,000 civilians hiding at the site - a mass of tunnels and workshops.
As Russian forces advanced slowly into the heart of Mariupol, the sprawling complex also became a home to thousands of Ukrainian soldiers, including fighters from the Azov battalion - a national guard unit with former links to the far-right.
A Russian deadline for the surrender of Ukrainian forces in Mariupol passed with no sign that the troops had complied.
But then in a televised meeting on 21 April, Vladimir Putin ordered his forces to hold back from storming the complex. Instead, he instructed troops to block off the industrial area, so that "not even a fly can escape".
Subsequently the Azov regiment posted a video showing women and children purportedly sheltering underground at the plant, saying they were running out of food and water, and pleading to be evacuated.
On 2 May, the long-awaited evacuation of civilians from the steel plant got under way. More than 100 evacuees from Mariupol made it to relative safety in Zaporizhzhia, after a journey which took several days. Among them were 69 people who had sheltered in bunkers beneath the massive Azovstal steelworks for month. Three days later it was reported another 300 civilians had been evacuated.
In a a remarkable news conference on 5 May, broadcast live from a bunker in the steelworks, a Ukrainian fighter said his country's government had "failed" in the defence of Mariupol but insisted surrender was "unacceptable".
By 7 May it was announced that all remaining women, children and elderly people had left the plant.
Fighting continued until 17 May, when it was announced that more than 260 fighters - some of badly wounded - had been evacuated, marking the end of the Ukrainian military operation to defend the site.
The soldiers were taken to Russian-controlled territory late on 16 May. It was suggested they could be exchanged for Russian prisoners of war, but this is unconfirmed.
People remain trapped in the Azovstal plant and efforts to rescue them are said to be ongoing.
Hanna Maliar, Ukraine's deputy defence minister, said Ukraine's military, intelligence, National Guard and Border Service were "carrying out joint efforts to save" those left behind.
She also hailed the actions of the plant's defenders, who she said had "fully accomplished all missions assigned by the command". But she noted that their position had become untenable after it became "impossible to unblock Azovstal by military means".
In a message posted to Facebook on Monday night, Ukraine's General Staff called the troops "heroes of our time" and said their efforts had helped Kyiv organise the defence of its southern flank.