v3.26.3
Revenue from Contracts with Customers - Schedule of Components of Contract Asset and Liability Balances (Details) - USD ($)
$ in Thousands
9 Months Ended
Sep. 30, 2026
Dec. 31, 2025
Contract assets    
Costs and estimated earnings in excess of billings on uncompleted contracts $ 38,512 $ 29,254
Retainage receivable, net 25,263 16,213
Total contract assets, net 63,775 45,467
Change in costs and estimated earnings in excess of billings on uncompleted contracts 9,258  
Change in retainage receivable, net 9,050  
Change in total contract assets, net 18,308  
Contract liabilities    
Billings in excess of costs and estimated earnings on uncompleted contracts, net 47,629 20,889
Provisions for losses 268 47
Total contract liabilities, net 47,897 $ 20,936
Change in billings in excess of costs and estimated earnings on uncompleted contracts, net 26,740  
Change in provisions for losses 221  
Change in total contract liabilities, net $ 26,961