v3.26.1
Revenue from Contracts with Customers - Summary of Contract Assets And Liabilities Associated With Uncompleted Contracts (Details) - USD ($)
$ in Thousands
Jun. 30, 2026
Dec. 31, 2025
Contract assets classified as:    
Costs and estimated earnings in excess of billings on contracts in progress $ 27,297 $ 2,738
Retainage receivable on open contracts 14,420 11,884
Contract assets 41,717 14,622
Contract liabilities - current classified as:    
Billings in excess of costs and estimated earnings on contracts in progress 3,100 2,819
Retainage payable on open contracts 7,777 3,547
Contract liabilities 10,877 $ 6,366
Contract liabilities - non-current classified as:    
Billings in excess of costs and estimated earnings on contracts in progress $ 764