It's still zero-sum - I'll illustrate with an example:
Imagine you and your friends collect and trade rocks you find on the beach. The more rocks you pick up and put in your personal baskets, the scarcer they become (just like mining bitcoins), so the work of finding more rocks becomes harder. This makes all the rocks you've already found "worth" more. Let's say for this thought experiment that there are 1000 rocks on this beach total.
The value of the rocks is only realized when someone decides they want to pay you dollars for your rocks in your pile instead of going out to pick up rocks themselves. This transaction (say $1 per rock for 100 rocks) now suddenly makes everyone's pile of rocks valuable, because there's someone out there who was willing to pay $1 per rock. If the next person pays $2 per rock for 100 rocks, then everyone's rock piles double in value. This means that the "market cap" for rocks on your beach is $2000 ($2 x 1000 rocks), but that doesn't mean that there is suddenly $2000 of USD in you and your friends' pockets. There's only the $300 that the two buyers paid into the system, but it wasn't generated by collecting rocks.
Let's say that the last 100 rocks are super hard to find - they might be buried deep in the beach and not worth digging with your hands. After a few hours the supply of rocks has essentially capped. The only way to get more rocks for yourself is to trade dollars for rocks. You open your wallet and buy 100 rocks from your friend for $500 dollars.
Now everyone knows that 1 rock = $5. Market cap = $5000.
Someone else wants to buy but it's hard to get anyone to sell. They spend $100 to buy just 10 rocks. Now 1 rock = $10, Market cap = $10,000.
Now that each rock is worth $10, people get shovels and try to find more rocks buried. Finally they've all been found. Let's say that 100 people total are now holding at least 1 rock.
Let's freeze it here and look at who has won and who has lost. Assume that finding the rocks didn't cost anything. From the perspective of everyone who simply picked up rocks, they hold rocks worth $10 each, but haven't paid anything to acquire them. Great right? Well not necessarily - nobody actually paid them anything yet, so they have realized exactly $0 in gains.
Let's look at the four transactions that occurred which gave the rocks value. The first saw $100 go from person A to person B, for a net of $0. The second saw $200 from one person to another, for a net of $0. Third, etc - fourth and final, also net of $0.
Within this example, trading dollars for rocks is clearly a zero-sum game. The only reason that crypto "looks" different is that it's a much larger beach with millions of rocks and millions of people trying to trade them and pick them up. But it's the same thing.