This report highlights Core Web Vitals risks and ships safe P0 fixes with GitHub Pages–compatible patches.
fetchpriority: high).<img> path; keep stable hero container.defered._includes/util/picture.html for WebP-first with lazy/decoding.overlay_image), which the browser may not prioritize.header.fetchpriority: high, we now emit a <link rel="preload" as="image"> in head to prioritize the hero (already present in _includes/head/custom.html). Index page sets fetchpriority: high.<img> lacked decoding hint.decoding="async" to the hero <img> path.Expected impact: 200–600 ms LCP improvement on slower mobile by ensuring hero is prioritized and decoded asynchronously.
width/height to opt in per usage; hero container already sized by theme. No regressions observed.Expected impact: CLS remains < 0.1; improved stability for any future images using the include with dimensions.
prefers-reduced-motion. Services dropdown script marked defer; inline logic is lightweight.Expected impact: Smoother interactions and reduced main-thread contention on scroll.
<img> in content with _includes/util/picture.html, adding explicit width/height where known.aspect-ratio, preventing CLS and avoiding initial network cost. JS also supports data-load="visible" if you prefer IO-based lazy load._includes/util/picture.html for responsive <picture> output with WebP source and fallback. Default loading="lazy"/decoding="async". Supply width/height to prevent CLS when known.#!/usr/bin/env bash
set -euo pipefail
shopt -s globstar nullglob
# Requires: ImageMagick (magick) or cwebp
for img in assets/images/**/*.{jpg,jpeg,png,JPG,JPEG,PNG}; do
[ -f "$img" ] || continue
out="${img%.*}.webp"
if command -v magick >/dev/null 2>&1; then
magick "$img" -quality 82 -strip "$out"
elif command -v cwebp >/dev/null 2>&1; then
cwebp -q 82 "$img" -o "$out"
else
echo "Install ImageMagick or cwebp to convert images" >&2; exit 1
fi
echo "Converted: $img -> $out"
done
_config.yml already has sass: { style: compressed } and correct url/baseurl. No changes needed beyond SCSS conversion.relative_url.lighthouse/budgets.json over time.