v3.25.2
Revenue (Details)
$ in Thousands
3 Months Ended 6 Months Ended 18 Months Ended
Jun. 30, 2025
USD ($)
segment
Jun. 30, 2024
USD ($)
segment
Jun. 30, 2025
USD ($)
segment
Jun. 30, 2024
USD ($)
segment
Jun. 30, 2025
segment
Disaggregation of Revenue [Line Items]          
Contract revenues $ 205,286 $ 192,167 $ 393,939 $ 352,839  
Number of reportable segments | segment 2 2 2 2 2
Marine          
Disaggregation of Revenue [Line Items]          
Contract revenues $ 135,302 $ 130,953 $ 262,465 $ 237,278  
Marine | Construction          
Disaggregation of Revenue [Line Items]          
Contract revenues 114,830 116,025 219,312 204,814  
Marine | Dredging          
Disaggregation of Revenue [Line Items]          
Contract revenues 17,700 12,077 34,611 26,747  
Marine | Specialty Services          
Disaggregation of Revenue [Line Items]          
Contract revenues 2,772 2,851 8,542 5,717  
Concrete          
Disaggregation of Revenue [Line Items]          
Contract revenues 69,984 61,214 131,474 115,561  
Concrete | Structural          
Disaggregation of Revenue [Line Items]          
Contract revenues 12,582 16,895 26,303 28,468  
Concrete | Light Commercial          
Disaggregation of Revenue [Line Items]          
Contract revenues $ 57,402 $ 44,319 $ 105,171 $ 87,093