# NOTE ON script-src
# script-src is now 'self'. All JavaScript lives in /js/*.js and every event
# handler is attached by delegation, so no inline script or inline handler
# remains. Do not reintroduce onclick= or <script> without src: both are
# blocked by this policy and will fail silently in the browser.
#
# style-src keeps 'unsafe-inline' because the pages carry a single <style>
# block each and a few inline style attributes on generated markup. Removing
# it means hashing every style block and rewriting those attributes; the
# exposure is low on a site with no user input and connect-src 'none'.



/*
  X-Content-Type-Options: nosniff
  X-Frame-Options: DENY
  Referrer-Policy: no-referrer
  Permissions-Policy: accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), xr-spatial-tracking=(), interest-cohort=()
  Cross-Origin-Opener-Policy: same-origin
  Cross-Origin-Resource-Policy: same-origin
  X-Permitted-Cross-Domain-Policies: none
  Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
  Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' data:; connect-src 'none'; form-action 'none'; base-uri 'none'; frame-ancestors 'none'; object-src 'none'; media-src 'none'; worker-src 'none'; manifest-src 'self'; upgrade-insecure-requests; block-all-mixed-content

/
  Cache-Control: public, max-age=3600, stale-while-revalidate=604800

/*.html
  Cache-Control: public, max-age=3600, stale-while-revalidate=604800

/*.png
  Cache-Control: public, max-age=31536000, immutable

/*.svg
  Cache-Control: public, max-age=31536000, immutable

/favicon.ico
  Cache-Control: public, max-age=31536000, immutable

/robots.txt
  Cache-Control: public, max-age=86400, stale-while-revalidate=604800

/sitemap.xml
  Cache-Control: public, max-age=86400, stale-while-revalidate=604800

/site.webmanifest
  Content-Type: application/manifest+json
  Cache-Control: public, max-age=604800, stale-while-revalidate=2592000

/utiom-framework-v1.1.pdf
  Cache-Control: public, max-age=2592000, immutable
  Content-Type: application/pdf

# The generic filename points at whatever the current release is, so it must
# never be immutable. The versioned filename is immutable because its contents
# are fixed for that release.
/utiom-assessment-toolkit.zip
  Cache-Control: public, max-age=3600, must-revalidate
  Content-Disposition: attachment; filename="utiom-assessment-toolkit-v1.4.zip"

/utiom-assessment-toolkit-v1.4.zip
  Cache-Control: public, max-age=31536000, immutable
  Content-Disposition: attachment; filename="utiom-assessment-toolkit-v1.4.zip"

/.well-known/security.txt
  Content-Type: text/plain; charset=utf-8
  Cache-Control: public, max-age=86400
