Share-Based Payment Arrangement [Text Block] | 5. Stock-based compensation includes expense charges for all stock-based awards to employees and directors. These awards include restricted stock awards, restricted stock units, and performance restricted stock units. Stock-based compensation expense related to internal labor is capitalized to software and patent costs based on direct labor hours charged to capitalized software and patent costs. Determining Fair Value Restricted Stock Awards The fair value of restricted stock awards (“RSA”) that vest upon meeting a service condition is based on the fair market value of the Company’s common stock on the date of the grant (measurement date) and is recognized on a straight-line basis over the service period of the award, which is generally three four one three Restricted Stock Units The fair value of restricted stock unit (“RSU”) awards that vest upon meeting a service condition is based on the fair market value of the Company’s common stock on the date of the grant (measurement date) and is recognized on a straight-line basis over the service period of the award, which is generally three four Performance Stock Units The fair value of performance restricted stock unit (“PRSU”) awards that vest upon meeting a service condition and a performance condition, such as the Company exceeding a future annual recurring revenue target, is determined based on the fair market value of the Company's common stock on the date of the grant, adjusted for probability of achievement of the performance criteria as of each reporting date (measurement date), and is recognized on a straight-line basis over the service period of the award, which is generally three The fair value of performance restricted stock units awards that vest upon meeting a service condition and a market condition, such as the Company exceeding shareholder returns as compared to an index of peer companies, is determined on the date of grant (measurement date) using the Monte Carlo valuation model. The Company recognizes the fair value of the award on a straight-line basis over the service period of the award, which is generally three The following inputs are used in the Monte Carlo valuation model to estimate the fair value: Stock Price. Expected Volatility. Risk-Free Interest Rate. Monte Carlo valuation inputs: Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Stock price $ 25.39 $ — $ 36.64 $ 22.37 Expected volatility 66.3 % — 66.3 % 74.7 % Risk-free interest rate 4.3 % — 4.3 % 4.3 % Stock-Based Compensation Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Stock-based compensation: Cost of revenue $ 156 $ 318 $ 409 $ 556 Sales and marketing 798 563 1,510 1,324 Research, development and engineering 645 675 1,263 1,611 General and administrative 807 1,022 2,055 1,963 Stock-based compensation expense 2,406 2,578 5,237 5,454 Capitalized to software and patent costs 3 14 20 27 Total stock-based compensation $ 2,409 $ 2,592 $ 5,257 $ 5,481 The following table sets forth total unrecognized compensation costs related to non-vested stock-based awards granted under the Company’s stock incentive plan: June 30, December 31, 2024 2023 Total unrecognized compensation costs $ 20,197 $ 15,370 Total unrecognized compensation costs will be adjusted for any future forfeitures if and when they occur. The Company expects to recognize the total unrecognized compensation costs as of June 30, 2024 June 30, 2028 RSAs RSUs PRSUs Weighted average period (in years) 0.93 1.48 1.81 As of June 30, 2024 Restricted Stock Awards Activity The following table presents the unvested RSA activity: Weighted Average Number of Grant Date Three Months Ended June 30, 2024: Shares Fair Value Unvested balance at March 31, 2024 96 $ 29.76 Granted 18 $ 28.13 Vested (52 ) $ 24.55 Forfeited — $ — Unvested balance at June 30, 2024 62 $ 32.55 Weighted Average Number of Grant Date Six Months Ended June 30, 2024: Shares Fair Value Unvested balance at December 31, 2023 105 $ 29.89 Granted 24 $ 30.19 Vested (66 ) $ 27.53 Forfeited (1 ) $ 27.61 Unvested balance at June 30, 2024 62 $ 32.55 The fair value of RSAs vested is as follows: Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Fair value of RSAs vested $ 1,211 $ 439 $ 1,761 $ 1,458 Restricted Stock Units Activity The following table presents the unvested RSU award activity: Weighted Average Number of Grant Date Three Months Ended June 30, 2024: Shares Fair Value Unvested balance at March 31, 2024 538 $ 28.20 Granted 42 $ 26.35 Vested (52 ) $ 27.38 Forfeited (21 ) $ 29.99 Unvested balance at June 30, 2024 507 $ 28.05 Weighted Average Number of Grant Date Six Months Ended June 30, 2024: Shares Fair Value Unvested balance at December 31, 2023 442 $ 23.77 Granted 196 $ 36.63 Vested (96 ) $ 26.26 Forfeited (35 ) $ 26.92 Unvested balance at June 30, 2024 507 $ 28.05 The fair value of RSU awards vested is as follows: Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Fair value of RSU awards vested $ 1,318 $ 1,203 $ 3,047 $ 1,827 Performance Stock Units Activity The following table presents the unvested PRSU award activity: Weighted Average Number of Grant Date Three Months Ended June 30, 2024: Shares Fair Value Unvested balance at March 31, 2024 221 $ 32.70 Granted 14 $ 25.19 Vested — $ — Forfeited (15 ) $ 34.75 Unvested balance at June 30, 2024 220 $ 32.09 Weighted Average Number of Grant Date Six Months Ended June 30, 2024: Shares Fair Value Unvested balance at December 31, 2023 192 $ 29.01 Change in units based on performance expectations 30 $ 22.37 Granted 73 $ 36.77 Vested (60 ) $ 22.37 Forfeited (15 ) $ 34.75 Unvested balance at June 30, 2024 220 $ 32.09 The fair value of PRSU awards vested is as follows: Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Fair value of PRSU awards vested $ — $ — $ 2,370 $ 54 |