XML 49 R39.htm IDEA: XBRL DOCUMENT
v3.25.2

Note 17 - Earnings Per Share (Tables) | 9 Months Ended
--- | ---
Aug. 31, 2025
Notes Tables |
Schedule of Earnings Per Share, Basic, by Common Class, Including Two Class Method [Table Text Block] |
|  | For the Three Months Ended |  |  | For the Nine Months Ended |
|  | August 31, |  |  | August 31, |
|  | 2025 |  |  | 2024 |  |  | 2025 |  |  | 2024 |
Net income |  | $ | 2,235 |  |  | $ | 1,025 |  |  | $ | 6,324 |  |  | $ | 3,120 |
Weighted-average number of shares used in computing net income per share, basic |  |  | 22,691,574 |  |  |  | 22,758,155 |  |  |  | 22,649,525 |  |  |  | 22,509,018 |
Net income per share - basic |  | $ | 0.10 |  |  | $ | 0.05 |  |  | $ | 0.28 |  |  | $ | 0.14 |
Weighted-average number of shares used in computing net income per share, diluted |  |  | 24,103,760 |  |  |  | 23,410,159 |  |  |  | 24,147,430 |  |  |  | 23,072,498 |
Net income per share - diluted |  | $ | 0.09 |  |  | $ | 0.04 |  |  | $ | 0.26 |  |  | $ | 0.14 |
Schedule of Weighted Average Number of Shares [Table Text Block] |
|  | For the Three Months Ended |  |  | For the Nine Months Ended |
|  | August 31, |  |  | August 31, |
|  | 2025 |  |  | 2024 |  |  | 2025 |  |  | 2024 |
Weighted-average common shares outstanding- basic |  |  | 22,691,574 |  |  |  | 22,758,155 |  |  |  | 22,649,525 |  |  |  | 22,509,018 |
Assumed conversion of: |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
Dilutive stock options |  |  | 679,720 |  |  |  | 135,886 |  |  |  | 657,234 |  |  |  | 113,617 |
Dilutive RSUs |  |  | 732,465 |  |  |  | 516,118 |  |  |  | 840,670 |  |  |  | 449,863 |
Weighted-average common share outstanding- diluted |  |  | 24,103,760 |  |  |  | 23,410,159 |  |  |  | 24,147,430 |  |  |  | 23,072,498 |
Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table Text Block] |
|  | For the Three Months Ended |  |  | For the Nine Months Ended |
|  | August 31, |  |  | August 31, |
|  | 2025 |  |  | 2024 |  |  | 2025 |  |  | 2024 |
Options |  |  | — |  |  |  | 437,666 |  |  |  | — |  |  |  | 437,666 |
RSUs |  |  | 20,919 |  |  |  | 16,513 |  |  |  | 41,944 |  |  |  | 41,513 |
Total |  |  | 20,919 |  |  |  | 454,179 |  |  |  | 41,944 |  |  |  | 479,179 |

X
- Definition Tabular disclosure of securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) in the future that were not included in the computation of diluted EPS because to do so would increase EPS amounts or decrease loss per share amounts for the period presented, by antidilutive securities. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 260 -SubTopic 10 -Section 50 -Paragraph 1 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1 + Details
Name: | us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the effect of income (loss) on basic earnings per share. + References Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482689/260-10-45-3 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 260 -SubTopic 10 -Section 50 -Paragraph 1 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 260 -SubTopic 10 -Section 55 -Paragraph 52 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482635/260-10-55-52 + Details
Name: | us-gaap_ScheduleOfEarningsPerShareBasicByCommonClassTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the weighted average number of shares used in calculating basic net earnings per share (or unit) and diluted earnings per share (or unit). + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 260 -SubTopic 10 -Section 50 -Paragraph 1 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1 + Details
Name: | us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_TableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration