# Normalise line endings: LF in the repo, native on checkout.
* text=auto

# Source
*.cs        text diff=csharp
*.csproj    text
*.slnx      text
*.props     text
*.targets   text
*.json      text
*.axaml     text
*.xaml      text
*.ts        text
*.js        text
*.css       text
*.html      text
*.md        text
*.yml       text
*.yaml      text
*.sql       text

# Files that must keep LF regardless of platform — shell scripts run in Linux
# containers, and Dockerfiles are read by a Linux daemon.
*.sh          text eol=lf
Dockerfile    text eol=lf
*.Dockerfile  text eol=lf
Caddyfile     text eol=lf

# Windows-only scripts keep CRLF
*.cmd text eol=crlf
*.bat text eol=crlf
*.ps1 text eol=crlf

# Binary — never diff or convert
*.png  binary
*.jpg  binary
*.ico  binary
*.icns binary
*.gif  binary
*.pdf  binary
*.zip  binary
*.gz   binary
*.dll  binary
*.so   binary
*.dylib binary
*.pfx  binary
*.snk  binary

# Test fixtures are byte-exact contracts — never touch their line endings.
tests/fixtures/**  -text
