XML 57 R44.htm IDEA: XBRL DOCUMENT v3.26.1
Revenue - Disaggregation of revenue by customer type and contract type (Details) - USD ($)
$ in Millions
3 Months Ended
Mar. 31, 2026
Mar. 31, 2025
Disaggregation of Revenue    
Revenue $ 1,559.9 $ 1,648.1
Fixed Price    
Disaggregation of Revenue    
Revenue 701.4 835.7
Unit Price    
Disaggregation of Revenue    
Revenue 557.3 488.1
Cost Reimbursable    
Disaggregation of Revenue    
Revenue 301.2 324.3
MSA    
Disaggregation of Revenue    
Revenue 559.8 490.0
Non-MSA    
Disaggregation of Revenue    
Revenue 1,000.1 1,158.1
Intersegment eliminations    
Disaggregation of Revenue    
Revenue (28.4) (23.6)
Intersegment eliminations | Fixed Price    
Disaggregation of Revenue    
Revenue (25.7) (19.1)
Intersegment eliminations | Unit Price    
Disaggregation of Revenue    
Revenue (1.6) (3.5)
Intersegment eliminations | Cost Reimbursable    
Disaggregation of Revenue    
Revenue (1.1) (1.0)
Intersegment eliminations | MSA    
Disaggregation of Revenue    
Revenue   (0.5)
Intersegment eliminations | Non-MSA    
Disaggregation of Revenue    
Revenue (28.4) (23.1)
Utilities | Operating Segment    
Disaggregation of Revenue    
Revenue 632.9 563.4
Utilities | Operating Segment | Fixed Price    
Disaggregation of Revenue    
Revenue 112.1 77.9
Utilities | Operating Segment | Unit Price    
Disaggregation of Revenue    
Revenue 399.1 344.4
Utilities | Operating Segment | Cost Reimbursable    
Disaggregation of Revenue    
Revenue 121.7 141.1
Utilities | Operating Segment | MSA    
Disaggregation of Revenue    
Revenue 473.6 452.1
Utilities | Operating Segment | Non-MSA    
Disaggregation of Revenue    
Revenue 159.3 111.3
Utilities | Intersegment eliminations    
Disaggregation of Revenue    
Revenue 28.4 23.6
Energy | Operating Segment    
Disaggregation of Revenue    
Revenue 955.4 1,108.3
Energy | Operating Segment | Fixed Price    
Disaggregation of Revenue    
Revenue 615.0 776.9
Energy | Operating Segment | Unit Price    
Disaggregation of Revenue    
Revenue 159.8 147.2
Energy | Operating Segment | Cost Reimbursable    
Disaggregation of Revenue    
Revenue 180.6 184.2
Energy | Operating Segment | MSA    
Disaggregation of Revenue    
Revenue 86.2 38.4
Energy | Operating Segment | Non-MSA    
Disaggregation of Revenue    
Revenue $ 869.2 $ 1,069.9