cat > .gitignore << 'EOF'
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
*.egg-info/
dist/
build/

# uv
.venv/
uv.lock

# Environment
.env
*.env

# IDE
.vscode/
.idea/
*.swp
*.swo

# Output
outputs/*.png
!outputs/.gitkeep

# Jupyter
.ipynb_checkpoints/
EOF
