v3.26.1
Disaggregation of Revenue and Contract Balances - Additional Information (Details) - USD ($)
$ in Millions
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]        
Gross contract revenue (in percent) 100.00% 100.00% 100.00% 100.00%
Remaining performance obligations $ 440.2   $ 440.2  
Contract with customer, liability, revenue recognized $ 1.8 $ 0.7 $ 8.1 $ 4.2
Fixed fee        
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]        
Gross contract revenue (in percent) 91.60% 91.60% 91.70% 91.20%
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date: 2026-07-01        
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]        
Remaining performance obligations expects to recognize (in percent) 85.20%   85.20%  
Remaining performance obligations, expected satisfaction period (in months) 12 months   12 months  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date: 2027-07-01        
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]        
Remaining performance obligations expects to recognize (in percent) 14.80%   14.80%  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date: 2027-07-01 | Minimum        
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]        
Remaining performance obligations, expected satisfaction period (in months) 12 months   12 months  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date: 2027-07-01 | Maximum        
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]        
Remaining performance obligations, expected satisfaction period (in months) 24 months   24 months