v3.26.1
Equity (Details - Stock options outstanding and exercisable)
6 Months Ended
Jun. 30, 2026
$ / shares
shares
Share-Based Payment Arrangement, Option, Exercise Price Range [Line Items]  
Number of options outstanding | shares 50,000
Weighted average remaining contractual life (in years) 5 years 2 months 4 days
Weighted average exercise price $ 23.00
Number of options exercisable | shares 42,500
Exercise Price Range $0.01 - 8.00 [Member]  
Share-Based Payment Arrangement, Option, Exercise Price Range [Line Items]  
Exersice price range, lower $ 0.01
Exersice price range, upper $ 8.00
Number of options outstanding | shares 5,000
Weighted average remaining contractual life (in years) 4 months 20 days
Weighted average exercise price $ 6.80
Number of options exercisable | shares 5,000
Exercise Price Range $8.01 - 11.00 [Member]  
Share-Based Payment Arrangement, Option, Exercise Price Range [Line Items]  
Exersice price range, lower $ 8.01
Exersice price range, upper $ 11.00
Number of options outstanding | shares 0
Weighted average exercise price $ 0
Number of options exercisable | shares 0
Exercise Price Range $11.01 - 16.00 [Member]  
Share-Based Payment Arrangement, Option, Exercise Price Range [Line Items]  
Exersice price range, lower $ 11.01
Exersice price range, upper $ 16.00
Number of options outstanding | shares 7,500
Weighted average remaining contractual life (in years) 2 years 8 months 1 day
Weighted average exercise price $ 13.21
Number of options exercisable | shares 7,500
Exercise Price Range $16.01 - 27.00 [Member]  
Share-Based Payment Arrangement, Option, Exercise Price Range [Line Items]  
Exersice price range, lower $ 16.01
Exersice price range, upper $ 27.00
Number of options outstanding | shares 30,000
Weighted average remaining contractual life (in years) 6 years 6 months 3 days
Weighted average exercise price $ 26.98
Number of options exercisable | shares 22,500
Exercise Price Range $27.01 - 27.71 [Member]  
Share-Based Payment Arrangement, Option, Exercise Price Range [Line Items]  
Exersice price range, lower $ 27.01
Exersice price range, upper $ 27.71
Number of options outstanding | shares 7,500
Weighted average remaining contractual life (in years) 5 years 6 months 18 days
Weighted average exercise price $ 27.71
Number of options exercisable | shares 7,500