XML 62 R48.htm IDEA: XBRL DOCUMENT
v3.24.0.1

Note 17 - Stock-based Compensation (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2023
Notes Tables |
Stock-based compensation expense | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | 2023 |  | 2022 |  | 2021
​ | ​ | (dollars in thousands)
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Stock options | ​ | $ | 286 | ​ | $ | 246 | ​ | $ | 270
Restricted stock awards | ​ | ​ | 2,084 | ​ | ​ | 1,967 | ​ | ​ | 1,864
Stock purchase plan | ​ |  | 308 | ​ |  | 225 | ​ |  | 218
​ | ​ | $ | 2,678 | ​ | $ | 2,438 | ​ | $ | 2,352
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Summary of the stock option plans | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | December 31,
​ | ​ | 2023 | ​ | 2022 | ​ | 2021
​ | ​ | ​ | ​ | ​ | Weighted | ​ | ​ | ​ | ​ | Weighted | ​ | ​ | ​ | ​ | Weighted
​ | ​ | ​ | ​ | ​ | Average | ​ | ​ | ​ | ​ | Average | ​ | ​ | ​ | ​ | Average
​ | ​ | ​ | ​ | ​ | Exercise | ​ | ​ | ​ | ​ | Exercise | ​ | ​ | ​ | ​ | Exercise
​ |  | Shares |  | Price |  | Shares |  | Price |  | Shares |  | Price
Outstanding, beginning | ​ | ​ | 346,678 | ​ | $ | 27.60 | ​ | ​ | 367,998 | ​ | $ | 24.46 | ​ | ​ | 407,763 | ​ | $ | 22.24
Granted |  | ​ | 25,000 | ​ |  | 53.31 |  | ​ | 22,400 | ​ |  | 53.87 |  | ​ | 22,150 | ​ |  | 43.61
Exercised |  | ​ | (81,354) | ​ |  | 19.45 |  | ​ | (41,695) | ​ |  | 14.07 |  | ​ | (60,317) | ​ |  | 15.76
Forfeited |  | ​ | (175) | ​ |  | 15.65 |  | ​ | (2,025) | ​ |  | 26.72 |  | ​ | (1,598) | ​ |  | 38.50
Outstanding, ending |  | ​ | 290,149 | ​ |  | 32.11 |  | ​ | 346,678 | ​ |  | 27.60 |  | ​ | 367,998 | ​ |  | 24.46
​ |  | ​ |  | ​ |  |  |  | ​ |  | ​ |  |  |  | ​ |  | ​ |  |
Exercisable, ending |  | ​ | 233,967 | ​ |  |  |  | ​ | 295,077 | ​ |  |  |  | ​ | 318,266 | ​ |  |
​ |  | ​ |  | ​ |  |  |  | ​ |  | ​ |  |  |  | ​ |  | ​ |  |
Weighted average fair value per option granted | ​ | $ | 16.36 | ​ |  |  | ​ | $ | 13.97 | ​ |  |  | ​ | $ | 10.85 | ​ |  |
Summary of options outstanding | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Options Outstanding | ​ | ​ | ​ | ​ | ​
​ | ​ | ​ | ​ | Weighted | ​ | ​ | ​ | ​ | Options Exercisable
​ | ​ | ​ | ​ | Average | ​ | Weighted | ​ | ​ | ​ | Weighted
​ | ​ | ​ | ​ | Remaining | ​ | Average | ​ | ​ | ​ | Average
Range of | ​ | Number | ​ | Contractual | ​ | Exercise | ​ | Number | ​ | Exercise
Exercise Prices |  | Outstanding |  | Life |  | Price |  | Exercisable |  | Price
$17.10 to $17.86 | ​ | 96,500 | ​ | 0.62 | ​ | $ | 17.32 | ​ | 96,460 | ​ | $ | 17.32
$21.71 to $22.64 |  | 52,716 |  | 2.08 | ​ |  | 22.64 |  | 52,716 | ​ |  | 22.64
$29.77 to $36.00 |  | 14,212 |  | 5.16 | ​ |  | 36.00 |  | 14,212 | ​ |  | 36.00
$40.00 to $41.95 |  | 20,049 |  | 6.06 | ​ |  | 40.10 |  | 15,515 | ​ |  | 40.13
$42.65 to $48.50 |  | 59,572 |  | 4.82 | ​ |  | 43.86 |  | 49,254 | ​ |  | 43.91
$53.31 to $56.26 |  | 47,100 |  | 8.70 | ​ |  | 53.57 |  | 5,850 | ​ |  | 53.87
​ |  | 290,149 |  |  | ​ |  |  |  | 234,007 | ​ |  |
​ |  | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ |  |
Summary of changes in nonvested restricted stock awards | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | December 31,
​ |  | 2023 |  | 2022 |  | 2021
Outstanding, beginning | ​ | ​ | 84,115 | ​ | ​ | 97,107 | ​ | ​ | 102,489
Granted* | ​ |  | 51,157 | ​ |  | 35,525 | ​ |  | 38,360
Released | ​ |  | (43,331) | ​ |  | (47,766) | ​ |  | (43,691)
Forfeited | ​ |  | (3,763) | ​ |  | (751) | ​ |  | (51)
Outstanding, ending | ​ | ​ | 88,178 | ​ | ​ | 84,115 | ​ | ​ | 97,107
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Weighted average fair value per share granted | ​ | $ | 51.64 | ​ | $ | 54.20 | ​ | $ | 45.18
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ * At December 31, 2023, includes 4,500 shares of restricted stock, 80,820 restricted stock units. At December 31, 2022, includes 8,527 shares of restricted stock and 64,494 restricted stock units. At December 31, 2021, includes 12,412 shares of restricted stock and 25,948 restricted stock units. ​
Schedule of Stock purchase plan | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ |  | 2023 |  | 2022 |  | 2021
Shares granted |  | ​ | 36,964 |  | ​ | 28,421 |  | ​ | 28,396
Shares purchased |  | ​ | 35,058 |  | ​ | 27,103 |  | ​ | 30,543
Weighted average fair value per share granted | ​ | $ | 8.35 | ​ | $ | 7.88 | ​ | $ | 7.67
​

X
- Definition Tabular disclosure of share-based payment arrangement. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 1 -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-1 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_DisclosureOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the changes in outstanding nonvested restricted stock shares. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Subparagraph (c) -Paragraph 2 -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of employee stock purchase plan activity. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (g) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of option exercise prices, by grouped ranges, including the upper and lower limits of the price range, the number of shares under option, weighted average exercise price and remaining contractual option terms. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(1) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (d) -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (e) -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_TableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration