v3.26.1
Revenue Recognition - Schedule of revenue by contract type (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Disaggregation of Revenue [Line Items]        
Contract revenues $ 1,081,727 $ 900,325 $ 2,082,107 $ 1,733,945
Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 100.00% 100.00% 100.00% 100.00%
Fixed price        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 647,904 $ 508,100 $ 1,192,803 $ 975,355
Fixed price | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 59.90% 56.40% 57.30% 56.30%
Unit price        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 222,678 $ 211,268 $ 453,819 $ 381,037
Unit price | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 20.60% 23.50% 21.80% 22.00%
T&E        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 211,145 $ 180,957 $ 435,485 $ 377,553
T&E | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 19.50% 20.10% 20.90% 21.70%
T&D        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 524,022 $ 506,273 $ 1,064,992 $ 968,043
T&D | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 100.00% 100.00% 100.00% 100.00%
T&D | Fixed price        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 158,637 $ 178,118 $ 308,815 $ 351,568
T&D | Fixed price | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 30.30% 35.20% 29.00% 36.30%
T&D | Unit price        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 208,407 $ 191,022 $ 426,618 $ 343,124
T&D | Unit price | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 39.80% 37.70% 40.10% 35.40%
T&D | T&E        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 156,978 $ 137,133 $ 329,559 $ 273,351
T&D | T&E | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 29.90% 27.10% 30.90% 28.30%
C&I        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 557,705 $ 394,052 $ 1,017,115 $ 765,902
C&I | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 100.00% 100.00% 100.00% 100.00%
C&I | Fixed price        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 489,267 $ 329,982 $ 883,988 $ 623,787
C&I | Fixed price | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 87.70% 83.80% 86.90% 81.40%
C&I | Unit price        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 14,271 $ 20,246 $ 27,201 $ 37,913
C&I | Unit price | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 2.60% 5.10% 2.70% 5.00%
C&I | T&E        
Disaggregation of Revenue [Line Items]        
Contract revenues $ 54,167 $ 43,824 $ 105,926 $ 104,202
C&I | T&E | Product concentration risk | Revenue benchmark        
Disaggregation of Revenue [Line Items]        
Concentration risk, percent 9.70% 11.10% 10.40% 13.60%