Contract Assets and Liabilities - Narrative (Details) - USD ($) $ in Thousands |
3 Months Ended | 6 Months Ended | |||
|---|---|---|---|---|---|
Jun. 30, 2026 |
Jun. 30, 2025 |
Jun. 30, 2026 |
Jun. 30, 2025 |
Dec. 31, 2025 |
|
| Product Information [Line Items] | |||||
| Claim recovery estimates | $ 19,600 | $ 19,600 | $ 19,400 | ||
| Contract retention | 168,045 | 168,045 | $ 163,800 | ||
| Revenue recognized | 105,900 | $ 105,100 | 328,800 | $ 312,900 | |
| Performance Obligations | |||||
| Product Information [Line Items] | |||||
| Revenue adjustment | $ 92,400 | $ 68,800 | $ 148,500 | $ 118,300 | |