pub fn cap_details(details: &mut Vec<String>, max_tokens: usize)
Cap detail points by token budget instead of hard count Keeps high-priority details until budget exhausted