Annual report pursuant to Section 13 and 15(d)

Note 2 - Shareholders' Equity (Details Textual)

v3.21.2
Note 2 - Shareholders' Equity (Details Textual) - USD ($)
1 Months Ended 6 Months Ended 12 Months Ended
Apr. 25, 2017
Feb. 29, 2020
Jun. 30, 2021
Dec. 31, 2020
Jun. 30, 2020
Dec. 31, 2019
Sep. 30, 2021
Sep. 30, 2020
Nov. 13, 2014
Stock Repurchase Program, Remaining Authorized Repurchase Amount             $ 4,980,671   $ 8,000,000
Stock Repurchase Program, Increase in Authorized Amount $ 4,000,000                
Stock Repurchase Program, Authorized Amount $ 12,000,000                
Common Stock, Shares Authorized (in shares)             50,000,000 50,000,000  
Common Stock, Par or Stated Value Per Share (in dollars per share)             $ 0.01 $ 0.01  
Preferred Stock, Shares Authorized (in shares)             500,000 500,000  
Preferred Stock, Shares Issued, Total (in shares)             0 0  
Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant (in shares)             667,465    
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total             $ 2,529,274    
Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)             3 years 1 month 6 days    
Share-based Payment Arrangement, Expense             $ 1,280,135 $ 773,555  
Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Gross (in shares)             105,089 121,350  
Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year)             5 years 5 years 8 months 15 days  
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)             3 years 4 years 8 months 15 days  
Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price (in dollars per share)             $ 23.74 $ 12.43  
Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Exercisable, Number (in shares)             79,833 44,000  
Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period (in shares)             101,966 26,750  
Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period, Intrinsic Value             $ 1,314,900 $ 332,468  
Stock Repurchased During Period, Shares (in shares)             11,754 10,038  
Treasury Stock Acquired, Average Cost Per Share (in dollars per share)             $ 39.32 $ 17.57  
Payment, Tax Withholding, Share-based Payment Arrangement             $ 462,115 $ 176,416  
Preferred Stock, Shares Outstanding, Ending Balance (in shares)             0 0  
Employee Stock Purchase Plan [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant (in shares)             194,873    
Share-based Compensation Arrangement by Share-based Payment Award, Market Price Percentage, Offering Date             85.00%    
Stock Issued During Period, Shares, Employee Stock Purchase Plans (in shares)     9,739 15,011 15,116 15,107      
Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price (in dollars per share)     $ 21.01 $ 11.93 $ 11.85 $ 11.23      
Payment, Tax Withholding, Share-based Payment Arrangement             $ 143,768    
Share-based Compensation Arrangement by Share-based Payment Award, Number of Additional Shares Authorized (in shares)   200,000              
Minimum [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)               3 years  
Maximum [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)               5 years  
Share-based Payment Arrangement, Option [Member] | Minimum [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)             3 years    
Share-based Payment Arrangement, Option [Member] | Maximum [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year)             6 years    
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)             5 years    
Cashless Method Stock Option Exercised [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period (in shares)             101,966 14,688  
Restricted Stock [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Vested in Period, Fair Value             $ 1,364,007 $ 496,829  
Restricted Stock [Member] | Minimum [Member] | Employees [Member] | Stock Compensation Plan 2007 [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)             1 year    
Restricted Stock [Member] | Maximum [Member] | Employees [Member] | Stock Compensation Plan 2007 [Member]                  
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)             10 years    
Selling, General and Administrative Expenses [Member]                  
Share-based Payment Arrangement, Expense             $ 1,222,756 752,011  
Cost of Sales [Member]                  
Share-based Payment Arrangement, Expense             $ 57,379 $ 21,544  
Undesignated Shares [Member]                  
Preferred Stock, Shares Authorized (in shares)             5,000,000    
Series B Preferred Stock [Member]                  
Preferred Stock, Shares Authorized (in shares)             500,000    
Preferred Stock, Shares Issued, Total (in shares)             0    
Preferred Stock, Shares Outstanding, Ending Balance (in shares)             0