fix(security): SSRF + auth bypass + XSS + parser limits (#612)
Server-side (critical/high):
- ICS proxy: block Tailscale CGNAT 100.64.0.0/10, full 127.0.0.0/8,
IPv4-mapped ::ffff:, add redirect:'manual' to block redirect SSRF
- ICS proxy: cap response body at 5MB, cache at 100 entries
- DELETE /api/push/subscribe: require auth, scope to authenticated user
- POST /api/push/schedule: reject arrays >500 reminders
Client-side (medium/low):
- Mermaid: sanitize rendered SVG with DOMPurify (defense-in-depth)
- Mermaid: persist rendered SVG as data-rendered-svg for HTML/PDF export
- SVG import: preserve fill="none"/stroke="none"; add points to line shapes
- SVG import: depth limit 100, element cap 5000
- PPTX import: slide cap 200, group recursion depth 20
- PDF import: page cap 500
All 8381/8381 tests passing.