The symptom

You changed the CSS, saved, refreshed. Nothing. You add a garish red border to prove the file is loading and even that doesn't appear.

Work through these in order

Hard refresh. Ctrl+Shift+R, or Cmd+Shift+R. A normal refresh reuses cached CSS and JavaScript. Better still, open devtools and tick "Disable cache" while you work.

Are you editing the file that's being served? Check the Network tab, click the CSS file, and look at the response. If the red border isn't in there, you're editing a different file from the one loading — a duplicate copy, a build output, or a different folder entirely.

Is there a build step? If your project compiles, the browser reads the output, not your source. The dev server must be running, and it must have noticed the change.

A service worker. These cache aggressively and survive normal refreshes. Devtools, Application, Service Workers, unregister.

A CDN or proxy in production. Cloudflare and friends cache your assets for everyone. Purge the cache after deploying.

Specificity. Your rule is loading and being overridden. Inspect the element and look for your rule struck through.

The fix, long-term

Cache-bust your assets. Append a version or content hash to the filename so a new deploy is a new URL:

cache-bust.txt
My CSS and JS are cached too aggressively and users see stale versions
after I deploy. Stack: <stack>.

Add cache busting so each deploy produces a new URL for changed
assets. Then set the caching headers I should be sending: long cache
for hashed assets, no cache for HTML.

Explain what a returning user experiences on the deploy after this.

If a hard refresh fixes it for you, your users are seeing the stale version too, and they won't think to hard refresh. That's a real bug, not a local annoyance.