Raise public marketing page Lighthouse scores (Performance / Accessibility / Best Practices / SEO) on /, /about/, and /contact/.
Baseline (preview, mobile)
Page
Perf
A11y
BP
SEO
/
70
80
82
100
/about/
71
81
82
100
/contact/
74
90
82
100
Changes
Accessibility: contrast overrides, nav aria-labels, footer/contact heading order (no skipped levels).
Best practices: replace theme unload listeners with pagehide (also helps bfcache); WHITENOISE_MAX_AGE for hashed static.
Performance: WebP heroes/headshot/breadcrumbs + preload; Google Fonts display=swap + fewer weights; async icon fonts.css; bundled/minified vendor CSS; lazy second swiper slide; remove above-fold WOW delay on home hero.
SEO: already 100; kept structured data / meta.
Local verify (dev server — no gzip, so Perf is not representative)
A11y / Best Practices / SEO all 100 on the three pages after fixes.
Perf will look better on beta/preview (WhiteNoise compression + CDN/proxy) than on runserver. Remaining Perf headroom is mostly the theme’s large core.min.js / unused CSS and infra HTTP/2.
Test plan
Deploy/preview branch and re-run Lighthouse on /, /about/, /contact/
Spot-check home hero, about headshot, contact form + mobile nav toggles
Confirm icons still appear after async fonts.css load
Confirm swiper slide 2 background appears when navigating slides
## Summary
Closes #7.
Raise public marketing page Lighthouse scores (Performance / Accessibility / Best Practices / SEO) on `/`, `/about/`, and `/contact/`.
### Baseline (preview, mobile)
| Page | Perf | A11y | BP | SEO |
|------|------|------|----|-----|
| `/` | 70 | 80 | 82 | 100 |
| `/about/` | 71 | 81 | 82 | 100 |
| `/contact/` | 74 | 90 | 82 | 100 |
### Changes
- **Accessibility:** contrast overrides, nav `aria-label`s, footer/contact heading order (no skipped levels).
- **Best practices:** replace theme `unload` listeners with `pagehide` (also helps bfcache); `WHITENOISE_MAX_AGE` for hashed static.
- **Performance:** WebP heroes/headshot/breadcrumbs + preload; Google Fonts `display=swap` + fewer weights; async icon `fonts.css`; bundled/minified vendor CSS; lazy second swiper slide; remove above-fold WOW delay on home hero.
- **SEO:** already 100; kept structured data / meta.
### Local verify (dev server — no gzip, so Perf is not representative)
A11y / Best Practices / SEO all **100** on the three pages after fixes.
Perf will look better on beta/preview (WhiteNoise compression + CDN/proxy) than on `runserver`. Remaining Perf headroom is mostly the theme’s large `core.min.js` / unused CSS and infra HTTP/2.
## Test plan
- [ ] Deploy/preview branch and re-run Lighthouse on `/`, `/about/`, `/contact/`
- [ ] Spot-check home hero, about headshot, contact form + mobile nav toggles
- [ ] Confirm icons still appear after async `fonts.css` load
- [ ] Confirm swiper slide 2 background appears when navigating slides
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Closes #7.
Raise public marketing page Lighthouse scores (Performance / Accessibility / Best Practices / SEO) on
/,/about/, and/contact/.Baseline (preview, mobile)
//about//contact/Changes
aria-labels, footer/contact heading order (no skipped levels).unloadlisteners withpagehide(also helps bfcache);WHITENOISE_MAX_AGEfor hashed static.display=swap+ fewer weights; async iconfonts.css; bundled/minified vendor CSS; lazy second swiper slide; remove above-fold WOW delay on home hero.Local verify (dev server — no gzip, so Perf is not representative)
A11y / Best Practices / SEO all 100 on the three pages after fixes.
Perf will look better on beta/preview (WhiteNoise compression + CDN/proxy) than on
runserver. Remaining Perf headroom is mostly the theme’s largecore.min.js/ unused CSS and infra HTTP/2.Test plan
/,/about/,/contact/fonts.cssload