Summary
The business attribution tagline renders as a direct child of <body>, outside the <footer> element, on every page at both desktop and mobile widths. It inherits no footer styling as a result.
Evidence (rendered DOM, live production)
DOM ancestry of the text node is SPAN -> BODY.list. el.closest('footer') returns null.
Computed styles at 1440x900 and 375x812:
|
Real footer |
Orphaned tagline |
| font-size |
12px |
18px |
| color |
rgb(108,108,108) |
rgb(30,30,30) |
| text-align |
center |
start |
| left / width |
336 / 768px (desktop) |
0 / 270px |
Confirmed present on /, /about/, /posts/, /portfolio/, /contact/ at both viewports.
Root cause
themes/PaperMod/layouts/partials/footer.html closes </footer> at line 22, then calls {{- partial "extend_footer.html" . }} at line 33. The extend_footer hook is positioned for scripts and end-of-body content, so any visible markup placed in layouts/partials/extend_footer.html lands outside the footer by construction.
This is a hook-contract mismatch rather than an error in the override: the partial's name suggests it extends the footer, while its call site places it after the footer.
Options considered (none applied)
- Wrap the span in
<div class="footer"> to borrow PaperMod's existing footer styling. Minimal change, confined to our own override file, but leaves the text semantically outside <footer>.
- Override
layouts/partials/footer.html to move the hook inside the element. Semantically correct, at the cost of owning a theme file across upgrades.
Either fix should be verified against the rendered DOM. Per repo CLAUDE.md, Hugo minifies to unquoted attributes, so a grep over built HTML is not a valid check here.
Verification method
Playwright against production, reading computed styles and DOM ancestry. Detectors were validated against a known-bad fixture first to confirm they can produce positives.
Summary
The business attribution tagline renders as a direct child of
<body>, outside the<footer>element, on every page at both desktop and mobile widths. It inherits no footer styling as a result.Evidence (rendered DOM, live production)
DOM ancestry of the text node is
SPAN -> BODY.list.el.closest('footer')returns null.Computed styles at 1440x900 and 375x812:
rgb(108,108,108)rgb(30,30,30)Confirmed present on
/,/about/,/posts/,/portfolio/,/contact/at both viewports.Root cause
themes/PaperMod/layouts/partials/footer.htmlcloses</footer>at line 22, then calls{{- partial "extend_footer.html" . }}at line 33. Theextend_footerhook is positioned for scripts and end-of-body content, so any visible markup placed inlayouts/partials/extend_footer.htmllands outside the footer by construction.This is a hook-contract mismatch rather than an error in the override: the partial's name suggests it extends the footer, while its call site places it after the footer.
Options considered (none applied)
<div class="footer">to borrow PaperMod's existing footer styling. Minimal change, confined to our own override file, but leaves the text semantically outside<footer>.layouts/partials/footer.htmlto move the hook inside the element. Semantically correct, at the cost of owning a theme file across upgrades.Either fix should be verified against the rendered DOM. Per repo CLAUDE.md, Hugo minifies to unquoted attributes, so a grep over built HTML is not a valid check here.
Verification method
Playwright against production, reading computed styles and DOM ancestry. Detectors were validated against a known-bad fixture first to confirm they can produce positives.