v3.25.2
Share-based awards (Tables)
6 Months Ended
Jun. 30, 2025
Share-Based Payment Arrangement [Abstract]  
Summary of Stock Option Activity
The following table summarizes option activity for the six months ended June 30, 2025:
 Options
Outstanding
Number of Shares 
Weighted
Average
Exercise
Price
Weighted
Average
Remaining
Contractual
Life
Outstanding at December 31, 2024622,292 $170.52 3.91
Granted118,902 $185.18 
Exercised(58,784)$110.50 
Forfeited/Expired(11,623)$256.00 
Outstanding at June 30, 2025670,787 $176.90 4.30
Exercisable at June 30, 2025436,041 $152.79 3.05
Schedule of Weighted Average Fair Values and Assumptions Used The weighted average grant date fair values and assumptions used were as follows:
Six Months Ended
June 30,
2025
June 30,
2024
Weighted average grant date fair value$64.42 $115.76 
Assumptions: 
Expected volatility35 %36 %
Dividend yield— %— %
Risk-free interest rate4.00 %4.20 %
Expected life4.4 years4.3 years
Summary of RSU and PSU Activity The following table summarizes RSU and PSU activity for the six months ended June 30, 2025:
PSU
Outstanding
Number of
Shares
PSU
Weighted
Average Grant Date
Fair Value
RSU
Outstanding
Number of
Shares
RSU
Weighted
Average Grant Date
Fair Value
Outstanding at December 31, 202419,721 $280.76 647,589 $251.36 
Granted41,359 $185.18 1,145,998 $130.15 
Shares vested(8,191)$231.68 (26,013)$274.54 
Forfeited(11,502)$313.16 (81,914)$239.84 
Outstanding at June 30, 202541,387 $185.96 1,685,660 $169.15 
Schedule of Non-Cash Stock Compensation Expense
Stock compensation expense for the three and six months ended June 30, 2025 and June 30, 2024 has been allocated as follows:
Three Months EndedSix Months Ended
June 30,
2025
June 30,
2024
June 30,
2025
June 30,
2024
(in thousands)
Direct costs$9,290 $7,299 $14,671 $14,020 
Selling, general and administrative6,143 7,665 13,056 14,125 
Total$15,433 $14,964 $27,727 $28,145