v3.26.1
Stockholders' equity - Schedule of Accumulated Other Comprehensive Income (Loss) (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jul. 31, 2026
Jul. 31, 2025
Jul. 31, 2026
Jul. 31, 2025
AOCI Attributable to Parent, Net of Tax [Roll Forward]        
Beginning balance $ 359,090 $ 282,186 $ 337,207 $ 264,808
Other comprehensive income (loss) before reclassifications     (290) 302
Amounts reclassified from accumulated other comprehensive income (loss)     51 (139)
Other comprehensive (loss) income (50) (272) (239) 163
Ending balance 371,851 297,987 371,851 297,987
Accumulated other comprehensive (loss) income        
AOCI Attributable to Parent, Net of Tax [Roll Forward]        
Beginning balance (571) 384 (382) (51)
Ending balance (621) 112 (621) 112
Unrealized gain (loss) on cash flow hedges        
AOCI Attributable to Parent, Net of Tax [Roll Forward]        
Beginning balance     (133) 0
Other comprehensive income (loss) before reclassifications     (169) 347
Amounts reclassified from accumulated other comprehensive income (loss)     51 (139)
Other comprehensive (loss) income     (118) 208
Ending balance (251) 208 (251) 208
Foreign currency translation adjustment        
AOCI Attributable to Parent, Net of Tax [Roll Forward]        
Beginning balance     (249) (51)
Other comprehensive income (loss) before reclassifications     (121) (45)
Amounts reclassified from accumulated other comprehensive income (loss)     0 0
Other comprehensive (loss) income     (121) (45)
Ending balance $ (370) $ (96) $ (370) $ (96)