| Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] |
| | | Three Months Ended | | | Six Months Ended | |
| | | June 30, | | | June 30, | |
| | | 2026 | | | 2025 | | | 2026 | | | 2025 | |
| (Amounts in thousands, except share and per share data) | | | | | | | | | | | | | | | | |
| Net income | | $ | 22,513 | | | $ | 12,246 | | | $ | 34,540 | | | $ | 24,064 | |
| | | | | | | | | | | | | | | | | |
| Weighted average common shares outstanding, basic | | | 18,879,907 | | | | 18,295,465 | | | | 18,902,567 | | | | 18,310,032 | |
| Dilutive effect of potential common shares | | | | | | | | | | | | | | | | |
| Stock options and awards | | | 37,384 | | | | 23,634 | | | | 33,099 | | | | 27,245 | |
| Restricted stock units | | | 62,023 | | | | 81,694 | | | | 63,832 | | | | 90,226 | |
| Total dilutive effect of potential common shares | | | 99,407 | | | | 105,328 | | | | 96,931 | | | | 117,471 | |
| Weighted average common shares outstanding, diluted | | | 18,979,314 | | | | 18,400,793 | | | | 18,999,498 | | | | 18,427,503 | |
| | | | | | | | | | | | | | | | | |
| Basic earnings per common share | | $ | 1.19 | | | $ | 0.67 | | | $ | 1.83 | | | $ | 1.31 | |
| Diluted earnings per common share | | | 1.19 | | | | 0.67 | | | | 1.82 | | | | 1.31 | |
| | | | | | | | | | | | | | | | | |
| Antidilutive potential common shares | | | | | | | | | | | | | | | | |
| Stock options and awards | | | 427 | | | | 58 | | | | 3,088 | | | | 29 | |
| Stock units | | | 8,991 | | | | - | | | | 6,397 | | | | - | |
| Total potential antidilutive shares | | | 9,418 | | | | 58 | | | | 9,485 | | | | 29 | |
|