Direct answer: 21 of the 25 sites carry 2,352 !important declarations (nine sites with 100 or more) and 24 carry 529 inline style attributes; three sites load 58 http:// subresources (57 images and one script), plus 182 http:// anchor links on 17 sites — navigation links, not mixed content. External CSS, form actions and CSS url() references contain no http:// at all. E04 concentrates all three (276 !important, 78 inline styles, 32 http subresources).
This study reads HTML and CSS text only; it does not load subresources or render. !important and inline styles are maintainability signals, while mixed content is a security signal, so they are reported separately.
Method: HTML, inline styles and the first three external CSS files
On 2026-11-09 between 11:42 and 11:43 we requested the HTML of the same 25 cached-200 homepages, read inline <style> blocks and the first three external stylesheets, and counted !important, style= attributes, http:// subresources by tag (img/script/iframe/embed/source/video/audio/track and srcset), plus http:// links, form actions and CSS url(). The referenced addresses are not loaded.
| Measure | Rule | Boundary |
|---|---|---|
| !important | !important in CSS, spaces allowed | Necessity not judged |
| Inline style | style="…" on a tag | Runtime writes not counted |
| http subresource | src="http://" on img/script/iframe and srcset | Passive or active mixed content on an HTTPS page |
| http link | <a href="http://"> | Navigation, not mixed content |
| CSS / form http | External CSS, form action, url(http://) | All zero this round |
Result: template debt clusters on a few sites
| Measure | Count | Sites |
|---|---|---|
| !important | 2,352 | 21 |
| Sites with 100 or more | — | 9 |
| Inline style attributes | 529 | 24 |
| http:// subresources | 58 | 3 |
| http:// anchor links | 182 | 17 |
| http:// external CSS / forms / CSS url() | 0 / 0 / 0 | 0 |
| Site | !important | Inline styles | http subresources |
|---|---|---|---|
| E04 | 276 | 78 | 32 |
| E22 | 274 | 14 | 0 |
| E17 | 228 | 32 | 0 |
| E24 | 220 | 27 | 0 |
| E06 | 219 | 4 | 0 |
| E11 | 62 | 71 | 0 |
| E13 | 0 | 49 | 7 |
The three problems have different sources: E04 tops all three (276 / 78 / 32), while E22, E17, E24 and E06 have more than 200 !important declarations but almost no http subresources; E13 has no !important at all yet 49 inline styles and seven http images, so it customises through inline styles rather than specificity.
What this means for acceptance
- Treat !important as debt. 2,352 across 21 sites, nine above 100; start with theme colour, font and spacing overrides.
- Every inline style needs a reason. 529, with 78 on E04, 71 on E11 and 49 on E13; reusable rules belong in CSS.
- Handle mixed content by type. Move the 57 http images to https or scheme-relative URLs; the single http script must change or the browser blocks it outright.
- List http navigation links separately. The 182 do not break the page but trigger security prompts and an extra hop.
- Read inline styles together with CSP. The more inline style there is, the harder a nonce/hash policy becomes; see the website development service.
Limits
- First three external CSS files only: the !important total is a lower bound, not a whole-site count.
- No JavaScript: runtime inline styles and dynamically inserted resources are not counted.
- Subresources not loaded: whether an http URL works or is auto-upgraded is not tested.
- Boundaries: E17 resolved only one external CSS file, E18/E20 returned none, and E25 keeps all CSS inline.
- 25-site pilot: the same equipment-company sample; no industry claim.
Data and reproduction
Anonymised data: equipment-homepage-template-hygiene-2026.csv (25 rows × 12 columns: CSS files and size, !important, inline styles, http subresources/links/forms/CSS url and time). The repository keeps docs/research/2026-11-homepage-template-hygiene.csv.
Parser: scripts/template_hygiene_probe.py; unit tests: scripts/test_content_template_hygiene_probe.py (10, offline). Run:
python -m unittest scripts.test_content_template_hygiene_probe
Related: the homepage CSP pilot, the homepage resource inventory pilot, the homepage HTML weight composition pilot, and the homepage id-uniqueness audit (48 duplicates on ten sites).
Sources and definitions
- Sample: the 25 study-4 homepages cached as 200.
- Fetch: 2026-11-09 11:42–11:43 Asia/Shanghai, serial, 0.5 s apart, 15-second timeout.
- Styles: inline
<style>plus the first three external stylesheets. - Mixed content: http subresources by tag; navigation links, forms and external CSS are reported separately.
Frequently asked questions
Is !important always a code smell?
Utility classes occasionally need it; but 2,352 across 21 sites, with nine above 100, means overrides depend on it and theming or component reuse gets stuck.
Why are inline styles risky?
They cannot be cached across pages and are hard to override consistently; under a nonce/hash CSP they are blocked. This round found 529 on 24 sites.
How serious are the 58 http subresources?
Fifty-seven images may be auto-upgraded or blocked by the browser, while one script is active mixed content and is blocked outright, so the related feature can break.
Are http:// anchor links mixed content?
No. Navigation links do not load resources automatically; the 182 on 17 sites are listed separately and only affect experience and security prompts.
Why only the first three CSS files?
To keep request volume and cross-site comparability in check; the full inventory is in the homepage resource pilot, and the result is not a whole-site verdict.
Can the data be re-checked?
Yes. The public CSV has 25 rows by 12 columns, and scripts/template_hygiene_probe.py has 10 offline unit tests.