v3.26.1
Note 2 - Income Per Share - Calculation of Net Income Per Share (Details) - USD ($)
$ / shares in Units, shares in Thousands, $ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2026
Mar. 31, 2026
Jun. 30, 2025
Mar. 31, 2025
Jun. 30, 2026
Jun. 30, 2025
Numerator:            
Net income (loss) $ 8,535 $ 4,420 $ 9,840 $ 6,563 $ 12,955 $ 16,403
Denominator:            
Denominator for basic income per share – weighted-average shares (in shares) 25,215   26,041   25,149 26,295
Effect of dilutive securities:            
Diluted weighted average shares outstanding (in shares) 26,589   27,228   26,529 27,564
Net income per share (in dollars per share) $ 0.34   $ 0.38   $ 0.52 $ 0.62
Net income per share (in dollars per share) [1] $ 0.32   $ 0.36   $ 0.49 $ 0.6
Restricted Stock [Member]            
Effect of dilutive securities:            
Equivalent shares issuable upon conversion of unvested restricted shares (in shares) 123   111   126 122
Share-Based Payment Arrangement, Option [Member]            
Effect of dilutive securities:            
Equivalent shares issuable upon conversion of unvested restricted shares (in shares) 1,251   1,076   1,254 1,147
[1] Total may not sum due to rounding.