Even the most optimistic Democrats didn't have South Carolina on the list of Republican U.S. Senate seats they seriously thought they could flip at the start of 2020.
But a little more than two weeks out from Election Day, it's within reach.
Democrat Jaime Harrison — a 44-year-old former South Carolina Democratic Party chairman, congressional aide and lobbyist — has risen in the polls and is giving three-term incumbent Sen. Lindsey Graham something to worry about this election.
Make no doubt: South Carolina remains a solidly Republican state, and since Graham was first elected in 2002, he has won easily every time.
What has changed this year is Graham himself, specifically how he has aligned himself within the Republican Party. For most of his political life, Graham appealed to the middle — those more moderate South Carolina voters who saw him as someone who could cut through partisan politics.
The best symbol of this was his close friendship with the late GOP Sen. John McCain of Arizona.
But now McCain is gone, and Graham's most prominent new relationship is with none other than President Trump, who not only clashed with McCain on issues but also mocked and ridiculed his reputation as a military hero who survived years of torture as a prisoner of war in Vietnam. At the start of the 2016 campaign, Trump famously said, "I like people that weren't captured, OK?"
At the time, Graham was running against him for the GOP presidential nomination, sugarcoating none of his critiques. Donald Trump was "unfit for office" and a "religious bigot," according to Graham back then.
One Harrison TV spot shows clips of Graham from the 2016 campaign, when he seemed appalled by Trump. Then, the ad cuts to more recent statements where Graham proclaims, "No, I don't think he's a race-baiting, xenophobic, religious bigot. I like the president. I am like the happiest dude in America right now."
Some South Carolina voters, like real estate agent Melinda Nicholson, are mystified by Graham moving from such a close friendship with McCain to his current friendship with Trump.
"I'm just not pleased," Nicholson says of Graham. "It's like he's Trump's minion, and I don't like that."
That opinion comes from a Democrat, but Nicholson quickly explains that she has voted for Graham every time he has run for Senate. This year, she says, "I'm voting for Jaime Harrison."
The incumbent's vocal defense of Trump has prompted Democrats from around the U.S. to make online donations to Harrison. With that national support, Harrison has been able to mount an aggressive media campaign, especially with television ads — some of them biographical, introducing himself to voters, and some of them classic attack ads going after Graham.
But he has also had the money to build a campaign organization and reach out to voters through social media, radio, direct mail and phone calls. He went from being more than 15 points down early in the year to virtually wiping out Graham's lead in a series of polls as the campaign reached its final month.
Then came the blockbuster news that really put Harrison in the spotlight — a record-shattering haul in the third quarter, bringing in $57 million and topping the previous single-quarter fundraising record in any Senate race ever, set by Beto O'Rourke in Texas during the 2018 midterms.
It's more money than Harrison — who hopes to be the first African American Democrat elected to the U.S. Senate from a Southern state — could even hope to spend in the final weeks of the campaign.
The surge in gifts to Harrison certainly got Graham's attention. He has even used appearances on Fox News to urge viewers to contribute dollars, as he did in late September on the conservative cable network: "Every liberal in the country wants to take me out." He then spelled out the address to his website, making the plea very clear.
The incumbent senator spent the past week chairing the Supreme Court confirmation hearings for nominee Amy Coney Barrett, and he even alluded to Harrison's fundraising success during those proceedings when the topic of campaign finance came up. "I don't know what's going on out there, but I can tell you there's a lot of money being raised in this campaign," he said at one point, speaking to the nominee and, seemingly, everyone at the whole hearing. "I'd like to know where the hell some of it's coming from."
Early voting in South Carolina is now underway. In the Charleston area, people have been casting ballots at the local sports coliseum.
Mike O'Connell, 54, is a police officer who describes himself as an independent who is conservative. He voted to reelect Graham, explaining, "He supports the police, I know that for sure. Supreme Court, that's a big issue, and even though I'm independent, I would prefer that Republicans hold on to the Senate."
The Supreme Court is a motivator for anti-Graham voters too. Four years ago, after the death of Justice Antonin Scalia, Graham said it was right to deny President Barack Obama's nominee, Judge Merrick Garland, a confirmation vote because it was an election year. He said then, and has repeated in recent years, that it was a principle he'd adhere to even under Trump. He broke that pledge by fully backing the nomination currently before the Senate in the final days of the 2020 election.
That broken promise is an issue for voter Brenda Toohey, a 56-year-old nurse practitioner from Mount Pleasant, S.C. She says events of the past four years have made her an even stronger Democrat. "I think that Lindsey Graham is a hypocrite for letting this vote go for the Supreme Court. It's very concerning."
The big risk for Graham is that this election alters his usual approach to winning. He has always relied on moderate voters — be they Republicans, independents or Democrats. They famously helped him survive primary challenges over the years from far more conservative Republican hopefuls.
This year, many moderates are upset with him and his closeness to the president.
Charleston attorney Andy Savage says that his politics are mostly right in the middle and that he regular splits his ballot between Democratic and Republican candidates.
But one constant had been his unwavering support for Graham, as a voter and as a contributor. "Financially, we supported him," Savage said. "You know, all the bumper stickers and all that sort of stuff in politics that you do. We were all in."
Not this year. "We were always eyeball to eyeball on the issues," he says. Then the senator "just veered off into Never Never Land."
And in the process, Savage says, Graham signaled to voters like him that the senator doesn't need them anymore.
Now, it appears, Graham can't spare much of any support.