You add a rule to the child stylesheet and the screen does not change. The first instinct is !important, and it usually works instantly. The problem is that you then reach for it again, and again. Eventually the whole stylesheet is covered in it, and at that point you have no priority left to adjust.
Find out why you lost first
Select the element in browser developer tools and you can see which rule won and which file and line it came from. The losing rules are struck through. Look at that panel before guessing — it narrows the cause to one of three things.
The first line is by far the most common. If your child stylesheet is printed before the parent’s, an identical rule loses to the parent every time. The dependency array from part two fixes this: name the parent handle and your styles always come afterwards.
Some themes register their stylesheet very late. In that case give your own registration a higher priority number than the parent’s. But priority alone is not the guarantee — the dependency declaration is — so use both together.
Raise specificity by the smallest amount
If the order is right and you still lose, the other selector is more specific. What you need then is the minimum that wins, not the maximum available.
A long selector wins, but it hands the same problem to the next person, who now needs a longer one. The stylesheet gets heavier with every round. Stopping at one extra class is usually the right ceiling.
There is a tool that works in the opposite direction too. Wrapping a selector in :where() makes it count as zero specificity, so a very simple rule can override it later. Using it for the base layer you author means the next person never has to fight you.
When !important is genuinely right
There is a legitimate case: a plugin writes an inline style straight onto the element, where ordinary CSS cannot reach. Then !important is the only instrument available, so use it — but leave a one-line comment above it explaining why. An !important with a reason can be removed later; one without a reason is untouchable forever.
Articles on designing style layers live in the Themes & plugins archive, and untangling a stylesheet already buried in !important falls within the refactoring scope of our optimization program.
Next part
By now your customisations are tidy inside the child theme. Part six covers taking theme updates safely from that position — the list of what can break, known before you press the button.