| Quarterly Financial Information [Table Text Block] | 
  |   (in thousands, except per share data)   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   2019   |    |    First  Quarter   |    |    |    Second  Quarter   |    |    |    Third  Quarter   |    |    |    Fourth  Quarter   |    |    |    Year   |    |     |   Net sales   |    |  $ |  162,970  |    |    |  $ |  174,510  |    |    |  $ |  184,861  |    |    |  $ |  191,664  |    |    |  $ |  714,006  |    |     |   Cost of sales   |    |  $ |  55,367  |    |    |  $ |  61,492  |    |    |  $ |  60,251  |    |    |  $ |  63,405  |    |    |  $ |  240,515  |    |     |   Net earnings   |    |  $ |  17,403  |    |    |  $ |  17,556  |    |    |  $ |  44,654  |    |    |  $ |  16,459  |    |    |  $ |  96,072  |    |     |   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Earnings per common share:   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Basic   |    |  $ |  0.46  |    |    |  $ |  0.46  |    |    |  $ |  1.18  |    |    |  $ |  0.43  |    |    |  $ |  2.54  |    |     |   Diluted   |    |  $ |  0.45  |    |    |  $ |  0.45  |    |    |  $ |  1.15  |    |    |  $ |  0.42  |    |    |  $ |  2.47  |    |     |   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Weighted average common shares outstanding:   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Basic   |    |    |  37,697  |    |    |    |  37,766  |    |    |    |  37,772  |    |    |    |  37,881  |    |    |    |  37,781  |    |     |   Diluted   |    |    |  38,813  |    |    |    |  38,748  |    |    |    |  38,861  |    |    |    |  39,135  |    |    |    |  38,892  |    |      
  |   (in thousands, except per share data)   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   2018   |    |    First  Quarter   |    |    |    Second  Quarter   |    |    |    Third  Quarter   |    |    |    Fourth  Quarter   |    |    |    Year   |    |     |   Net sales   |    |  $ |  144,613  |    |    |  $ |  154,153  |    |    |  $ |  163,973  |    |    |  $ |  180,254  |    |    |  $ |  642,993  |    |     |   Cost of sales   |    |  $ |  46,745  |    |    |  $ |  52,319  |    |    |  $ |  53,712  |    |    |  $ |  58,074  |    |    |  $ |  210,850  |    |     |    |    |  $ |  15,863  |    |    |  $ |  48,847  |    |    |  $ |  19,738  |    |    |  $ |  41,701  |    |    |  $ |  126,150  |    |     |   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Earnings per common share:   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Basic   |    |  $ |  0.42  |    |    |  $ |  1.30  |    |    |  $ |  0.53  |    |    |  $ |  1.09  |    |    |  $ |  3.36  |    |     |   Diluted   |    |  $ |  0.42  |    |    |  $ |  1.29  |    |    |  $ |  0.52  |    |    |  $ |  1.07  |    |    |  $ |  3.31  |    |     |   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Weighted average common shares outstanding:   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |     |   Basic   |    |    |  37,376  |    |    |    |  37,449  |    |    |    |  37,503  |    |    |    |  37,585  |    |    |    |  37,476  |    |     |   Diluted   |    |    |  37,705  |    |    |    |  37,926  |    |    |    |  38,142  |    |    |    |  38,347  |    |    |    |  38,055  |    |      
 |