Condensed Consolidated Statements of Stockholders' Equity - USD ($) shares in Thousands, $ in Thousands | Total | Common StockClass A common stock | Common StockClass B common stock | Additional Paid-in Capital | Accumulated Other Comprehensive Income (Loss) | Treasury Stock | Accumulated Deficit |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Cumulative-effect adjustment resulting from adoption of ASU 2014-09 | $ 2,964 | | | | | | $ 2,964 |
Beginning balance (in shares) at Dec. 31, 2017 | | 14,879 | 19,102 | | | | |
Beginning balance at Dec. 31, 2017 | 85,079 | $ 1 | $ 3 | $ 152,531 | $ (209) | | (67,247) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | | 98 | | | | | |
Exercise of stock options | 470 | $ 0 | | 470 | | | |
Stock-based compensation | 1,495 | | | 1,495 | | | |
Vesting of restricted stock units, net of shares withheld for taxes (in shares) | | 68 | | | | | |
Vesting of restricted stock units, net of shares withheld for taxes | (1,650) | $ 0 | | (1,650) | | | |
Vesting of early exercised shares | 9 | | | 9 | | | |
Conversion of Class B stock to Class A stock (in shares) | | (47) | (47) | | | | |
Conversion of Class B stock to Class A stock | 0 | $ 0 | $ 0 | | | | |
Other comprehensive income (loss) | (148) | | | | (148) | | |
Net income | 4,320 | | | | | | 4,320 |
Ending balance (in shares) at Mar. 31, 2018 | | 15,092 | 19,055 | | | | |
Ending balance at Mar. 31, 2018 | 92,539 | $ 1 | $ 3 | 152,855 | (357) | | (59,963) |
Beginning balance (in shares) at Dec. 31, 2017 | | 14,879 | 19,102 | | | | |
Beginning balance at Dec. 31, 2017 | 85,079 | $ 1 | $ 3 | 152,531 | (209) | | (67,247) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Net income | 17,318 | | | | | | |
Ending balance (in shares) at Sep. 30, 2018 | | 15,984 | 18,250 | | | | |
Ending balance at Sep. 30, 2018 | 108,363 | $ 2 | $ 2 | 155,556 | (232) | | (46,965) |
Beginning balance (in shares) at Mar. 31, 2018 | | 15,092 | 19,055 | | | | |
Beginning balance at Mar. 31, 2018 | 92,539 | $ 1 | $ 3 | 152,855 | (357) | | (59,963) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | | 35 | | | | | |
Exercise of stock options | 188 | $ 0 | | 188 | | | |
Stock-based compensation | 1,544 | | | 1,544 | | | |
Vesting of restricted stock units, net of shares withheld for taxes (in shares) | | 28 | | | | | |
Vesting of restricted stock units, net of shares withheld for taxes | (844) | $ 0 | | (844) | | | |
Vesting of early exercised shares | 9 | | | 9 | | | |
Conversion of Class B stock to Class A stock (in shares) | | (478) | (478) | | | | |
Conversion of Class B stock to Class A stock | 0 | $ 1 | $ (1) | | | | |
Issuance of restricted stock awards (in shares) | | 5 | | | | | |
Issuance of restricted stock awards | 0 | $ 0 | | | | | |
Other comprehensive income (loss) | 68 | | | | 68 | | |
Net income | 7,474 | | | | | | 7,474 |
Ending balance (in shares) at Jun. 30, 2018 | | 15,638 | 18,577 | | | | |
Ending balance at Jun. 30, 2018 | 100,978 | $ 2 | $ 2 | 153,752 | (289) | | (52,489) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | | 10 | | | | | |
Exercise of stock options | 55 | $ 0 | | 55 | | | |
Stock-based compensation | 1,953 | | | 1,953 | | | |
Vesting of restricted stock units, net of shares withheld for taxes (in shares) | | 9 | | | | | |
Vesting of restricted stock units, net of shares withheld for taxes | (212) | $ 0 | | (212) | | | |
Vesting of early exercised shares | 8 | | | 8 | | | |
Conversion of Class B stock to Class A stock (in shares) | | (327) | (327) | | | | |
Conversion of Class B stock to Class A stock | 0 | $ 0 | $ 0 | | | | |
Other comprehensive income (loss) | 57 | | | | 57 | | |
Net income | 5,524 | | | | | | 5,524 |
Ending balance (in shares) at Sep. 30, 2018 | | 15,984 | 18,250 | | | | |
Ending balance at Sep. 30, 2018 | 108,363 | $ 2 | $ 2 | 155,556 | (232) | | (46,965) |
Beginning balance (in shares) at Dec. 31, 2018 | | 15,789 | 18,109 | | | | |
Beginning balance at Dec. 31, 2018 | 91,846 | $ 2 | $ 2 | 157,898 | (178) | $ (21,562) | (44,316) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | | 14 | | | | | |
Exercise of stock options | 90 | | | 90 | | | |
Stock-based compensation | 1,831 | | | 1,831 | | | |
Vesting of restricted stock units, net of shares withheld for taxes (in shares) | | 58 | | | | | |
Vesting of restricted stock units, net of shares withheld for taxes | (2,572) | | | (2,572) | | | |
Vesting of early exercised shares | 6 | | | 6 | | | |
Conversion of Class B stock to Class A stock (in shares) | | (38) | (38) | | | | |
Conversion of Class B stock to Class A stock | 0 | | | | | | |
Other comprehensive income (loss) | 129 | | | | 129 | | |
Net income | 3,725 | | | | | | 3,725 |
Ending balance (in shares) at Mar. 31, 2019 | | 15,899 | 18,071 | | | | |
Ending balance at Mar. 31, 2019 | 95,055 | $ 2 | $ 2 | 157,253 | (49) | (21,562) | (40,591) |
Beginning balance (in shares) at Dec. 31, 2018 | | 15,789 | 18,109 | | | | |
Beginning balance at Dec. 31, 2018 | $ 91,846 | $ 2 | $ 2 | 157,898 | (178) | (21,562) | (44,316) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | 46 | | | | | | |
Net income | $ 31,854 | | | | | | |
Ending balance (in shares) at Sep. 30, 2019 | | 16,373 | 17,685 | | | | |
Ending balance at Sep. 30, 2019 | 125,417 | $ 2 | $ 2 | 159,399 | 38 | (21,562) | (12,462) |
Beginning balance (in shares) at Mar. 31, 2019 | | 15,899 | 18,071 | | | | |
Beginning balance at Mar. 31, 2019 | 95,055 | $ 2 | $ 2 | 157,253 | (49) | (21,562) | (40,591) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | | 23 | | | | | |
Exercise of stock options | 109 | | | 109 | | | |
Stock-based compensation | 2,080 | | | 2,080 | | | |
Vesting of restricted stock units, net of shares withheld for taxes (in shares) | | 42 | | | | | |
Vesting of restricted stock units, net of shares withheld for taxes | (2,247) | | | (2,247) | | | |
Conversion of Class B stock to Class A stock (in shares) | | (119) | (119) | | | | |
Conversion of Class B stock to Class A stock | 0 | | | | | | |
Issuance of restricted stock awards (in shares) | | 3 | | | | | |
Issuance of restricted stock awards | 0 | | | | | | |
Other comprehensive income (loss) | 67 | | | | 67 | | |
Net income | 23,151 | | | | | | 23,151 |
Ending balance (in shares) at Jun. 30, 2019 | | 16,086 | 17,952 | | | | |
Ending balance at Jun. 30, 2019 | 118,215 | $ 2 | $ 2 | 157,195 | 18 | (21,562) | (17,440) |
Increase (Decrease) in Stockholders' Equity [Roll Forward] | | | | | | | |
Exercise of stock options (in shares) | | 9 | | | | | |
Exercise of stock options | 60 | | | 60 | | | |
Stock-based compensation | 2,678 | | | 2,678 | | | |
Vesting of restricted stock units, net of shares withheld for taxes (in shares) | | 11 | | | | | |
Vesting of restricted stock units, net of shares withheld for taxes | (534) | | | (534) | | | |
Conversion of Class B stock to Class A stock (in shares) | | (267) | (267) | | | | |
Conversion of Class B stock to Class A stock | 0 | | | | | | |
Other comprehensive income (loss) | 20 | | | | 20 | | |
Net income | 4,978 | | | | | | 4,978 |
Ending balance (in shares) at Sep. 30, 2019 | | 16,373 | 17,685 | | | | |
Ending balance at Sep. 30, 2019 | $ 125,417 | $ 2 | $ 2 | $ 159,399 | $ 38 | $ (21,562) | $ (12,462) |