How do I balance fixing existing accessibility debt with preventing new debt from piling up?
My process involves two steps.
Stop the bleeding
What you don't want is to bail water out of a leaky boat. Set up basic accessibility checks in your development process so new issues don't keep piling up.
This means having some basic continuous integration guardrails that prevent leaky code. It also means training your team on common problems and making accessibility part of your code reviews.
Chip away at the mountain
Next, take a look at your backlog. Chances are there's a mountain of accessibility issues there. Don't try to do it all at once. Pick your battles strategically.
Focus on critical issues first. These are the things that block people. Fixing them will give you the biggest bang for your buck. You can then move on to the rest.
Just be sure to create a rhythm you can sustain for the long term. I'd not advise you use more than 20% of your sprint time to fix these issues. It's the only way I've seen to chip away at the debt without grinding development to a halt.
And when leadership asks why you're wasting 20% of your time on accessibility, breathe, count to 10 and frame it as technical debt that needs paying down in order to reduce legal risk.
Overall, the key is consistency.
Make small, regular improvements. These beat massive one-off efforts that burn everyone out and never happen again.