Until the missiles struck within walking distance of the cathedrals and cafes downtown, Ukraine's cultural capital was a city that could feel distant from the war. The early panic had eased, and the growing response to morning air raid sirens was not to head downstairs but roll over in bed.
But Friday's Russian airstrikes at dawn in Lviv, just outside the international airport, made nearby buildings vibrate and shook any sense of comfort as thick black smoke billowed.
Still, the hours after the airstrikes were absent of the scenes in other Ukrainian cities that have horrified the world: shattered buildings and people fleeing under fire. Lviv was already returning to its centuries-old role as an ever-adapting crossroads.
“In the morning it was scary, but we have to go on,” said Maria Parkhuts, a local restaurant worker. “People are arriving with almost nothing, and from where it's worse.”
The city has been a refuge since the war began nearly a month ago, the last outpost before Poland and host to hundreds of thousands of Ukrainians streaming through or staying on. From the other direction come aid and foreign fighters.
Midstream is a city that, on the surface, carries on amid world heritage churches and coffee kiosks. Food delivery cyclists with backpacks of global brands wobble down the cobblestones. Yellow trams ding through narrow streets lined with the history of one occupation after another, from the Cossacks to the Swedes to the Germans and the Soviet Union.
The threat of another occupation by Russia, after so long a fight to break from its influence, and so close to the rest of Europe, is where the new Lviv emerges now.
“It's war,” said Maxim Tristan, a 28-year-old soldier, of Friday's attack. “It only makes us more motivated to fight.”
On a street corner, young men line up outside a weapons shop, passing around a gun sight. Anything's available if you have cash, one man said, prompting grins from the others. On the same block is a range for target practice, with the face of Russian President Vladimir Putin in the bull's-eye. Elsewhere in the city, military veterans train civilians how to shoot.
In a popular city park, a bunker from World War II has been reopened just steps from the playground. Outside an academy for architecture, men are filling sandbags. Some of the city's churches have wrapped up their statues and covered their stained-glass windows. Others leave their fate to God.
Tattoo artists prick clients with patriotic symbols. A brewery turns to making “Molotov cocktails.” A street poster shows a woman in Ukraine's yellow and blue colors, jabbing a pistol into the mouth of a kneeling Putin. In the front room of a local business, a young woman sketches a drawing of a dove.
Volunteerism has seized the city. People are opening their homes, and local news outlets report on residents cutting up old clothing to make camouflage netting for checkpoints.
“War is not just people who fight,” said Volodymyr Pekar.
The 40-year-old local businessman is behind a drive to dot the countryside around the city with yellow-and-blue billboards with slogans including “God save Ukraine” and “Do not run, defend.” He was uncomfortable with the profane language that emerged early on in war messaging, and he said the more religious villagers were too.
At the same time, Pekar has used crowdfunding to raise money for what he called two of Ukrainian soldiers' biggest needs: flak jackets and cigarettes.
“After you fight, you need to smoke,” he said.
In the shadow of slogans and bravado are the estimated 200,000 people who have fled to Lviv from harder-hit parts of Ukraine. Embraced by the city's residents and absorbed into homes and shelters, they look the most nervous of all.
The displaced pick through boxes at aid collection points, scan notices, check their phones. Their presence has led Lviv to pivot from getaway to refuge: Instead of promoting local confectionaries and romantic places, the city's official tourism website now shares information on bomb shelter locations and radiation alerts.
Promising “warmth for the soul,” locals on Friday launched a distinctly Lviv series of free cultural walks for internally displaced people, with the aim of visiting galleries, the medieval quarter and more.
Just days ago, thousands of newcomers crammed the central train station at the height of the flood of refugees heading west. Now the station's platforms at times are almost bare, awaiting the millions who continue to roam Ukraine looking for a place of rest or a new purpose.
There was the furniture maker from the bombarded capital, Kyiv, who trained in air defense years ago and was on his way to an army post. Standing alone on the platform with a backpack and sleeping mat, he planned to visit his family in the western Transcarpathia region before heading east again.
Farther down the platform was a young couple, restlessly remaining in Ukraine because the man, 20, is of fighting age and is prohibited from leaving.
“I didn't travel my country this much. Now I have to,” said the woman, Diana Tkachenko, 21. Their journey began last month in Kyiv on a crowded train and with no idea where they were going.
Their arrival in Lviv was terrible. Fellow travelers pushed and screamed, Tkachenko said. Some were coming from so far east, from Russian-speaking areas, that they didn't speak Ukrainian.
Their train had pulled into the most Ukrainian of cities. For Tkachenko, it was her first visit to Lviv.
“I walked a lot,” she said. “I tried to enjoy the place. It's really beautiful. It feels a lot more safe.”
But there were too many people and no place to live, she said. She and her boyfriend decided to head back east, toward Kyiv.
As their train prepared for departure, yet another was arriving.