v3.26.3
Note 2 - Income Per Share - Calculation of Net Income Per Share (Details) - USD ($)
$ / shares in Units, shares in Thousands, $ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2026
Jun. 30, 2026
Mar. 31, 2026
Sep. 30, 2025
Jun. 30, 2025
Mar. 31, 2025
Sep. 30, 2026
Sep. 30, 2025
Numerator:                
Income from continuing operations $ 10,704     $ 6,264     $ 23,659 $ 22,667
Income from discontinued operations, net of tax 0     2,829     0 2,829
Net income (loss) $ 10,704 $ 8,535 $ 4,420 $ 9,093 $ 9,840 $ 6,563 $ 23,659 $ 25,496
Denominator:                
Denominator for basic income per share – weighted-average shares (in shares) 25,383     25,030     25,229 25,872
Effect of dilutive securities:                
Diluted weighted average shares outstanding (in shares) 26,603     26,301     26,559 27,156
Basic income per share:                
Income from continuing operations (in dollars per share) $ 0.42     $ 0.25     $ 0.94 $ 0.88
Income from discontinued operations (in dollars per share) 0     0.11     0 0.11
Net income per share (in dollars per share) 0.42     0.36     0.94 0.99
Diluted income per share:                
Income from continuing operations (in dollars per share) 0.4     0.24     0.89 0.83
Income from discontinued operations (in dollars per share) 0     0.11     0 0.1
Net income per share (in dollars per share) [1] $ 0.4     $ 0.35     $ 0.89 $ 0.94
Restricted Stock [Member]                
Effect of dilutive securities:                
Equivalent shares issuable upon conversion of unvested restricted shares (in shares) 74     120     105 137
Share-Based Payment Arrangement, Option [Member]                
Effect of dilutive securities:                
Equivalent shares issuable upon conversion of unvested restricted shares (in shares) 1,146     1,151     1,225 1,147
[1] Total may not sum due to rounding.