VILNIUS -- Anzhelika Medvedyeva barely had time to register the sight of her only son lying dead on the ground before her, a pool of blood beside him from bullet wounds, when more shots rang out.
Two shots hit her husband, Andriy, as he frantically sought help to carry Denys's body back inside the door of his apartment building. He shouted and fell dead a few feet from his son, Medvedyeva recalls.
"I could not believe they were both gone, that I could do nothing" to save them, Medvedyeva, a refugee from the destroyed Ukrainian city of Mariupol, told RFE/RL in Lithuania, where she has taken refuge with her daughter-in-law, Valeria, and 16-month-old granddaughter, Karolina.
Tragedies like the one that tore Medvedyeva's family apart are playing out around Ukraine daily as Russia presses ahead nearly four months after launching a large-scale invasion on February 24, killing civilians and uprooting survivors.
The scope of the civilian suffering has been particularly extreme in Mariupol, an industrial port city in the Donbas that was home to more than 400,000 residents before it was turned into rubble by relentless Russian attacks in the first three months of the offensive.
The capture of Mariupol was crucial to two of Russian President Vladimir Putin's apparent aims -- gaining full control over the Donbas and establishing a "land bridge" between Russia and Crimea, the Ukrainian Black Sea peninsula that Russia occupied in 2014.
Russia threw as many as 20,000 soldiers into the battle for Mariupol and pounded the city day and night with bombs, rockets, and heavy artillery. Among the structures hit have been numerous residential buildings, hospitals, and a theater where hundreds of adults and children were sheltering.
Within days of the invasion, Russian troops had surrounded the city, cutting off communications, water, and gas, and turning the city into one, big humanitarian crisis.
For nearly a month, the Medvedyev family huddled in Denys and Valeria's apartment in the center of Mariupol, believing initially that it was safer there than on the outskirts, where Anzhelika and Andriy lived.
But by mid-March, as the shelling in the city center intensified, and as battles raged in the streets, Denys, who was 26 years old, grew pessimistic. "'This is the end, we are not going to survive,'" his mother said he told her on March 19, about four weeks into the deadliest siege Europe has seen in at least two decades.
The apartment building next to theirs had been severely damaged in the fighting, its exterior blackened by fire.
Knowing their building could be next, they prepared emergency kits containing cloths and water bottles so they could quickly cover their faces if they were forced to run through suffocating smoke.
Andriy and Denys were part of the team of volunteers among the apartment building's remaining residents who kept watch for any signs of fire. With many apartments abandoned by residents who fled the invasion, a fire could quickly spread through the building.
The Medvedyevs knew it was dangerous to venture outside. They had seen many bodies of civilians lying in the streets -- some the charred victims of Russian bombing raids, others gunned down while trying to fetch water from wells or the river.
The scene on the streets was so gruesome that Andriy and Denys sometimes declined to describe what they had seen when they made their risky trips for basic necessities, Medvedyeva says.
Survivors of the carnage in Mariupol and other parts of the country say that Russian forces routinely accuse Ukrainian civilians, especially men, of working for the local defense units or assisting their military with information, snapping them off the streets for interrogations. Sometimes they have been killed.
When Denys suspected a fire in the building in late March, he took Andriy and the two went outside to see which apartment it might be coming from.
That was when the first bullets hit Denys, Medvedyeva says. A few minutes later, Andriy was gunned down before her eyes.
The exact number of civilians killed in Mariupol is unknown. Victims have been buried without identification at sprawling gravesites and Russia has not allowed international organizations access to the city, which it now controls. The devastated city is one of many places in Ukraine where Kyiv, Western governments, and global rights groups have accused Russia of committing war crimes.
WATCH: Many Ukrainians are still desperately searching for loved ones who have disappeared without a trace.
Medvedyeva, 49, was born and raised in Russia's southern Krasnodar region by parents of Armenian and Ukrainian heritage. She had been living in Mariupol for nearly 30 years.
She says life had been improving in the city despite the war between Ukrainian forces and Moscow-backed separatists in the Donbas, which began in 2014. The separatist forces had tried but failed to seize Mariupol, the second-largest city in the Donetsk region.
"Over the past [eight] years, we got used to life being good in the city. It was developing, becoming more beautiful," she said. But now, she adds, Russian attacks have turned Mariupol in to a "graveyard."
Like many residents of Mariupol, Medvedyeva was unable to collect the bodies of her loved ones and give them a proper burial due to the intense fighting. Russian troops collected the decaying bodies of Andriy and Denys a week after they were killed, loaded them into a truck stacked with other corpses, and took them to an unknown location, she says.
Unable to leave for Ukrainian-controlled territory due to the encirclement of the city by Russian forces, Medvedyeva took Valeria and Karolina to Krasnodar, where her parents still live.
She says she has no intention of staying in Russia, despite the pleas of her parents, after what happened to her family. "I know my son's attitude toward Russia, and he would never forgive me if I brought his child there to live," she said.
Medvedyeva made her way to Lithuania, where she is helping to care for Valeria, 26, and Karolina.
"I don't have time to think about my pain," she said, adding that she is looking for work and stable housing to ensure Valeria and Karolina are taken care of and happy.
"I still want us to have an opportunity for a life, otherwise I will think that [my husband and son] died for no reason," she said.