refactor: paragraph-based segmentation, per-card compilation, auto-split on new paragraph
- Segmentation is now purely blank-line based (no typst AST spans), eliminating
the data-loss bug where unclosed brackets bloated spans to EOF
- Each card fragment compiled independently by typst — a broken card cannot
affect rendering of adjacent cards
- Removed active_card_start/end, active_seg_key, n_segs_sig signals and the
two-effect complexity they required; splice bounds computed inline from
make_segments (fast prefix scan, no typst calls)
- Typing \n\n in a textarea auto-splits into a new segment and moves focus there
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>