Quarterly report [Sections 13 or 15(d)]

Revenue, Contract Assets and Liabilities and Other Contract Matters - Summary of Remaining Performance Obligations, Disaggregated by Operating Segment and Contract Type (Details)

v3.25.3
Revenue, Contract Assets and Liabilities and Other Contract Matters - Summary of Remaining Performance Obligations, Disaggregated by Operating Segment and Contract Type (Details)
$ in Thousands
Sep. 30, 2025
USD ($)
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation $ 36,844 [1]
Fixed-price and unit-rate  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 35,090
T&M and cost-reimbursable  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 1,754
Operating Segments | Services  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 7,771 [1]
Operating Segments | Fabrication  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 29,073 [1]
Operating Segments | Fixed-price and unit-rate | Services  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 7,771
Operating Segments | Fixed-price and unit-rate | Fabrication  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 27,319
Operating Segments | T&M and cost-reimbursable | Fabrication  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation $ 1,754
[1] We expect to recognize revenue of approximately $17.4 million, $16.4 million and $3.0 million for the remainder of 2025, 2026 and thereafter, respectively, associated with our performance obligations at September 30, 2025. Certain factors and circumstances could result in changes in the timing of recognition of our performance obligations as revenue and the amounts ultimately recognized.