Earnings Per Share - Reconciliation of Basic and Diluted Weighted Average Shares Outstanding (Details) - USD ($)
$ / shares in Units, shares in Thousands, $ in Thousands
3 Months Ended 12 Months Ended
Dec. 31, 2020
Oct. 02, 2020
Jul. 03, 2020
Apr. 03, 2020
Dec. 31, 2019
Sep. 27, 2019
Jun. 28, 2019
Mar. 29, 2019
Dec. 31, 2020
Dec. 31, 2019
Dec. 31, 2018
Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]                      
Net income $ 16,781 $ 10,391 $ 1,111 $ 8,668 $ 10,644 $ 7,841 $ 7,617 $ 7,074 $ 36,951 $ 33,176 $ 35,086
Weighted average common shares outstanding - basic (in shares) 11,624 11,621 11,607 11,545 11,515 11,506 11,455 11,292 11,599 11,444 11,224
Add: Dilutive impact of stock options (in shares)                 37 47 63
Weighted average number of shares outstanding - diluted (in shares) 11,782 11,751 11,745 11,745 11,728 11,678 11,605 11,399 11,751 11,612 11,378
Basic earnings per share (in dollars per share) $ 1.44 $ 0.89 $ 0.10 $ 0.75 $ 0.92 $ 0.69 $ 0.66 $ 0.63 $ 3.19 $ 2.90 $ 3.13
Diluted earnings per share (in dollars per share) $ 1.42 $ 0.88 $ 0.09 $ 0.74 $ 0.91 $ 0.67 $ 0.66 $ 0.62 $ 3.14 $ 2.86 $ 3.08
Anti-dilutive restricted stock units                      
Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]                      
Add: Dilutive impact of restricted stock units (in shares)                 115 121 91