v3.23.2
Note 15 - Stock-based Compensation - Stock Options Outstanding, Vested and Exercisable (Details) - $ / shares
12 Months Ended
Dec. 31, 2022
Dec. 31, 2021
Exercise Price Range, Upper Range Limit (in dollars per share)  
Number of Stock Options Outstanding (in shares) 725,623 714,085
Weighted-average Remaining Contractual LIfe (Year) 5 years 3 months 18 days  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 52.98 $ 59.79
Shares Subject to Stock Options (in shares) 515,933  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 65.76  
Exercise Price Range 1 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 4.62  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 8.03  
Number of Stock Options Outstanding (in shares) 88,096  
Weighted-average Remaining Contractual LIfe (Year) 9 years 2 months 12 days  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 7.54  
Shares Subject to Stock Options (in shares) 0  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 0  
Exercise Price Range 2 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 8.36  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 12.54  
Number of Stock Options Outstanding (in shares) 19,046  
Weighted-average Remaining Contractual LIfe (Year) 9 years 1 month 6 days  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 8.43  
Shares Subject to Stock Options (in shares) 0  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 0  
Exercise Price Range 3 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 14.40  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 21.60  
Number of Stock Options Outstanding (in shares) 20,941  
Weighted-average Remaining Contractual LIfe (Year) 6 years 10 months 24 days  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 16.93  
Shares Subject to Stock Options (in shares) 13,643  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 16.84  
Exercise Price Range 4 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 22.40  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 33.60  
Number of Stock Options Outstanding (in shares) 11,700  
Weighted-average Remaining Contractual LIfe (Year) 8 years 1 month 6 days  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 28.62  
Shares Subject to Stock Options (in shares) 10,774  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 28.58  
Exercise Price Range 5 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 34.40  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 51.60  
Number of Stock Options Outstanding (in shares) 311,695  
Weighted-average Remaining Contractual LIfe (Year) 6 years  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 41.16  
Shares Subject to Stock Options (in shares) 217,425  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 42.75  
Exercise Price Range 6 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 52.00  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 78.00  
Number of Stock Options Outstanding (in shares) 168,275  
Weighted-average Remaining Contractual LIfe (Year) 3 years 6 months  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 62.66  
Shares Subject to Stock Options (in shares) 168,221  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 62.66  
Exercise Price Range 7 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 78.40  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 117.60  
Number of Stock Options Outstanding (in shares) 62,756  
Weighted-average Remaining Contractual LIfe (Year) 1 year  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 97.95  
Shares Subject to Stock Options (in shares) 62,756  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 97.95  
Exercise Price Range 8 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 132.00  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 198.00  
Number of Stock Options Outstanding (in shares) 20,520  
Weighted-average Remaining Contractual LIfe (Year) 1 year 7 months 6 days  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 133.16  
Shares Subject to Stock Options (in shares) 20,520  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 133.16  
Exercise Price Range 9 [Member]    
Exercise Price Range, Lower Range Limit (in dollars per share) 204.40  
Exercise Price Range, Upper Range Limit (in dollars per share) $ 306.60  
Number of Stock Options Outstanding (in shares) 22,594  
Weighted-average Remaining Contractual LIfe (Year) 1 year  
Options Outstanding, Weighted-average Exercise Price Per Share (in dollars per share) $ 206.96  
Shares Subject to Stock Options (in shares) 22,594  
Options Vested and Exercisable, Weighted-average Exercise Price Per Share (in dollars per share) $ 206.96