v3.26.1
Note 5 - Stock Incentive Plan (Tables)
6 Months Ended
Jun. 30, 2026
Notes Tables  
Share-Based Payment Arrangement, Option, Activity [Table Text Block]
  

Options Outstanding

 
  

Number of Shares Subject to Options

  

Weighted-Average Exercise Price

 

Balances at December 31, 2025

  616,555  $30.77 

Granted(1)

  65,312   55.08 

Forfeited(2)(3)

  (3,266)  56.63 

Exercised

  (308)  24.61 

Balances at June 30, 2026

  678,293   32.99 

Unvested options outstanding expected to vest(3)

  223,881   45.44 
Share-Based Payment Arrangement, Option, Exercise Price Range [Table Text Block]

Exercise Prices

 Number of Shares Subject to Options Outstanding  Weighted-Average Remaining Contractual Term in Years  Number of Shares Subject to Options Fully Vested and Exercisable  Weighted-Average Remaining Contractual Term in Years 

$0.00 - $25.00

  206,725   5.36   191,472   5.22 

$25.01 - $50.00

  331,109   6.42   227,452   5.38 

$50.01 - $75.00

  87,166   8.11   22,691   3.63 

$75.01 - $100.00

  49,293   9.16   12,130   8.28 

$100.01 - $125.00

  4,000   9.29   667   9.29 
   678,293       454,412     
Share-Based Payment Arrangement, Restricted Stock Unit, Activity [Table Text Block]
      

Weighted- Average

 
      Grant Date 
  

Restricted

  

Fair Value

 
  

Stock Units

  

per Unit

 

Unvested balance at December 31, 2025

  175,634  $48.88 

Granted(1)

      

Vested

  (30,452)  41.42 

Forfeited

  (348)  15.06 

Unvested Balance at June 30, 2026

  144,834   50.53 
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value [Table Text Block]
  

Three Months Ended June 30,

  

Six Months Ended June 30,

 
  

2026

  

2025

  

2026

  

2025

 
                 

Stock options granted

  3,084   9,550   65,312   225,881 

Weighted-average grant date fair value per share

 $64.22  $30.56  $50.52  $29.23 

Fair value of shares vested

 $966,824  $957,123  $1,613,253  $1,702,559