v3.26.1
Contract liabilities - Revenue expected to be recognized in the future (Details) - USD ($)
$ in Thousands
Dec. 31, 2025
Dec. 31, 2024
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]    
Transaction price allocated to the performance obligation $ 8,880 $ 26,456
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2026-01-01    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]    
Transaction price allocated to the performance obligation $ 8,870  
Revenue, period 1 year  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2027-01-01    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]    
Transaction price allocated to the performance obligation $ 10  
Revenue, period 1 year  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2028-01-01    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]    
Transaction price allocated to the performance obligation $ 0  
Revenue, period 1 year  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2029-01-01    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]    
Transaction price allocated to the performance obligation $ 0  
Revenue, period 1 year  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2030-01-01    
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]    
Transaction price allocated to the performance obligation $ 0  
Revenue, period 1 year