Note 7 - Stockholders' Equity (Tables)
|
6 Months Ended |
Jun. 30, 2026 |
| Equity [Abstract] |
|
| Schedule of Capital Reserved for Future Issuance [Table Text Block] |
Common stock reserved for future issuance consists of the following as of June 30, 2026:
|
|
|
|
|
Stock options outstanding under 2019 Equity Incentive Plan |
|
|
479,018 |
|
Restricted stock units outstanding under 2019 Equity Incentive Plan |
|
|
340,950 |
|
Performance stock units outstanding under 2019 Equity Incentive Plan, at target |
|
|
550,465 |
|
Shares authorized for future issuance under 2019 Equity Incentive Plan |
|
|
4,646,787 |
|
Shares authorized for future issuance under 2019 Employee Stock Purchase Plan |
|
|
1,814,096 |
|
Total |
|
|
7,831,316 |
|
|
| Share-Based Payment Arrangement, Cost by Plan [Table Text Block] |
The following table summarizes the Company’s stock-based compensation expense for each period presented:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Three Months Ended June 30, |
|
|
Six Months Ended June 30, |
|
|
|
2026 |
|
|
2025 |
|
|
2026 |
|
|
2025 |
|
|
|
($ in thousands) |
|
|
($ in thousands) |
|
Stock-based compensation |
|
$ |
7,438 |
|
|
$ |
5,347 |
|
|
$ |
16,224 |
|
|
$ |
10,092 |
|
|
| Share-Based Payment Arrangement, Activity [Table Text Block] |
The following table summarizes stock option transactions for the six months ended June 30, 2026:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Number of shares |
|
|
Weighted-average exercise price |
|
|
Weighted-average remaining contractual term (in years) |
|
|
Aggregate intrinsic value ($ in thousands) |
|
Outstanding at January 1, 2026 |
|
|
499,676 |
|
|
$ |
32.15 |
|
|
|
3.9 |
|
|
$ |
51,273 |
|
Options granted |
|
|
— |
|
|
|
— |
|
|
|
|
|
|
|
Options exercised |
|
|
(20,167 |
) |
|
|
24.06 |
|
|
|
|
|
|
|
Options cancelled |
|
|
(491 |
) |
|
|
61.72 |
|
|
|
|
|
|
|
Outstanding at June 30, 2026 |
|
|
479,018 |
|
|
$ |
32.46 |
|
|
|
3.3 |
|
|
$ |
44,995 |
|
Vested and Exercisable at June 30, 2026 |
|
|
479,018 |
|
|
$ |
32.46 |
|
|
|
3.3 |
|
|
$ |
44,995 |
|
|
| Schedule of Nonvested Restricted Stock Units Activity [Table Text Block] |
The following table summarizes RSU transactions for the six months ended June 30, 2026:
|
|
|
|
|
|
|
|
|
|
|
Number of shares |
|
|
Weighted-average grant date fair value |
|
Outstanding at January 1, 2026 |
|
|
296,285 |
|
|
$ |
89.73 |
|
Granted |
|
|
184,609 |
|
|
|
120.30 |
|
Released |
|
|
(130,338 |
) |
|
|
79.77 |
|
Forfeited |
|
|
(9,606 |
) |
|
|
106.51 |
|
Non-vested outstanding at June 30, 2026 |
|
|
340,950 |
|
|
$ |
109.62 |
|
|
| Schedule of Nonvested Performance-Based Units Activity [Table Text Block] |
The following table summarizes PSU transactions for the six months ended June 30, 2026:
|
|
|
|
|
|
|
|
|
|
|
Number of shares |
|
|
Weighted-average grant date fair value |
|
Outstanding at January 1, 2026 |
|
|
502,022 |
|
|
$ |
49.05 |
|
Granted |
|
|
120,375 |
|
|
|
105.64 |
|
Vested |
|
|
(67,883 |
) |
|
|
51.24 |
|
Forfeited |
|
|
(4,049 |
) |
|
|
102.10 |
|
Non-vested outstanding at June 30, 2026 |
|
|
550,465 |
|
|
$ |
60.77 |
|
|
| Schedule Of Key Valuation Input Assumptions Used In The Monte Carlo Simulation Relative To Awards Granted [Table Text Block] |
These PSUs were valued using a Monte Carlo simulation with key valuation assumptions as follows:
|
|
|
|
|
|
|
|
|
|
|
2026 Awards |
|
|
2025 Awards |
|
Term |
|
2.9 years |
|
|
2.9 years |
|
Risk-free interest rate(1) |
|
|
3.62 |
% |
|
|
4.22 |
% |
Volatility(2) |
|
|
38.72 |
% |
|
|
45.00 |
% |
Weighted average fair value(3) |
|
$ |
125.79 |
|
|
$ |
116.50 |
|
|