A Democrat has declared victory after a cliffhanger Pennsylvania election for a congressional district that Donald Trump won by 20 points in 2016.
There is no official result, but Conor Lamb and Republican opponent Rick Saccone were neck-and-neck in the solidly conservative 18th district.
Republican sway over the district is so strong that Democrats have run no candidates in the previous two votes.
The contest could set the tone for November’s US mid-term polls.
With votes counted in every precinct of the working-class district, Mr Lamb has 49.8% – just ahead of Mr Saccone (49.6%).
The gap between the two rivals is just a few hundred votes, and absentee ballots are now being counted.
Despite this, Mr Lamb claimed victory late on Tuesday. “It took a little longer than we thought but we did it. You did it,” he told his supporters.
But Mr Saccone has not conceded the race, and there are no official final results.
Why is the race important?
The outcome could shape the contours of the mid-term elections, when Republicans will fight to keep their majority in both the US House of Representatives and the Senate.
Democrats need 24 seats to win back control of the House, which would be the first time they would control the chamber since 2010.
The president has visited the district twice during the campaign, while Republicans have spent millions of dollars to keep a firm Republican grasp on the seat.
The vice-president, the president’s eldest son and daughter have also visited the state to campaign.
Democrats hope a victory could add momentum to the party’s campaign for the mid-term elections in November.
Who are the candidates?
Marine veteran Conor Lamb, a 33-year-old former prosecutor, has promised not to support Democratic Congresswoman Nancy Pelosi and has taken up relatively conservative positions for his party.
He has said he opposes new gun restrictions, but backs expanded background checks, and declared himself personally opposed to abortion.
Mr Lamb has managed to out-fundraise his competitor by nearly 500%, and has drawn the support of labour groups that Republicans hoped to court with Mr Trump’s new tariffs and tax cuts.
His Republican opponent Rick Saccone, 60, is a four-term state lawmaker, Air Force veteran and former counterintelligence officer who has referred to himself as Mr Trump’s “wingman”.
He was criticised late in the campaign by saying some of his opponents “have a hatred for God”.
Mr Saccone – who has called himself “Trump before Trump was Trump” – said as the results came in that he would “fight all the way to the end”.
“You know I never give up,” he told his supporters.
Despite Mr Trump’s 75-minute rally in his district on Saturday, the president has told those around him that he views Mr Saccone as a “weak” candidate, Axios reported.
The two are competing to replace Tim Murphy, who resigned last October after admitting to an extramarital affair.
‘The wave is out there’
Analysis by BBC North America reporter Anthony Zurcher
If the 2018 congressional mid-terms are a coming electoral tsunami in favour of the Democrats, Tuesday’s Pennsylvania special election was the ocean water receding beyond the horizon.
The wave is out there, and it may only be a matter of time before it comes crashing down on the Republican Party. The results in Pennsylvania are razor thin and could still tilt either way.
Given the nature of the district, however, it shouldn’t have been close. Republicans drew the boundaries in 2011 to give themselves a safe seat.
In two recent elections, Democrats didn’t even field a congressional candidate. In 2016, Donald Trump carried the district by 20 points.
Now, the political pendulum is swinging toward the Democrats in a very big way. White working-class voters, who rallied to Mr Trump, either didn’t vote or opted for the Democrat.
There’s still time for Republicans to respond, of course. And the mid-term electorate may be different than the one that shows up for a special election in March.
If seats that look like this Pennsylvania district are toss-ups in November, however, a lot of Republican candidates are going to get swept away.
What’s happening to the district?
Celebrations will be short-lived, as the winner must begin campaigning for a seat in a different district.
Due to new district boundaries imposed by the state Supreme Court in January, the 18th district will be split up into four different districts in November’s poll.
The new boundaries mean the district will not exist in its current form in November.
The winner will serve out the rest of the year and then have to begin campaigning in one of the newly drawn districts. The deadline to file to run in November is 20 March.
Democrat Conor Lamb claims victory in Pennsylvania election