v3.25.1
Revenue from Contracts with Customers - Schedule of Components of Contract Asset and Liability Balances (Details) - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2025
Dec. 31, 2024
Contract assets    
Costs and estimated earnings in excess of billings on uncompleted contracts $ 26,810 $ 27,304
Retainage receivable 18,208 20,245
Total contract assets 45,018 47,549
Change in costs and estimated earnings in excess of billings on uncompleted contracts (494)  
Change in retainage receivable (2,037)  
Change in total contract assets (2,531)  
Contract liabilities    
Billings in excess of costs and estimated earnings on uncompleted contracts 40,165 44,417
Provisions for losses 8 102
Total contract liabilities 40,173 $ 44,519
Change in billings in excess of costs and estimated earnings on uncompleted contracts (4,252)  
Change in provisions for losses (94)  
Change in total contract liabilities $ (4,346)