I actually appreciate you reaching out, and let me be the first to agree with you, adding custom styles to GiveWP in its current state is no fun at all (unless you use the Legacy form template, where it’s still quite easy).
There’s a long backstory to the reasons for that, and even better, a bright future ahead for developers who want to make fully customized form templates without all of the headaches that are currently involved.
First, an abbreviated backstory: back when the legacy template was the only template there was a common refrain among the vast majority of end users of “why does my form look so bad with my theme?”
That refrain was based on the fact that the legacy template was not defensively styled at all, and themes (or other plugins) could easily (and usually inadvertently) mess up the styles of GiveWP forms. Even one unspecific selector targeting input
could make for a difficult time making the Donation Form do the one thing it needed to do: raise money for the organization.
That led to the decision (starting in version 2.7 back in 2020) to create new templates that are more resistant to style changes. The Multi-Step form template (version 2.7) and the Classic template (version 2.18) are both displayed in an iframe, and much more difficult for themes and other plugins to inadvertently mess with. Those !important declarations you’ve run into are in there, for sure.
That has led to a dramatic decrease in folks reaching out with broken forms, and an increase in requests from folks like you who want to style things. I know it’s no consolation to hear “we chose to intentionally frustrate third party developers, in favor of end users” but that’s exactly the tradeoff we made.
The legacy template is still there, and fully supported. It will be as long as I have any say in things (I do) or until there’s a way for developers and others to more easily customize form templates. If I were custom-styling a form template today, I’d use exclusively the Legacy template, and I’d disable the built-in GiveWP styles in the settings, and start fresh.
That leads to the good news: in GiveWP 3.0, we are totally overhauling the form building experience, and really the underlying architecture that is used to create forms, separating form functionality from form display in lots of ways.
This change will make way for developers like yourself to easily and programmatically create entirely custom designs. No more “I can’t style this button” and more “Here’s a simple template API to create buttons with classes to match my theme.” You can add custom styles directly into the builder!
GiveWP version 3.0 has a public roadmap that we are excited about, and inviting folks like yourself to join in. We’ve had public previews in the form of Town Hall meetings, and soon (11 May) we’re having focus groups for testing the new Beta version. You can test out the new version here: https://givewp.com/next-generation-donation-forms/
Let me know if I can clarify at all.