v3.26.1
Net Income (Loss) Per Share (Details) - USD ($)
$ / shares in Units, shares in Thousands, $ in Thousands
3 Months Ended
Mar. 31, 2026
Mar. 31, 2025
Numerator:    
Net income $ 2,957 $ (1,511)
Net income from non-controlling interest 183 471
Net income (loss) attributable to controlling interest $ 2,774 $ (1,982)
Denominator:    
Weighted average shares of common stock outstanding (in shares) 16,800 15,887
Effect of dilutive common stock equivalents (in shares) 920 0
Weighted average diluted common shares outstanding (in shares) 17,720 15,887
Basic income (loss) per share    
Basic (loss) income per share (in dollars per share) $ 0.17 $ (0.12)
Diluted income (loss) per share    
Diluted (loss) income per share (in dollars per share) $ 0.16 $ (0.12)
Shares expected to be issued under the 2021 Employee Stock Purchase Plan    
Diluted income (loss) per share    
Antidilutive securities (in shares) 0 33
Stock options    
Diluted income (loss) per share    
Antidilutive securities (in shares) 5,082 5,749
Stock options with unsatisfied market conditions    
Diluted income (loss) per share    
Antidilutive securities (in shares) 1,324 1,175
Restricted stock units    
Diluted income (loss) per share    
Antidilutive securities (in shares) 248 456
Restricted stock units with unsatisfied market conditions    
Diluted income (loss) per share    
Antidilutive securities (in shares) 1,168 644
Restricted stock awards    
Diluted income (loss) per share    
Antidilutive securities (in shares) 9 141
Shares to be issued under stock bonus program    
Diluted income (loss) per share    
Antidilutive securities (in shares) 0 239