XML 67 R57.htm IDEA: XBRL DOCUMENT
v3.25.2

LEASE OBLIGATIONS - Operating lease-weighted average remaining term (Details) | Jun. 30, 2025 USD ($)
--- | ---
LEASE OBLIGATIONS |
Weighted average remaining term | 3 years 7 months 6 days
Present value of remaining liability | $ 2,380,523
Operating lease 1 |
LEASE OBLIGATIONS |
Weighted average remaining term | 0 years
Operating lease 2 |
LEASE OBLIGATIONS |
Weighted average remaining term | 9 months 18 days
Present value of remaining liability | $ 81,302
Operating lease 3 |
LEASE OBLIGATIONS |
Weighted average remaining term | 3 years 9 months 18 days
Present value of remaining liability | $ 2,227,124
Operating lease 4 |
LEASE OBLIGATIONS |
Weighted average remaining term | 0 years
Operating lease 5 |
LEASE OBLIGATIONS |
Weighted average remaining term | 1 year
Present value of remaining liability | $ 72,097

X
- Definition Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 842 -SubTopic 30 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147479773/842-30-50-3 + Details
Name: | us-gaap_LessorLeaseDescriptionLineItems
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Present value of lessee's discounted obligation for lease payments from operating lease. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 842 -SubTopic 20 -Name Accounting Standards Codification -Section 45 -Paragraph 1 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1 + Details
Name: | us-gaap_OperatingLeaseLiability
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | instant

X
- Definition Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. + References Reference 1: http://www.xbrl.org/2003/role/exampleRef -Topic 842 -SubTopic 20 -Name Accounting Standards Codification -Section 55 -Paragraph 53 -Publisher FASB -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 842 -SubTopic 20 -Name Accounting Standards Codification -Section 50 -Paragraph 4 -Subparagraph (g)(3) -Publisher FASB -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4 + Details
Name: | us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1
Namespace Prefix: | us-gaap_
Data Type: | xbrli:durationItemType
Balance Type: | na
Period Type: | instant

X
- Details
Name: | us-gaap_TypeOfArrangementAxis=esoa_OperatingLease1ForOfficeFacilitiesMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_TypeOfArrangementAxis=esoa_OperatingLease2ForOfficeFacilitiesMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_TypeOfArrangementAxis=esoa_OperatingLease3ForOfficeFacilitiesMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_TypeOfArrangementAxis=esoa_OperatingLease4ForOfficeFacilitiesMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | us-gaap_TypeOfArrangementAxis=esoa_OperatingLease5ForOfficeFacilitiesMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |