# The built Vue SPA is served from this directory (baked into the Docker image);
# the Slim front controller handles the API. Anything that isn't a real file is
# a client-side route and falls back to index.html.
RewriteEngine On

# API: hand off to the front controller.
RewriteRule ^api(/|$) index.php [QSA,L]

# Real files (hashed assets, favicon, manifest, service worker): serve directly.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# SPA fallback when a build is present; otherwise the API front controller
# (e.g. `composer serve` with no frontend built).
RewriteCond %{DOCUMENT_ROOT}/index.html -f
RewriteRule ^ index.html [L]
RewriteRule ^ index.php [L]
