Quarterly report [Sections 13 or 15(d)]

Stock Options (Details - Option activity)

v3.25.1
Stock Options (Details - Option activity) - Share-Based Payment Arrangement, Option [Member] - $ / shares
3 Months Ended
Mar. 31, 2025
Mar. 31, 2024
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Number of options outstanding, beginning balance 952,140  
Weighted average remaining contractual life 4 years 6 months 25 days 4 years 9 months 14 days
Weighted average exercise price per share, beginning balance $ 12.72  
Number of options, granted 0 0
Weighted average exercise price per share, granted $ 0  
Number of options, exercised 0  
Weighted average exercise price per share, exercised $ 0  
Number of options, forfeited/cancelled (5,820)  
Weighted average exercise price per share, forfeited/cancelled $ 7.31  
Number of options, expired 0  
Weighted average exercise price per share, expired $ 0  
Number of options outstanding, ending balance 946,320  
Weighted average exercise price per share, ending balance $ 12.75  
Number of options, unvested 65,000  
Weighted- average remaining contractual life, unvested 4 years 8 months 15 days  
Weighted average exercise price per share, unvested $ 2.48  
Number of options, vested and exercisable 881,320  
Weighted- average remaining contractual life, vested and exercisable 4 years 6 months 21 days  
Weighted average exercise price per share, vested and exercisable $ 13.51