 | us-gaap:ReportableSubsegmentsMember | parent-child | http://fasb.org/us-gaap/role/statement/CommonDomainMembers |
 | us-gaap:IntersubsegmentEliminationsMember | parent-child | http://fasb.org/us-gaap/role/statement/CommonDomainMembers |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/statement/CommonDomainMembersStatementTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/statement/CommonDomainMembersStatementTable |
 | us-gaap:ReportableSubsegmentsMember | parent-child | http://fasb.org/us-gaap/role/disclosure/SegmentReporting |
 | us-gaap:IntersubsegmentEliminationsMember | parent-child | http://fasb.org/us-gaap/role/disclosure/SegmentReporting |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfAssetsFromSegmentToConsolidatedTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfAssetsFromSegmentToConsolidatedTable |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfOperatingProfitLossFromSegmentsToConsolidatedTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfOperatingProfitLossFromSegmentsToConsolidatedTable |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfOtherSignificantReconcilingItemsFromSegmentsToConsolidatedTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfOtherSignificantReconcilingItemsFromSegmentsToConsolidatedTable |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfRevenueFromSegmentsToConsolidatedTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingReconciliationOfRevenueFromSegmentsToConsolidatedTable |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingScheduleOfEntityWideRevenueByMajorCustomersByReportingSegmentsTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingScheduleOfEntityWideRevenueByMajorCustomersByReportingSegmentsTable |
 | us-gaap:ReportableSubsegmentsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingScheduleOfSegmentReportingInformationBySegmentTable |
 | us-gaap:IntersubsegmentEliminationsMember | domain-member | http://fasb.org/us-gaap/role/disclosure/SegmentReportingScheduleOfSegmentReportingInformationBySegmentTable |