Contract Assets - Summary of Changes in Contract Assets (Details) - USD ($) $ in Thousands |
3 Months Ended | 6 Months Ended | ||
|---|---|---|---|---|
Jun. 30, 2026 |
Jun. 30, 2025 |
Jun. 30, 2026 |
Jun. 30, 2025 |
|
| Change in Contract with Customer, Asset and Liability [Abstract] | ||||
| Balance at beginning of the period | $ 7,315 | $ 5,489 | $ 9,790 | $ 8,486 |
| Revenue earned on new and existing contracts | 10,353 | 18,218 | 26,620 | 31,454 |
| Satisfaction of existing contracts | (11,307) | (17,471) | (30,012) | (33,794) |
| Other, primarily changes in foreign currency exchange rates | 251 | (37) | 341 | |
| Balance at end of the period | $ 6,361 | $ 6,487 | $ 6,361 | $ 6,487 |