""" Static-analysis audits for the web UI, as tests so CI enforces them. 1. Utility class audits: templates and JS are written in Tailwind class names, and a class no stylesheet defines silently does nothing. `.hidden` was missing for years, which broke every JS show/hide toggle, and a hand-written selector starting `.2xl` (an unescaped leading digit) was invalid CSS, so no 2xl: class ever applied. The utilities are now generated (scripts/build_css.py writes static/v3/tailwind.css), and these tests check that the committed output plus app.css cover every class the markup uses. That catches a class assembled at runtime that needs a safelist entry in web_interface/tailwind/tailwind.config.js. (A template edited without rebuilding is caught by `build_css.py --check` in CI.) 2. Asset reference audit: every url_for('static', filename=...) in the templates must point to a file that exists, so a renamed/moved asset can't ship as a broken