v3.26.1
Revenue - Disaggregation of revenue by customer type and contract type (Details) - USD ($)
$ in Millions
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Disaggregation of Revenue        
Revenue $ 1,688.2 $ 1,890.7 $ 3,248.1 $ 3,538.8
Fixed Price        
Disaggregation of Revenue        
Revenue 634.0 977.8 1,335.4 1,813.5
Unit Price        
Disaggregation of Revenue        
Revenue 659.6 584.3 1,216.9 1,072.4
Cost Reimbursable        
Disaggregation of Revenue        
Revenue 394.6 328.6 695.8 652.9
MSA        
Disaggregation of Revenue        
Revenue 720.6 602.9 1,280.4 1,092.9
Non-MSA        
Disaggregation of Revenue        
Revenue 967.6 1,287.8 1,967.7 2,445.9
Intersegment eliminations        
Disaggregation of Revenue        
Revenue (24.3) (39.1) (52.7) (62.7)
Intersegment eliminations | Fixed Price        
Disaggregation of Revenue        
Revenue (16.7) (32.1) (42.4) (51.3)
Intersegment eliminations | Unit Price        
Disaggregation of Revenue        
Revenue 0.7 (6.5) (0.9) (9.9)
Intersegment eliminations | Cost Reimbursable        
Disaggregation of Revenue        
Revenue (8.3) (0.5) (9.4) (1.5)
Intersegment eliminations | MSA        
Disaggregation of Revenue        
Revenue   (0.4)   (0.9)
Intersegment eliminations | Non-MSA        
Disaggregation of Revenue        
Revenue (24.3) (38.7) (52.7) (61.8)
Utilities | Operating Segment        
Disaggregation of Revenue        
Revenue 712.6 693.0 1,345.5 1,256.4
Utilities | Operating Segment | Fixed Price        
Disaggregation of Revenue        
Revenue 106.9 110.5 219.0 188.5
Utilities | Operating Segment | Unit Price        
Disaggregation of Revenue        
Revenue 475.7 443.8 874.8 788.1
Utilities | Operating Segment | Cost Reimbursable        
Disaggregation of Revenue        
Revenue 130.0 138.7 251.7 279.8
Utilities | Operating Segment | MSA        
Disaggregation of Revenue        
Revenue 583.5 539.4 1,057.1 991.5
Utilities | Operating Segment | Non-MSA        
Disaggregation of Revenue        
Revenue 129.1 153.6 288.4 264.9
Utilities | Intersegment eliminations        
Disaggregation of Revenue        
Revenue 24.2 39.1 52.6 62.7
Energy | Operating Segment        
Disaggregation of Revenue        
Revenue 999.9 1,236.8 1,955.3 2,345.1
Energy | Operating Segment | Fixed Price        
Disaggregation of Revenue        
Revenue 543.8 899.4 1,158.8 1,676.3
Energy | Operating Segment | Unit Price        
Disaggregation of Revenue        
Revenue 183.2 147.0 343.0 294.2
Energy | Operating Segment | Cost Reimbursable        
Disaggregation of Revenue        
Revenue 272.9 190.4 453.5 374.6
Energy | Operating Segment | MSA        
Disaggregation of Revenue        
Revenue 137.1 63.9 223.3 102.3
Energy | Operating Segment | Non-MSA        
Disaggregation of Revenue        
Revenue 862.8 $ 1,172.9 1,732.0 $ 2,242.8
Energy | Intersegment eliminations        
Disaggregation of Revenue        
Revenue $ 0.1   $ 0.1