v3.26.1
Stock-based compensation - Schedule of Service Vesting-Based Stock Option Activity (Details) - $ / shares
6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Options    
Outstanding as of beginning of period (in shares) 117,000 127,000
Exercised (in shares) (102,000) (10,000)
Outstanding as of end of period (in shares) 15,000 117,000
Stock options exercisable at end of period (in shares) 15,000 117,000
Wtd. Avg. Exercise Price    
Outstanding as of beginning of period (in dollars per share) $ 2.22 $ 2.19
Exercised (in dollars per share) 1.89 1.83
Outstanding as of end of period (in dollars per share) 4.43 2.22
Stock options exercisable at end of period (in dollars per share) $ 4.43 $ 2.22