v3.24.1.u1
Revenue Recognition - Disaggregated Revenues (Details) - USD ($)
$ in Thousands
3 Months Ended
Mar. 31, 2024
Mar. 31, 2023
Disaggregation of Revenue [Line Items]    
Revenues $ 603,966 $ 568,360
Fixed-Price Incentive Fee    
Disaggregation of Revenue [Line Items]    
Revenues 302,773 296,343
Firm-Fixed-Price    
Disaggregation of Revenue [Line Items]    
Revenues 162,125 166,270
Cost-Plus Fee    
Disaggregation of Revenue [Line Items]    
Revenues 93,715 72,815
Time-and-Materials    
Disaggregation of Revenue [Line Items]    
Revenues 45,546 33,382
Over time    
Disaggregation of Revenue [Line Items]    
Revenues 581,143 550,763
Point-in-time    
Disaggregation of Revenue [Line Items]    
Revenues 23,016 18,047
Operating Segments    
Disaggregation of Revenue [Line Items]    
Revenues 604,159 568,810
Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 487,121 459,886
Operating Segments | Government Operations | Fixed-Price Incentive Fee    
Disaggregation of Revenue [Line Items]    
Revenues 297,251 292,159
Operating Segments | Government Operations | Firm-Fixed-Price    
Disaggregation of Revenue [Line Items]    
Revenues 94,920 94,718
Operating Segments | Government Operations | Cost-Plus Fee    
Disaggregation of Revenue [Line Items]    
Revenues 93,715 72,815
Operating Segments | Government Operations | Time-and-Materials    
Disaggregation of Revenue [Line Items]    
Revenues 1,235 194
Operating Segments | Government Operations | Over time    
Disaggregation of Revenue [Line Items]    
Revenues 484,288 454,811
Operating Segments | Government Operations | Point-in-time    
Disaggregation of Revenue [Line Items]    
Revenues 2,833 5,075
Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 117,038 108,924
Operating Segments | Commercial Operations | Fixed-Price Incentive Fee    
Disaggregation of Revenue [Line Items]    
Revenues 5,522 4,184
Operating Segments | Commercial Operations | Firm-Fixed-Price    
Disaggregation of Revenue [Line Items]    
Revenues 67,205 71,552
Operating Segments | Commercial Operations | Cost-Plus Fee    
Disaggregation of Revenue [Line Items]    
Revenues 0 0
Operating Segments | Commercial Operations | Time-and-Materials    
Disaggregation of Revenue [Line Items]    
Revenues 44,311 33,188
Operating Segments | Commercial Operations | Over time    
Disaggregation of Revenue [Line Items]    
Revenues 96,855 95,952
Operating Segments | Commercial Operations | Point-in-time    
Disaggregation of Revenue [Line Items]    
Revenues 20,183 12,972
Eliminations    
Disaggregation of Revenue [Line Items]    
Revenues (193) (450)
United States:    
Disaggregation of Revenue [Line Items]    
Revenues 500,637 466,548
United States: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 483,842 455,270
United States: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 16,795 11,278
Canada:    
Disaggregation of Revenue [Line Items]    
Revenues 95,031 93,278
Canada: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 19 259
Canada: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 95,012 93,019
Other:    
Disaggregation of Revenue [Line Items]    
Revenues 8,491 8,984
Other: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 3,260 4,357
Other: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 5,231 4,627
Government | United States:    
Disaggregation of Revenue [Line Items]    
Revenues 462,232 431,578
Government | United States: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 462,232 431,578
Government | United States: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 0 0
Government | Canada:    
Disaggregation of Revenue [Line Items]    
Revenues 2 51
Government | Canada: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 2 51
Government | Canada: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 0 0
Government | Other:    
Disaggregation of Revenue [Line Items]    
Revenues 1,026 1,148
Government | Other: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 1,026 1,148
Government | Other: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 0 0
Non-Government | United States:    
Disaggregation of Revenue [Line Items]    
Revenues 38,405 34,970
Non-Government | United States: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 21,610 23,692
Non-Government | United States: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 16,795 11,278
Non-Government | Canada:    
Disaggregation of Revenue [Line Items]    
Revenues 95,029 93,227
Non-Government | Canada: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 17 208
Non-Government | Canada: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues 95,012 93,019
Non-Government | Other:    
Disaggregation of Revenue [Line Items]    
Revenues 7,465 7,836
Non-Government | Other: | Operating Segments | Government Operations    
Disaggregation of Revenue [Line Items]    
Revenues 2,234 3,209
Non-Government | Other: | Operating Segments | Commercial Operations    
Disaggregation of Revenue [Line Items]    
Revenues $ 5,231 $ 4,627