Revenue - Revenue by Contract Relationship (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2021
Dec. 31, 2020
Dec. 31, 2019
Disaggregation of Revenue [Line Items]      
Total revenue $ 1,783,665 $ 1,395,529 $ 1,382,525
Prime contractor      
Disaggregation of Revenue [Line Items]      
Total revenue 1,663,828 1,324,628 1,312,928
Subcontractor      
Disaggregation of Revenue [Line Items]      
Total revenue $ 119,837 $ 70,901 $ 69,597