v3.22.0.1
Stock-Based Compensation - Stock Option Summary (Details) - USD ($)
12 Months Ended
Dec. 31, 2021
Dec. 31, 2020
Dec. 31, 2019
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) $ 12.55 $ 11.13  
Weighted Average Exercise Price (in dollars per share) $ 14.77 $ 12.21 $ 11.00
Average Remaining Life (years) 2 years 9 months 18 days 3 years  
Outstanding Shares (in shares) 1,060,023 1,169,413 1,308,047
Exercisable Shares (in shares) 551,804 567,593  
Outstanding Shares, intrinsic value $ 12,143,007 $ 2,164,598  
Exercisable shares, intrinsic value $ 7,529,711 $ 1,620,892  
Exercise Price Range 1      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Weighted Average Exercise Price (in dollars per share) $ 12.89 $ 11.03  
Average Remaining Life (years) 2 years 5 months 12 days 2 years 3 months  
Outstanding Shares (in shares) 892,529 740,513  
Exercisable Shares (in shares) 546,804 508,379  
Exercise Price Range 1 | Minimum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) $ 10.70 $ 8.50  
Exercise Price Range 1 | Maximum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) 14.63 12.38  
Exercise Price Range 2      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Weighted Average Exercise Price (in dollars per share) $ 14.96 $ 13.86  
Average Remaining Life (years) 3 years 1 month 20 days 4 years 10 months 20 days  
Outstanding Shares (in shares) 22,750 189,100  
Exercisable Shares (in shares) 5,000 3,500  
Exercise Price Range 2 | Minimum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) $ 14.64 $ 12.39  
Exercise Price Range 2 | Maximum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) 18.56 14.38  
Exercise Price Range 3      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Weighted Average Exercise Price (in dollars per share) $ 21.86 $ 14.57  
Average Remaining Life (years) 4 years 8 months 15 days 4 years  
Outstanding Shares (in shares) 2,500 239,800  
Exercisable Shares (in shares) 0 55,714  
Exercise Price Range 3 | Minimum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) $ 18.57 $ 14.39  
Exercise Price Range 3 | Maximum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) 22.49 $ 14.89  
Exercise Price Range 4      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Weighted Average Exercise Price (in dollars per share) $ 26.41    
Average Remaining Life (years) 5 years    
Outstanding Shares (in shares) 142,244    
Exercisable Shares (in shares) 0    
Exercise Price Range 4 | Minimum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) $ 22.50    
Exercise Price Range 4 | Maximum      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Exercise Price Range (in dollars per share) $ 26.41