Revenue - Revenue by Contract Relationship (Details) - USD ($)
$ in Thousands
12 Months Ended
Dec. 31, 2020
Dec. 31, 2019
Dec. 31, 2018
Disaggregation of Revenue [Line Items]      
Total revenue $ 1,395,529 $ 1,382,525 $ 1,279,036
Prime contractor      
Disaggregation of Revenue [Line Items]      
Total revenue 1,324,628 1,312,928 1,200,726
Subcontractor      
Disaggregation of Revenue [Line Items]      
Total revenue $ 70,901 $ 69,597 $ 78,310