Writing
Our own site looked cheap. The fix was measuring it
Three numbers explained what was wrong, and none of them were about taste.

Somebody sent me a site they liked and asked why ours did not feel like that. It is the hardest kind of feedback to act on, because "premium" is not a setting. So instead of redesigning from the feeling, I opened both sites and measured them.
Three numbers explained it. None of them were about taste, and all three are checkable in about a minute on any site you have open right now.
One: the headline was three times too big
Their headline was 38px. Ours was 111px.
That is the whole gap in one measurement. I had assumed a bigger headline read as more confident. It does not. It reads as louder, and the problem with loud is that everything near it has to be loud back, or it looks like a mistake. A 111px headline forces a 66px section head, which forces 18px body copy, which forces generous everything — and a page where nothing is quiet has nowhere for the eye to rest.
Their headline is also 38px on a phone. Same number, no responsive scaling at all. I found that genuinely surprising, and then obvious: if the size is right, it is right at both ends.
Two: the greys were not grey
This is the one worth taking away, because it is invisible until you measure it and then you cannot unsee it.
Every surface colour on our site had a hue. The background sat at hue 168, 13% saturation — a green-black. The dividers, the muted text, the card surfaces: all between hue 138 and 168, all 8 to 17% saturated.
And the text colour — the one that sets every headline and most of the body — was hue 69 at 26% saturation. A yellow-white.
A faintly yellow text on a faintly green page is a warm film over the entire site. You do not see it as colour. You see it as haze, and haze reads as cheap no matter how good the layout underneath is. It is the same effect as a slightly dirty screen.
The reference site had near-zero chroma everywhere, and exactly one colour doing anything. That is the actual mechanism behind "clean".
Three: the paragraphs were twice as long
Theirs ran 8 to 12 words. Ours ran up to 27.
Less is more is advice everyone has heard and almost nobody has a number for. Twelve words is the number. Our hero said the same thing in 27 words that it now says in 14, and the second sentence turned out to be doing a job the section immediately below it already did.
What I actually changed
Rebuilt every grey at its existing lightness. This is the part that makes the change safe. I kept the L of each colour exactly and replaced the hue with a faint cool cast, 2 to 5% saturation. Because lightness never moved, no contrast ratio moved either — the numbers that passed before still pass, and I could verify that across every page rather than hoping.
Compressed the type scale instead of shrinking it. The top came down hard, the bottom barely moved. A page that is merely smaller everywhere is flat; what you want is a shorter distance between the largest thing and the smallest.
Left exactly one colour saturated. The accent is now the only thing on the page with real chroma, which is what makes it register as a signal rather than as decoration.
Two things that went wrong on the way
Worth writing down because both cost me time.
Four separate places were overriding the type scale. I rebuilt the scale, rebuilt, and almost nothing moved. One stylesheet had redefined the two largest steps with their own values; three components had their own hard-coded sizes. The scale had been a suggestion for months without anyone noticing, because nobody had changed it.
The CSS compiler silently dropped a property. I wrote backdrop-filter
followed by -webkit-backdrop-filter, which is the habit everyone has. The
compiler collapsed the pair and emitted only the prefixed one, so the glass
effect never reached the browser — while the background colour from the same
rule arrived fine, which is what made it hard to spot. Write the standard
property and let the build add prefixes.
What I would tell someone whose site feels cheap
Measure the reference, do not look at it. Open dev tools on the site you admire and read the computed font size of its headline. You will usually find the gap is a number, not a sensibility.
Check the hue of your greys. Convert your background and your text colour to HSL. If either has more than about 6% saturation, you have a tint on the whole page, and it is almost certainly not deliberate.
Change lightness last. If you keep L fixed while you fix hue, you cannot break your contrast ratios, and you can prove it instead of hoping.
Count the words in your opening paragraph. If it is over about fifteen, the second sentence is usually repeating something the page says again later.
None of this is design talent. It is four measurements, and the site was better by the end of an afternoon.