v3.26.1
Commitments and Contingencies (Details) - USD ($)
15 Months Ended
Apr. 30, 2026
Apr. 30, 2025
Loss Contingencies [Line Items]    
Self Insurance Reserve $ 1,500,000 $ 1,400,000
Tariffs Paid Potentially Recoverable Not Recognized 1,000,000.0  
Location, Statement of Financial Position, Balance [Axis]: us-gaap:OtherAccruedLiabilitiesNoncurrent    
Loss Contingencies [Line Items]    
Self Insurance Reserve, Current 120,000 120,000
Self Insurance Reserve, Noncurrent 1,400,000 $ 1,300,000
Maximum | Product Liability [Member]    
Loss Contingencies [Line Items]    
Self insurance retention 150,000  
Maximum | Workers compensation Liability Insurance [Member]    
Loss Contingencies [Line Items]    
Self insurance retention 250,000  
Maximum | General Liability Loss    
Loss Contingencies [Line Items]    
Self insurance retention 150,000  
Maximum | Automobile Liability Loss [Member]    
Loss Contingencies [Line Items]    
Self insurance retention 50,000  
Maximum | Loss Liability [Member]    
Loss Contingencies [Line Items]    
Self insurance retention $ 30,000,000.0