/* X-Frame-Options: DENY X-Content-Type-Options: nosniff Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: geolocation=(), microphone=(), camera=(), interest-cohort=() Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; connect-src 'self' https:; frame-ancestors 'none'; base-uri 'self'; form-action 'self' # index.html must always be revalidated so browsers pick up new bundles. /index.html Cache-Control: no-cache # Hashed assets from Vite never change — cache them aggressively. /assets/* Cache-Control: public, max-age=31536000, immutable # Runtime config — don't cache. /config.json Cache-Control: no-cache # OAuth client metadata is fetched cross-origin by atproto auth servers. /client-metadata.json Access-Control-Allow-Origin: * Cache-Control: public, max-age=300