v3.26.1
Revenue (Details)
$ in Thousands
3 Months Ended 6 Months Ended 12 Months Ended
Jun. 30, 2026
USD ($)
Jun. 30, 2025
USD ($)
Jun. 30, 2026
USD ($)
segment
Jun. 30, 2025
USD ($)
Dec. 31, 2025
segment
Disaggregation of Revenue [Line Items]          
Contract revenues $ 221,878 $ 205,286 $ 438,179 $ 393,939  
Number of reportable segments | segment     2   2
Marine          
Disaggregation of Revenue [Line Items]          
Contract revenues 130,843 135,302 $ 240,972 262,465  
Marine | Construction          
Disaggregation of Revenue [Line Items]          
Contract revenues 109,881 114,830 202,564 219,312  
Marine | Dredging          
Disaggregation of Revenue [Line Items]          
Contract revenues 16,630 17,700 30,711 34,611  
Marine | Specialty Services          
Disaggregation of Revenue [Line Items]          
Contract revenues 4,332 2,772 7,697 8,542  
Concrete          
Disaggregation of Revenue [Line Items]          
Contract revenues 91,035 69,984 197,207 131,474  
Concrete | Structural          
Disaggregation of Revenue [Line Items]          
Contract revenues 6,673 12,582 16,426 26,303  
Concrete | Light Commercial          
Disaggregation of Revenue [Line Items]          
Contract revenues $ 84,362 $ 57,402 $ 180,781 $ 105,171