v3.26.1
Stockholders' equity - Schedule of Accumulated Other Comprehensive Income (Loss) (Details) - USD ($)
$ in Thousands
3 Months Ended
Apr. 30, 2026
Apr. 30, 2025
AOCI Attributable to Parent, Net of Tax [Roll Forward]    
Beginning balance $ 337,207 $ 264,808
Other comprehensive income (loss) before reclassifications (116) 415
Amounts reclassified from accumulated other comprehensive income (loss) (73) 20
Other comprehensive (loss) income (189) 435
Ending balance 359,090 282,186
Unrealized gain on cash flow hedges    
AOCI Attributable to Parent, Net of Tax [Roll Forward]    
Beginning balance (133) 0
Other comprehensive income (loss) before reclassifications (8) 387
Amounts reclassified from accumulated other comprehensive income (loss) (73) 20
Other comprehensive (loss) income (81) 407
Ending balance (214) 407
Foreign currency translation adjustment    
AOCI Attributable to Parent, Net of Tax [Roll Forward]    
Beginning balance (249) (51)
Other comprehensive income (loss) before reclassifications (108) 28
Amounts reclassified from accumulated other comprehensive income (loss) 0 0
Other comprehensive (loss) income (108) 28
Ending balance (357) (23)
Accumulated other comprehensive (loss) income    
AOCI Attributable to Parent, Net of Tax [Roll Forward]    
Beginning balance (382) (51)
Ending balance $ (571) $ 384