HLAI Experts

Guide · White label

HighLevel agency custom CSS made buttons invisible: what broke and how to fix it

When agency Custom CSS in GoHighLevel (GHL) paints buttons with one broad rule, labels such as Back, Save and Filters can end up the same color as the button behind them. In our builds the cause was one class that HighLevel puts on two different kinds of secondary button. Recolor only true primary buttons, aim at the label inside the button, and recheck the screens where it broke.

Rob EasonPublished

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.

  1. 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.
  2. 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.
  3. Remove or narrow any rule that targets every button, or every secondary button, at once.
  4. Give a filled color only to genuine primary buttons, and exclude the circular icon controls that share the primary class.
  5. 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.
  6. 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.
  7. 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.

Book a 1:1 with Rob

Questions

Invisible button questions from agency owners

Why did my HighLevel button labels go invisible after I added custom CSS?
In our builds, the cause was a broad rule that colored a class HighLevel shares between buttons on light surfaces and transparent buttons. One color pair can't suit both, so one kind loses its label. Narrow the rule to true primary buttons and leave secondary backgrounds alone.
Is changing the --primary variable enough to rebrand HighLevel's buttons?
In our builds it wasn't. Some compiled Tailwind classes in HighLevel keep their own color, so they ignore the variable. You'll need targeted rules for the classes it misses, written one at a time and checked on screen.
Will HighLevel updates break my agency custom CSS?
They can. HighLevel calls custom CSS and JavaScript unsupported and says changes to its core interface may break existing code. Keep your rules narrow and recheck the invoices, invoice editor and contact record screens after updates.
Does turning on Custom Navigation delete my custom CSS?
No. HighLevel says Custom Navigation disables legacy agency CSS and JavaScript by default without deleting it. The code stays saved under Company settings while the new navigation ignores it.
My own code is off and a label is still invisible. What else can style HighLevel?
Marketplace apps can inject their own styling, and HighLevel's legacy-code toggle doesn't remove it. Look at the apps installed on the account before you add another rule of your own.
Rob Eason

Who you talk to

Rob Eason

Rob runs HLAI Experts and takes the 1:1 calls himself.

He is a HighLevel Certified Admin with the second-most reviews in HighLevel's Certified Admin Directory worldwide, all of them 5 out of 5.

He won HighLevel's Top New Subaccounts via AI Employee award in its 2025 Summer of AI Awards and taught HighLevel's official masterclass on its AI Employee.

Before HighLevel, he co-owned a 60-employee financial services firm and sold his share.

On the call he looks at your account, not a script.

5/5 across 83 reviews in HighLevel's Certified Admin Directory