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 9 Months Ended
Oct. 02, 2020
Jul. 03, 2020
Apr. 03, 2020
Sep. 27, 2019
Jun. 28, 2019
Mar. 29, 2019
Oct. 02, 2020
Sep. 27, 2019
Earnings Per Share [Abstract]                
Net income $ 10,391 $ 1,111 $ 8,668 $ 7,841 $ 7,617 $ 7,074 $ 20,170 $ 22,532
Weighted average common shares outstanding (in shares) 11,621     11,506     11,590 11,420
Add: Dilutive impact of stock options (in shares) 34     37     38 45
Add: Dilutive impact of restricted stock units (in shares) 96     135     115 101
Diluted weighted average common shares outstanding (in shares) 11,751     11,678     11,743 11,566
Earnings per share                
Basic (in dollars per share) $ 0.89     $ 0.68     $ 1.74 $ 1.97
Diluted (in dollars per share) $ 0.88     $ 0.67     $ 1.72 $ 1.95