v3.26.1
Disaggregation of Revenue and Contract Balances - Summary of Disaggregated Revenues 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]        
Gross Contract Revenue $ 146,125 $ 122,090 $ 272,604 $ 235,021
Gross contract revenue (in percent) 100.00% 100.00% 100.00% 100.00%
Fixed fee        
Disaggregation Of Revenue [Line Items]        
Gross Contract Revenue $ 133,848 $ 111,837 $ 249,990 $ 214,442
Gross contract revenue (in percent) 91.60% 91.60% 91.70% 91.20%
Time-and-materials        
Disaggregation Of Revenue [Line Items]        
Gross Contract Revenue $ 12,277 $ 10,253 $ 22,614 $ 20,579
Gross contract revenue (in percent) 8.40% 8.40% 8.30% 8.80%