The worked example is what makes the inverse formula stick: starting from an 87.5% running grade with a final worth 25%, needing 97.5% for an A-minus shows immediately how little room a heavy final leaves. I also liked the Mathematically Impossible badge idea. A required score over 100% is not a bug in the calculator, it is the answer, and surfacing it as a feasibility status instead of a plain number is the honest thing to do. The syllabus normalization section answered a question I had not thought to ask: dividing by the percentage of the syllabus actually graded so far is the only way the running grade means anything mid-semester. Keeping it all client-side in vanilla JavaScript fits that too. A grade is personal data, and not sending it anywhere is a real feature, not just an implementation detail.
Urban Mixo