:80 {
	root * /srv
	encode gzip zstd

	# The service worker and entry HTML must never be cached, so PWA updates land.
	@nocache path /sw.js / /index.html /manifest.webmanifest
	header @nocache Cache-Control "no-cache"

	# Hashed build assets and icons are content-addressed → cache forever.
	@immutable path /assets/* /icons/*
	header @immutable Cache-Control "public, max-age=31536000, immutable"

	try_files {path} /index.html
	file_server
}
