What it looks like
The buttons are still there, and they still work if you click them. You just can't read them. Back, Save and Filters labels fade into their own backgrounds. On a contact record, the Owner or Followers text disappears.
It shows up after a change to the agency's custom code, so start there. Both boxes live under Settings > Company > Whitelabel: Custom CSS and Custom JavaScript.
Why one rule breaks two kinds of button
In the HighLevel screens we've worked in, the class hr-button--default-type sat on two different secondary buttons: ones drawn on a light surface, and transparent ones. Give that class a single fill and text color and whichever kind the colors weren't picked for loses its label.
Two more things we've seen make it worse. A button's text can sit in its own span, hr-button__content, with its own color, so a color set on the button may not reach the words. And btn-primary, the class you'd expect only on main action buttons, also turned up on circular icon buttons, so a rule meant for filled primary buttons restyled those icons too.
Treat these class names as a June 2026 snapshot of HighLevel's markup, not a promise. Inspect your own screens before you reuse any selector from this page.
Why changing --primary doesn't settle it
Setting the --primary color variable looks like the clean answer. In our builds it didn't recolor every primary class, because some of HighLevel's compiled Tailwind classes carry their own color. Some buttons switch to the new color and some keep the old one.
So the variable is a starting point, not the fix. Any class it misses has to be named in its own rule, and each of those rules is one more place a label can go missing.
Fix it one rule at a time
Work on one screen and one button at a time. The goal is fewer, narrower rules, not more of them.
- Copy everything in Custom CSS and Custom JavaScript into a dated file before you change a character. If something goes wrong, you can paste the old code back.
- Open a screen with a missing label and inspect that button. Note the class on the button and the class on the text inside it.
- Remove or narrow any rule that targets every button, or every secondary button, at once.
- Give a filled color only to genuine primary buttons, and exclude the circular icon controls that share the primary class.
- Leave secondary button backgrounds as HighLevel draws them. Where a label is still faint, set its color on the inner text element, because a color on the parent may not reach it.
- In the browser's inspector, read the computed text color and background color for that button. Trust those values over how the screen looks to you.
- Save, reload, and move to the next screen.
Recolor true primary buttons. Leave every secondary button's background alone.
Screens to check before you call it fixed
A button that looks right on the dashboard can still be unreadable two clicks away. These are the screens we check for contrast every time.
- The invoices list
- The invoice editor
- A contact record, with the Owner and Followers fields in view
- Any screen with Back, Save or Filters buttons
- Dark mode, if anyone on the account uses it. Dark-mode styling can clash with rules written for the light theme, so check it on its own
If Custom Navigation is switched on
HighLevel's Custom Navigation lives under Settings > Labs as New Design Experience Starting with Navigation. Turning it on disables legacy agency CSS and JavaScript by default, without deleting the code. If buttons changed when the new navigation went on, compare the screen with legacy custom code off before you rewrite anything, and use the Preview there to compare.
Styling that Marketplace apps inject sits outside that toggle. If a label is still invisible with your own code switched off, look at the apps installed on the account.
HighLevel describes custom CSS and JavaScript as unsupported and warns that updates to its core interface may break existing code. Plan on rechecking the screens above after HighLevel ships interface changes.
Rather have it set up for you?
We'll rewrite your agency CSS so every button label stays readable and check it screen by screen, beginning with a 30-minute 1:1 with Rob.
