| | | | | | | | | | | | | | | | | | | | | |
<?xml version="1.0" encoding="windows-1252"?> |
<FilingSummary> |
| <Version> 3.20.1 </Version> |
| <ProcessingTime/> |
| <ReportFormat> html </ReportFormat> |
| <ContextCount> 164 </ContextCount> |
| <ElementCount> 382 </ElementCount> |
| <EntityCount> 1 </EntityCount> |
| <FootnotesReported> false </FootnotesReported> |
| <SegmentCount> 66 </SegmentCount> |
| <ScenarioCount> 0 </ScenarioCount> |
| <TuplesReported> false </TuplesReported> |
| <UnitCount> 10 </UnitCount> |
| <MyReports> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R1.htm </HtmlFileName> |
| | | <LongName> 100000 - Document - Document and Entity Information Document </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DocumentDocumentAndEntityInformationDocument </Role> |
| | | <ShortName> Document and Entity Information Document </ShortName> |
| | | <MenuCategory> Cover </MenuCategory> |
| | | <Position> 1 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R2.htm </HtmlFileName> |
| | | <LongName> 100010 - Statement - Condensed Consolidated Statements of Income (Unaudited) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited </Role> |
| | | <ShortName> Condensed Consolidated Statements of Income (Unaudited) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 2 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R3.htm </HtmlFileName> |
| | | <LongName> 100020 - Statement - Condensed Consolidated Statements of Comprehensive Income (Unaudited) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited </Role> |
| | | <ShortName> Condensed Consolidated Statements of Comprehensive Income (Unaudited) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 3 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R4.htm </HtmlFileName> |
| | | <LongName> 100030 - Statement - Condensed Consolidated Statements of Comprehensive Income (Unaudited) (Parenthetical) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnauditedParenthetical </Role> |
| | | <ShortName> Condensed Consolidated Statements of Comprehensive Income (Unaudited) (Parenthetical) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 4 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R5.htm </HtmlFileName> |
| | | <LongName> 100040 - Statement - Condensed Consolidated Balance Sheets (Unaudited) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited </Role> |
| | | <ShortName> Condensed Consolidated Balance Sheets (Unaudited) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 5 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R6.htm </HtmlFileName> |
| | | <LongName> 100050 - Statement - Condensed Consolidated Balance Sheets (Unaudited) (Parenthetical) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical </Role> |
| | | <ShortName> Condensed Consolidated Balance Sheets (Unaudited) (Parenthetical) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 6 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R7.htm </HtmlFileName> |
| | | <LongName> 100060 - Statement - Condensed Consolidated Statements of Cash Flows (Unaudited) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited </Role> |
| | | <ShortName> Condensed Consolidated Statements of Cash Flows (Unaudited) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 7 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R8.htm </HtmlFileName> |
| | | <LongName> 100070 - Statement - Condensed Consolidated Statements of Shareholders' Equity (Unaudited) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited </Role> |
| | | <ShortName> Condensed Consolidated Statements of Shareholders' Equity (Unaudited) </ShortName> |
| | | <MenuCategory> Statements </MenuCategory> |
| | | <Position> 8 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R9.htm </HtmlFileName> |
| | | <LongName> 100080 - Disclosure - Financial Statements </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureFinancialStatements </Role> |
| | | <ShortName> Financial Statements </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 9 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R10.htm </HtmlFileName> |
| | | <LongName> 100090 - Disclosure - Summary of Significant Accounting Policies </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPolicies </Role> |
| | | <ShortName> Summary of Significant Accounting Policies </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 10 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R11.htm </HtmlFileName> |
| | | <LongName> 100100 - Disclosure - Acquisitions </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitions </Role> |
| | | <ShortName> Acquisitions </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 11 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R12.htm </HtmlFileName> |
| | | <LongName> 100110 - Disclosure - Net Income Per Share </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureNetIncomePerShare </Role> |
| | | <ShortName> Net Income Per Share </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 12 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R13.htm </HtmlFileName> |
| | | <LongName> 100120 - Disclosure - Lease Commitments </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitments </Role> |
| | | <ShortName> Lease Commitments </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 13 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R14.htm </HtmlFileName> |
| | | <LongName> 100130 - Disclosure - Debt </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDebt </Role> |
| | | <ShortName> Debt </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 14 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R15.htm </HtmlFileName> |
| | | <LongName> 100140 - Disclosure - Accumulated Other Comprehensive Loss </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLoss </Role> |
| | | <ShortName> Accumulated Other Comprehensive Loss </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 15 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R16.htm </HtmlFileName> |
| | | <LongName> 100150 - Disclosure - Income Taxes </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureIncomeTaxes </Role> |
| | | <ShortName> Income Taxes </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 16 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R17.htm </HtmlFileName> |
| | | <LongName> 100160 - Disclosure - Deferred Compensation and Other Benefits </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefits </Role> |
| | | <ShortName> Deferred Compensation and Other Benefits </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 17 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R18.htm </HtmlFileName> |
| | | <LongName> 100170 - Disclosure - Equity-based Compensation </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureEquityBasedCompensation </Role> |
| | | <ShortName> Equity-based Compensation </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 18 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R19.htm </HtmlFileName> |
| | | <LongName> 100180 - Disclosure - Treasury Stock </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureTreasuryStock </Role> |
| | | <ShortName> Treasury Stock </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 19 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R20.htm </HtmlFileName> |
| | | <LongName> 100190 - Disclosure - Significant Clients </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSignificantClients </Role> |
| | | <ShortName> Significant Clients </ShortName> |
| | | <MenuCategory> Notes </MenuCategory> |
| | | <Position> 20 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R21.htm </HtmlFileName> |
| | | <LongName> 100200 - Disclosure - Summary of Significant Accounting Policies (Policies) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies </Role> |
| | | <ShortName> Summary of Significant Accounting Policies (Policies) </ShortName> |
| | | <MenuCategory> Policies </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPolicies </ParentRole> |
| | | <Position> 21 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R22.htm </HtmlFileName> |
| | | <LongName> 100210 - Disclosure - Summary of Significant Accounting Policies (Tables) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables </Role> |
| | | <ShortName> Summary of Significant Accounting Policies (Tables) </ShortName> |
| | | <MenuCategory> Tables </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPolicies </ParentRole> |
| | | <Position> 22 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R23.htm </HtmlFileName> |
| | | <LongName> 100220 - Disclosure - Acquisitions (Tables) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitionsTables </Role> |
| | | <ShortName> Acquisitions (Tables) </ShortName> |
| | | <MenuCategory> Tables </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitions </ParentRole> |
| | | <Position> 23 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R24.htm </HtmlFileName> |
| | | <LongName> 100230 - Disclosure - Net Income Per Share (Tables) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureNetIncomePerShareTables </Role> |
| | | <ShortName> Net Income Per Share (Tables) </ShortName> |
| | | <MenuCategory> Tables </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureNetIncomePerShare </ParentRole> |
| | | <Position> 24 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R25.htm </HtmlFileName> |
| | | <LongName> 100240 - Disclosure - Lease Commitments (Tables) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitmentsTables </Role> |
| | | <ShortName> Lease Commitments (Tables) </ShortName> |
| | | <MenuCategory> Tables </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitments </ParentRole> |
| | | <Position> 25 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R26.htm </HtmlFileName> |
| | | <LongName> 100250 - Disclosure - Accumulated Other Comprehensive Loss (Tables) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossTables </Role> |
| | | <ShortName> Accumulated Other Comprehensive Loss (Tables) </ShortName> |
| | | <MenuCategory> Tables </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLoss </ParentRole> |
| | | <Position> 26 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R27.htm </HtmlFileName> |
| | | <LongName> 100260 - Disclosure - Deferred Compensation and Other Benefits (Tables) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsTables </Role> |
| | | <ShortName> Deferred Compensation and Other Benefits (Tables) </ShortName> |
| | | <MenuCategory> Tables </MenuCategory> |
| | | <ParentRole> http://www.ctg.com/20200327/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefits </ParentRole> |
| | | <Position> 27 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R28.htm </HtmlFileName> |
| | | <LongName> 100270 - Disclosure - Financial Statements - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureFinancialStatementsAdditionalInformationDetails </Role> |
| | | <ShortName> Financial Statements - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 28 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R29.htm </HtmlFileName> |
| | | <LongName> 100280 - Disclosure - Summary of Significant Accounting Policies - Basis of Presentation and Consolidation (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesBasisOfPresentationAndConsolidationDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Basis of Presentation and Consolidation (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 29 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R30.htm </HtmlFileName> |
| | | <LongName> 100290 - Disclosure - Summary of Significant Accounting Policies - Summary of IT Solutions and IT and Other Staffing Revenue as Percentage of Total Revenue (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Summary of IT Solutions and IT and Other Staffing Revenue as Percentage of Total Revenue (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 30 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R31.htm </HtmlFileName> |
| | | <LongName> 100300 - Disclosure - Summary of Significant Accounting Policies - Revenue by Vertical Market as Percentage of Total Revenue (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Revenue by Vertical Market as Percentage of Total Revenue (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 31 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R32.htm </HtmlFileName> |
| | | <LongName> 100310 - Disclosure - Summary of Significant Accounting Policies - Revenue by Contract Type (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Revenue by Contract Type (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 32 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R33.htm </HtmlFileName> |
| | | <LongName> 100320 - Disclosure - Summary of Significant Accounting Policies - Schedule of Revenue by Geographic Location (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Schedule of Revenue by Geographic Location (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 33 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R34.htm </HtmlFileName> |
| | | <LongName> 100330 - Disclosure - Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details 1) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1 </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details 1) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 34 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R35.htm </HtmlFileName> |
| | | <LongName> 100340 - Disclosure - Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 35 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R36.htm </HtmlFileName> |
| | | <LongName> 100350 - Disclosure - Summary of Significant Accounting Policies - Fair Value (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Fair Value (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 36 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R37.htm </HtmlFileName> |
| | | <LongName> 100360 - Disclosure - Summary of Significant Accounting Policies - Life Insurance Policies (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Life Insurance Policies (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 37 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R38.htm </HtmlFileName> |
| | | <LongName> 100370 - Disclosure - Summary of Significant Accounting Policies - Accounts Receivable Factoring (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Accounts Receivable Factoring (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 38 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R39.htm </HtmlFileName> |
| | | <LongName> 100380 - Disclosure - Summary of Significant Accounting Policies - Schedule of Property, Equipment and Capitalized Software (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Schedule of Property, Equipment and Capitalized Software (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 39 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R40.htm </HtmlFileName> |
| | | <LongName> 100390 - Disclosure - Summary of Significant Accounting Policies - Property, Equipment and Capitalized Software Costs - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Property, Equipment and Capitalized Software Costs - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 40 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R41.htm </HtmlFileName> |
| | | <LongName> 100400 - Disclosure - Summary of Significant Accounting Policies - Guarantees (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesGuaranteesDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Guarantees (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 41 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R42.htm </HtmlFileName> |
| | | <LongName> 100410 - Disclosure - Summary of Significant Accounting Policies - Goodwill (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Goodwill (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 42 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R43.htm </HtmlFileName> |
| | | <LongName> 100420 - Disclosure - Summary of Significant Accounting Policies - Summary of Changes in Carrying Amount of Goodwill (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Summary of Changes in Carrying Amount of Goodwill (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 43 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R44.htm </HtmlFileName> |
| | | <LongName> 100430 - Disclosure - Summary of Significant Accounting Policies - Summary of Acquired Intangible Assets (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Summary of Acquired Intangible Assets (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 44 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R45.htm </HtmlFileName> |
| | | <LongName> 100440 - Disclosure - Summary of Significant Accounting Policies - Summary of Estimated Amortization Expense (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails </Role> |
| | | <ShortName> Summary of Significant Accounting Policies - Summary of Estimated Amortization Expense (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 45 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R46.htm </HtmlFileName> |
| | | <LongName> 100450 - Disclosure - Acquisitions - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails </Role> |
| | | <ShortName> Acquisitions - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 46 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R47.htm </HtmlFileName> |
| | | <LongName> 100460 - Disclosure - Acquisitions - Summary of Acquisition Date Fair Value of Consideration (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails </Role> |
| | | <ShortName> Acquisitions - Summary of Acquisition Date Fair Value of Consideration (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 47 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R48.htm </HtmlFileName> |
| | | <LongName> 100470 - Disclosure - Acquisitions - Summary of Allocation of Aggregate Purchase Consideration to Fair Values of Assets Acquired and Liabilities Assumed (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails </Role> |
| | | <ShortName> Acquisitions - Summary of Allocation of Aggregate Purchase Consideration to Fair Values of Assets Acquired and Liabilities Assumed (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 48 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R49.htm </HtmlFileName> |
| | | <LongName> 100480 - Disclosure - Acquisitions - Summary of Intangible Assets Acquired (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails </Role> |
| | | <ShortName> Acquisitions - Summary of Intangible Assets Acquired (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 49 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R50.htm </HtmlFileName> |
| | | <LongName> 100490 - Disclosure - Net Income Per Share - Schedule of Basic and Diluted Earnings Per Share (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails </Role> |
| | | <ShortName> Net Income Per Share - Schedule of Basic and Diluted Earnings Per Share (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 50 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R51.htm </HtmlFileName> |
| | | <LongName> 100500 - Disclosure - Net Income Per Share - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails </Role> |
| | | <ShortName> Net Income Per Share - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 51 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R52.htm </HtmlFileName> |
| | | <LongName> 100510 - Disclosure - Lease Commitments - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitmentsAdditionalInformationDetails </Role> |
| | | <ShortName> Lease Commitments - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 52 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R53.htm </HtmlFileName> |
| | | <LongName> 100520 - Disclosure - Lease Commitments - Summary of Maturities of Lease Liabilities for Operating Liabilities (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails </Role> |
| | | <ShortName> Lease Commitments - Summary of Maturities of Lease Liabilities for Operating Liabilities (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 53 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R54.htm </HtmlFileName> |
| | | <LongName> 100540 - Disclosure - Lease Commitments - Summary of Weighted Average Remaining Lease Terms, Discount Rates and Supplemental Cash Flow Information for All Operating Leases (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermsDiscountRatesAndSupplementalCashFlowInformationForAllOperatingLeasesDetails </Role> |
| | | <ShortName> Lease Commitments - Summary of Weighted Average Remaining Lease Terms, Discount Rates and Supplemental Cash Flow Information for All Operating Leases (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 54 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R55.htm </HtmlFileName> |
| | | <LongName> 100550 - Disclosure - Lease Commitments - Summary of Minimum Obligations under Operating Leases (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfMinimumObligationsUnderOperatingLeasesDetails </Role> |
| | | <ShortName> Lease Commitments - Summary of Minimum Obligations under Operating Leases (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 55 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R56.htm </HtmlFileName> |
| | | <LongName> 100560 - Disclosure - Debt - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDebtAdditionalInformationDetails </Role> |
| | | <ShortName> Debt - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 56 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R57.htm </HtmlFileName> |
| | | <LongName> 100570 - Disclosure - Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails </Role> |
| | | <ShortName> Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 57 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R58.htm </HtmlFileName> |
| | | <LongName> 100580 - Disclosure - Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Parenthetical) (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossParentheticalDetails </Role> |
| | | <ShortName> Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Parenthetical) (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 58 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R59.htm </HtmlFileName> |
| | | <LongName> 100590 - Disclosure - Accumulated Other Comprehensive Loss - Schedule of Net Benefit Costs (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails </Role> |
| | | <ShortName> Accumulated Other Comprehensive Loss - Schedule of Net Benefit Costs (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 59 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R60.htm </HtmlFileName> |
| | | <LongName> 100600 - Disclosure - Income Taxes - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureIncomeTaxesAdditionalInformationDetails </Role> |
| | | <ShortName> Income Taxes - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 60 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R61.htm </HtmlFileName> |
| | | <LongName> 100610 - Disclosure - Deferred Compensation and Other Benefits - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails </Role> |
| | | <ShortName> Deferred Compensation and Other Benefits - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 61 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R62.htm </HtmlFileName> |
| | | <LongName> 100620 - Disclosure - Deferred Compensation and Other Benefits - Schedule of Net Periodic Pension Cost (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails </Role> |
| | | <ShortName> Deferred Compensation and Other Benefits - Schedule of Net Periodic Pension Cost (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 62 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R63.htm </HtmlFileName> |
| | | <LongName> 100630 - Disclosure - Deferred Compensation and Other Benefits - Schedule of Change in Fair Value of Plan Assets (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsDetails </Role> |
| | | <ShortName> Deferred Compensation and Other Benefits - Schedule of Change in Fair Value of Plan Assets (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 63 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R64.htm </HtmlFileName> |
| | | <LongName> 100640 - Disclosure - Equity-based Compensation - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails </Role> |
| | | <ShortName> Equity-based Compensation - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 64 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R65.htm </HtmlFileName> |
| | | <LongName> 100650 - Disclosure - Treasury Stock - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails </Role> |
| | | <ShortName> Treasury Stock - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 65 </Position> |
| | | </Report> |
| | <Report instance="ctg-10q_20200327.htm"> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <HtmlFileName> R66.htm </HtmlFileName> |
| | | <LongName> 100660 - Disclosure - Significant Clients - Additional Information (Details) </LongName> |
| | | <ReportType> Sheet </ReportType> |
| | | <Role> http://www.ctg.com/20200327/taxonomy/role/DisclosureSignificantClientsAdditionalInformationDetails </Role> |
| | | <ShortName> Significant Clients - Additional Information (Details) </ShortName> |
| | | <MenuCategory> Details </MenuCategory> |
| | | <Position> 66 </Position> |
| | | </Report> |
| | <Report> |
| | | <IsDefault> false </IsDefault> |
| | | <HasEmbeddedReports> false </HasEmbeddedReports> |
| | | <LongName> All Reports </LongName> |
| | | <ReportType> Book </ReportType> |
| | | <ShortName> All Reports </ShortName> |
| | | </Report> |
| | </MyReports> |
| <InputFiles> |
| | <File doctype="10-Q" original="ctg-10q_20200327.htm"> ctg-10q_20200327.htm </File> |
| | <File> ctg-20200327.xsd </File> |
| | <File> ctg-20200327_cal.xml </File> |
| | <File> ctg-20200327_def.xml </File> |
| | <File> ctg-20200327_lab.xml </File> |
| | <File> ctg-20200327_pre.xml </File> |
| | <File> ctg-ex31a_8.htm </File> |
| | <File> ctg-ex31b_6.htm </File> |
| | <File> ctg-ex32_7.htm </File> |
| | </InputFiles> |
| <SupplementalFiles/> |
| <BaseTaxonomies> |
| | <BaseTaxonomy> http://xbrl.sec.gov/dei/2019-01-31 </BaseTaxonomy> |
| | <BaseTaxonomy> http://fasb.org/srt/2019-01-31 </BaseTaxonomy> |
| | <BaseTaxonomy> http://fasb.org/us-gaap/2019-01-31 </BaseTaxonomy> |
| | </BaseTaxonomies> |
| <HasPresentationLinkbase> true </HasPresentationLinkbase> |
| <HasCalculationLinkbase> true </HasCalculationLinkbase> |
| </FilingSummary> |