/*
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin
  Permissions-Policy: camera=(), microphone=(), geolocation=()
  Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://www.google-analytics.com https://scripts.clarity.ms https://www.clarity.ms; connect-src 'self' https://api.gitlytics.dev https://api.github.com https://www.google-analytics.com https://*.google-analytics.com https://www.googletagmanager.com https://*.clarity.ms; img-src 'self' data: https://api.gitlytics.dev https://avatars.githubusercontent.com https://github.com https://raw.githubusercontent.com https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self'

# Hashed Vite bundles — safe to cache forever because filename changes on every build
/assets/*
  Cache-Control: public, max-age=31536000, immutable

# Static assets with long but not immutable caching (favicon, logo, icons, manifests)
/*.ico
  Cache-Control: public, max-age=86400
/*.png
  Cache-Control: public, max-age=86400
/*.svg
  Cache-Control: public, max-age=86400
/*.webp
  Cache-Control: public, max-age=86400
/*.woff2
  Cache-Control: public, max-age=31536000, immutable
/robots.txt
  Cache-Control: public, max-age=86400
/sitemap.xml
  Cache-Control: public, max-age=86400
/llms.txt
  Cache-Control: public, max-age=3600
/llms-full.txt
  Cache-Control: public, max-age=3600

# HTML entry points — always re-validate so new deployments are picked up immediately
/index.html
  Cache-Control: no-cache, no-store, must-revalidate
/
  Cache-Control: no-cache, no-store, must-revalidate

