v3.26.3
Revenue Recognition - Contract Balances (Details) - USD ($)
$ in Thousands
9 Months Ended
Oct. 02, 2026
Dec. 31, 2025
Capitalized Contract Cost [Line Items]    
Unearned revenue $ 2,300 $ 2,400
Location, Statement of Financial Position, Activity, Accrual [Axis]: us-gaap:AccountsReceivableNetCurrent    
Capitalized Contract Cost [Line Items]    
Change in accounts receivable, trade $ 47,795  
Contract asset percent change 21.00%  
Location, Statement of Financial Position, Activity, Accrual [Axis]: us-gaap:DeferredRevenueCurrent    
Capitalized Contract Cost [Line Items]    
Change in unearned revenue $ (718)  
Contract liability percent change (6.00%)  
Location, Statement of Financial Position, Activity, Accrual [Axis]: us-gaap:OtherAssetsNoncurrent    
Capitalized Contract Cost [Line Items]    
Change in unbilled receivables $ 6,078  
Contract asset percent change 13.00%  
Location, Statement of Financial Position, Balance [Axis]: us-gaap:AccountsReceivableNetCurrent    
Capitalized Contract Cost [Line Items]    
Accounts receivable, trade $ 271,558 223,763
Location, Statement of Financial Position, Balance [Axis]: us-gaap:DeferredRevenueCurrent    
Capitalized Contract Cost [Line Items]    
Unearned revenue 11,967 12,685
Location, Statement of Financial Position, Balance [Axis]: us-gaap:OtherAssetsNoncurrent    
Capitalized Contract Cost [Line Items]    
Unbilled receivables $ 52,626 $ 46,548