Note 5 - Stock-based Compensation - Stock Options Outstanding and Exercisable (Details) | 3 Months Ended |
Mar. 31, 2024 USD ($) $ / shares shares |
Share-Based Payment Arrangement, Option, Exercise Price Range, Lower Range Limit | $ 3.5 |
Share-Based Payment Arrangement, Option, Exercise Price Range, Upper Range Limit | $ 39.11 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number | shares | 59,000 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term | 4 years 4 months 24 days |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price | $ 17.35 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value | $ | $ 120,910 |
Options Outstanding Exercise Price Range1 [Member] | |
Share-Based Payment Arrangement, Option, Exercise Price Range, Lower Range Limit | $ 3.5 |
Share-Based Payment Arrangement, Option, Exercise Price Range, Upper Range Limit | $ 3.86 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number | shares | 13,000 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term | 3 years |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price | $ 3.75 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value | $ | $ 94,910 |
Options Outstanding Exercise Price Range2 [Member] | |
Share-Based Payment Arrangement, Option, Exercise Price Range, Upper Range Limit | $ 7.8 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number | shares | 8,000 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term | 4 years 2 months 12 days |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price | $ 7.8 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value | $ | $ 26,000 |
Options Outstanding Exercise Price Range 3 [Member] | |
Share-Based Payment Arrangement, Option, Exercise Price Range, Upper Range Limit | $ 19.99 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number | shares | 30,000 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term | 4 years 9 months 18 days |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price | $ 19.99 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value | $ | $ 0 |
Options Outstanding Exercise Price Range 4 [Member] | |
Share-Based Payment Arrangement, Option, Exercise Price Range, Upper Range Limit | $ 39.11 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number | shares | 8,000 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term | 5 years 2 months 12 days |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price | $ 39.11 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value | $ | $ 0 |